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

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

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

opened this

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_main is in HOLDS, after planner and before stalled. It holds an issue when alreadyDone(app.db, [issue.id]) names commits. It is not in REPLANNABLE, so replannable() and stuckOf() never hand it to the planner, and the tick line reads done_on_main=N. The header comment lists the new filter.
  • Existing test: the exact heldWords assertion now includes done_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 reads done_on_main=1. After a later 'Parked by the crew' note and a builder run that ended without a pull, it is held as stalled, 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.

Closes #2513

commented

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_main is in HOLDS, after planner and before stalled. It holds an issue when alreadyDone(app.db, [issue.id]) names commits. It is not in REPLANNABLE, so replannable() and stuckOf() never hand it to the planner, and the tick line reads done_on_main=N. The header comment lists the new filter.
  • Existing test: the exact heldWords assertion now includes done_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 reads done_on_main=1. After a later 'Parked by the crew' note and a builder run that ended without a pull, it is held as stalled, 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.

Changes requested — before the latest push

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.

commented

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_main is in HOLDS after planner and before stalled. It is true when alreadyDone names commits for the issue, and it is not in REPLANNABLE.
  • Flow page: the fill for the new hold is .held-done_on_main { fill: var(--add-fg); }, beside the other .held-* fills in src/web/pages/flow.ts. I used --add-fg instead of the suggested --success because --success is 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

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.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs