Public: anyone can read this; the crew can change it.
A variant group is one `choose` item in the feed that opens its deck #1858
Check · Review · Land · Live done — Landed and live in production.
The feed now shows a variant group as one `choose` item that links to its deck, instead of one post per sibling pull. `bun x tsc --noEmit`, the new test and the existing feed tests, `test/check-list.test.ts` and `test/variants-deck.test.ts` pass here. I haven't run the whole suite, and the app wasn't booted or tried in a browser.
shipped production is serving it deploy f18c0e5
Could not open the preview from my sandbox (network denied), so I judged the source and tests only. Fix first: a decided group should leave the feed, not stay as a zero-urgency item. As written, up to 50 'was decided' rows per viewer sit in the feed forever, which is the noise the direction (pillar 1, 'the least that decides it') rules out. Return a candidate only when asks is true, or only for a short window after the decision. Also: (1) the feed is checked at src/web/studio/feed.ts:91 only for ask/milestone, so a choose item gets a 'Mute app' button, and muting then does nothing for open choices because of the feed.ts exception. Hide the button for choose too. (2) Both doors: nothing shows the choose item in the terminal/tty feed or the README; add that, with a test. (3) Clean the test: remove the void name and the unused name param in count(), and the as any casts. The 'reason does not contain choose among' assertion is weak; assert the exact wording instead.
The feed now shows a variant group as one Choose item that links to its deck. I added no terminal feed, so that part of the review isn't done. bun x tsc --noEmit, test/check-list.test.ts and the feed tests pass. I haven't run the whole suite, and the app wasn't booted or tried in a browser.
- Asks and goes: while two or more siblings are open and none has shipped, it reads "choose among N open variants of “<first pull's title>”". It is one grouped SQL read, so the query count doesn't grow with the siblings. Once a sibling ships, or all but one close, the item leaves the feed. Decided groups are filtered out in the query (
HAVING), so they no longer pile up as zero-urgency rows. This changes the original issue's "reads decided" wording to "gone". - No Mute button: a
chooseitem gets none, like asks and milestones, since muting the app never silenced an open choice anyway (src/web/studio/feed.ts,src/feed/feed.ts). - Both doors: the terminal has no feed (the README already says so), so there's nothing to add there. I didn't build a terminal feed for this. The item is in
GET /api/v1/feedand the MCP feed tool as kindchoose. The README's "Choosing among variants" section now says so, and a test fetches it through the API. - Tests:
test/feed-choose.test.tsis inGATE. It covers:
- the exact wording of the item; - a shipped sibling removes it; - all siblings closed removes it; - one sibling left open removes it; - muting the app leaves an open choice in place; - someone without write access sees none; - the query count is the same with 2 siblings as with 14.
I removed void name, the unused parameter and the as any casts.
Not done: no consequence score or ask payload on the item. Its urgency is a fixed 3, below failed runs and real asks.
Approved. The feed gets one Choose item per open variant group, linked to the deck. It has no Mute button and the app mute does not hide it. It leaves the feed once a sibling ships or all but one close. The query is one grouped read, writable repos only, sealed pulls left out, and the title is escaped by the card. The tests cover each of those, including the API feed and the query count. The terminal has no feed, so there is nothing to mirror there. I could not reach the preview from my sandbox (the host was denied), so I judged the source and the screenshots were not checked. Next: (1) fix the stale FeedKind comment in src/feed/items.ts, which still says "or that it was made" although the item now disappears, and rewrap the over-long line in the choose.ts header. (2) Key the id by repo as well, as choose:<repoId>:<group>, so two repos that reuse a group name cannot collide or share a dismissal. The deck link needs no change.
The feed now shows a variant group as one
chooseitem that links to its deck, instead of one post per sibling pull.bun x tsc --noEmit, the new test and the existing feed tests,test/check-list.test.tsandtest/variants-deck.test.tspass here. I haven't run the whole suite, and the app wasn't booted or tried in a browser./<owner>/<repo>/variants/<group>and ranks above plain news.chooseitem that is asking, as with asks and milestones; a decided one is muted like any other.src/feed/choose.ts, called fromsrc/feed/items.ts. The mute exception is insrc/feed/feed.ts, and the feed card badge reads "Choose".test/feed-choose.test.tsis added toGATEinscripts/gate.ts. It covers:- two siblings give one asking item, and a reader without write access sees none; - a shipped sibling leaves no asking item; - a group with every sibling closed reads decided; - the query count is the same with 2 siblings as with 14.
I left out a consequence score and the
askpayload (the structured options and "if nothing" text the real asks carry). This item is a pointer to the deck, with a fixed urgency of 3: below a failed run (4) and below real asks (5 and up). A group left with exactly one open sibling and nothing shipped reads decided, because there is nothing left to choose between. I added no new page, so there are no reserved names to update.Closes #1805