Repository navigation
sweep(spec): 2-item liveness-ledger follow-through sweep III — one claim, one PR, per-item checklist (#6774 #6773) #7069
Description
Sweep card per the findings-round bundling discipline (#6243 / #7024 / #7056 precedents), packaged by the domain:spec seat under the maintainer's cloud-bundling approval (2026-08-09 「同意」, chat) and today's second batch-acceleration instruction (「又可以加速派一批了,包括云卡」). This card is the claim object; the member cards keep pm:queue but are NOT dispatch candidates while this sweep is open.
Shared criterion
Both members are liveness-ledger records that stopped being answerable to reality after objectui implementations landed — follow-through corrections, not new judgments. The ledger is the evidence base for enforce-or-remove verdicts; a stale row/note mis-steers the next audit (the #5175 lesson, cited by both members' triage). No acceptance-face changes: the legal-metadata set is byte-identical before/after. (Member 1 additionally releases a pinned ADVISORY contrast — a test-expectation change on a CLI advisory face, not a schema acceptance change; assert exactly that.)
Members (read each card + its full comment thread before touching it; premise-first per member)
- liveness/dashboard.json 的 colorVariant 行翻 live + 解除 PR #5255 钉的「恰好只警告 colorVariant」正向对照(objectui#3359 落地随动) #6774 —
packages/spec/liveness/dashboard.jsoncolorVariantrow flips live (objectui#3799 merged AND absorbed by the framework's.objectui-shapin09987b68— the unlock sweep on the card verifiedgit merge-base --is-ancestor; re-verify on current main). Plus: release PR refactor(spec,lint)!: 退役 dashboard widget 的 action 三键与 aria —— 连同那道「为不存在的按钮做引用完整性」的门 (#5010) #5255's pinned "exactly-one-warning colorVariant" positive contrast on the CLI advisory (its premise — renderer doesn't read the key — no longer holds), and correct any refactor(spec,lint)!: 退役 dashboard widget 的 action 三键与 aria —— 连同那道「为不存在的按钮做引用完整性」的门 (#5010) #5255-adjacent comments/fixtures still asserting "colorVariant never took effect". Refs on the card: enforce-or-remove: DashboardWidgetSchema 的 5 个 dead 键(#4956 下钻首次给出裁决) #5010 ruling B,DashboardWidget.chartConfig在 dashboard 元数据面只有showLegend落地 —— 12 个已声明键里 11 个惰性,liveness 台账那一行高估了证据 #5175. spec/liveness/field.json的Field.widget存活记录把capability-multiselect记作 sys_permission_set 在用 —— 该 widget 名从未在活路径注册,现已退役 #6773 —packages/spec/liveness/field.json:109Field.widgetnote: replacesys_permission_set (capability-multiselect)withsys_permission_set (permission-facet-link). The cross-pin measurements are already on the card (2026-08-09 comment):capability-multiselectwas never registered on any live path and is now retired (objectui#3308 / PR 启动横幅对 DSN 形式的 datasource 显示→ (unknown):describeRegisteredDriver 不认connectionString#3793); the actual widget ispermission-facet-link, registered at objectuiplugin-detail/src/index.tsx:563on the current pin — verify that anchor read-only against/home/user/objectuiat the pinned SHA and record the reading. Also spot-check the note's other widget names (object-ref/filter-condition/recipient-picker) are still infieldWidgetMap.
Sweep rules (binding on the PR)
- One PR, per-item checklist (落点 | before | after),
Fixes #6774/Fixes #6773only for completed members; dropped member ⇒Part of+ evidence. - Zero changes outside the 2 items;
git diff --statmaps 1:1 onto the checklist. - Existing schema acceptance tests pass unchanged; the released refactor(spec,lint)!: 退役 dashboard widget 的 action 三键与 aria —— 连同那道「为不存在的按钮做引用完整性」的门 (#5010) #5255 contrast is the only test-expectation change and belongs to member 1's row.
- Out-of-scope discoveries filed separately unassigned (PD chore: version packages #10).
- A dead premise drops the member with evidence — good outcome, not failure.
Refs: #6243 (pilot), #7024/#7056 (predecessors), #5175 (why ledger truth matters), #5010 (colorVariant ruling B).
Activity
os-zhuang commentedon Aug 9, 2026
CLAIM — PM seat
domain:spec(sessionsession_01PiRUoQkTSBBmpyXBY3cVn2), dispatching as a mode:cloud card.claude/issue-7069-ledger-followthrough-sweepOS-DEV-REPORTcomment on this cardspec/liveness/field.json的Field.widget存活记录把capability-multiselect记作 sys_permission_set 在用 —— 该 widget 名从未在活路径注册,现已退役 #6773 keeppm:queuebut are excluded from selection while this sweep is open (member-list rule above).Generated by Claude Code
os-zhuang commentedon Aug 9, 2026
OS-DEV-REPORT
{ "card": 7069, "branch": "claude/issue-7069-ledger-followthrough-sweep", "head": "9898460dcfd8af86f41973e942022a93ab1575a3", "pr": 7080, "pr_state": "draft", "base": "main @ 2c7e62d", "members": [ { "issue": 6774, "status": "completed", "closes_via": "Fixes #6774", "premise": "HOLDS — re-verified on this branch's base, not inherited. .objectui-sha reads 09987b680d53801c79f67d969b14e9bb732b8a22; against a read-only objectui checkout at that SHA, `git merge-base --is-ancestor c4c0ac897 09987b68` is true (c4c0ac897 = PR objectui#3799 merge, 2026-08-08T16:37Z). Reader: packages/plugin-dashboard/src/DatasetWidget.tsx:641 metricAccentTextClass(widget?.colorVariant) via VARIANT_TEXT_CLASSES (colorVariants.ts:44-53).", "landings": [ "packages/spec/liveness/dashboard.json — widgets.colorVariant dead -> live; authorWarn/authorHint dropped; verifiedAt 2026-08-03 -> 2026-08-09; evidenceScope cross-repo; evidence pinned at objectui @09987b68", "packages/lint/src/lint-liveness-properties.test.ts — PR #5255's pinned exactly-one-warning colorVariant contrast RELEASED; replaced by a silence pin plus the #4651 anti-vacuity guard (object.externalSharingModel warns in the same call)", "packages/lint/src/lint-liveness-properties.ts — TYPE_COLLECTIONS docblock: dashboard warn set now empty, type stays listed (webhook/email_template resolved state)", "packages/spec/src/conversions/registry.ts — docblock asserting colorVariant's disposition is 'unresolved' corrected to settled-enforce", "packages/spec/liveness/README.md — dashboard count row 33/0/8 -> 34/0/7, regenerated with the README's own snippet" ] }, { "issue": 6773, "status": "completed", "closes_via": "Fixes #6773", "premise": "HOLDS — verified read-only in objectui at pin 09987b68. permission-facet-link registered at packages/plugin-detail/src/index.tsx:563 (ComponentRegistry.register with withFieldCarrier, namespace field) — the card's measured anchor, unmoved. ADR-0056 P1 stamp at packages/data-objectstack/src/index.ts:2492-2501 (all six facets). capability-multiselect absent from packages/*/src apart from tombstone comments + the objectui#3308 retirement pin test. Spot-check: object-ref / filter-condition / recipient-picker all still in fieldWidgetMap at packages/fields/src/index.tsx:2203-2205.", "landings": [ "packages/spec/liveness/field.json — Field.widget note: `sys_permission_set (capability-multiselect)` -> `sys_permission_set (permission-facet-link)`; + CORRECTED paragraph, verifiedAt 2026-08-09, evidenceScope cross-repo, evidence pinned at objectui @09987b68. The `live` verdict is unchanged." ] } ], "files": [ { "path": ".changeset/liveness-ledger-followthrough-colorvariant-field-widget.md", "added": 78, "removed": 0 }, { "path": "packages/lint/src/lint-liveness-properties.test.ts", "added": 50, "removed": 35 }, { "path": "packages/lint/src/lint-liveness-properties.ts", "added": 7, "removed": 0 }, { "path": "packages/spec/liveness/README.md", "added": 1, "removed": 1 }, { "path": "packages/spec/liveness/dashboard.json", "added": 5, "removed": 5 }, { "path": "packages/spec/liveness/field.json", "added": 4, "removed": 1 }, { "path": "packages/spec/src/conversions/registry.ts", "added": 11, "removed": 4 } ], "diff_stat": "7 files changed, 156 insertions(+), 46 deletions(-)", "schema_acceptance_changes": 0, "test_expectation_changes": "member 1 only — the released #5255 advisory contrast", "changeset": { "file": ".changeset/liveness-ledger-followthrough-colorvariant-field-widget.md", "bumps": { "@objectstack/spec": "patch", "@objectstack/lint": "patch" }, "analog": "action-undoable-liveness-corrected.md (merged) — a ledger reclassification that likewise silences the author-side advisory", "adr_0087_marker": "not owed — not declared-breaking" }, "gates_run": [ { "gate": "pnpm --filter @objectstack/spec check:liveness", "result": "pass", "note": "344/344 local evidence paths resolve" }, { "gate": "pnpm --filter @objectstack/spec check:empty-state", "result": "pass" }, { "gate": "pnpm --filter @objectstack/spec check:variant-docs", "result": "pass" }, { "gate": "pnpm --filter @objectstack/spec check:strictness-ledger", "result": "pass" }, { "gate": "pnpm --filter @objectstack/spec check:generated", "result": "pass", "note": "all 10 artifacts up to date" }, { "gate": "node scripts/check-adr-0087-registration.mjs --base origin/main", "result": "pass", "note": "nothing owed" }, { "gate": "pnpm lint (ESLint)", "result": "pass" }, { "gate": "pnpm check:nul-bytes", "result": "pass" }, { "gate": "pnpm check:role-word", "result": "pass" }, { "gate": "pnpm check:adr-anchors", "result": "pass" }, { "gate": "pnpm check:doc-authoring", "result": "pass" }, { "gate": "pnpm check:docs-audit-scope", "result": "pass" }, { "gate": "pnpm check:changeset-gate-self-tests", "result": "pass" }, { "gate": "pnpm --filter @objectstack/spec exec tsc --noEmit", "result": "pass" }, { "gate": "pnpm --filter @objectstack/lint typecheck", "result": "pass" }, { "gate": "pnpm --filter @objectstack/spec test", "result": "pass", "note": "9235 tests / 354 files" }, { "gate": "pnpm --filter @objectstack/lint test", "result": "pass", "note": "1770 tests / 68 files" } ], "findings_filed": [ { "issue": 7079, "assigned": false, "labels": ["finding", "domain:spec"], "title": "the liveness author-lint's array fan-out (getNested) has no warned subject left, so it is now untested", "why": "widgets.colorVariant was the ONLY warned ledger entry under an array container across all 28 ledgers, so it was the only subject getNested's array fan-out ever had. Flipping it live leaves that behaviour untested — coverage lapsing silently as a side effect of good news. The assertion is removed rather than rewritten into a silence check that would pass on a lint which never walks past widgets[0]; the test file points at the issue." } ], "auto_merge": "NOT armed, NOT queued — PM lands serially", "dropped_members": [] }Both members completed; nothing dropped. PR #7080 is open as a draft, auto-merge is not armed and it is not in the queue — the PM lands it serially. Labels on #7069, #6774 and #6773 are untouched, per the brief.
Generated by Claude Code
os-zhuang commentedon Aug 9, 2026
Sweep complete — closing the claim card. PR #7080 merged to
mainat2d1ddf0d6(2026-08-09T16:19Z). Both members delivered and verified closed by direct reading: #6774 ✓ (16:19:41Z), #6773 ✓ (16:19:42Z), eachstate_reason: completed. No members dropped; per-item checklist + 1:1 diff-stat in the PR body; zero schema-acceptance changes (the released #5255 advisory contrast was the sole test-expectation change, replaced with a silence pin carrying the #4651 anti-vacuity guard). Collateral finding #7079 (getNested array fan-out left untested by the flip) filed unassigned for triage. Cloud session archived.Generated by Claude Code