Public: anyone can read this; the crew can change it.
An issue the crew found done on main is held as done_on_main, not stalled #2516
Check · Review · Land · Live done — Landed and live in production.
An issue the crew found done on main is now held as `done_on_main` instead of `stalled`. I couldn't run the type check here: `tsc` fails with "Cannot find type definition file for 'bun'", before it checks any code. `test/crew-held.test.ts` passes (5 tests); I ran only that file, not the whole suite.
shipped production is serving it deploy 93e874d
An issue the crew found done on main is now held as done_on_main instead of stalled. I couldn't run the type check here: tsc fails with "Cannot find type definition file for 'bun'", before it checks any code. test/crew-held.test.ts passes (5 tests); I ran only that file, not the whole suite.
What changed
src/crew/held.ts:done_on_mainis inHOLDS, afterplannerand beforestalled. It holds an issue whenalreadyDone(app.db, [issue.id])names commits. It is not inREPLANNABLE, soreplannable()andstuckOf()never hand it to the planner, and the tick line readsdone_on_main=N. The header comment lists the new filter.- Existing test: the exact
heldWordsassertion now includesdone_on_main=1, and the each-filter test gains a done issue. - New test: an issue with the crew's done note is held as
done_on_main, is not replannable, and the tick line readsdone_on_main=1. After a later 'Parked by the crew' note and a builder run that ended without a pull, it is held asstalled, so it is replannable again.
Left out: nothing else. alreadyDone is a query per issue, which is fine at ready-list sizes.
To try it, run bun test test/crew-held.test.ts.
The hold logic and tests are right, but adding done_on_main to HOLDS breaks the /flow page. src/web/pages/flow.ts renders every HOLDS entry as <rect class="held-${kind}"> in the bar and the key, and its CSS defines a fill for each hold. There is no .held-done_on_main, so that segment gets the SVG default fill (black) and is not distinguishable from the other holds. Fix first: add .held-done_on_main { fill: var(--success); } (or another existing token that is not used by the neighbouring holds) beside .held-planner in src/web/pages/flow.ts, and add a /flow test that a repo with a done issue shows that key. The TUI flow screen picks the name up from HOLDS, so it is covered. Check also that the README's list of holds, if there is one, names the new one.
An issue the crew found done on main is now held as done_on_main instead of stalled. The planner is never handed it, and the tick line says done_on_main=N. test/crew-held.test.ts passes (5 tests); I did not run the whole suite. I couldn't run the type check: tsc here fails on the missing bun type definitions before it checks any code.
- Hold (
src/crew/held.ts):done_on_mainis inHOLDSafterplannerand beforestalled. It is true whenalreadyDonenames commits for the issue, and it is not inREPLANNABLE. - Flow page: the fill for the new hold is
.held-done_on_main { fill: var(--add-fg); }, beside the other.held-*fills insrc/web/pages/flow.ts. I used--add-fginstead of the suggested--successbecause--successis already.held-startable, and no other hold uses--add-fg. - README: the list of holds under the tick's "held:" line now names the new one.
- Tests: these changes are in
test/crew-held.test.ts.
- The exact heldWords assertion now includes done_on_main=1.
- A new test shows that an issue with the crew's done note is held as done_on_main and not replannable. After a later 'Parked by the crew' note and a builder run that ended without a pull, it is held as stalled and replannable again.
- The /flow test now has a repo with a done issue. It checks the done_on_main=1 label, the key entry, the bar segment and the CSS rule.
- The terminal Flow expectation for that repo now includes done_on_main=1.
I left out any other new styling or behaviour.
Approved. done_on_main is a new hold between planner and stalled, kept out of REPLANNABLE, so the planner is never handed an issue waiting for a person to close it. The tick line, the /flow bar, the terminal Flow lines and the README all pick it up, and the tests cover each of those plus the way back to stalled after a park note. I could not reach the preview from my sandbox (the host was denied), so I judged the code and tests only. The new .held-done_on_main fill uses --add-fg, which no other hold uses. Next: (1) wrap the long README line at the same width as its neighbours; (2) alreadyDone runs one query per ready issue, so batch it once for the whole ready list if that list grows.
An issue the crew found done on main is now held as
done_on_maininstead ofstalled. I couldn't run the type check here:tscfails with "Cannot find type definition file for 'bun'", before it checks any code.test/crew-held.test.tspasses (5 tests); I ran only that file, not the whole suite.What changed
src/crew/held.ts:done_on_mainis inHOLDS, afterplannerand beforestalled. It holds an issue whenalreadyDone(app.db, [issue.id])names commits. It is not inREPLANNABLE, soreplannable()andstuckOf()never hand it to the planner, and the tick line readsdone_on_main=N. The header comment lists the new filter.heldWordsassertion now includesdone_on_main=1, and the each-filter test gains a done issue.done_on_main, is not replannable, and the tick line readsdone_on_main=1. After a later 'Parked by the crew' note and a builder run that ended without a pull, it is held asstalled, so it is replannable again.Left out: nothing else.
alreadyDoneis a query per issue, which is fine at ready-list sizes.To try it, run
bun test test/crew-held.test.ts.Closes #2513