Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 0 additions & 18 deletions .changeset/16045-spec-declaration-text-snapshots.md

This file was deleted.

2 changes: 1 addition & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -144,10 +144,10 @@ packages/spec/authorable-surface.base.json merge=os-regen
packages/spec/authorable-defaults/** merge=os-regen
packages/spec/json-schema.manifest/** merge=os-regen
packages/spec/api-surface/** merge=os-regen
packages/spec/api-surface-declarations/** merge=os-regen
packages/spec/src/meta-spelling/meta-url-data.generated.ts merge=os-regen
packages/spec/export-origins/** merge=os-regen
packages/spec/declaration-map/** merge=os-regen
packages/spec/api-surface-signatures.json merge=os-regen
docs/protocol-upgrade-guide.md merge=os-regen
docs/audits/2026-07-unknown-key-strictness-ledger.counts.md merge=os-regen
content/docs/references/** merge=os-regen
Expand Down
38 changes: 5 additions & 33 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5173,16 +5173,11 @@ jobs:

# The authorable KEY surface — what a metadata author may write, which for
# this platform is the third-party API. `api-surface/` records exported
# names only, so it does not see a key added to or removed from a schema;
# the shape sibling that used to sit beside it (`api-surface-signatures.json`,
# retired at #16045) hashed factory types as TypeScript PRINTS them — a
# reference, never structurally expanded — so it did not see one either.
# #3883 removed three authorable keys with every witness green; #3733 did it
# by accident. ADR-0059 §5 deferred this gate until a narrowing actually
# slipped both — it has. `check:api-surface-declarations` (consumer-gates
# lane) now records the declaration TEXT of every export, which DOES move on
# such a key; this gate stays the authority on the AUTHORABLE key set, which
# is a different question from the declared TypeScript shape.
# names and `api-surface-signatures.json` hashes factory types as TypeScript
# PRINTS them (a reference, never structurally expanded), so neither sees a
# key added to or removed from a schema. #3883 removed three authorable keys
# with every witness green; #3733 did it by accident. ADR-0059 §5 deferred
# this gate until a narrowing actually slipped both — it has.
#
# ⚠ ORDER: this step must stay ABOVE the `check:docs` step below. Its
# `--check` run of scripts/build-schemas.ts writes the gitignored
Expand Down Expand Up @@ -6104,29 +6099,6 @@ jobs:
- name: Check @objectstack/spec public API surface
run: pnpm --filter @objectstack/spec run check:api-surface

# [#16045] The SHAPE half of the same surface, and the step the card above
# exists for: `api-surface/` pins 5336 `name (kind)` rows and a signature
# change, a renamed interface field and a dropped union member move NONE of
# them, so 99.5% of the pinned surface could not go red on a breaking shape
# change to a ratified public type. The declaration-text snapshot records
# what the packed `.d.ts` actually declares for every export, per entry
# point. Ruled at #16045 (director batch #60, maintainer 「同意」): text and
# ⛔ NOT a hash, because a red hash gets accepted rather than investigated
# and a readable diff is what makes contract review a guard.
#
# WHY THIS LANE. It resolves each entry point through the `exports` map to
# the BUILT `.d.ts` — the declarations a consumer installs — so it is
# build-dependent and sits after the two build steps above with its family
# (`check:api-surface`, `check:published-readme-exports`). A missing or
# stale dist is a HARD REFUSAL in both of the script's modes, never a skip:
# a build-dependent gate that silently reads nothing reports "not measured"
# as if it were "measured and clean" (#4690).
#
# It adds no required context: a step in an existing lane, so no open PR
# waits on a check whose name no head has ever reported (#9325).
- name: Check @objectstack/spec declaration text (the shape half)
run: pnpm --filter @objectstack/spec run check:api-surface-declarations

# [#11350] Consumer-shaped declaration-emit pin against the BUILT root
# entry (an un-annotated `export default defineStack(...)` must compile
# with `declaration: true` — the TS2883 class). The pin is environment-
Expand Down
7 changes: 1 addition & 6 deletions docs/spec-generated-artifact-sharding.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,7 @@ arithmetic composes on a merge and the judgement does not).

- **`spec-changes.json`** — keyed by version, so two PRs append under different majors.
Never a conflict surface worth splitting.
- **`api-surface-signatures.json`** — RETIRED at #16045, and the one row here whose reason
did not survive its own artifact. It was 1.3KB, one line per `defineX` factory, so it was
never worth splitting. Its replacement is the opposite shape: `api-surface-declarations/`
holds the declaration TEXT of every export (12 MiB across 17 shards on the tree that
landed it), so it is sharded per entry point from the day it arrived, for the same
merge-queue reason `api-surface/` is.
- **`api-surface-signatures.json`** — 1.3KB, one line per `defineX` factory.
- **`authorable-surface.base.json`** — the #5235 deletion-gate anchor. Nothing but an
explicit `gen:authorable-surface-base` writes it (#5358), so it was never on the churn
path that made the other three the queue's serialization point. It also carries **one**
Expand Down
Loading
Loading