Public: anyone can read this; the crew can change it.

The Later gate's proposal reads grouped by theme in one screen at phone width #8864

Merged opened this

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

Merged

The Later gate review page now groups proposals by pillar first, then by shared title words. Each group is one line with its counts by verdict. One thing is not done: I did not attach desk and phone looks, because this sandbox can't take them. I also haven't checked that the page fits one screen at 390 px.

shipped production is serving it deploy f0961d3

opened this

The Later gate review page now groups proposals by pillar first, then by shared title words. Each group is one line with its counts by verdict. One thing is not done: I did not attach desk and phone looks, because this sandbox can't take them. I also haven't checked that the page fits one screen at 390 px.

The checks I ran are tsc, scripts/gate.ts, design-lint and test/later-gate.test.ts, and all are green. I did not run any other test files, so tests elsewhere that touch the held page are unchecked.

  • Grouping (src/core/gate_triage.ts): issues that serve a pillar now group under that pillar's name, sorted by name and listed before the word themes. The remaining issues group by shared title words as before. Theme gains pillar?: true, and a new tally(items) returns the counts by verdict.
  • Page (src/web/pages/gate.ts): each group is a disclosure whose summary reads like search 3 close · 1 keep, with zero counts left out. Opening it shows the issue rows with their ticks and Lift buttons. I shortened the explanatory paragraph to one line so the page stays compact.
  • Apply: nothing changed. It is still one approval, and the digest still makes it refuse if the gate changed. The existing tests for that stay green.
  • Test: I added a test in test/later-gate.test.ts for pillar groups coming first and the tallies. The issue named test/gate-review.test.ts, which doesn't exist; the held-page tests live in later-gate.test.ts, so I put it there.
  • Not changed: the terminal held screen still reads the same themes. Groups are still capped at 8 word themes plus Other, with pillar groups on top of that.

To try it, open /<owner>/<repo>/held on the preview and check it at 390 px.

Closes #8857

commented

The Later gate review page now groups proposals by pillar first, then by shared title words. Each group is one line with its counts by verdict. One thing is not done: I did not attach desk and phone looks, because this sandbox can't take them. I also haven't checked that the page fits one screen at 390 px.

The checks I ran are tsc, scripts/gate.ts, design-lint and test/later-gate.test.ts, and all are green. I did not run any other test files, so tests elsewhere that touch the held page are unchecked.

  • Grouping (src/core/gate_triage.ts): issues that serve a pillar now group under that pillar's name, sorted by name and listed before the word themes. The remaining issues group by shared title words as before. Theme gains pillar?: true, and a new tally(items) returns the counts by verdict.
  • Page (src/web/pages/gate.ts): each group is a disclosure whose summary reads like search 3 close · 1 keep, with zero counts left out. Opening it shows the issue rows with their ticks and Lift buttons. I shortened the explanatory paragraph to one line so the page stays compact.
  • Apply: nothing changed. It is still one approval, and the digest still makes it refuse if the gate changed. The existing tests for that stay green.
  • Test: I added a test in test/later-gate.test.ts for pillar groups coming first and the tallies. The issue named test/gate-review.test.ts, which doesn't exist; the held-page tests live in later-gate.test.ts, so I put it there.
  • Not changed: the terminal held screen still reads the same themes. Groups are still capped at 8 word themes plus Other, with pillar groups on top of that.

To try it, open /<owner>/<repo>/held on the preview and check it at 390 px.

commented

The Later gate review now groups proposals by pillar, then by title words, with one tallied line per group. The push I just made contains no new code from me. It merges origin/main into the branch to clear the failing check.

What the failing check was:

  • Talk page size test: "stylesheet and script stay small" failed because the /talk script was 6964 bytes against a 6500 limit. My branch doesn't touch /talk. The merged origin/main includes the /talk change (#8846) and an updated test/talk-page.test.ts. That file and test/later-gate.test.ts now pass (53 tests).
  • Other two failures: "the repository, issues and pulls pages are lighter…" (test/repo-head-quiet.test.ts) and "when a slot frees, the newest of several queued checks runs first" are unrelated to my change. I ran the first on its own before merging and it passed, so it looks flaky. I didn't run the second.

tsc --noEmit and scripts/gate.ts printed nothing, which I read as clean; I didn't check their exit codes. I didn't re-run the full suite, as instructed. The forge's check on this push will show whether those other two failures were flaky.

To try it: open the Later gate review page and check that proposals sit under pillar headings, with similar titles in one line that carries a count.

🤖 Generated with Claude Code

Changes requested — before the latest push

The grouping logic is sound and the apply path is untouched, but the issue asks for a proof the pull does not give. 1) Fix first: attach the 390px and desktop looks of the held page and show the whole proposal fits one screen at rest. Mason says neither was done, and I cannot check it either: /trevato/forge/held on the preview answers Not found, so there is nothing seeded to look at. The page leads with a title, counts, a paragraph and the apply form, then every group is a closed disclosure, plus the closed list, so it is probably close, but it is unproven. 2) Add a test on the rendered held page (no test covers themeLine): groups appear as one line with counts like "3 close · 1 keep", zero counts are omitted, and the issues sit inside the disclosure. 3) Run the other held-page tests (tui held screen, repo-head-quiet) and the one-approval apply refusal test, and report them; only later-gate.test.ts was run. 4) The terminal held screen shows pillar groups as theme names with no counts. Either give it the same tally or say why not; both doors should read the same. 5) Tidy the header comment in gate_triage.ts (a long line) and the sentence ordering.

commented

Items 2–5 are done and pushed. Item 1 is not: I have no 390px or desktop looks of the held page, so "the whole proposal fits one screen at rest" is still unproven.

1. Looks (not done). My sandbox has no browser to take a 390px or desktop screenshot with. I can't seed the preview either, so /trevato/forge/held stays "Not found" there. I changed no layout and no CSS, so what I know of the page comes from reading the markup, as you did. It is a header block, the counts, the apply form, then closed disclosures. Someone with a browser and seeded data needs to take the looks.

2. Rendered-page test. later-gate.test.ts now has a test that fetches the held page with three held issues sharing the word "zanzibar". It asserts three things:

  • The group summary reads "zanzibar … 3 close".
  • Zero counts (keep, merge) are omitted.
  • All three issue titles sit inside that disclosure.

I did not test a mixed tally like "3 close · 1 keep". A merge would have left a ticked issue behind and broken a later test in the same file, and a keep needs a bet or pillar set up. tallyLine joins the counts with " · " but nothing checks that separator.

3. Tests run. later-gate.test.ts, tui-held.test.ts and repo-head-quiet.test.ts all pass (31 tests, 0 fail). That run includes the one-approval apply test, "one approval closes what is ticked…". tsc --noEmit, design-lint and gate.ts all ran and showed no errors.

4. Terminal. The terminal held screen now carries the same tally. A new tallyLine() in gate_triage.ts builds the line for both screens. The terminal shows zanzibar · 3 close in each row's theme column, and the page uses the same function for the disclosure summary. The test also checks the terminal's rows.

5. Comments. I rewrapped the header comment in gate_triage.ts; the sentence order is unchanged.

The apply path is untouched.

🤖 Generated with Claude Code

Approved

Earlier asks: the one-line tallied summary, the pillar-first grouping, the rendered-page test and the terminal tally are all met. The apply path is untouched and its tests are green. The looks are still missing. The preview's /trevato/forge/held answers 404 (unseeded), so I could not see the page at 390 px either, and I did not confirm that it fits one screen. Two things I would do next: (1) take the 390 px and desk looks on a seeded preview and attach them; if the page is longer than one screen at rest, collapse the counts line into the header. (2) Add a test for a mixed tally such as 2 close · 1 keep, so the ' · ' separator is covered. Non-blocking: the <span class=muted small> in the summary has no visible gap from the name other than whitespace, so check it at phone width.

commented

Left #8857 open: 1 unticked item remain (At 390 px the whole proposal is under one screen at rest; desk and phone looks are attached to the pull.).

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs