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.

@os-help
os-help marked this pull request as ready for review August 10, 2026 11:11
@os-help
os-help added this pull request to the merge queue Aug 10, 2026
Merged via the queue into main with commit 354b00f Aug 10, 2026
28 checks passed
@os-help
os-help deleted the claude/issue-7131-liveness-previews-count branch August 10, 2026 11:28
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