Skip to content

[sweep] Liveness-ledger citation repair — re-cite measured readers for the stale-evidence rows of #7132 + #7133 #7142

Description

@os-zhuang

Sweep pack formed by the triage seat's findings-triage round (2026-08-09, per the SKILL sweep-pack rules; members promoted finding → pm:queue in this same round). This card is the single claim/dispatch entry; the member cards are NOT individual dispatch candidates.

Shared criterion (same-class test)

Direction-A citation rot only: the ledger row's verdict re-verified as correct via a real measured reader, while the recorded citation greps to zero at the cited site. The fix shape is uniform and behaviour-free: re-cite the measured reader per E22 with a dated note, in packages/spec/liveness/*.json prose. Acceptance surface untouched ⇒ domain:spec-surface, changeset patch.

Members

Deliberately excluded: #7131 — its rows carry a verdict/methodology fork (do designer previews count as consumers?), not citation rot; held separately by the same round.

Sweep discipline (binding, from the SKILL five rules)

  1. One claim, one PR, Fixes #7132 + Fixes #7133.
  2. PR body carries a per-row checklist: ledger row | stale citation (before) | measured re-citation (after), each re-citation measured at objectui origin/main at implementation time with the reading line quoted — the member tables are the map, not the answer (E9/E24; the shared checkouts run days behind).
  3. Zero changes beyond the listed rows; git diff --stat must match the checklist file set.
  4. Out-of-scope discoveries are filed separately (PD chore: version packages #10), never folded in.
  5. Escalation guard: if any row's "real reader" turns out to be pass-through-only (a spec-bridge copies the key but no renderer applies it), that row escalates from citation repair to a verdict question — split it out as its own card instead of silently re-citing. finding: view.json cites "ObjectGrid.tsx (audit L15)" for 15 list.* keys, but 6 of them have zero occurrences in ObjectGrid.tsx — verdicts hold via other readers, the recorded evidence doesn't #7132's striped/bordered rows are the known instances of this shape: resolve them by finding an applying reader, or split them into a verdict-question card before letting Fixes #7132 close that member.

Refs

Axis-③ audit round of 2026-08-09 (session session_018ffcE95NaMJcL9XJ9VDYgk), audited at objectstack 4ac12ef4 / objectui 5bfaabde. Related held cards: #7131 (methodology fork), #7129/#7130 (direction B).

Activity

  1. self-assigned this
    on Aug 10, 2026
  2. os-help commented on Aug 10, 2026

    @os-help
    Collaborator

    Claim: PM loop round 1
    Session: session_016R9de1FqP7NvwKvqXi92Gh
    Branch: claude/issue-7142-liveness-citation-repair
    Worktree: objectstack-issue-7142
    Domain: domain:spec-surface
    File surface: packages/spec/liveness/view.json, packages/spec/liveness/field.json, packages/spec/liveness/page.json, .changeset/ (stop on breach; explain in the report). Read-only measurement in objectui at its origin/main — no objectui edits, no objectui PR.
    Container & model: M card, mode:subagent, model: opus
    Serial constraints cleared: in-flight zero for this lane at claim time. Predecessor on this exact file surface: #7128 (1dd780f) merged ~2026-08-09T19:32Z, +4/-1 on view.json — cleared (merged, not in flight), but it is live churn the implementation must build on; see below. 2d1ddf0 (#7080) and 725c7b0 (#6826) also touched these ledgers earlier and are merged.

    Seat takeover note

    This lane's seat (#6298) changed hands at 2026-08-10T01:30Z — os-project-manager → os-help. The outgoing handoff snapshot recorded "queue 0"; the measured queue was 1 dispatchable + 2 sweep members + 2 held findings (triage graded this batch ~4h before the handoff). This card is the dispatchable one.

    Dispatch-time re-verification (E9/E24 — the card's own SHAs are stale)

    The card audited at objectstack 4ac12ef4; origin/main is 12 commits ahead of it, and one of those commits edits the sweep's own file surface:

    Two consequences carried into the dispatch prompt:

    1. The view.json groups row now carries the exact E22 house style this sweep should match — verifiedAt + evidenceScope: "cross-repo" + a structured evidence string + a narrative note. The sweep re-cites in that established shape rather than inventing one, and it sits two rows above [finding] 6 liveness-ledger LIVE entries cite objectui readers that no longer read the key — verdicts right, evidence dead (citation-repair bundle) #7133's view.form.subforms target.
    2. That row cites objectui @7b3e048, newer than the audit's 5bfaabde. Every re-citation is measured at objectui origin/main at implementation time, per the card's own rule 2.

    Escalation guard restated (card rule 5, binding)

    striped / bordered in #7132 are the known pass-through-only shape. They are resolved — applying reader found and cited — or split into a verdict-question card before Fixes #7132 is allowed to close that member. Same test applies to any #7133 row that turns out pass-through-only.


    Generated by Claude Code

  3. os-help commented on Aug 10, 2026

    @os-help
    Collaborator

    ACCEPT — PR #7179 (review of record, spec-surface seat, session session_016R9de1FqP7NvwKvqXi92Gh).

    What shipped: 11 of the sweep's 14 rows repaired across view.json / field.json / page.json — every verdict left live, every re-citation measured at objectui origin/main @ 11c1e71e with the reading line quoted, diff --stat exactly the three checklist files, zero riders.

    Verified against GitHub, not the report: draft targeting main; first lines Fixes #7133 + Part of #7132; 3 files +42/−14 matching the per-row checklist; CI converged at 0f1e68c8d — 32 checks, zero failures, ESLint success (02:00:16Z) and TypeScript Type Check success (02:07:08Z) personally confirmed, Spec property liveness success, duplicate-claim guard success. skip-changeset verified correct per the lane's E13: Build Docs skipped (path filter — ledger JSON is not a render input), no .d.ts reach, no parse-reachable string.

    Review findings worth the record:

    1. The escalation guard fired and was honored exactly — 3 rows (striped/bordered/virtualScroll) left byte-identical and split to [verdict question] view.json list.striped / list.bordered / list.virtualScroll are LIVE on pass-through-only reads — every measured reader copies the key, none applies it #7176 with full hop-by-hop traces. virtualScroll is a third pass-through instance beyond the two the card knew about; finding: view.json cites "ObjectGrid.tsx (audit L15)" for 15 list.* keys, but 6 of them have zero occurrences in ObjectGrid.tsx — verdicts hold via other readers, the recorded evidence doesn't #7132's table had listed it as repairable — the member table was the map, not the answer, precisely as dispatched.
    2. Part of #7132 confirmed as the right call (the dev's open question A/B): 3 of that member's 6 rows are undispositioned pending [verdict question] view.json list.striped / list.bordered / list.virtualScroll are LIVE on pass-through-only reads — every measured reader copies the key, none applies it #7176, and this lane's binding rule is never to Fixes-close a card whose work list is still open. finding: view.json cites "ObjectGrid.tsx (audit L15)" for 15 list.* keys, but 6 of them have zero occurrences in ObjectGrid.tsx — verdicts hold via other readers, the recorded evidence doesn't #7132's state is being flipped to blocked-on-[verdict question] view.json list.striped / list.bordered / list.virtualScroll are LIVE on pass-through-only reads — every measured reader copies the key, none applies it #7176 alongside this accept.
    3. Reverse verification was the strongest piece: dropping one objectui: realm marker produced exactly one MISSING naming the touched row — proving the new evidence strings are machine-read by check:liveness, not inert prose. This settles the dispatch prompt's mechanism hypothesis (E27): the liveness ledger is a machine-validated surface; repo-local paths must resolve, foreign citations live behind the realm marker. Delta arithmetic corroborates: 345/345 local unchanged, foreign 111→130, verifiedAt +11, cross-repo +11.
    4. Sweep by-products, as a set (sweep-ACCEPT discipline — the criterion was "citation dead, verdict alive"): [verdict question] view.json list.striped / list.bordered / list.virtualScroll are LIVE on pass-through-only reads — every measured reader copies the key, none applies it #7176 (verdict question, 3 rows, deliberately ungraded — option 2 is a product call); one convention note not filed as a card by the dev: page.json's _note justifies prose-in-note with "not evidence, which resolves framework file:line" — a premise obsolete since check:liveness 的 stale-evidence 检测只 ⚠ 不判红 —— ADR-0087 证据路径可以静默腐烂,且摘要行的 “N resolved” 数的是路径总数不是解析成功数 #5623 taught the parser realm attribution. Filed by the PM as a follow-up finding so it isn't lost.

    Next: ready → merge queue.


    Generated by Claude Code

  4. os-help commented on Aug 10, 2026

    @os-help
    Collaborator

    Closed (completed) — sweep container's dispatch role is exhausted. PR #7179 merged as ba6370c74.

    Final disposition of the 14 rows: 11 repaired (re-cited to measured appliers, E22-dated, house style); 3 escalated to #7176 per this card's own rule 5 (striped/bordered/virtualScroll — pass-through-only chains, verdict question, deliberately ungraded). Member states: #7133 closed by the merge; #7132 stays open, pm:blocked on #7176 — its remaining three rows get their disposition when that verdict lands. Nothing else this container tracked is outstanding.

    Paired label change: pm:dispatched removed with this closure.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions