Synchronization and drift
harness sync resolves shared user defaults and projects them into selected runtime homes.
The ownership journal records prior and applied content; the link manifest records destinations.
A process lock prevents concurrent sync or uninstall. Individual writes use atomic replacement.
This is recoverable per-file reconciliation, not an atomic transaction over every client file.
Claude Code receives linked shared rules, selected stance variants, skills and presentation, generated role/command projections, personal identity and merged settings. Codex receives shared instructions and identity, shared skills, generated workflow skills and role TOML, hooks, and structurally merged TOML settings. Neither runtime requires the other’s installation.
Every root in primitive_roots is projected too, after this repository’s own and in
configuration order, with names sorted inside each root. A root’s rules are linked into
~/.claude/rules/harness-roots/<root>/ and rendered into the Codex AGENTS.md behind a comment
naming the root they came from; its skills are linked beside the repository’s in both runtimes.
The name-collision check runs across the repository and every root before anything is written,
so no root can shadow another silently. The link manifest records the root each link came from,
which is what lets harness diff name the root to fix and harness uninstall take back exactly
what it adopted; a rule a root stops carrying has its link retired on the next sync. A root the
configuration names but the disk does not carry is one warning and a skip, not a failed sync.
Custom homes use CLAUDE_CONFIG_DIR and CODEX_HOME; the shared harness home can use
HARNESS_HOME. Project/session overrides do not repoint global files. Native hook trust is
separate from registration and from the harness’s repository gate trust.
An unmanaged path is a conflict unless explicitly adopted. A redirected link or user-modified
managed value is preserved and reported. harness diff detects missing, redirected or modified
artifacts. Uninstall restores prior values only while the current value matches the last applied
value; it keeps conflicts and their recovery records. User additions outside owned fields survive.
Installation ownership gives operational details, and
settings ownership identifies the native fields. Re-run sync after adding
skills or roles; generated source views require harness generate first. Legacy Claude paths
remain compatibility links, but new authoring belongs under primitives/.
Native Windows is unsupported. Hosted clients and symlink-skipping hosts remain unqualified; there is no supported copy mode. See compatibility for client-specific facts.