Skip to content

[finding] Bare ADR numbers in the published catalog — 177 sites, and three protection.reason examples teach customers to write see ADR-0010 into their own metadata #11791

Description

@claude

Measured on origin/main at 56630b7ee while implementing #11781 (PR #11790). Filed unassigned — out of that card's scope, which was ADR-0057 only.

Sub-issue of #11052, which asks the same question one citation-kind over: that card measured 92 internal issue ids (#NNNN) the customer cannot open; this one measures the ADR numbers. #11052's question 1 — "Do published skills keep provenance ids at all?" — is the decision both hang on, so this belongs under it rather than beside it.

What

skills/** carries 177 ADR-NNNN citations, essentially all bare. Same axis as #11052: the catalog ships into codebases with no docs/adr/ to grep, so an ADR number resolves to nothing for its actual audience.

The sharpening that makes this its own measurement: three ADR numbers are each claimed by two unrelated records0010, 0019, 0057 — frozen on check-adr-anchors.mjs's shrink-only KNOWN_NUMBER_COLLISIONS. #11781 closed the ADR-0057 exposure. The other two, judged per site rather than as a class:

ADR-0010 — exposed (17 sites, 8 skills)

The pair is 0010-metadata-protection-model vs 0010-nl-to-flow-authoring.

13 of the 17 sit in the generator-owned references/_index.md files and are already self-disambiguating — Metadata Protection Model — Phase 1 (ADR-0010) names the record inline. Those are fine.

The 4 in skills/objectstack-data/SKILL.md are bare:

  • :855See ADR-0010 for the full model. Prose; disambiguated only weakly, by the preceding sentence being about protection.
  • :897, :915, :936 — inside authored metadata:
    protection: {
      lock: 'full',
      reason: 'Core identity object — see ADR-0010.',
      docsUrl: 'https://objectstack.ai/docs/references/shared/protection',
    

The three reason: sites are worse in kind than the ones #11781 fixed, and worth separating from the prose case. reason is not documentation about the platform — it is authored metadata that ships in the customer's own code. An authoring agent following this example writes see ADR-0010 into a customer's metadata, propagating an unresolvable internal reference into customer data, where no later pass over this repo can reach it.

They also already carry, on the very next line, a docsUrl pointing at a public page that does resolve. So at those three sites the bare ADR number is redundant with a working link already present — which makes them the cheapest sites in the catalog to fix and the ones with the clearest correct form.

ADR-0019 — checked, NOT defective (5 sites)

skills/objectstack-automation/SKILL.md:278,289,436,806 and skills/objectstack-platform/SKILL.md:187. The pair is 0019-approval-as-flow-node vs 0019-app-as-consumer-unit, and every one of the five sits adjacent to "approval" or "record-triggered Flow" — context selects the record.

Recorded explicitly so a later pass does not "correct" them. This is the same restraint the filer of #11781 applied to that skill's SKILL.md:651.

The constraint any fix will hit

scripts/check-skills-token-ratchet.mjs is shrink-only, and 7 of the 11 published SKILL.md sit at exactly 0 headroom today:

skills/objectstack-ai/SKILL.md             6824 /  6824   (+0)
skills/objectstack-api/SKILL.md            6342 /  6342   (+0)
skills/objectstack-i18n/SKILL.md           6349 /  6349   (+0)
skills/objectstack-pm-dispatch/SKILL.md   14239 / 14239   (+0)
skills/objectstack-query/SKILL.md          5569 /  5569   (+0)
skills/objectstack-ui/SKILL.md            25154 / 25154   (+0)
skills/objectstack-upgrade/SKILL.md        8335 /  8335   (+0)

So additive qualification is unreachable catalog-wide right now — the only legal edits are deletion or a byte-neutral rewrite. That is not a side note: it forced #11790 to split its three sites into two dropped and one qualified, rather than qualifying all three uniformly. Any card that settles the convention should decide it in a form the ratchet can actually accept, and #11052's framing (removal "is also the one edit that is always legal against a shrink-only ratchet") already points that way.

Not fixed here

#11790 was scoped to ADR-0057. Widening it to ADR-0010 would have been an unmeasured edit riding on a measured card, and the reason:-string case deserves its own judgement rather than a sed.


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions