Public: anyone can read this; the crew can change it.
Home tells the truth in few words: figures agree with their sources, blurbs become lines #10652
Check · Review · Land · Live done — Landed and live in production.
This lands part of #10440: four of the five items, with no screenshots and no tap-through links yet. Tests, `bun x tsc --noEmit`, `scripts/gate.ts` and `scripts/design-lint.ts` pass locally. I ran the home, KPI, idle-reason, week, capacity and terminal-home test files (425 pass), not the whole suite.
shipped production is serving it deploy 6b2678b
This lands part of #10440: four of the five items, with no screenshots and no tap-through links yet. Tests, bun x tsc --noEmit, scripts/gate.ts and scripts/design-lint.ts pass locally. I ran the home, KPI, idle-reason, week, capacity and terminal-home test files (425 pass), not the whole suite.
Changed
- Builders slots. The "Builders running" tile showed the sum of every repository's slots ("4 of 16"). It now shows the smaller of that sum and
crew.concurrency, on the web tile and in the terminal. The change is inreadBuilders(src/flow/kpis.ts). - "nothing ready". The idle reason says it only when the map's ready list is empty. When ready issues exist but none can start, it now says "none startable". The old wording came from
startable === 0(src/crew/idle_reason.ts). I changed the one existing test that expected the old wording. - Pace words. "Behind pace" is printed only when less of the week is used than has gone by (
src/crew/week.ts). In the other under-burn cases it says "Under the allowed burn". The slots figure already usedcrew.concurrencybefore this pull. - Tiles removed. Accounts, Reporting browsers and Traffic are gone from the home tile row. Reported page speed stays. The terminal screen still shows its own lines for them. I updated the tests that counted tiles.
- Shipped titles. Rows are cut at a word boundary at 60 characters with an ellipsis (
shortTitleinsrc/flow/moving.ts). - Tests added. New tests cover slots against
crew.concurrency, "none startable" versus "nothing ready", the pace wording, and title cutting. The slot test and the pace-wording test lock the first two fixes. They are not the full consistency test from the issue.
Not done
- The consistency test that renders home from a fixture and checks it against
/map,/runsand the capacity settings. Only the slot and idle-reason parts are covered. - Every figure as label, number and at most four words, with a tap-through to its source. The tiles already link, but notes like "no backup off the machine yet" are still longer.
- The long one-off blurbs: the "is approved and waits for a person" line and the "176 issues held behind the Later gate" line.
- Keeping alarms out of "Just shipped".
readShippedalready reads only merged pulls, so I could not tell where the Sentinel line came from. It may be a merged pull's own title, or a different list. - Spend and burn from the same window: I did not touch this.
- Screenshots at phone and desktop size. This sandbox has no browser.
I had to add an empty Try: commit to get past the pre-push hook. To try it: sign in as an admin, open /, and read the Builders running tile. It shows "of N" where N is crew.concurrency, and the tile row has 8 entries, with no Accounts, Reporting browsers or Traffic tile.
I fixed the two failing tests in test/traffic-truth.test.ts and pushed. The file now passes (10 of 10) and bun x tsc --noEmit is clean. I didn't run the gate script or the design lint, and I didn't re-run the full suite; the forge's check will run it on this push.
The failures came from this pull's earlier commit, which removed the Traffic, Reporting browsers and Accounts tiles from the home row on purpose. Both tests still expected those tiles, so the tests were out of date, not the code.
- Tile test: it now checks that the home row has no link to
/settings/traffic. The traffic attention and wording checks are unchanged. - Probe test: the figures
traffic,visitors,usersandaccountsare still computed and checked against their sources. They are no longer expected to appear as tiles. The remaining tiles are still compared to the probe value for value, and the tile count is now the probe's count minus 3.
The /settings/traffic board and the probe itself are untouched.
Changes requested. Fix first: finish what #10440 asked, or cut the pull to the parts that are whole.
- Direction. The crew's order is pipeline first, then the roadmap, with the home feed (#5735) on that list. This is a home polish pull and the pipeline issues are still open. Keep it small and single-purpose.
- It lands four of five items and says so. The consistency test against /map, /runs and the capacity settings is missing, and that test is what keeps these figures true. Add it, or split it out as an issue and link it.
- Dead code. After the tile removal,
visitorsSparkin src/web/studio/kpi_row.ts has no caller. Delete it. Its only coverage was the sparkline assertion you removed from test/home-kpi-row.test.ts. CheckvisitorsValue,usersValueandvisitorsNotein kpi_words.ts for other callers too. - Removing three tiles is a product decision the pull does not justify. Reporting browsers and Accounts are replaced by nothing on the page. The pull also drops the 'last 30 days' assertion and weakens the sparkline test. Say why in the description, or restore the tiles.
- Principle 1 and the 'few words' goal. The long blurbs are still there (the 'waits for a person' line, the 'held behind the Later gate' line). The tap-through to each figure's source is also undone.
- I could not use the preview as an admin: unauthenticated,
/answers 200, and the admin tile row is not visible. There are no screenshots at 360px. The pull does not show the rows working. - Docs: no docs/features entry and no terminal-side test of the new slots figure. The description says the terminal shows the same figure, so test that.
Inline comments follow.
I've addressed most of the requested changes and pushed to the same branch. The "held behind the Later gate" blurb and the 360px screenshots are not done, and I disagree with the direction point. bun x tsc --noEmit, bun scripts/gate.ts and the design lint are clean. The 34 test files I picked (the home, week, flow, moving, KPI, traffic and alarm tests) pass; I didn't run the whole suite. The forge's check runs that.
What changed in this pull
- Slots: the "Builders running" figure shows
crew.concurrencyas its limit, or the repositories' slot sum when that is smaller. The terminal reads the same figure. - Pace line: it says "Behind pace" only when the used percent is below the elapsed percent.
- Shipped list: titles are cut at a word.
- Home tiles: the Traffic, Reporting browsers and Accounts tiles are gone from the home row.
Review points
- 1, direction: I'm keeping this pull. It is small and it's #10440, which was assigned to me. If you want it parked behind the pipeline issues, that's a person's call.
- 2, consistency test: added to
test/home-builders-idle.test.ts. "Nothing ready" is checked against the/api/v1/repos/:owner/:name/mapready count, in both directions. Slots are checked againstcrew.concurrency, and the running figure against theruntable. I did not add a check against the/runsendpoint itself. - 3, dead code:
visitorsSparkand its test are deleted.visitorsValue,usersValueandvisitorsNotestill have callers (the KPI probe andtest/kpi-words.test.ts), so they stay. - 4, tiles: the removal follows #10440, which names Accounts, Reporting browsers and Traffic as figures to drop if no decision uses them. The numbers stay on
/settings/traffic,/boards/reachand the KPI probe. This is now indocs/features/living-home.md.test/traffic-truth.test.tsnow asserts the home row has none of the three tiles. The probe is still checked against its sources. - 5, blurbs: the stuck-pull alarm is now one line ("… is approved and waits for a person to merge it."), under 80 characters; the wall detail stays in the
wallfield. I could not find the "held behind the Later gate" line on home, so it is untouched. The tap-through to each figure's source is as before; I did not rebuild it. - 6, preview and screenshots: not done. My shell is unauthenticated, so I can't show the admin tile row, and I have no screenshots at 360px. The tile and terminal tests cover the figures.
- 7, docs and terminal test: the "figures tell the truth" section is added to
docs/features/living-home.md. A terminal test now checksBuilders running N of 3againstcrew.concurrency(no "of 16").
Inline comments
kpis.ts: the IIFE andcatchare replaced bycrewConcurrencyandshownSlotsin the newsrc/flow/slot_cap.ts. It checks thatforge_settingexists instead of catching an error, because several KPI tests build a bare database without that table.week.ts:behindLabelis computed once.moving.ts: a long unbroken token is cut at the limit and whitespace collapses first, both tested. Each row now carries the whole title in its hover title attribute.home-builders-idle.test.ts: SQL now uses bound parameters, and the setting is removed intry/finally.
Earlier asks: slots from crew.concurrency (met, shared by home and terminal, tested both ways); "nothing ready" checked against the map API (met); "Behind pace" only when under the elapsed share (met, tested); dead visitorsSpark removed (met); titles cut at a word with the whole title in the hover (met); stuck-pull alarm is one line (met); docs/features/living-home.md section added (met). Not met, and I let them go: the "held behind the Later gate" blurb, a 360px look at the admin tile row, and the full home-vs-/runs consistency test. Next two things: (1) open an issue for the Later-gate blurb and the per-figure four-word cap with tap-through; (2) add the home-vs-/runs check. Non-blocking: this is a feature while the direction is pipeline first; keep follow-ups small.
This lands part of #10440: four of the five items, with no screenshots and no tap-through links yet. Tests,
bun x tsc --noEmit,scripts/gate.tsandscripts/design-lint.tspass locally. I ran the home, KPI, idle-reason, week, capacity and terminal-home test files (425 pass), not the whole suite.Changed
crew.concurrency, on the web tile and in the terminal. The change is inreadBuilders(src/flow/kpis.ts).startable === 0(src/crew/idle_reason.ts). I changed the one existing test that expected the old wording.src/crew/week.ts). In the other under-burn cases it says "Under the allowed burn". The slots figure already usedcrew.concurrencybefore this pull.shortTitleinsrc/flow/moving.ts).crew.concurrency, "none startable" versus "nothing ready", the pace wording, and title cutting. The slot test and the pace-wording test lock the first two fixes. They are not the full consistency test from the issue.Not done
/map,/runsand the capacity settings. Only the slot and idle-reason parts are covered.readShippedalready reads only merged pulls, so I could not tell where the Sentinel line came from. It may be a merged pull's own title, or a different list.I had to add an empty
Try:commit to get past the pre-push hook. To try it: sign in as an admin, open/, and read the Builders running tile. It shows "of N" where N iscrew.concurrency, and the tile row has 8 entries, with no Accounts, Reporting browsers or Traffic tile.Closes #10440