Repository navigation
[sweep] ADR-0049 retire 5 declared-but-inert spec surfaces (#5295 #5703 #6239 #6247 #6414) #6486
Description
Sweep card (maintainer-directed, 2026-08-07). One claim, one PR, five Fixes, per-item checklist review — the #6243 / PR #6288 pattern, adopted here to amortize the claim/CI/acceptance overhead that domain:spec currently pays five times over.
Admission criterion (all five members hit the same one)
A surface declared in
packages/specwith zero runtime consumers repo-wide, whose disposition under ADR-0049 enforce-or-remove is remove.
Same route for every member: spec-property-retirement playbook — retiredKey() tombstone, ADR-0087 conversion/registry entry, regenerated baselines, docs regen, changeset. That shared machinery is exactly what makes one PR cheaper than five.
Members — verify, then retire
Per-item gate, mandatory before touching any member: re-run the zero-consumer measurement on origin/main (quoted exact names, declaration-site grep per the scan discipline — a bare-name grep hits surviving relatives). If a live consumer turns up, drop that member from the sweep and report it — a wrong retirement is far more expensive than a smaller sweep.
| # | Surface | Recorded evidence | Note |
|---|---|---|---|
| #5295 | ServerEvent* / ServerCapabilities / ServerStatus in system/http-server.zod.ts |
zero consumers measured during #4938 / PR #5293 | plugin-hono-server neither implements nor reports them; if it does, this member leaves the sweep and becomes an adopt/conformance card. |
| #5703 | ActionDescriptor.supportsPause / isAsync |
zero non-test readers across three repos; the engine's only pause fact is result.suspend |
|
| #6239 | View-Management five methods (listViews/getView/createView/updateView/deleteView) |
zero implementation, zero routes; already mis-read once as a live route contract (#5948) | |
| #6247 | TestSuiteSchema / TestScenarioSchema / TestStepSchema / TestActionSchema / TestAssertionSchema (qa/testing.zod.ts) |
zero runtime consumers, no liveness ledger entry; ruled retire by the maintainer 2026-08-07 | Only member with the disposition already settled. |
| #6414 | L2 ETLPipeline |
no execution-side consumer in this repo (spec + generated docs only) | SYNC_ARCHITECTURE.md currently recommends it as the destination after the L1 retirement — that prose must be corrected in the same PR, or the retirement contradicts the doc. |
Scope discipline
- Zero changes beyond the five members. The PR self-certifies:
git diff --statfile count must correspond line-for-line to the checklist. This is the line between a sweep and a rider. - Out-of-scope findings are filed separately, as always — PD chore: version packages #10 is not suspended by bundling.
- Each retirement keeps its own changeset entry (one file per change; they never conflict).
Landing constraints
- Touches
packages/specgenerated baselines ⇒ themerge=os-regenfour-step序 applies on every sync:git merge origin/main→git checkout origin/main -- <generated>→ commit the merge first, then regenerate wholesale → assert sibling entries survive. Never a text merge, nevergen:schemawhile in MERGE state (os-regen 驱动指示的gen:schema在 merge 未 commit 时运行,会把 authorable-surface 锚点倒退回旧 merge-base —— 生成器写入、门全绿、静默撤销 main 的锚点推进 #5370). - Anchor assertion is
pnpm --filter @objectstack/spec check:authorable-surfacegreen —baseRevis allowed to lag; ⛔ never hand-edit the anchor. - Serialize against other in-flight regenerating PRs in this lane per the spec 生成物没有 merge driver:两个 PR 各改几行,语义上是集合运算,却每次都打成文本冲突 #4675 four-step order.
Review shape
Reviewed by the checklist, not by diff order: one line per member — landing site | what was declared | what the tombstone now says — plus the consumer-measurement evidence for each. A member without its measurement quoted is not reviewable.
Filed unassigned. Member issues keep pm:queue but are excluded from batch selection while this card is open (double-dispatch guard); all five close together when the PR merges.
Activity
docs(spec): re-anchor the dead tracker citations in packages/spec/src…