Skip to content

[finding] The published objectstack-data skill cites bare ADR-0057 — a number two records share, in a file that ships where docs/adr/ does not exist #11781

Description

@os-steve

Found while classifying the ADR-0057 D10 citations for #11501 (PR #11780). Out of that card's scope — it is a different ADR-0057 and a different decision — so recording it rather than fixing it there.

What

Three citations in the published skill package spell ADR-0057 bare:

  • skills/objectstack-data/SKILL.md:84lifecycle key: "Data retention/rotation/archival contract (ADR-0057)"
  • skills/objectstack-data/SKILL.md:973 — same key, the reference table
  • skills/objectstack-data/rules/lifecycle.md:4 — "reclaimed (ADR-0057)"

All three mean 0057-system-data-lifecycle-and-retention.md. But 0057 is one of the three numbers claimed by two unrelated records (#5992, frozen on check-adr-anchors's shrink-only KNOWN_NUMBER_COLLISIONS), the other being 0057-erp-authorization-core-business-units-and-scope-depth.md — ERP authorization. A reader who greps ADR-0057 lands on two documents with nothing to choose between them, and here the two are as far apart as the pair gets: retention/reclamation vs. authorization.

Why this is not just the known #5992 "B" work

check-adr-anchors.mjs's header already records that slug-qualified references for the three existing pairs are separate work, "amortised as those files are touched" — so the in-repo half is known and deliberately deferred, and this is not a request to reopen it.

The distinct part is the surface: skills/** is the published catalog, and it lands in codebases this repo cannot see. In-repo, a bare ADR-0057 costs a reader one extra grep and they find both records. In a customer's checkout there is no docs/adr/ at all, so the citation resolves to nothing for its actual audience — and the audience is an authoring agent, which is the reader least able to recover from a dangling reference.

Worth noting the neighbouring citation is fine and shows the intended shape: SKILL.md:651 cites ADR-0057 D1 for readScope/writeScope, and the ERP record's D1 is "Scope-depth on object grants". That one is unambiguous because the lifecycle record carries no D-numbered headings at all (it uses §3.1§3.6). Only the bare-number citations are exposed.

Suggested disposition

Not obviously worth a PR on its own. Candidates, cheapest first:

  1. Do nothing — accept that a published bare ADR citation is decorative for the external reader. Defensible; it is what ships today.
  2. Slug-qualify in placeADR-0057 (system data lifecycle), three sites, zero net lines. Resolves the ambiguity for a reader who has the repo and reads as a plain noun phrase for one who does not.
  3. Drop the citation from the published copy and keep the rationale in-repo, if the position is that published skills should not cite internal decision records at all.

⚠️ Whichever route: skills/** is a governed surface (Prime Directive #14), so any fix stays draft for a human merge, and per the maintainer's 2026-08-21 ruling on published-skill size it must not grow the package — route 2 is line-neutral, route 3 shrinks it.

Dedup: searched open issues for the ADR-number collision and for ADR-0057 — nearest neighbours are #9072 (the ADR-0081 / cloud ADR-0081 ambiguity, a different pair) and #11763 (unchecked registry numbers, unrelated). Nothing covers this.


Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions