Skip to content

docs(liveness): designer previews count as consumers — re-grade four docs-shaped rows and write the principle into the ledger methodology (#7131) - #7425

Merged
os-help merged 1 commit into
mainfrom
claude/issue-7131-liveness-previews-count
Aug 10, 2026
Merged

docs(liveness): designer previews count as consumers — re-grade four docs-shaped rows and write the principle into the ledger methodology (#7131)#7425
os-help merged 1 commit into
mainfrom
claude/issue-7131-liveness-previews-count

Conversation

@os-help

@os-help os-help commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Fixes #7131

Executes the maintainer ruling of 2026-08-10 (quoted verbatim below and in the ledger README): previews count as consumers.

What was wrong

packages/spec/liveness/job.json and translation.json recorded "no runtime consumer" for four docs-shaped keys. objectui's metadata-admin previews had been rendering all four to a human the whole time — measured at objectui origin/main @ aeb8424b:

Row Read point Render point
job.label JobPreview.tsx:257 (d.label, falling back to the job name) :313, the preview card's title
job.description JobPreview.tsx:258 (d.description) :316, beneath the title when non-empty
translation.label TranslationPreview.tsx:67, first choice of the display chain :100, the item's title
translation.name TranslationPreview.tsx:67, the fallback when label is unset :100, same title

In both files d is the metadata body of the exact type the row covers, and the previews are reachable rather than merely present: previews/index.ts:62 / :50 register them against the job / translation type names, and ResourceEditPage.tsx:949 resolves the registration and hands the component the draft being edited.

The ruling

Maintainer ruling (2026-08-10, directed in session session_01BPWqbmEFU8gJepBJTHESXd): previews count as consumers.

A designer preview that renders a key to a human is a runtime consumer — the ledger's "no runtime consumer" verdict must include metadata-admin preview read points. The affected docs-shaped rows (job.label/job.description, translation.label/.name) re-grade from dead to live, and the ledger methodology note records the principle so the next sweep asks the question mechanically.

What changed

Four rows re-graded deadlive, each with a realm-marked, commit-pinned evidence string, evidenceScope: "cross-repo", verifiedAt: "2026-08-10", and a producer naming the registerMetadataPreview call plus the surface that resolves it — a preview no registry ever hands a draft to is a read point that never runs.

Each note records what the re-grade supersedes and what it does not:

  • job.label — the old wording ("no runtime consumer (sys_job stores name/schedule only)") was true about the scheduler and false as a whole-system claim; for a docs-shaped key the display is the runtime effect, so sys_job was never the surface that could falsify it. The note says explicitly that live here does not mean the scheduler acquired a use for it.
  • translation.label — the superseded wording hedged, "no runtime consumer in this repo", and that hedge was never false. What changed is that the cross-repo look was finally taken, which is exactly the blind spot evidenceScope (audit: #4667 liveness 判定的跨仓覆盖核查——两个方向各有一个实锤反例;顺带更正 homePageId 墓碑文案 #4895) exists to expose.
  • translation.name — the re-grade supersedes one clause ("dead as a BODY key — the honest reading of a copy nobody reads"). The row's substantive door/row-column analysis is preserved verbatim and called out as the substance: the name column is still the live one on the sync path, and the body copy is still not what authored-translation-sync reads. The preview reads it; the sync does not.

Nothing about enforce-or-remove moves. All four keys remain docs-shaped, deliberately KEPT under the ADR-0033 exemption, and still not authorWarn'd.

Methodology note — a new README section, Designer previews count as consumers, quoting the ruling verbatim and giving the sweep a mechanical step: enumerate a type's registered preview read points before writing "no runtime consumer", and record their absence when there are none. Two commands make it a lookup rather than a search.

It divides against the pre-existing An authoring/preview renderer is NOT a runtime consumer section on what the property claims, not on what the surface is — for a display key the render is the whole of the declared effect; for a behavioural key a panel echoing the value back still proves nothing. The 2026-07 sweep's ten corrections are explicitly not reopened, and that section gains a short scope pointer so a reader landing there first is not misled. Its heading is unchanged, because several ledger notes cite it by name as README §preview-renderer.

Verification

pnpm --filter @objectstack/spec check:liveness — green; job 13 live / 2 dead → 15 live / 0 dead, translation 17 live / 2 dead → 19 live / 0 dead. Repo-local evidence paths stayed at 353/353 resolved and the foreign bucket moved 131 → 135, i.e. all four new citations landed in the cross-repo bucket and none leaked into the local one.

Reverse verification — dropped the objectui realm marker from job.label's evidence and re-ran the gate: exactly one MISSING, named job/label, with the local count rising 353 → 354 and the foreign count falling 135 → 134. Restored, green again. The realm marker is load-bearing, as expected.

Also green: packages/spec liveness script tests (9 files / 166 tests), pnpm --filter @objectstack/spec typecheck, and node scripts/check-nul-bytes.mjs.

Out of scope, deliberately

The README "Current state" table's job and translation rows now carry stale counts (13/2 and 17/2) and Notes prose that enumerates the old dead sets. That table's count columns are the subject of unassigned #7377, whose stated method — "for each drifted row read the Note beside it and reconcile the prose with the new numbers" — is exactly what these two rows need. Left untouched to avoid colliding with that lane; commented on #7377 with the delta instead of filing a twin. Nothing fails: readme-table.mts deliberately checks the row set, never the count columns.

Two ledger notes still record the superseded principle as their ground — datasource.json's file-level _note and permission.json's rowLevelSecurity.label row. Flagged in the report on #7131 rather than fixed here; they need re-measurement under the new principle, not a text edit.


Generated by Claude Code

…docs-shaped rows (#7131)

The ledger recorded "no runtime consumer" for job.label, job.description,
translation.label and translation.name. objectui's metadata-admin previews
had been rendering all four to a human the whole time.

Per the maintainer ruling of 2026-08-10, a designer preview that renders a
key to a human is a runtime consumer. The four rows re-grade dead -> live
with realm-marked, commit-pinned objectui evidence (@aeb8424b) and a
`producer` naming the registerMetadataPreview call plus the surface that
resolves it — a preview no registry hands a draft to is a read point that
never runs.

Nothing about enforce-or-remove moves: all four remain docs-shaped,
deliberately KEPT under ADR-0033, and still not authorWarn'd.

The README gains the methodology section the ruling asked for, dividing
against the existing "an authoring/preview renderer is NOT a runtime
consumer" section on what the property CLAIMS rather than on what the
surface is. The 2026-07 sweep's ten corrections are not reopened.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016R9de1FqP7NvwKvqXi92Gh
@vercel

vercel Bot commented Aug 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Aug 10, 2026 10:44am

Request Review

@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation tooling labels Aug 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/spec.

106 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/ai/agents.mdx (via @objectstack/spec)
  • content/docs/ai/skills-reference.mdx (via @objectstack/spec)
  • content/docs/ai/skills.mdx (via @objectstack/spec)
  • content/docs/api/client-sdk.mdx (via @objectstack/spec)
  • content/docs/api/environment-routing.mdx (via @objectstack/spec)
  • content/docs/api/error-catalog.mdx (via @objectstack/spec)
  • content/docs/api/error-handling-client.mdx (via @objectstack/spec)
  • content/docs/api/error-handling-server.mdx (via @objectstack/spec)
  • content/docs/api/index.mdx (via @objectstack/spec)
  • content/docs/automation/approvals.mdx (via @objectstack/spec)
  • content/docs/automation/connectors.mdx (via @objectstack/spec)
  • content/docs/automation/flows.mdx (via @objectstack/spec)
  • content/docs/automation/hook-bodies.mdx (via packages/spec)
  • content/docs/automation/hooks.mdx (via @objectstack/spec)
  • content/docs/automation/index.mdx (via @objectstack/spec)
  • content/docs/automation/webhooks.mdx (via @objectstack/spec)
  • content/docs/automation/workflows.mdx (via @objectstack/spec)
  • content/docs/concepts/architecture.mdx (via @objectstack/spec)
  • content/docs/concepts/design-principles.mdx (via packages/spec)
  • content/docs/concepts/index.mdx (via @objectstack/spec)
  • content/docs/concepts/metadata-driven.mdx (via @objectstack/spec)
  • content/docs/concepts/metadata-lifecycle.mdx (via packages/spec)
  • content/docs/concepts/north-star.mdx (via @objectstack/spec)
  • content/docs/data-modeling/analytics.mdx (via @objectstack/spec)
  • content/docs/data-modeling/drivers.mdx (via @objectstack/spec)
  • content/docs/data-modeling/external-datasources.mdx (via @objectstack/spec)
  • content/docs/data-modeling/field-types.mdx (via @objectstack/spec)
  • content/docs/data-modeling/fields.mdx (via @objectstack/spec)
  • content/docs/data-modeling/formulas.mdx (via @objectstack/spec)
  • content/docs/data-modeling/index.mdx (via @objectstack/spec)
  • content/docs/data-modeling/objects.mdx (via @objectstack/spec)
  • content/docs/data-modeling/queries.mdx (via @objectstack/spec)
  • content/docs/data-modeling/schema-design.mdx (via @objectstack/spec)
  • content/docs/data-modeling/seed-data.mdx (via @objectstack/spec)
  • content/docs/data-modeling/validation-rules.mdx (via @objectstack/spec)
  • content/docs/data-modeling/validation.mdx (via @objectstack/spec)
  • content/docs/deployment/cli.mdx (via @objectstack/spec)
  • content/docs/deployment/tenancy-modes.mdx (via @objectstack/spec)
  • content/docs/deployment/troubleshooting.mdx (via @objectstack/spec)
  • content/docs/deployment/validating-metadata.mdx (via @objectstack/spec)
  • content/docs/getting-started/build-with-claude-code.mdx (via @objectstack/spec)
  • content/docs/getting-started/common-patterns.mdx (via @objectstack/spec)
  • content/docs/getting-started/examples.mdx (via @objectstack/spec)
  • content/docs/getting-started/quick-reference.mdx (via @objectstack/spec)
  • content/docs/getting-started/quick-start.mdx (via @objectstack/spec)
  • content/docs/getting-started/your-first-project.mdx (via @objectstack/spec)
  • content/docs/kernel/cluster.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/auth-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/cache-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/data-engine.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/index.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/metadata-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/storage-service.mdx (via @objectstack/spec)
  • content/docs/kernel/index.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/data-service.mdx (via @objectstack/spec)
  • content/docs/kernel/runtime-services/email-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/examples.mdx (via @objectstack/spec)
  • content/docs/kernel/runtime-services/index.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/queue-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/sharing-service.mdx (via @objectstack/spec)
  • content/docs/kernel/runtime-services/sms-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/storage-service.mdx (via @objectstack/spec)
  • content/docs/kernel/services-checklist.mdx (via @objectstack/spec)
  • content/docs/kernel/services.mdx (via @objectstack/spec)
  • content/docs/permissions/authorization.mdx (via @objectstack/spec)
  • content/docs/permissions/permission-sets.mdx (via @objectstack/spec)
  • content/docs/permissions/permissions-matrix.mdx (via @objectstack/spec)
  • content/docs/permissions/positions.mdx (via @objectstack/spec)
  • content/docs/permissions/rls.mdx (via @objectstack/spec)
  • content/docs/permissions/sharing-rules.mdx (via @objectstack/spec)
  • content/docs/permissions/system-context.mdx (via packages/spec)
  • content/docs/plugins/adding-a-metadata-type.mdx (via @objectstack/spec)
  • content/docs/plugins/development.mdx (via @objectstack/spec)
  • content/docs/plugins/index.mdx (via @objectstack/spec)
  • content/docs/plugins/packages.mdx (via @objectstack/spec)
  • content/docs/protocol/backward-compatibility.mdx (via @objectstack/spec)
  • content/docs/protocol/diagram.mdx (via packages/spec)
  • content/docs/protocol/kernel/config-resolution.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/http-protocol.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/i18n-standard.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/index.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/lifecycle.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/plugin-spec.mdx (via @objectstack/spec)
  • content/docs/protocol/knowledge.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/index.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/query-syntax.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/schema.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/security.mdx (via packages/spec)
  • content/docs/protocol/objectql/state-machine.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/actions.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/concept.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/index.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/layout-dsl.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/record-alert.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/widget-contract.mdx (via @objectstack/spec)
  • content/docs/ui/actions.mdx (via @objectstack/spec)
  • content/docs/ui/apps.mdx (via @objectstack/spec)
  • content/docs/ui/create-vs-edit-form.mdx (via @objectstack/spec)
  • content/docs/ui/dashboards.mdx (via @objectstack/spec)
  • content/docs/ui/field-grouping-and-order.mdx (via @objectstack/spec)
  • content/docs/ui/forms.mdx (via @objectstack/spec)
  • content/docs/ui/index.mdx (via @objectstack/spec)
  • content/docs/ui/public-data-collection.mdx (via @objectstack/spec)
  • content/docs/ui/setup-app.mdx (via @objectstack/spec)
  • content/docs/ui/translations.mdx (via @objectstack/spec)
  • content/docs/ui/views.mdx (via @objectstack/spec)

7 release-owned page(s) also reference the affected code. These are read-only:

  • content/docs/releases/implementation-status.mdx (via @objectstack/spec)
  • content/docs/releases/index.mdx (via @objectstack/spec)
  • content/docs/releases/v12.mdx (via @objectstack/spec)
  • content/docs/releases/v13.mdx (via @objectstack/spec)
  • content/docs/releases/v16.mdx (via @objectstack/spec)
  • content/docs/releases/v17.mdx (via @objectstack/spec)
  • content/docs/releases/v9.mdx (via @objectstack/spec)

content/docs/releases/ is RELEASE-OWNED (AGENTS.md "Documentation Guardrails"): release
notes are written centrally at release time, and a code PR that edits them is the exact PR
that guardrail exists to stop. They are still audited — read-only. If one of them is actually
wrong, file an issue or open a dedicated docs-only PR; do not edit it here.

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

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

Labels

documentation Improvements or additions to documentation size/m tooling

Projects

None yet

2 participants