Skip to content

sweep(spec): 2-item liveness-ledger follow-through sweep III — one claim, one PR, per-item checklist (#6774 #6773) #7069

Closed

Description

@os-zhuang

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)

  1. liveness/dashboard.json 的 colorVariant 行翻 live + 解除 PR #5255 钉的「恰好只警告 colorVariant」正向对照(objectui#3359 落地随动) #6774 — packages/spec/liveness/dashboard.json colorVariant row flips live (objectui#3799 merged AND absorbed by the framework's .objectui-sha pin 09987b68 — the unlock sweep on the card verified git 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.
  2. spec/liveness/field.json 的 Field.widget 存活记录把 capability-multiselect 记作 sys_permission_set 在用 —— 该 widget 名从未在活路径注册,现已退役 #6773 — packages/spec/liveness/field.json:109 Field.widget note: replace sys_permission_set (capability-multiselect) with sys_permission_set (permission-facet-link). The cross-pin measurements are already on the card (2026-08-09 comment): capability-multiselect was never registered on any live path and is now retired (objectui#3308 / PR 启动横幅对 DSN 形式的 datasource 显示 → (unknown):describeRegisteredDriver 不认 connectionString #3793); the actual widget is permission-facet-link, registered at objectui plugin-detail/src/index.tsx:563 on the current pin — verify that anchor read-only against /home/user/objectui at the pinned SHA and record the reading. Also spot-check the note's other widget names (object-ref / filter-condition / recipient-picker) are still in fieldWidgetMap.

Sweep rules (binding on the PR)

Refs: #6243 (pilot), #7024/#7056 (predecessors), #5175 (why ledger truth matters), #5010 (colorVariant ruling B).

Activity

  1. self-assigned this
    on Aug 9, 2026
  2. os-zhuang commented on Aug 9, 2026

    @os-zhuang
    ContributorAuthor

    CLAIM — PM seat domain:spec (session session_01PiRUoQkTSBBmpyXBY3cVn2), dispatching as a mode:cloud card.


    Generated by Claude Code

  3. os-zhuang commented on Aug 9, 2026

    @os-zhuang
    ContributorAuthor

    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

  4. os-zhuang commented on Aug 9, 2026

    @os-zhuang
    ContributorAuthor

    Sweep complete — closing the claim card. PR #7080 merged to main at 2d1ddf0d6 (2026-08-09T16:19Z). Both members delivered and verified closed by direct reading: #6774 ✓ (16:19:41Z), #6773 ✓ (16:19:42Z), each state_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

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions