Skip to content

Commit 3273a34

Browse files
committed
docs(spec): the retirement changeset states twelve distinct names, and the tree-scan pin states its turbo radius
Contract-review conditions 1 and 2 on this PR. Prose and comment only: no schema, registration, test assertion or generated artifact changes. 1. `.changeset/inert-deadline-keys-retired.md` — the retirement covers fourteen sites across twelve distinct leaf names, not thirteen. `durationMinutes` occurs at `TrainingCourse` and `ChangeImpact.downtime`, `estimatedMinutes` at `RollbackPlan.steps[]` and `ChangeRequest.implementation.steps[]`; thirteen is the count of distinct (file, name) pairs. The retirement kit no longer lists `json-schema.manifest/`, `spec-changes.json` or the protocol upgrade guide among the artifacts this branch moves: the manifest ratchets def names and no def leaves the published surface, and both projections filter the migration chain at the current protocol major, so the protocol-18 registrations reach them at the 18 cut. 2. `packages/spec/src/system/deadline-keys-retirement.test.ts` — the tree-scan header now records that the walk's inputs outside this package's declared cross-package globs are not hashed by turbo, so that leg is a full-run guarantee rather than an affected-path one, and that typed resurrections are caught by the `never` channel independently. Comment only, no new declaration; the playbook-vs-gate gap is tracked on #15528. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G4138K1EG7kQ81FNba5Kp4
1 parent 83a3353 commit 3273a34

2 files changed

Lines changed: 33 additions & 6 deletions

File tree

.changeset/inert-deadline-keys-retired.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ Maintainer ruling 2026-09-02 on the census card (ruled A: retire per family):
1313
ADR-0049 enforce-or-remove decides it — declared-but-unenforced deadline
1414
surface with zero measured readers comes off.
1515

16-
Fourteen hour/minute/day-shaped deadline, SLA and duration keys (thirteen
17-
distinct names) sat on the exported incident-response, training and
16+
Fourteen hour/minute/day-shaped deadline, SLA and duration key sites — twelve
17+
distinct names, because `durationMinutes` and `estimatedMinutes` each occur at
18+
two sites — sat on the exported incident-response, training and
1819
change-management schemas and in the generated reference docs, and **nothing
1920
read them**: the schemas are exported from `@objectstack/spec/system`, mounted
2021
by no stack key, registered as no metadata type, absent from the 2026-06
@@ -125,10 +126,15 @@ The retirement kit:
125126
through the nesting carriers; the tsc `never` channel; no-materialize pins
126127
for the six former defaults; the ADR-0087 registration; and a tree-scoped
127128
absence pin over every authored source in the repo
128-
- generated baselines/docs follow the schema (`authorable-surface/` gains
129-
eleven `[RETIRED]` rows, `authorable-defaults/` loses six rows,
130-
`json-schema/`, `json-schema.manifest/`, spec-changes, upgrade guide,
131-
reference docs)
129+
- generated baselines and docs follow the schema: `authorable-surface/` gains
130+
eleven `[RETIRED]` rows, `authorable-defaults/` loses six rows, the three
131+
system reference pages are regenerated, and the gitignored `json-schema/`
132+
output is re-emitted on the next build
133+
- `json-schema.manifest/` is unchanged, and correctly so: it ratchets def
134+
*names*, and retiring keys removes no def from the published surface
135+
- `spec-changes.json` and the protocol upgrade guide are unchanged too: both
136+
project the migration chain at the current protocol major (17), so these
137+
protocol-18 registrations reach them at the 18 cut
132138
- zero authored occurrences in this repo's examples, skills and hand-written
133139
docs, and zero hits in objectui at the pinned sha, so no in-repo source
134140
changes ride along beyond the three families' own unit tests

packages/spec/src/system/deadline-keys-retirement.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,27 @@ describe('[#14477] ADR-0087 registration', () => {
548548
});
549549
});
550550

551+
// What this leg guarantees, and what it does not. The walk below reads the
552+
// whole repo tree from REPO_ROOT, but the inputs it reaches outside
553+
// `@objectstack/spec`'s declared cross-package globs in `turbo.json` are not
554+
// hashed by turbo. So a resurrection authored in `examples/**`, `apps/**`,
555+
// hand-written `content/docs/**` or most `packages/*/src/**` does not put this
556+
// suite into `turbo ls --affected`, and the PR that authors it can replay a
557+
// cached green. Read this leg as a FULL-RUN guarantee — the merge queue and a
558+
// plain `pnpm test` — rather than an affected-path one.
559+
//
560+
// `check:cross-package-test-inputs` is green here as designed: every literal
561+
// path this file names is declared, and the gate's declaration file states the
562+
// trade for a walk that descends on a loop variable (the escape verdict
563+
// resolves and the name does not). Widening spec's declared inputs to the
564+
// walk's real radius would put this suite on every docs PR, so nothing is
565+
// widened here; the playbook-vs-gate question is filed as #15528 and is not
566+
// this PR's to answer.
567+
//
568+
// Independently of turbo, every *typed* TypeScript resurrection is caught at
569+
// author time by the `never` channel pinned above, which needs no tree walk.
570+
// The residue this leg covers is the untyped rest: JSON, YAML, MDX and
571+
// unannotated literals.
551572
describe('[#14477] tree-scoped absence: nothing in the repo authors a retired key any more', () => {
552573
const REPO_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../..');
553574
const THIS_DIR = path.dirname(fileURLToPath(import.meta.url));

0 commit comments

Comments
 (0)