Uh oh!
There was an error while loading. Please reload this page.
skills(data): drop the two bare ADR-0010 citations from the objectstack-data skill - #14777
Merged
Merged
Conversation
…13 tokens) `skills/objectstack-data/SKILL.md` carried two bare `ADR-0010` citations. The number is claimed by two unrelated records (`0010-metadata-protection-model` and `0010-nl-to-flow-authoring`, frozen in `check-adr-anchors.mjs`'s `KNOWN_NUMBER_COLLISIONS`), and the published catalog ships into codebases with no `docs/adr/` to grep, so neither site resolved for its actual audience. - The `reason:` string in the `sys_user` protection example is authored metadata that ships in a customer's own code, where no later pass over this repo can reach it. It drops `— see ADR-0010.`; the rest of the reason and the adjacent `docsUrl` — a public page that does resolve — both stay. - The prose sentence `See ADR-0010 for the full model.` is dropped: the section heading (`Metadata Protection`) and the sentence before it already name the model, so the citation's only unique content was a pointer the reader cannot open. Both edits are deletions, so the shrink-only token ratchet is satisfied inside the file: 10009 -> 9996 against a 10009 ceiling. The five `ADR-0019` sites and the generator-owned `references/_index.md` mentions were examined and left untouched — context selects the record at all of them. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LraLgQVGq8egUwfYZpbYt1
os-zhuang
approved these changes
Sep 3, 2026
os-zhuang
marked this pull request as ready for review
September 3, 2026 02:32
os-zhuang
enabled auto-merge
September 3, 2026 02:32
Contributor
This was referenced Sep 3, 2026
Contributor
This was referenced Sep 3, 2026
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Sep 3, 2026
This was referenced Sep 3, 2026
This was referenced Sep 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#11791
skills/objectstack-data/SKILL.mdcarried bareADR-0010citations.0010is claimed by two unrelated records —0010-metadata-protection-modeland0010-nl-to-flow-authoring, frozen incheck-adr-anchors.mjs's shrink-onlyKNOWN_NUMBER_COLLISIONS— and the published catalog ships into codebases with nodocs/adr/to grep, so neither site resolved for its actual audience.Scope is the
ADR-0010sites inskills/objectstack-data/**and nothing else. The catalog-wide convention question (whether published skills keep provenance ids at all) belongs to #11052 and is deliberately not settled here.Sites
Line numbers are measured on
origin/mainat224f8ea4(the branch base), which is where the "before" column is read.1 · authored
reason:string —SKILL.md:611before /:610afterThe sharpest of the two:
reasonis not documentation about the platform, it is authored metadata that ships in the customer's own code. An authoring agent following this example writessee ADR-0010into customer metadata, somewhere no later pass over this repo can reach. The correct form was already sitting on the next line — adocsUrlpointing at a public page that resolves.reason: 'Core identity object — see ADR-0010.',reason: 'Core identity object',docsUrl: 'https://objectstack.ai/docs/references/shared/protection'on the following line is untouched, and so is the rest of the reason text. The block sits inside a markedos:checkexample, so it is type-checked;reasonstays a non-empty string, which is what the.strict()schema requires (min 1 / max 500 chars).2 · prose —
SKILL.md:567before / deleted afterPackage authors can lock shipped metadata against Studio edits / overlays / deletes. -See ADR-0010 for the full model.Judged in the form PR #11790 used for
ADR-0057: name the record so it resolves for a reader with nodocs/adr/, or drop the sentence when the surrounding text already names the model. The second branch applies here — the section heading is literally## Metadata Protectionand the sentence immediately before names the model in full ("lock shipped metadata against Studio edits / overlays / deletes"). Qualifying the number in place would have restated the heading and been additive against a ceiling with zero headroom; the citation's only unique content was a pointer the reader cannot open, and the section's own schema, lock table and enforcement paragraph follow immediately.ADR-0019— examined and keptThe card named five sites. Re-measured on this branch, three survive, and none is touched:
skills/objectstack-automation/SKILL.md:410skills/objectstack-automation/SKILL.md:424### Approvals (Flow Nodes): "Since ADR-0019 there is no standalone approval-process type"skills/objectstack-platform/SKILL.md:83The pair is
0019-approval-as-flow-nodevs0019-app-as-consumer-unit, and context selects the record at every one. Recorded here so a later sweep does not "correct" them.The generator-owned
skills/*/references/_index.mdmentions are also untouched: they are generated, and they are self-disambiguating already (Metadata Protection Model — Phase 1 (ADR-0010)).Token readings
scripts/check-skills-token-ratchet.mjsis shrink-only and both files this skill package could have been paid from sat at exactly zero headroom, so the edit is paid for inside the edited file. No ceiling is changed and nothing is re-wrapped; both edits are deletions.Counting convention is the gate's own:
ceil(utf8 bytes / 4).skills/objectstack-data/SKILL.mdskills/objectstack-data/rules/security.mdGate verdict lines, quoted:
Published-surface size readings
Required for any diff touching
skills/**. Lines are the unit; tokens reported alongside because the sibling gate prices this surface in tokens.skills/objectstack-data/SKILL.md(edited file)skills/objectstack-data/**(whole skill package)SKILL.md(catalog)Every reading is negative in every unit. Nothing is added anywhere.
Gates
All run under
scripts/pm/os-verify-lock.sh, each exit code captured by redirect before any pipe, each gate's own verdict line quoted. Union re-derived after the last edit withnode scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commandsatbf410c1a— the same commit every reading below was taken on.node scripts/check-skills-token-ratchet.mjs✓ check-skills-token-ratchet: 36 authored bundle file(s) within their ceilings; 11 generator-owned file(s) measured, not ratcheted.node scripts/check-skills-token-ratchet.mjs --self-test✓ check-skills-token-ratchet self-test: 64 cases pass.pnpm check:skill-identifier-livenesscheck-skill-identifier-liveness OK — Leg 1: 465 citation(s) over 46 published file(s) …; Leg 2: 8 registered exhaustive section(s), 0 ledgered gap(s).pnpm --filter @objectstack/spec run check:skill-examples✅ 256 prose examples type-check across 3 surface(s) — every marked block parsed, so tsc ran the SEMANTIC pass on all of thempnpm --filter @objectstack/spec run check:skill-docs✅ Skill docs in syncpnpm check:role-wordcheck-role-word: OK, no new occurrences of the reserved word.pnpm check:published-readme-links✓ check:published-readme-links — 176 outbound link(s) across 60 published markdown file(s): 0 root-relative, 0 non-canonical origin(s), 27 docs-site page(s) resolved (0 via redirect), 1 anchor(s) verified, 103/103 relative target(s) found in the tree.pnpm check:nul-bytescheck-nul-bytes: OK (scanned 8052 text file(s) … no raw ASCII control bytes).node scripts/check-ci-filter-parity.mjsOK: all 130 declared cross-package glob(s) (92 unique) are covered by core or crosspkg …node scripts/check-cross-package-test-inputs.mjsOK: 25 package(s) read outside themselves, all declared, and turbo.json hashes every declared glob.pnpm check:cross-package-test-inputsnode scripts/check-shard-attestation.mjs✓ check-shard-attestation: 2 aggregate gate(s) count 3 declared leg(s) across 3 attesting job(s).node scripts/check-test-completeness.mjspnpm --filter @objectstack/lint run check:doc-formula-expressions✓ check:doc-formula-expressions (spec TSDoc, #6763): 9 @example(s) judged clean across 1120 packages/spec/src files …pnpm check:agent-test-spelling✓ check-agent-test-spelling: 0 violations — 430 file(s) · 5686 bare double-dash token(s) · 1382 launcher-rooted run(s) · 9 separator(s) JUDGED …pnpm check:corpus-claim-driftcheck-corpus-claim-drift: OK, no new claim sites beside a pinned spelling.pnpm check:doc-authoring✓ doc authoring guard: 14546 customer-facing string(s) across 710 spec sources clean — no internal issue-id references …pnpm check:pm-governed-merges✓ check-governed-merges --self-test: 243 assertions …pnpm check:skill-compatibility✓ check-skill-compatibility-version: 11 SKILL.md file(s) reconciled against 79 workspace packagespnpm check:skill-frame-sync✓ check-skill-frame-sync: 4 copies of the decision frame are structurally isomorphic across 3 filescheck-test-completenessexit 3 is NOT MEASURED, in the gate's own words, not a red:check:skill-examplesfirst refused with a build prerequisite (packages/client-react/dist holds no .d.ts declarations) — the gate's own false-green refusal, exit 1 with no verdict on any surface. It was satisfied by building rather than reported as unmeasured:pnpm --workspace-concurrency=2 --filter '@objectstack/client-react...' --filter '@objectstack/client...' build, after which the gate ran to a real green. The reading above is that second, measured run.Fence census across the edit, as an independent check that no marked block moved: the
os:checkmarker count inSKILL.mdis 5 before and 5 after, and the fence-line count is 24 before and 24 after.Premise checks
Four premise checks on what the dispatch and the card stated. None changes the disposition; the first three change a count.
:855:897:915:936), the unlock scan re-measured four (:861:903:921:942), and the dispatch expected four. Todaygit grep -n "ADR-0010" -- skills/objectstack-datareturns two inSKILL.mdplus the two generator-ownedreferences/_index.mdmentions. Cause, measured: commit940c1289(PR skills(data): optimization flight — hooks consolidated, generic patterns cut, sharingModel/Field.* /storage.notNull taught (net −9,044 tokens) #14427, "optimization flight … net −9,044 tokens", 2026-09-02) deleted thesys_roleandapp/setupprotection examples wholesale, taking theirreason: '… — see ADR-0010.'strings with them.git grep -c ADR-0010 940c1289^ -- skills/objectstack-data/SKILL.md= 4; at940c1289= 2. So onereason:site remained to repair, not three.ADR-0019sites were expected; three exist. The card and the dispatch both name five (automation:278,289,436,806andplatform:187).git grep -n "ADR-0019" -- skills/returns three today, atautomation:410,automation:424andplatform:83. The verdict is unchanged — every survivor still sits in text that selects0019-approval-as-flow-node, quoted in the table above — but the count and the line numbers in the card are stale, the same way theADR-0010ones were.ADR-0010sites are not inrules/security.md. The dispatch suggested skills(data): split security into rules/security.md under #14296 item 1 (package net −64 tokens) + DATA-B-06 #14673's split may have moved them there. It did not:rules/security.mdcarries noADR-0010at all, and the split (446117fc) left theADR-0010count inSKILL.mdunchanged at 2 on both sides.ADR-0010line numbers held.:567(prose) and:611(reason:) are correct at224f8ea4; it is the card's and the unlock scan's numbers that are stale.Two notes on the gate list rather than on the card: the derived union names eleven gates the dispatch did not (all run above, all green), and the dispatch named three that the union does not derive (
check:skill-examples,check:published-readme-links,check:nul-bytes) — run anyway.Governed surface
skills/**is a governed surface (Prime Directive #14). This PR is a draft and stays one: no merge, no queue, no auto-merge, no ready flip from any agent seat.skip-changesetis applied — this diff publishes nothing from any package, matching the precedent of the two most recent skills-only landings (940c1289,446117fc), neither of which carried a changeset. Noneeds:contract-review: this is provenance text, and it makes no contract claim.🤖 Generated with Claude Code
https://claude.ai/code/session_01LraLgQVGq8egUwfYZpbYt1