governance-sync ยท diff
git:20260711.e0bc462 to git:20260711.29678d2
14 added, 10 removed. Audit A to A.
---
name: governance-sync
description: "Audit or explicitly synchronize Claude and Codex repository governance without overwriting conflicts. Triggers: governance sync, CLAUDE.md, AGENTS.md, instruction mirror."
user-invocable: true
allowed-tools: Read, Bash
disable-model-invocation: true
kernel:
kind: operator
version: 1
side_effects: writes_repo
confirmation: always
---
# Governance sync
This explicit-only operator audits native repository instructions and can create a
missing Claude or Codex adapter from one declared source. It never edits a conflict.
## Audit first
- Resolve the installed plugin root once. Claude Code and Codex compatibility loading
- provide `CLAUDE_PLUGIN_ROOT`; the fallback is valid when the skill runs from its own
- installed `skills/governance-sync` directory:
+ Resolve the installed script once. Claude Code and Codex compatibility loading
+ provide `CLAUDE_PLUGIN_ROOT`; otherwise use the direct relative path from the
+ documented installed `skills/governance-sync` working directory:
```bash
- KERNEL_PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-$(cd ../.. && pwd -P)}"
- test -f "$KERNEL_PLUGIN_ROOT/scripts/governance-sync.py"
+ if [ -n "${CLAUDE_PLUGIN_ROOT:-}" ]; then
+ KERNEL_GOVERNANCE_SYNC="$CLAUDE_PLUGIN_ROOT/scripts/governance-sync.py"
+ else
+ KERNEL_GOVERNANCE_SYNC="../../scripts/governance-sync.py"
+ fi
+ test -f "$KERNEL_GOVERNANCE_SYNC"
```
- Run `python3 "$KERNEL_PLUGIN_ROOT/scripts/governance-sync.py" audit <root> --json`.
+ Run `python3 "$KERNEL_GOVERNANCE_SYNC" audit <root> --json`.
The audit discovers
canonical Git roots, ignores caches, deduplicates linked worktrees, and reports:
missing both, Claude-only, AGENTS-only, both identical, generated current, generated
stale, incomplete generation, conflict, and scoped `.claude` states. Generated states
are decided from manifest hashes and adapter provenance, not raw file equality.
Missing-both is compliant and remains untouched unless `init` is explicit.
## Writes require confirmation
Show the exact repository, source, target, and backup directory. Continue only after
the user confirms one command:
```text
- python3 "$KERNEL_PLUGIN_ROOT/scripts/governance-sync.py" adopt REPO --source CLAUDE.md --backup-dir REPO/.kernel-governance-backups/adopt
- python3 "$KERNEL_PLUGIN_ROOT/scripts/governance-sync.py" generate REPO --backup-dir REPO/.kernel-governance-backups/generate
- python3 "$KERNEL_PLUGIN_ROOT/scripts/governance-sync.py" check REPO
+ python3 "$KERNEL_GOVERNANCE_SYNC" adopt REPO --source CLAUDE.md --backup-dir REPO/.kernel-governance-backups/adopt
+ python3 "$KERNEL_GOVERNANCE_SYNC" generate REPO --backup-dir REPO/.kernel-governance-backups/generate
+ python3 "$KERNEL_GOVERNANCE_SYNC" check REPO
```
`AGENTS.md` and `.claude/CLAUDE.md` are also valid sources. The manifest pins the
source path, source hash, output, output hash, and generator version. Scoped sources
stay where they are; only the missing root-native adapter is generated. A regular
file conflict, unrecorded edit, stale hash, malformed manifest, symlink, or existing
backup with different content stops the operation. Identical backups are idempotent.
Backups stay inside the repository. Use separate `BACKUPS/adopt` and
`BACKUPS/generate` phases so an approved source
update preserves both the pre-adoption state and the adapter it replaces.
Writes are crash-consistent per file: each completed replacement is a whole, fsynced
file. An interruption can leave some files current and others stale; `check` reports
that drift without changing anything, and rerunning the write operation converges it.
There is no background lock, journal, rollback, or cleanup of unknown temporary files.
An existing backup-directory symlink is always rejected before path resolution.
- Use `python3 "$KERNEL_PLUGIN_ROOT/scripts/governance-sync.py" init REPO --backup-dir
+ Use `python3 "$KERNEL_GOVERNANCE_SYNC" init REPO --backup-dir
REPO/.kernel-governance-backups/init` only when the user explicitly wants governance
created in a repository where both native files are absent.