Skip to content

Commit 498ea50

Browse files
docs(qa): the coverage sweep gains a sixth angle — surface kinds vs the one design system (#22207)
Fixes #22195 Clause-②: no ## What changes Two files under `docs/qa/platform-checklist/`, and nothing else. `SWEEP.md`, section "What a sweep is": - The angle table (angle · enumerate from · catches) gains row 6, "Surface kinds vs the one design system". Its three cells are the card's "What the angle is" bullets, byte-for-byte: a script compared each stored cell with the card body's bullet text and all three matched. The angle cell carries the `6. ` prefix and no bold, because rows 1 to 5 carry a number prefix and no bold; the bold in the card is the bullet's label, not the table's grammar. - The prose that counts the angles moves from five to six with the row: - line 34, "Six READ-ONLY gap-hunter agents" - line 53, step 2 "Dispatch the six hunters in parallel" - line 57, step 3 "Dedupe the six reports into one register" The card lists the first two count sites. The third (step 3's "the five reports") is also a count of the angles. The card's acceptance says "every count word in both files agrees with the table", so it changes with the row. I'm declaring it here instead of changing it silently. `README.md`, line 457 (item 4, "Periodic re-sweep"): - "five independent gap-hunt angles" becomes "six independent gap-hunt angles". That one count word is the whole change to the file. `SWEEP.md` step 1 sends every sweep to this README first, so it would state a false count the moment the sixth row lands. The seat added this file to the claim's file surface in a patch round on this PR (card comment 6053913569); it was acceptance note 1 in the first version of this body. Row position: on `origin/main` 13aea18 the table held five rows and no other angle had landed, so this row is number 6. `origin/main` has since moved one commit (7d7943d), which touches neither file, so the branch was not merged forward. After the change, `grep -n -i -w five` finds no match in either file. The remaining "six" hits that are not angle counts are untouched: `SWEEP.md` line 80 ("Four of six coverage waivers", a 2026-08 finding) and `README.md` line 254 ("three areas and six references"). The skill's three count words (`five-angle` in the description line, "5 个 hunter", "五个角度") are in a separate draft PR on branch `claude/issue-22195-checklist-author-angle-count`. That file is under `.claude/**` (Tier S), and keeping it out of this PR means this diff touches no governed surface. ## Verification, at HEAD 13555f1 Every command's exit code was captured before any pipe: | command | exit | |---|---| | `node scripts/check-platform-checklist.mjs` | 0 (`OK — 16 areas, 279 items (275 active, 2 planned); coverage: 39 kinds mapped, 2 waived`) | | `pnpm check:platform-checklist` | 0 (selector self-test 31 cases, validator self-test 221 assertions, validator) | | `pnpm check:nul-bytes` | 0 (10174 text files, no raw ASCII control bytes) | | `pnpm check:doc-authoring` | 0 | | `pnpm --filter @objectstack/lint run check:doc-formula-expressions` | 0 (first run exited 3, PREREQUISITE NOT MET because formula and lint were unbuilt in the fresh worktree; rerun at 0 after building those two under the verify lock) | | `node scripts/check-ci-filter-parity.mjs` | 0 | | `node scripts/check-closing-keyword-parity.mjs` / `--self-test` | 0 / 0 | | `node scripts/check-comment-mask-corpus.mjs` | 0 | | `pnpm check:cross-package-test-inputs` | 0 | | `pnpm check:driver-memory-census` | 0 | | `pnpm check:gitlink-declared` | 0 | | `pnpm check:refd-timer-probe` | 0 | | `pnpm check:watch-hint-literal` | 0 | `node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --ran` reconciled this list against the tree's own derivation over both paths: "13 derived famil(ies) accounted for — 13 run, 0 NOT-MEASURED (a DERIVED zero — all 13 recorded an exit code and none of them is 3)". Its stale-tree warning named one file changed on `origin/main` since the merge base, a new ADR anchor for a `plugin-security` source file. A control derivation from a tree at `origin/main` 7d7943d, given the same two paths, printed the same 13 commands. The type-check lanes, artifact rosters and wide-population families that the derivation lists outside its runnable set are CI's, and were NOT MEASURED locally. The diff is Markdown prose only, so no build, unit test or reverse verification applies. ## Changeset `skip-changeset`: `docs/qa/` sits under no workspace package (the `pnpm-workspace.yaml` globs are `packages/*`, `apps/*`, `examples/*` and their nested roots), no `package.json` names it in `files`, and the root package is `private: true`. Nothing publishes. ## Acceptance notes 1. The card also gives the items this angle authors some binding properties: one item per surface kind, not one per screen; oracle `screenshot`, then `dom` for the checkable facts; the reference is the design system's own composition (objectui `AGENTS.md` rule 3); and never a reference image checked into the repo. This PR does not write any of them into `SWEEP.md`, because the card's acceptance limits the diff to the row and the count words. After this lands they exist only in the card body, so a sweep hunter reading `SWEEP.md` will not see them. The seat has put this to the maintainer. 2. `FOLLOW-UPS.md` lines 8 and 422 say "five-angle sweep". Both record the 2026-08 sweeps and are still accurate, so they are unchanged. --- _Generated by [Claude Code](https://claude.ai/code/session_01CXydFDyiQwNbGFkmwrcRQq)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 17e4425 commit 498ea50

2 files changed

Lines changed: 5 additions & 4 deletions

File tree

‎docs/qa/platform-checklist/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,7 @@ ever matters more than PR independence, re-adding the one-line CI step
454454
v<current>` item (same discipline as changesets); the release sweep filter catches
455455
stragglers.
456456
4. **Periodic re-sweep** → [SWEEP.md](./SWEEP.md) is a runbook any AI session can
457-
execute on request ("run a coverage sweep") — five independent gap-hunt angles,
457+
execute on request ("run a coverage sweep") — six independent gap-hunt angles,
458458
dedupe, author, validate. The 2026-08 sweep it encodes found 3 stale waivers and
459459
~55 missing items; re-running it is how drift that slips past 1–3 gets caught.
460460

‎docs/qa/platform-checklist/SWEEP.md‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ kind, no new enum member), so it is found only here.
3131

3232
## What a sweep is
3333

34-
Five READ-ONLY gap-hunter agents, each enumerating the platform from a different angle
34+
Six READ-ONLY gap-hunter agents, each enumerating the platform from a different angle
3535
and diffing it against the current checklist. Different angles catch different miss
3636
classes — the 2026-08 sweep's finds (4 factually-stale waivers, the untested built-in
3737
apps, sharing rules, the ACTION_LOCATIONS matrix) each came from a different angle a
@@ -44,16 +44,17 @@ single reader would not have covered.
4444
| 3. Routes & runtime | ALL route ledgers (runtime, rest, service-*, auth) + non-ledgered mounts | routes reachable but semantically untested; dispatcher-vs-hono seams (#3361 class) |
4545
| 4. Built-in apps | packages/apps/{setup,studio,account} page by page | admin/user pages nobody walked; settings/session/org surfaces |
4646
| 5. Docs claims | content/docs/capabilities/*.mdx, release plans, showcase tours | promised capabilities with no item; docs advertising retired features (PD#10) |
47+
| 6. Surface kinds vs the one design system | objectui `apps/console/src/preview-gallery.tsx`; the `@object-ui/components` primitives a surface composes (Dialog, Table, Input, Checkbox, Button, the custom wrappers under `packages/components/src/custom/`); every widget that composes them into a surface kind — dialog, record picker, list, form, record page, dashboard, empty state, loading state | surfaces that pass their functional items but override the design system — a wrapper carrying a second border, a container killing the primitive's header rhythm, a fixed width unrelated to content, selection without the Checkbox primitive, split status bars, a confirm enabled at zero selected, navigational links inside a picker (the `RecordPickerDialog` class, 2026-10) |
4748

4849
## How to run it
4950

5051
1. **Read the current state first** — every `areas/*.json`, `coverage.json`, and this
5152
dir's README/RUNNER. The gap is only real if nothing already covers it.
52-
2. **Dispatch the five hunters in parallel**, READ-ONLY (they write no files). Each
53+
2. **Dispatch the six hunters in parallel**, READ-ONLY (they write no files). Each
5354
returns a structured gap table: `surface | evidence path | current coverage (item id
5455
or NONE/partial) | proposed item id | sketch | stock fixture?`. Give each hunter the
5556
list of already-resolved gaps so they don't re-report.
56-
3. **Dedupe** the five reports into one register (the 2026-08 sweep used a
57+
3. **Dedupe** the six reports into one register (the 2026-08 sweep used a
5758
`PENDING-GAPS.md` scratch file, since deleted). Overlap is expected and is signal —
5859
a gap found from three angles is high-priority.
5960
4. **Author** the new items via per-area writer agents, one area file per writer so

0 commit comments

Comments
 (0)