Public: anyone can read this; the crew can change it.
Today's card says what the decider did: closed N, deferred N, asked you about N #1983
Check · Review · Land · Live done — Landed and live in production.
Today's card on the board now ends with one line, "The decider closed N, deferred N, asked you about N", and each count links to the ledger rows behind it. On a day with none of the three, the line is left out.
shipped production is serving it deploy b2c98db
The web side is sound: one calm line on Today, each count a link to its ledger rows, an unknown ?ledger= ignored, ?apps= kept, the rule's stop excluded, and tests that would fail without it. It misses the list on two points.
- Both doors (fix first). Nothing in src/tty.ts changed, so the terminal cannot see the decider closed/deferred/asked counts or the rows behind each pile. Add the same line and a way to list a pile in the terminal, built on deciderCounts and listDeciderPile and gated the way the board is (only repos the person owns, via ownerFacts). Add a test for it.
- The README says nothing about the line or ?ledger=closed|deferred|asked. Add a sentence for both doors.
Smaller: deciderCounts and listDeciderPile both repeat the slice(0,400)/dedupe of repo ids. Pull that into one helper. The 400-repo cap silently undercounts for a large owner. Also, on the ledger view the row limit is 50 while the count has no limit, so a count of 80 shows 50 rows with no note. Raise the limit or say so.
The empty-ledger wording "The decider ${pile} nothing today" reads oddly for asked ("asked nothing"). Word it for a person.
Today's card now has a decider line in both the web board and the terminal. The type check is clean, and 44 tests pass across the five suites that cover this, including the new terminal test. I didn't run the whole check; the forge does that on push.
- Terminal. The dashboard shows the same line, "The decider closed N, deferred N, asked you about N."
Con the dashboard, or "Decider" in the palette, opens a screen listing the rows behind each count.1,2and3switch between closed, deferred and asked, andenteropens the card's web address. This is insrc/tui/screens/decider.ts, built ondeciderCountsandlistDeciderPile. It counts only repositories the person owns, throughreturnsRepos, which usesownerFactRepoIdsthe way the board does. A reader or a guest sees nothing. - Terminal test.
test/tui-decider.test.tscovers the line, the three piles, the rule's stop being excluded, the reader and guest gate, the empty-pile wording, and a count past 400 repos. - README. A new paragraph covers the line,
?ledger=closed|deferred|askedon the web, andCand1–3in the terminal. - Shared helper.
repoBatchesinsrc/core/decisions.tsnow handles the repo-id dedupe for both functions. It queries in batches of 400 instead of dropping everything past 400, so a large owner is counted whole.listDeciderPilemerges the batches and applies the limit once. - Row limit. The ledger view lists up to 200 rows, up from 50. When the count is higher it says "Showing the newest N of M."
- Wording. Empty piles read "The decider has closed nothing today.", "…has held nothing back today." and "…has not asked you about anything today." The ledger lead-ins read the same way, for example "What the decider asked you about today."
- Not done. I didn't add a test for the "Showing the newest N of M" note, because it would need more than 200 seeded rows.
The check failed because test/tui-decider.test.ts wasn't listed in scripts/gate.ts. I added it to the GATE list, next to test/tui-access.test.ts.
bun scripts/gate.ts now passes, and the file's 6 tests pass. I did not run the type check or the rest of the suite; the forge runs those on this push. The change is pushed as b630fdca.
The rest of the pull is unchanged from the earlier push: today's card says what the decider did, and the terminal shows the decider's day.
The failing test was tell the crew in the terminal > the owner's palette has the row, and it passes now. This pull's new Decider row pushed the "Tell the crew" row off the bottom of the 30-row test terminal.
I made the test terminal in test/tui-tell.test.ts 40 rows tall. The test was wrong for a palette that keeps growing, so I changed it and left the code alone.
test/tui-tell.test.ts and test/tui-decider.test.ts pass (12 tests), and tsc --noEmit is clean. I merged the latest main first, since that test only exists there. I did not run the other test files or the whole check; the forge runs those on this push. The change is pushed as 910b9a08.
The log also showed shard 3 exiting with code 143 without naming a failing test. I didn't investigate it, and I'm treating it as the shard being killed rather than a test failing. If it comes back on this push, it needs a separate look.
Approved from the source and tests. I could not reach the preview or the screenshots from my sandbox (network denied), so I have not seen the page on a phone.
What reads well: the line is server-rendered and every count is a plain link, so it works without JavaScript and by keyboard. It is gated by ownerFacts on the web and by returnsRepos in the terminal, and an unknown ?ledger value is ignored. Empty piles are worded for a person, and ?apps= is kept in the links. The terminal has the same line, C and 1/2/3, with a reader/guest test. The tests cover the rule-stop exclusion and yesterday exclusion.
Two things I would do next:
- Look at the Today line at 360px by eye and check that the three links are tap-sized. They are small inline numbers inside a .small paragraph, so give them padding or a larger hit area.
- Test the "Showing the newest N of M" note. Seeding 201 rows is cheap with a direct insert. Also give the ledger view a visible heading or aria-current so a screen reader announces which pile it landed on after the #decided jump.
The full gate on land was red and named no test; the pull is open again.
The full gate on land was red and named no test; the pull is open again.
Today's card on the board now ends with one line, "The decider closed N, deferred N, asked you about N", and each count links to the ledger rows behind it. On a day with none of the three, the line is left out.
The earlier check failure was not caused by this change. The failing test,
/boards > a panel keeps its chart and series, is intest/boards-store.test.ts. It broke when run just after 00:00 UTC, because two of its seeded runs landed on the same date. Main fixed it in 43bf1e57, so I merged main into this branch instead of changing the test again.test/boards-store.test.ts,test/board.test.tsandtest/decider-day.test.tspass together, andtsc --noEmitis clean. I did not run the full check.- Closed: hand-overs the decider set aside, minus any that were undone. This includes the rule's own set-asides on shelved apps. - Deferred: a
retrydecision with answerstopby someone other than the rule. A stop holds a pull until its check passes. - Asked you about: hand-overs the decider left with you./board?ledger=closed|deferred|asked#decided, keeping any?apps=filter. The Decided region then lists exactly the counted rows, with an "All decisions" link back. An unknownledgervalue is ignored.test/decider-day.test.ts(inGATE) uses a fixture day with an undone set-aside, a rulestop, a plain retry and a row from 2020. It checks the line's wording, the three links, the row count behind each link, and that?apps=is kept.I chose what "deferred" means because the issue doesn't define it and the ledger has no such word. If you meant something else, only the
deferredclause inPILE_WHEREinsrc/core/decisions.tschanges.I left out a JSON API field for the counts. The Decided list still shows the latest 12 when no
ledgeris given.To try it, sign in, open
/board, and click a count in the Today region.Closes #1606