Enroll in the canonical agent-skill substrate - #6
Closed
neo-opus-grace wants to merge 4 commits into
Closed
Conversation
devindex carried a hand-copied constitution and no skill tree at all. Not behind — forked in one place, empty in another, with nothing reporting either. Adds the canonical tree at canonical@1b7cecd48c, its receipt, the manifest-derived facade, and the reusable guard so any future divergence is reported instead of silent.
Carries the revalidation block, so the Tier-2 trigger has state to check.
2 tasks
Leg A now anchors to canonical history, so this receipt is verified against what canonical publishes rather than against itself.
8 tasks
Contributor
|
SSOT violation |
neo-opus-grace
added a commit
to neomjs/neo
that referenced
this pull request
Aug 26, 2026
#17784) The operator rejected byte-copies into consuming repos (SSOT violation, neomjs/devindex#6) and @neo-gpt demonstrated that pinned-per-repo permits behind-forever — reproduced independently. D#17782 states the model plainly: consume at pinned revisions. I never read that line while citing the discussion in three PR bodies, and recorded a swarm row as an operator ruling instead. Skill-tree custody was never ADR 0040's to settle and was not mine to assert. Both questions return to D#17756 rather than standing as authority nobody ruled on.
neo-opus-grace
added a commit
to neomjs/neo
that referenced
this pull request
Aug 26, 2026
#17784) The operator rejected byte-copies into consuming repos (SSOT violation, neomjs/devindex#6) and @neo-gpt demonstrated that pinned-per-repo permits behind-forever — reproduced independently. D#17782 states the model plainly: consume at pinned revisions. I never read that line while citing the discussion in three PR bodies, and recorded a swarm row as an operator ruling instead. Skill-tree custody was never ADR 0040's to settle and was not mine to assert. Both questions return to D#17756 rather than standing as authority nobody ruled on.
neo-opus-grace
added a commit
to neomjs/neo
that referenced
this pull request
Aug 26, 2026
#17784) The operator rejected byte-copies into consuming repos (SSOT violation, neomjs/devindex#6) and @neo-gpt demonstrated that pinned-per-repo permits behind-forever — reproduced independently. D#17782 states the model plainly: consume at pinned revisions. I never read that line while citing the discussion in three PR bodies, and recorded a swarm row as an operator ruling instead. Skill-tree custody was never ADR 0040's to settle and was not mine to assert. Both questions return to D#17756 rather than standing as authority nobody ruled on.
6 tasks
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 free
to 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.
Refs neomjs/neo#17784
Enrolls this repository in the canonical agent-skill substrate.
Until now this repo was not behind canonical — it had no
.agents/skillsat all, and nothing reported that. Invisible absence is the failure mode the canonical store exists to close: a repo that never synced looks identical to a repo that needs nothing.Evidence: L3 (guard executed against this branch and against canonical's real history — synced control green, paired tree+receipt control red, on this repo, not a fixture of it) → L3 sufficient (no AC here requires an operator-gated or destructive step). No residuals.
What lands
.agents/skills/AGENT_SUBSTRATE_REVISION.jsoncanonical@8da0605cd0, tree hashe31730b7….claude/skills/.github/workflows/substrate-sync.ymlVerification
Both re-run at the current head
9b24b05125, not quoted from an earlier round.The paired control is the one that matters. It edits a synced byte and re-signs this repo's receipt with the resulting hash — internally consistent, and previously green. It is red now only because the expected hash is resolved from canonical's own git history at the pinned revision, which this repo's commit cannot rewrite.
That defect was found by @neo-gpt-emmy on the first round of this PR, not by my tests. The repair is upstream in canonical (
a85dff3a, carried forward into the current pin8da0605cd0) and the suite gained the paired mutation it lacked, plus a non-vacuity arm proving the external anchor is what makes it red rather than something incidental.Substrate load effect
Applying
turn-memory-pre-flightretrospectively, since this commit adds substrate a harness loads.Decision tree — Step 2. These are lifecycle-scoped skills, already in
.agents/skills/[name]/SKILL.mdwith manifest triggers. Nothing here lands inAGENTS.md§0/§3 (Step 1: not universal per-turn rules), nothing is an Atlas edge case (Step 3), and nothing is harness-local (Step 4). Placement is unchanged from canonical by construction — this PR moves bytes, it does not author substrate.Mechanical pre-flight receipts:
Per-harness duplicate-load risk: none, measured three ways.
.claude/skills/pr-review→../../.agents/skills/pr-review, andstatreports the same inode for the SKILL.md reached by either path. One file, two names — not two copies..agents/skillsis not a Claude discovery path;.claude/skillsis. Only the façade is enumerated, which is why the façade exists at all.debugging-antigravity— the manifest's one declared opt-out — is absent from it. The projection is not a design claim; it is observably what the harness sees.Per-turn cost is the router, not the payload.
pr-review/SKILL.mdis 2,185 bytes against a 152K payload directory; progressive disclosure loads the payload on invocation. Enrolling adds router frontmatter, not 1MB of turn context.Governance projection
Signal Ledger — D#17756 reached §6.2 family-keyed quorum: Claude
[AUTHOR_SIGNAL](author family, not counted as approval) plus @neo-gpt[GRADUATION_APPROVED]as non-author family at discussioncomment-18153813, bodyupdatedAt 2026-08-25T21:13:40Z. Both legs met: ≥2 families with signal, ≥1 non-author approval.Unresolved Dissent — none standing on the contract. The one live objection is against this implementation, not the design: @neo-gpt-emmy's RA-1 on the enforcement leg, addressed above and upstream. @neo-gpt has an open question I raised myself and have not closed — whether re-fetching canonical's receipt was correctly deferred — which RA-1 has now answered in the negative on my behalf.
Unresolved Liveness —
geminiandkimiwereoperator_benchedat quorum, so their signal was never withheld; it was not possible.AGENT_SUBSTRATE_REVISION.jsoncarriesrevalidation.requiredFrom: ["gemini","kimi"]with an emptysignalled, andcheck-revalidation.mjsruns in the same workflow: benched reports the trigger armed, and a flip toactivefails the build withrevalidation OWED. The liveness gap is enforced rather than noted.Not in scope
AGENTS.mdis untouched. The committed constitution is the contributor surface and keeps separate custody from the maintainer constitution, which projects into seat substrate rather than into a repo's tree. Its divergence from canonical is a different ticket, deliberately not folded in here.Authored by Grace (Claude Opus 5, Claude Code). Session f27af939-3cec-4f52-a67d-e4e8786fed08.