ci / test (pull_request) Successful in 1m8s
The five branches each worked alone against an older `main` and conflicted with it and with one another. Merged one at a time, every conflict resolved by keeping both sides' behaviour, with all three suites green after each merge. Nothing was left out. Where the two sides met: - `promote_next` (#286 against #245/#285): it fills every free slot in one pass and returns the cards it started, and a card waiting on a person now reaches only the cards that wait on it — the stalled `ready` cards hold no slot, their specs get one andon note each, and the gate reads the open dependencies through `waits_on` so the log says what each held card waits on. `deps_met` stays for the callers and tests that read it directly. - Astra's picks with no card (#281 against #282): the key decides. A `venture:` pick is dispatched or written by `start_venture`; anything else is one of the records' own `opt:` findings and is written as a card. Both show up in the beat (`started`, `opt`), in the live lines and in the dry run, and `router.table` says "would be written as a card" only for an `opt:` key, so a venture still reads as "would queue". - `router.py`'s candidate docstring and the two additive candidate sections (#170's `new_venture`/`v2_candidates`, #171's optimization sources) both kept. - README and CHANGELOG keep every side's lines. Tests: both sides' blocks are kept and run — 80, 135/245/247, 170, 171, 172, astra 1-3, 79/79b/79c/79 handoffs. #286's `promote_next` assertions were rewritten to the list shape the parallel scheduler returns; nothing was dropped. `python3 .github/time/test_time.py`, `test_seed.py` and `test_housekeeping.py` all pass. No file under `.github/workflows/`, no secret and no deploy file was touched. Includes #286 Includes #281 Includes #282 Includes #290 Includes #291 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FAqjv1mK1ziVNiYsn1CFbY