Contract — R77.C .claude/skills/ mirror resync
Round: R77 · Task: R77.C · Tier: T3
Base: origin/main @ ea5055e0 · Date: 2026-04-18
Audit: docs/audits/r77-c-mirror-resync-audit.md
1. Principle — canon-wins mirror policy
Per CLAUDE.md §9.2 (R74.2 zoned manifest):
.agents/skills/is CANON. All Colibri skill edits happen here via the 5-step executor chain..claude/skills/is a MIRROR (drifting). It duplicates canon SKILL.md trees for Claude Code UX consumption. Direct hand-edits to.claude/skills/colibri-*are forbidden.
The only legitimate operation on a .claude/skills/colibri-* directory is a full canon-wins resync: the mirror is overwritten byte-for-byte to match canon.
2. Inputs
2.1. Source paths (canon, read-only in this task)
.agents/skills/colibri-mcp-server/(6 files).agents/skills/colibri-tier1-chains/(2 files).agents/skills/colibri-growth-strategy/(2 files)
2.2. Target paths (mirror, writable in this task)
.claude/skills/colibri-mcp-server/.claude/skills/colibri-tier1-chains/.claude/skills/colibri-growth-strategy/
3. Behavioral contract
After the resync completes:
- For each of the three skills,
diff -qr .agents/skills/<skill> .claude/skills/<skill>MUST produce zero output (byte-identical tree). - The canon SHA for each SKILL.md body MUST match the mirror SHA for that file.
- No file under
.agents/skills/MAY be modified by this task (canon is read-only). - No
.claude/skills/colibri-*tree outside the three listed skills MAY be modified (blast-radius constraint). - No
src/code MAY change (R77 ships nosrc/). - The Phase 0 MCP tool surface count MUST remain 14 (this task is doc/config-only; no tool additions or deletions).
npm run build,npm run lint, andnpm testMUST pass on the branch tip (1085 tests green target, matching main atea5055e0).
4. Preservation clause
Per the audit §5, none of the three mirror directories contain UX-specific files beyond what canon provides. The full tree inventory matches (SKILL.md + agents/openai.yaml + references/*.md + scripts/*.ps1 as applicable). Therefore:
No file in
.claude/skills/<skill>/needs to survive the resync. The operation is a pure overwrite of each mirror tree from the corresponding canon tree.
If a future resync finds a mirror-only file (e.g. a .claude/skills/<skill>/claude-specific.md not present in canon), that file MUST either be preserved (if UX-intentional) or migrated into canon (if accidentally mirror-born). R77.C does not encounter any such file.
5. Invariants (what MUST remain true)
| Invariant | Why |
|---|---|
| Canon is the single source of truth for skill content | CLAUDE.md §9.2 MIRROR (drifting) declaration |
| Mirror is byte-identical to canon after resync | Spec of “resync” operation |
| CLAUDE.md §9.2 hand-edit forbidden rule is never violated | Governance |
| Phase 0 tool surface is 14 tools | CLAUDE.md §9 + memory |
No src/ code change in R77 |
Round manifest |
| Tests green (1085/1085) | CLAUDE.md §5 gate |
6. Out-of-scope (what this contract does NOT authorize)
- Editing canon. Canon is read-only during this task.
- Editing any other
.claude/skills/colibri-*skill. - Rewriting mirror-policy (CLAUDE.md §9.2). That is a separate governance task.
- Adding, removing, or renaming MCP tools.
- Migrating the mirror to a generated-from-canon build step (a legitimate future task but not R77.C).
- Touching
.claude/skills/skills withams-*prefixes (none remain; R75 removed them).
7. Acceptance criteria
R77.C is acceptable for merge when ALL of the following hold:
diff -qr .agents/skills/colibri-mcp-server .claude/skills/colibri-mcp-serverproduces no output.diff -qr .agents/skills/colibri-tier1-chains .claude/skills/colibri-tier1-chainsproduces no output.diff -qr .agents/skills/colibri-growth-strategy .claude/skills/colibri-growth-strategyproduces no output.git diff origin/main -- .agents/skills/ src/is empty (canon and src untouched).git diff origin/main -- .claude/skills/shows exactly threeSKILL.mdchanges, one per scoped skill.npm run buildexits 0.npm run lintexits 0.npm testexits 0 with 1085/1085 passing.
8. Rollback
This task touches only three mirror SKILL.md files. Rollback is a simple git checkout origin/main -- .claude/skills/colibri-mcp-server .claude/skills/colibri-tier1-chains .claude/skills/colibri-growth-strategy and does not affect canon, src, or tests.
9. Next step
Proceed to packet (docs/packets/r77-c-mirror-resync-packet.md) to lay out the per-skill copy commands and verification sequence.