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:

  1. For each of the three skills, diff -qr .agents/skills/<skill> .claude/skills/<skill> MUST produce zero output (byte-identical tree).
  2. The canon SHA for each SKILL.md body MUST match the mirror SHA for that file.
  3. No file under .agents/skills/ MAY be modified by this task (canon is read-only).
  4. No .claude/skills/colibri-* tree outside the three listed skills MAY be modified (blast-radius constraint).
  5. No src/ code MAY change (R77 ships no src/).
  6. The Phase 0 MCP tool surface count MUST remain 14 (this task is doc/config-only; no tool additions or deletions).
  7. npm run build, npm run lint, and npm test MUST pass on the branch tip (1085 tests green target, matching main at ea5055e0).

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 with ams-* prefixes (none remain; R75 removed them).

7. Acceptance criteria

R77.C is acceptable for merge when ALL of the following hold:

  1. diff -qr .agents/skills/colibri-mcp-server .claude/skills/colibri-mcp-server produces no output.
  2. diff -qr .agents/skills/colibri-tier1-chains .claude/skills/colibri-tier1-chains produces no output.
  3. diff -qr .agents/skills/colibri-growth-strategy .claude/skills/colibri-growth-strategy produces no output.
  4. git diff origin/main -- .agents/skills/ src/ is empty (canon and src untouched).
  5. git diff origin/main -- .claude/skills/ shows exactly three SKILL.md changes, one per scoped skill.
  6. npm run build exits 0.
  7. npm run lint exits 0.
  8. npm test exits 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.


Back to top

Colibri — documentation-first MCP runtime. Apache 2.0 + Commons Clause.

This site uses Just the Docs, a documentation theme for Jekyll.