From 4bc73759cd8fcedfd956795b147bb2a5fe311059 Mon Sep 17 00:00:00 2001 From: Dave Woodruff Date: Thu, 19 Mar 2026 15:49:48 -0700 Subject: [PATCH 1/3] feat: add configurable spread neighborhood radius (SpreadRad) --- cell2fire/Cell2FireC/Cell2Fire.cpp | 14 ++-- cell2fire/Cell2FireC/CellsFBP.cpp | 110 +++++++++++++---------------- cell2fire/Cell2FireC/CellsFBP.h | 6 +- cell2fire/Cell2FireC/ReadArgs.cpp | 15 +++- cell2fire/Cell2FireC/ReadArgs.h | 4 +- cell2fire/Cell2FireC_class.py | 2 + cell2fire/utils/ParseInputs.py | 6 +- 7 files changed, 84 insertions(+), 73 deletions(-) diff --git a/cell2fire/Cell2FireC/Cell2Fire.cpp b/cell2fire/Cell2FireC/Cell2Fire.cpp index 42911635..951fb9b2 100644 --- a/cell2fire/Cell2FireC/Cell2Fire.cpp +++ b/cell2fire/Cell2FireC/Cell2Fire.cpp @@ -431,7 +431,7 @@ void Cell2Fire::InitCell(int id){ it2 = this->Cells_Obj.find(id); // Initialize the fire fields for the selected cel - it2->second.initializeFireFields(this->coordCells, this->availCells); + it2->second.initializeFireFields(this->coordCells, this->availCells, this->rows, this->cols, this->args.SpreadRadius); // Print info for debugging if (this->args.verbose) it2->second.print_info(); @@ -992,14 +992,14 @@ void Cell2Fire::GetMessages(std::unordered_map> sendMessag burntList.insert(it->second.realId); // Cleaning step - int cellNum = it->second.realId - 1; - for (auto & angle : it->second.angleToNb) { - int origToNew = angle.first; - int newToOrig = (origToNew + 180) % 360; - int adjCellNum = angle.second; // Check + for (auto & nbAndAngle : it->second.angleDict) { + int adjCellNum = nbAndAngle.first; auto adjIt = Cells_Obj.find(adjCellNum); if (adjIt != Cells_Obj.end()) { - adjIt->second.ROSAngleDir.erase(newToOrig); + adjIt->second.ROSAngleDir.erase(it->second.realId); + adjIt->second.fireProgress.erase(it->second.realId); + adjIt->second.angleDict.erase(it->second.realId); + adjIt->second.distToCenter.erase(it->second.realId); } } } diff --git a/cell2fire/Cell2FireC/CellsFBP.cpp b/cell2fire/Cell2FireC/CellsFBP.cpp index 8b5ecdda..dfdce784 100644 --- a/cell2fire/Cell2FireC/CellsFBP.cpp +++ b/cell2fire/Cell2FireC/CellsFBP.cpp @@ -76,7 +76,6 @@ CellsFBP::CellsFBP(int _id, double _area, std::vector _coord, this->angleDict = std::unordered_map(); this->ROSAngleDir = std::unordered_map(); this->distToCenter = std::unordered_map(); - this->angleToNb = std::unordered_map(); } @@ -92,48 +91,49 @@ CellsFBP::CellsFBP(int _id, double _area, std::vector _coord, AvailSet int set */ void CellsFBP::initializeFireFields(std::vector> & coordCells, // TODO: should probably make a coordinate type - std::unordered_set & availSet) // WORKING CHECK OK + std::unordered_set & availSet, + int rows, int cols, int spreadRadius) // WORKING CHECK OK { - for (auto & nb : this->adjacents) { - // CP Default value is replaced: None = -1 - //std::cout << "DEBUG1: adjacent: " << nb.second << std::endl; - if (nb.second != -1) { - int a = -1 * coordCells[nb.second - 1][0] + coordCells[this->id][0]; - int b = -1 * coordCells[nb.second - 1][1] + coordCells[this->id][1]; - - int angle = -1; - if (a == 0) { - if (b >= 0) - angle = 270; - else - angle = 90; + this->angleDict.clear(); + this->ROSAngleDir.clear(); + this->distToCenter.clear(); + this->fireProgress.clear(); + + int radius = spreadRadius; + if (radius < 1) { + radius = 1; + } + const int cellIndex = this->realId - 1; + const int row = cellIndex / cols; + const int col = cellIndex % cols; + const double radToDeg = 180.0 / M_PI; + + for (int dr = -radius; dr <= radius; ++dr) { + for (int dc = -radius; dc <= radius; ++dc) { + if (dr == 0 && dc == 0) { + continue; } - else if (b == 0) { - if (a >= 0) - angle = 180; - else - angle = 0; + const int nr = row + dr; + const int nc = col + dc; + if (nr < 0 || nr >= rows || nc < 0 || nc >= cols) { + continue; } - else { - // TODO: check this logi - double radToDeg = 180 / M_PI; - // TODO: i think all the negatives and abs cancel out - double temp = std::atan(b * 1.0 / a) * radToDeg; - if (a > 0) - temp += 180; - if (a < 0 && b > 0) - temp += 360; - angle = temp; + + const int nbId = nr * cols + nc + 1; + int a = -1 * coordCells[nbId - 1][0] + coordCells[this->id][0]; + int b = -1 * coordCells[nbId - 1][1] + coordCells[this->id][1]; + + double angle = std::atan2(-1.0 * b, -1.0 * a) * radToDeg; + if (angle < 0.0) { + angle += 360.0; } - this->angleDict[nb.second] = angle; - if (availSet.find(nb.second) != availSet.end()) { - // TODO: cannot be None, replaced None = -1 and ROSAngleDir has a double inside - this->ROSAngleDir[angle] = -1; + this->angleDict[nbId] = angle; + if (availSet.find(nbId) != availSet.end()) { + this->ROSAngleDir[nbId] = -1; } - this->angleToNb[angle] = nb.second; - this->fireProgress[nb.second] = 0.0; - this->distToCenter[nb.second] = std::sqrt(a * a + b * b) * this->_ctr2ctrdist; + this->fireProgress[nbId] = 0.0; + this->distToCenter[nbId] = std::sqrt(a * a + b * b) * this->_ctr2ctrdist; } } } @@ -158,8 +158,8 @@ void CellsFBP::initializeFireFields(std::vector> & coordCells, Returns void */ void CellsFBP::ros_distr_old(double thetafire, double forward, double flank, double back) { // WORKING CHECK OK - for (auto & angle : this->ROSAngleDir) { - double offset = std::abs(angle.first - thetafire); + for (auto & nbRos : this->ROSAngleDir) { + double offset = std::abs(this->angleDict[nbRos.first] - thetafire); double base = ((int)(offset)) / 90 * 90; double result; @@ -174,7 +174,7 @@ void CellsFBP::ros_distr_old(double thetafire, double forward, double flank, dou } else if (offset > 270 && offset < 360) { result = this->allocate(offset, 270, flank, forward); } - this->ROSAngleDir[angle.first] = result; + this->ROSAngleDir[nbRos.first] = result; } } @@ -224,8 +224,8 @@ void CellsFBP::ros_distr(double thetafire, double forward, double flank, double //std::cout << "b:" << b << std::endl; // Ros allocation for each angle inside the dictionary - for (auto & angle : this->ROSAngleDir) { - double offset = angle.first - thetafire; + for (auto & nbRos : this->ROSAngleDir) { + double offset = this->angleDict[nbRos.first] - thetafire; if (offset < 0) { offset += 360; @@ -233,7 +233,7 @@ void CellsFBP::ros_distr(double thetafire, double forward, double flank, double if (offset > 360) { offset -= 360; } - this->ROSAngleDir[angle.first] = rhoTheta(offset, a, b) * EFactor; + this->ROSAngleDir[nbRos.first] = rhoTheta(offset, a, b) * EFactor; } } @@ -430,13 +430,14 @@ std::vector CellsFBP::manageFire(int period, std::unordered_set & Avai args->EFactor); //std::cout << "Sale de Ros Dist" << std::endl; - // Fire progress using ROS from burning cell, not the neighbors // + // Fire progress uses the source cell ROS for all outgoing arcs. + // This intentionally retains the paper assumption (same source ROS carried into neighbors). // vector toPop = vector(); // this is a iterator through the keyset of a dictionary for (auto& _angle : this->ROSAngleDir) { - double angle = _angle.first; - int nb = angleToNb[angle]; + int nb = _angle.first; + double angle = this->angleDict[nb]; double ros = (1 + args->ROSCV * ROSRV) * _angle.second; if(std::isnan(ros)){ @@ -673,13 +674,14 @@ std::vector CellsFBP::manageFireBBO(int period, std::unordered_set & A EllipseFactors[3]); //std::cout << "Sale de Ros Dist" << std::endl; - // Fire progress using ROS from burning cell, not the neighbors // + // Fire progress uses the source cell ROS for all outgoing arcs. + // This intentionally retains the paper assumption (same source ROS carried into neighbors). // vector toPop = vector(); // this is a iterator through the keyset of a dictionary for (auto& _angle : this->ROSAngleDir) { - double angle = _angle.first; - int nb = angleToNb[angle]; + int nb = _angle.first; + double angle = this->angleDict[nb]; double ros = (1 + args->ROSCV * ROSRV) * _angle.second; if (args->verbose) { @@ -945,14 +947,6 @@ void CellsFBP::print_info() { // WORKING CHECK OK } std::cout << std::endl; - - printf("angleToNb Dict: "); - for (auto & nb : this->angleToNb){ - std::cout << " " << nb.first << " : " << nb.second; - } - std::cout << std::endl; - - printf("fireProgress Dict: "); for (auto & nb : this->fireProgress){ std::cout << " " << nb.first << " : " << nb.second; @@ -966,5 +960,3 @@ void CellsFBP::print_info() { // WORKING CHECK OK } std::cout << std::endl; } - - diff --git a/cell2fire/Cell2FireC/CellsFBP.h b/cell2fire/Cell2FireC/CellsFBP.h index 95d3bfdf..6ade7b6f 100644 --- a/cell2fire/Cell2FireC/CellsFBP.h +++ b/cell2fire/Cell2FireC/CellsFBP.h @@ -47,9 +47,8 @@ class CellsFBP { std::unordered_map> gMsgListSeason; std::unordered_map fireProgress; // CP: dictionary {int: double} std::unordered_map angleDict; // CP: dictionary {int: double} - std::unordered_map ROSAngleDir; // CP: dictionary {int: double|None} Instead of None we can use a determined number like -9999 = None TODO: maybe int : double + std::unordered_map ROSAngleDir; // CP: dictionary {neighbor id: ROS from this source cell} std::unordered_map distToCenter; // CP: dictionary {int: double} - std::unordered_map angleToNb; // CP: dictionary {double: int} // TODO: reference to shared object @@ -59,7 +58,8 @@ class CellsFBP { int _status, std::unordered_map & _adjacents, int _realId); - void initializeFireFields(std::vector> & coordCells, std::unordered_set & availSet); // TODO: need TYPE + void initializeFireFields(std::vector> & coordCells, std::unordered_set & availSet, + int rows, int cols, int spreadRadius); // TODO: need TYPE void ros_distr_old(double thetafire, double forward, double flank, double back); double rhoTheta(double theta, double a, double b); diff --git a/cell2fire/Cell2FireC/ReadArgs.cpp b/cell2fire/Cell2FireC/ReadArgs.cpp index a3155f7d..c4439d4f 100644 --- a/cell2fire/Cell2FireC/ReadArgs.cpp +++ b/cell2fire/Cell2FireC/ReadArgs.cpp @@ -145,6 +145,7 @@ void parseArgs(int argc, char * argv[], arguments * args_ptr) int dmax_fire_periods= 10000000; int dseed = 123; int diradius = 0; + int dspreadradius = 1; float dROS_Threshold= 0.1; float dHFI_Threshold= 0.1; float dROSCV= 0.; @@ -207,6 +208,17 @@ void parseArgs(int argc, char * argv[], arguments * args_ptr) args_ptr->IgnitionRadius = std::stoi (input_igrad ,&sz); } else args_ptr->IgnitionRadius = diradius; + + //--SpreadRad + char * input_sprad = getCmdOption(argv, argv + argc, "--SpreadRad"); + if (input_sprad){ + printf("SpreadRadius: %s \n", input_sprad); + args_ptr->SpreadRadius = std::stoi (input_sprad ,&sz); + } + else args_ptr->SpreadRadius = dspreadradius; + if (args_ptr->SpreadRadius < 1){ + args_ptr->SpreadRadius = 1; + } //--ROS-Threshold @@ -339,6 +351,7 @@ void printArgs(arguments args){ std::cout << "FirePeriodLen: " << args.FirePeriodLen << std::endl; std::cout << "Ignitions: " << args.Ignitions << std::endl; std::cout << "IgnitionRad: " << args.IgnitionRadius << std::endl; + std::cout << "SpreadRad: " << args.SpreadRadius << std::endl; std::cout << "OutputGrid: " << args.OutputGrids << std::endl; std::cout << "FinalGrid: " << args.FinalGrid << std::endl; std::cout << "PromTuned: " << args.PromTuned << std::endl; @@ -350,4 +363,4 @@ void printArgs(arguments args){ -} \ No newline at end of file +} diff --git a/cell2fire/Cell2FireC/ReadArgs.h b/cell2fire/Cell2FireC/ReadArgs.h index 5fe7fbb1..a121685b 100644 --- a/cell2fire/Cell2FireC/ReadArgs.h +++ b/cell2fire/Cell2FireC/ReadArgs.h @@ -17,7 +17,7 @@ typedef struct{ std::string InFolder, OutFolder, WeatherOpt, HarvestPlan; bool OutMessages, Trajectories, NoOutput, verbose, Ignitions, OutputGrids, FinalGrid, PromTuned, Stats, BBOTuning; float ROSCV, ROSThreshold, HFIThreshold, HFactor, FFactor, BFactor, EFactor, FirePeriodLen; - int MinutesPerWP, MaxFirePeriods, TotalYears, TotalSims, NWeatherFiles, IgnitionRadius, seed; + int MinutesPerWP, MaxFirePeriods, TotalYears, TotalSims, NWeatherFiles, IgnitionRadius, SpreadRadius, seed; std::unordered_set HCells, BCells; } arguments; @@ -31,4 +31,4 @@ void parseArgs(int argc, char * argv[], arguments * args_ptr); void printArgs(arguments args); -#endif \ No newline at end of file +#endif diff --git a/cell2fire/Cell2FireC_class.py b/cell2fire/Cell2FireC_class.py index e7b9d3f9..5e7a0db7 100644 --- a/cell2fire/Cell2FireC_class.py +++ b/cell2fire/Cell2FireC_class.py @@ -67,6 +67,7 @@ def run(self): '--weather', self.args.WeatherOpt, '--nweathers', str(self.args.nweathers), '--ROS-CV', str(self.args.ROS_CV), + '--SpreadRad', str(self.args.SpreadRadius), '--IgnitionRad', str(self.args.IgRadius), '--seed', str(int(self.args.seed)), '--ROS-Threshold', str(self.args.ROS_Threshold), @@ -110,6 +111,7 @@ def run_Heur(self, OutFolder, HarvestPlanFile): '--weather', self.args.WeatherOpt, '--nweathers', str(self.args.nweathers), '--ROS-CV', str(self.args.ROS_CV), + '--SpreadRad', str(self.args.SpreadRadius), '--IgnitionRad', str(self.args.IgRadius), '--seed', str(int(self.args.seed)), '--ROS-Threshold', str(self.args.ROS_Threshold), diff --git a/cell2fire/utils/ParseInputs.py b/cell2fire/utils/ParseInputs.py index c17e86bf..5cf6f0cc 100644 --- a/cell2fire/utils/ParseInputs.py +++ b/cell2fire/utils/ParseInputs.py @@ -61,6 +61,11 @@ def make_parser(): dest="IgRadius", type=int, default=0) + parser.add_argument("--SpreadRad", + help="Neighborhood radius for fire spread (1 uses immediate 8-neighbors)", + dest="SpreadRadius", + type=int, + default=1) parser.add_argument("--gridsStep", help="Grids are generated every n time steps", dest="gridsStep", @@ -401,4 +406,3 @@ def InitCells(NCells, FTypes2, ColorsDict, CellsGrid4, CellsGrid3): Colors.append(ColorsDict[str(CellsGrid3[i])]) return FTypeCells, StatusCells, RealCells, Colors - From 5f8e11d92e430b5126c2f8533e4a09e49c337d3f Mon Sep 17 00:00:00 2001 From: Dave Woodruff Date: Thu, 19 Mar 2026 15:54:11 -0700 Subject: [PATCH 2/3] docs: add high-level SpreadRad documentation page --- doc/src/index.rst | 1 + doc/src/rstfiles/SpreadRadius.rst | 52 +++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 doc/src/rstfiles/SpreadRadius.rst diff --git a/doc/src/index.rst b/doc/src/index.rst index b689ea4f..9253628d 100644 --- a/doc/src/index.rst +++ b/doc/src/index.rst @@ -19,6 +19,7 @@ This software is for research use only. There is no warranty of any kind; there rstfiles/install.rst rstfiles/docker.rst rstfiles/run.rst + rstfiles/SpreadRadius.rst rstfiles/output.rst rstfiles/examples.rst rstfiles/Editing.rst diff --git a/doc/src/rstfiles/SpreadRadius.rst b/doc/src/rstfiles/SpreadRadius.rst new file mode 100644 index 00000000..cced8be0 --- /dev/null +++ b/doc/src/rstfiles/SpreadRadius.rst @@ -0,0 +1,52 @@ +============================== +Spread Neighborhood (SpreadRad) +============================== + +Cell2Fire now supports configurable spread neighborhoods through ``--SpreadRad``. + +Background +---------- + +The original spread model uses a 1-neighborhood: each burning cell can spread to its +immediate Moore neighbors (up to 8 cells in the interior of the grid). + +With ``--SpreadRad n``, the candidate spread neighborhood is extended to the Moore +radius ``n`` around the burning cell: + +- ``n=1`` gives up to 8 neighbors +- ``n=2`` gives up to 24 neighbors +- in general, interior cells have ``(2n+1)^2 - 1`` potential neighbors + +Modeling Assumption Retained +---------------------------- + +The spread logic keeps the existing modeling assumption: fire progress from source cell +``i`` to all candidate neighbors uses the ROS determined at source cell ``i``. +Target neighbors do not recompute ROS for this incoming message. + +Usage +----- + +Default behavior (backward compatible): + +.. code-block:: bash + + python main.py --input-instance-folder ../data/Sub40x40/ --output-folder ../results/Sub40x40 + +Explicit 1-neighborhood (same as default): + +.. code-block:: bash + + python main.py --input-instance-folder ../data/Sub40x40/ --output-folder ../results/Sub40x40 --SpreadRad 1 + +Two-tier neighborhood: + +.. code-block:: bash + + python main.py --input-instance-folder ../data/Sub40x40/ --output-folder ../results/Sub40x40 --SpreadRad 2 + +Notes +----- + +- ``--SpreadRad`` only affects fire spread neighborhood geometry. +- ``--IgnitionRad`` is a different parameter and controls ignition-area expansion. From 1e987b01814148aeb670e03aed470e527814edeb Mon Sep 17 00:00:00 2001 From: Dave Woodruff Date: Thu, 19 Mar 2026 16:35:32 -0700 Subject: [PATCH 3/3] ci: remove bitrot branch triggers from workflows --- .github/workflows/expl_heuristic.yml | 4 ++-- .github/workflows/fullstat_allplot.yml | 4 ++-- .github/workflows/sub20x20.yml | 4 ++-- .github/workflows/testReadme1.yml | 4 ++-- .github/workflows/test_datagenerator.yml | 4 ++-- .github/workflows/test_dogrib.yml | 4 ++-- .github/workflows/test_h1.yml | 4 ++-- .github/workflows/test_h2.yml | 4 ++-- .github/workflows/test_h3.yml | 4 ++-- .github/workflows/test_randweather.yml | 4 ++-- .github/workflows/test_readspot.yml | 4 ++-- .github/workflows/test_spread_radius.yml | 4 ++-- 12 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/expl_heuristic.yml b/.github/workflows/expl_heuristic.yml index 9807b7b3..4d4269f1 100644 --- a/.github/workflows/expl_heuristic.yml +++ b/.github/workflows/expl_heuristic.yml @@ -5,9 +5,9 @@ name: expl_heuristic # Kotaro Yama on: workflow_dispatch: push: - branches: [main, bitrot] + branches: [main] pull_request: - branches: [main, bitrot] + branches: [main] defaults: run: diff --git a/.github/workflows/fullstat_allplot.yml b/.github/workflows/fullstat_allplot.yml index bbb21eec..7d2e4328 100644 --- a/.github/workflows/fullstat_allplot.yml +++ b/.github/workflows/fullstat_allplot.yml @@ -4,9 +4,9 @@ name: fullstat_allplot # Kotaro Yama on: workflow_dispatch: push: - branches: [main, bitrot] + branches: [main] pull_request: - branches: [main, bitrot] + branches: [main] defaults: run: diff --git a/.github/workflows/sub20x20.yml b/.github/workflows/sub20x20.yml index 0e521c92..5c0e1f73 100644 --- a/.github/workflows/sub20x20.yml +++ b/.github/workflows/sub20x20.yml @@ -4,9 +4,9 @@ name: sub20x20 # Test2_zonghan on: workflow_dispatch: push: - branches: [main, bitrot] + branches: [main] pull_request: - branches: [main, bitrot] + branches: [main] defaults: run: diff --git a/.github/workflows/testReadme1.yml b/.github/workflows/testReadme1.yml index 4d44c13e..687709c4 100644 --- a/.github/workflows/testReadme1.yml +++ b/.github/workflows/testReadme1.yml @@ -4,9 +4,9 @@ name: Test First Readme Example on: workflow_dispatch: push: - branches: [main, bitrot] + branches: [main] pull_request: - branches: [main, bitrot] + branches: [main] defaults: run: diff --git a/.github/workflows/test_datagenerator.yml b/.github/workflows/test_datagenerator.yml index 448d7cb4..0b99f087 100644 --- a/.github/workflows/test_datagenerator.yml +++ b/.github/workflows/test_datagenerator.yml @@ -3,9 +3,9 @@ name: test_datagenerator on: workflow_dispatch: push: - branches: [main, bitrot] + branches: [main] pull_request: - branches: [main, bitrot] + branches: [main] defaults: run: diff --git a/.github/workflows/test_dogrib.yml b/.github/workflows/test_dogrib.yml index 3c689704..8ab057d5 100644 --- a/.github/workflows/test_dogrib.yml +++ b/.github/workflows/test_dogrib.yml @@ -4,9 +4,9 @@ name: dogrib on: workflow_dispatch: push: - branches: [main, bitrot] + branches: [main] pull_request: - branches: [main, bitrot] + branches: [main] defaults: run: diff --git a/.github/workflows/test_h1.yml b/.github/workflows/test_h1.yml index b5c2bc4a..f4390f8b 100644 --- a/.github/workflows/test_h1.yml +++ b/.github/workflows/test_h1.yml @@ -4,9 +4,9 @@ name: test_h1 # Kotaro Yama on: workflow_dispatch: push: - branches: [main, bitrot] + branches: [main] pull_request: - branches: [main, bitrot] + branches: [main] defaults: run: diff --git a/.github/workflows/test_h2.yml b/.github/workflows/test_h2.yml index 4fd1112b..4de8975d 100644 --- a/.github/workflows/test_h2.yml +++ b/.github/workflows/test_h2.yml @@ -4,9 +4,9 @@ name: test_h2 # Kotaro Yama on: workflow_dispatch: push: - branches: [main, bitrot] + branches: [main] pull_request: - branches: [main, bitrot] + branches: [main] defaults: run: diff --git a/.github/workflows/test_h3.yml b/.github/workflows/test_h3.yml index 2503f5cd..70c302ee 100644 --- a/.github/workflows/test_h3.yml +++ b/.github/workflows/test_h3.yml @@ -4,9 +4,9 @@ name: test_h3 # Kotaro Yama on: workflow_dispatch: push: - branches: [main, bitrot] + branches: [main] pull_request: - branches: [main, bitrot] + branches: [main] defaults: run: diff --git a/.github/workflows/test_randweather.yml b/.github/workflows/test_randweather.yml index 0f01a37d..3007d6fa 100644 --- a/.github/workflows/test_randweather.yml +++ b/.github/workflows/test_randweather.yml @@ -4,9 +4,9 @@ name: randweather on: workflow_dispatch: push: - branches: [main, bitrot] + branches: [main] pull_request: - branches: [main, bitrot] + branches: [main] defaults: run: diff --git a/.github/workflows/test_readspot.yml b/.github/workflows/test_readspot.yml index 1cee7026..2becd7b2 100644 --- a/.github/workflows/test_readspot.yml +++ b/.github/workflows/test_readspot.yml @@ -4,9 +4,9 @@ name: test_readspot on: workflow_dispatch: push: - branches: [main, bitrot] + branches: [main] pull_request: - branches: [main, bitrot] + branches: [main] defaults: run: diff --git a/.github/workflows/test_spread_radius.yml b/.github/workflows/test_spread_radius.yml index 77b706bb..9d7c72ce 100644 --- a/.github/workflows/test_spread_radius.yml +++ b/.github/workflows/test_spread_radius.yml @@ -3,9 +3,9 @@ name: test_spread_radius on: workflow_dispatch: push: - branches: [main, bitrot] + branches: [main] pull_request: - branches: [main, bitrot] + branches: [main] defaults: run: