Skip to content

refactor(spec)!: retire the external-lookup and message-queue config families (ADR-0049, #8075) - #8230

Merged
huangyiirene merged 5 commits into
mainfrom
claude/issue-8075-retire-dead-credential-schemas
Aug 12, 2026
Merged

huangyiirene merged 5 commits into
mainfrom
claude/issue-8075-retire-dead-credential-schemas

Conversation

@huangyiirene

Copy link
Copy Markdown
Collaborator

Fixes #8075

Phase 2 of the card: the ADR-0049 retirement route, following the ACCEPTed fork-(b) measurement (issue comment 5270144555, claim addendum 5270164082). Both dead credential-bearing schema families are removed whole — data/external-lookup.zod.ts (3 defs: ExternalDataSource, ExternalFieldMapping, ExternalLookup — 8 exported names) and system/message-queue.zod.ts (5 defs: MessageQueueConfig, MessageQueueProvider, TopicConfig, ConsumerConfig, DeadLetterQueue — 14 exported names).

Spot-verification of the measurement (on this branch's base, c10e9c3)

Re-ran the two load-bearing greps before deleting anything: zero files outside packages/spec reference either export-name family (all TS file types, excluding node_modules/dist/.cache), while the corpus-reach control (DatasourceSchema under identical exclusions) returns 8+ consumer files in the same run. Each module export was then verified individually: every non-test consumer of every export resolves inside the two modules themselves (ExternalLookupSchema was the only consumer of the other two data-side schemas, and is itself consumed by nothing; MessageQueueConfigSchema was the only consumer of its four siblings). The kernel "hits" for the MQ name are the substring inside EventMessageQueueConfigSchema — a different declaration, untouched. Liveness ledger: no rows exist for either module (absent, consistent with the modules never being metadata types) — nothing to delete, no orphan risk.

Route and registration (per the spec-property-retirement playbook)

Route 3 — "nothing parses it": no carrier key, no door, no author document, so there is no tombstone and no D2 conversion (a prescription nobody can receive is noise; the #4834 / #4988 / #5055 / #6486 shape). The declaration is:

  • RETIRED_DEFS_BY_MAJOR[17] — 8 new entry files under packages/spec/src/migrations/entries/retired-defs/ (one per def, per the Split migrations/registry.ts's two append tables into per-entry files (registry half of #6957's ruling) #7297 conflict-free layout), concatenated by gen:migration-registry.
  • D3 SemanticMigration external-lookup-message-queue-families-retired (entries/semantic/), carrying the three-axis reasoning, the replacement pointers (object.external + datasource config for external data; kernel EventMessageQueueConfig for MQ — no credential field by design), and acceptance criteria.
  • The json-schema.manifest lines (8) and authorable-surface lines (39, all under the 8 defs) are deleted deliberately in the same PR — the manifest deletion gate demanded and then accepted the RETIRED_DEFS declarations; check (c)'s proof 3 covers the per-key lines.

Subsumed, the WidgetManifest.performance way: the #5552 data/ExternalFieldMapping:transform retired-keys entry (same unreleased major 17) — the def retirement is strictly stronger. The shared/FieldMapping tombstone, the integration/ConnectorFieldMapping spelling and the field-mapping-transform-removed D2 conversion are untouched; shared/mapping.test.ts still pins them.

Ratchet-direction note (for review)

This is a whole-def deletion, so the instruments MUST move, and did: api-surface −22 names (pure removals, zero additions — verified by diff), authorable-surface −39 keys, json-schema.manifest −8 defs, export-origins −22, reference pages data/external-lookup.mdx and system/message-queue.mdx dropped by gen:docs (228 files regenerated). Zero movement here would have meant the removal did not actually happen.

Tests

  • New pin tests, one per family (data/external-lookup-retirement.test.ts, system/message-queue-retirement.test.ts): absence by resolved symbol identity over every public entry (zero holders for all 22 names), survivor pins for the live neighbours a too-wide sweep would take (ObjectExternalBindingSchema, ExternalCatalog trio, ImportFieldMappingSchema, EventMessageQueueConfig trio, DeadLetterQueueEntry trio, EventBusConfigSchema), file-deletion probes with anti-vacuity controls, runtime-namespace agreement, and two security-face pins: object.external REJECTS an inline authentication block (strictObject, unrecognized_keys), and the live EventMessageQueueConfig parses real configs while a smuggled sasl block is stripped — nothing credential-shaped survives into the parsed value.
  • One deviation from the dispatch template, stated plainly: there is no per-key tombstone/guidance message to assert, because route 3 prescribes none — the refusal channel is TS2305 at every import (pinned via zero holders) plus the registered upgrade-guide entry. The "survivors keep parsing byte-identically" pin is vacuous for the two modules themselves (no export survives from either file); it is carried instead by the near-namesake and neighbour pins above.

Verification (all local, real output)

  • check:generated 13/13 up to date (includes check:authorable-surface, check:api-surface, check:export-origins, check:docs, check:spec-changes, check:upgrade-guide, check:migration-registry, check:strictness-ledger, check:liveness).
  • The 7 not-run source audits, as one group: empty-state, skill-examples, template-manifests, variant-docs, exported-any, dual-source-exports, scripts-typecheck — all PASS.
  • check:adr-0087-registration PASS (changeset carries the registered marker), check:i18n PASS (9 packages in sync; no form inputs existed for either family), check:nul-bytes PASS, check:merge-driver PASS.
  • pnpm --filter @objectstack/spec typecheck PASS; full spec suite on the MERGED tree: 385/385 files, 10150/10150 tests.
  • Consumer smoke: full workspace build turbo run build 72/72 successful; examples objectstack validate on app-crm / app-showcase / app-todo all exit 0 (pre-existing warnings only); dogfood expression-conformance 3/3.
  • packages/qa/dogfood expression-conformance ledger: zero covers entries name either family (verified by count, not by pipe-masked grep); targeted suite run.

Docs

Changeset

@objectstack/spec major — acceptance surface shrinks on published exports (the #4583/#8078 precedent; the playbook's bump rule for removals). Carries the FROM → TO table, the one-line fix ("delete the import"), and the ADR-0087 marker registered external-lookup-message-queue-families-retired.

Landing note for the PM

os-regen faces ride this PR (authorable-surface, manifest, api-surface, export-origins, spec-changes, upgrade guide, references). The os-regen line was empty at dispatch; re-verify against current main at flip time — if main moved a spec face, this needs the regen-merge lap (scripts/pm/os-regen-merge.sh), never a textual merge of the generated files.


Generated by Claude Code

claude added 3 commits August 12, 2026 17:54
…lies (ADR-0049, #8075)

Fork (b) of the #8075 census: both modules are dead declarations whose only
distinctive feature was an inline-credential sink. Route 3 retirement — no
tombstone, no D2 conversion; RETIRED_DEFS_BY_MAJOR[17] (8 defs) + the D3
SemanticMigration external-lookup-message-queue-families-retired are the
declaration. The #5552 data/ExternalFieldMapping:transform retired-keys entry
is subsumed by the def retirement.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0123k4cam2jEAkPmbJeoaY3r
…824, PROTOCOL_MAP rows, strictness-ledger rows (#8075)

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

vercel Bot commented Aug 12, 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 12, 2026 10:07pm

Request Review

@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.

…ding lap, #8075)

Merge a296d81 took main's side of every os-regen path; this regeneration
recomputes them from the merged sources — the 8 retired defs and 39 authorable
keys leave again (deliberate deletions re-applied under the manifest gate),
main's audit-log semantic entry, page.zod/editability references and the
build-docs integration fix (#8219) all survive. check:generated 13/13.

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

Copy link
Copy Markdown
Collaborator Author

Landing lap (os-regen) complete — origin/main @ e019766 merged via scripts/pm/os-regen-merge.sh.

  • Merge sha a296d817e (script steps 1–3: merge clean — build-docs.ts merged textually, different lines; main's side of every os-regen path taken), regen commit fa78f0b5e (step 4: full chain from the merged tree; the 8 manifest lines + 39 authorable-surface lines re-deleted deliberately under the manifest gate — step 2's checkout had restored main's copies; pre-commit deferral marker cleared itself: spec-changes.json and the upgrade guide verified current).
  • Sibling assertions, main's side: audit-log-action-enum-retired present in the regenerated registry (76 semantic); build-docs integration fix fix(spec): remove 8 dead page names from build-docs integration category #8219 survives (zero message-queue page names remain file-wide — main's integration removal composes with this PR's system-list removal); shared/editability-boundary.ts + test present and passing; regenerated references/ui/page.mdx carries the visibleWhen-side guidance; check:docs green byte-exact against merged sources.
  • Sibling assertions, this PR's side: 8 retired-def entries + external-lookup-message-queue-families-retired in the regenerated registry (53 retired-def / 21 retired-key); manifest −8 (zero occurrences of the def names); authorable-surface −39 (data 847, system 1364); both reference pages absent; second gen:export-origins run converged (0 shards rewritten).
  • Gates on the new head: check:generated 13/13 (exit 0, captured explicitly — not pipe-masked), check:migration-registry exit 0, gen:strictness-ledger refreshed (main's page.zod/editability moved the AST counts), scoped suite 10 files / 235 tests green.

PR stays draft; PM drives flip + auto-merge.


Generated by Claude Code


Generated by Claude Code

@huangyiirene
huangyiirene marked this pull request as ready for review August 12, 2026 22:35
@huangyiirene
huangyiirene added this pull request to the merge queue Aug 12, 2026
Merged via the queue into main with commit 29488cc Aug 12, 2026
27 checks passed
@huangyiirene
huangyiirene deleted the claude/issue-8075-retire-dead-credential-schemas branch August 12, 2026 22:52
huangyiirene pushed a commit that referenced this pull request Aug 12, 2026
…tree (#7872 relay lap over #8230/#8232)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0123k4cam2jEAkPmbJeoaY3r
huangyiirene pushed a commit that referenced this pull request Aug 13, 2026
os-regen merge lap for landing: merge origin/main (committed first, per
scripts/pm/os-regen-merge.sh), then wholesale regen of the os-regen'd
references/api pages from the merged tree. Sibling assertions on the
regenerated tree: #8230 retirement state (def names only in retirement
prose + migration entry), #8232 currency fraction-digit guard, #8234's
13 comparand-door exports in api-surface/data.json, #8236's groupBy
union row all survive; MONGODB_MULTI_TENANT_UNSUPPORTED stays absent
from the ledger and the references ErrorCode union reads main-minus-one
(+265 -> +264; the union grew by 2 on main since the previous lap).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0123k4cam2jEAkPmbJeoaY3r
huangyiirene pushed a commit that referenced this pull request Aug 13, 2026
akarma-synetal pushed a commit to akarma-synetal/framework that referenced this pull request Aug 17, 2026
… enforced once at the shared compile face for all five drivers (objectstack-ai#7872) (objectstack-ai#8234)

* feat(spec): comparand-type door — accepted literal comparand set enforced at the shared compile face (objectstack-ai#7872)

The measured superset string | number | bigint | boolean | null | Date is
defined in packages/spec (filter-comparand-type.ts), enforced by
parseFilterAST on everything it returns and by the engine's lowering seam on
the object form; everything else is refused with the INVALID_FILTER / 400
envelope naming the accepted set. bigint is narrowed copy-on-write to its
exact number (refused beyond 2^53), which kills the driver-memory mingo
crash cell without touching the frozen driver; the mongo silent-edit cell
({qty: undefined} wiring to {} = match everything) becomes a refusal at the
door. SQL-family allowlists source their set membership and wording from the
door instead of local copies. FILTER_COMPARAND_TYPE_CASES conformance table
added and consumed by all five driver suites.

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

* chore(spec): regenerate api-surface + export-origins for the comparand-type door exports (objectstack-ai#7872)

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

* test(objectql): re-judge the deep-equality operator-map pin under the objectstack-ai#7872 door

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

* chore(spec): regenerate api-surface + export-origins from the merged tree (objectstack-ai#7872 relay lap over objectstack-ai#8230/objectstack-ai#8232)

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

* test(objectql): pay the two farm reds — registerObject arity, and un-erased engine option bags (objectstack-ai#7872)

The door suite's registerObject(deal) call was missing the required
packageId (the +1 over objectql's frozen TEST_DEBT 355); and its option
bags used bare 'as any', which the query-options-erasure ratchet counts
(240 -> 245). The bags now type-check uncast — FilterCondition's index
signature admits the deliberately off-contract comparands, which is the
point of the door — except the one FilterArray case, which carries the
sanctioned 'as unknown as EngineQueryOptions' naming the contract it
bypasses (not counted).

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
akarma-synetal pushed a commit to akarma-synetal/framework that referenced this pull request Aug 17, 2026
…ger — a boot refusal never reaches a wire envelope (objectstack-ai#8035) (objectstack-ai#8239)

* fix(spec): MONGODB_MULTI_TENANT_UNSUPPORTED leaves the error-code ledger (objectstack-ai#8035)

The code was registered under @objectstack/driver-mongodb (objectstack-ai#3724) but no
response envelope can carry it: the CLI boot handler rethrows the tenancy
refusal pre-HTTP and aborts, and the one request-reachable trigger
(assertObjectsNotTenantScoped via syncObjectSchema inside the metadata
protocol's ensureObjectStorage) is swallowed by a documented best-effort
catch. Registered-but-unemittable is the class the ledger header names;
precedent OVERLAY_PERSISTENCE_FAILED / objectstack-ai#5783 — this instance is the sister
shape (never had a wire path, rather than lost it), now documented in the
header.

The boot refusal stays untouched: MULTI_TENANT_UNSUPPORTED_CODE, the error
class, its message, and the CLI's duck-typed literal match. A new
driver-mongodb test pins the code literal (with the ledger row gone it is
the only cross-package guard on the literal serve.ts matches); the ledger
test now asserts the wire vocabulary refuses the retired string. Reference
docs regenerated (ErrorCode enum 264 -> 263).

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

* docs(spec): regenerate references from the merged tree (objectstack-ai#8035)

os-regen merge lap for landing: merge origin/main (committed first, per
scripts/pm/os-regen-merge.sh), then wholesale regen of the os-regen'd
references/api pages from the merged tree. Sibling assertions on the
regenerated tree: objectstack-ai#8230 retirement state (def names only in retirement
prose + migration entry), objectstack-ai#8232 currency fraction-digit guard, objectstack-ai#8234's
13 comparand-door exports in api-surface/data.json, objectstack-ai#8236's groupBy
union row all survive; MONGODB_MULTI_TENANT_UNSUPPORTED stays absent
from the ledger and the references ErrorCode union reads main-minus-one
(+265 -> +264; the union grew by 2 on main since the previous lap).

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
akarma-synetal pushed a commit to akarma-synetal/framework that referenced this pull request Aug 17, 2026
…ered/virtualScroll (ADR-0049, objectstack-ai#7176) (objectstack-ai#8252)

* refactor(spec)!: retire pass-through-only list-view keys striped/bordered/virtualScroll (ADR-0049, objectstack-ai#7176)

Maintainer ruling 2026-08-10: every measured reader copies the key forward
and ObjectGrid, where the chains end, never applies any of the three —
copy-without-apply is dead in effect. retiredKey() tombstones on
ListViewSchema (radiating into ObjectListViewSchema), ADR-0087 D2 conversion
view-list-passthrough-keys-removed + D3 chain step + six
RETIRED_KEYS_BY_MAJOR[17] entries, ledger rows flipped to dead with the
retirement note, form inputs pruned, docs updated, changeset with FROM->TO.

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

* test(spec): match the striped prescription's actual casing in the pin test

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

* merge origin/main (os-regen artifacts taken from main; regeneration follows)

* chore(spec): regenerate artifacts after merging origin/main (4dc1c7d relay: objectstack-ai#8230/objectstack-ai#8232/objectstack-ai#8234/objectstack-ai#8236/objectstack-ai#8239)

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
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/xl tests tooling

Projects

None yet

2 participants