The repository declares .agents as the agent-configuration source of truth, but the current checkout still duplicates shared hook trees under .claude and creates an untracked .codex mirror. Windows also materializes tracked Git symlinks as plain path files when core.symlinks is disabled.
Acceptance criteria:
- Shared rules, skills, hook scripts/fixtures, and role-definition input live exactly once under .agents.
- .claude and .codex contain only thin platform adapters that resolve or generate from .agents; copied shared trees are removed.
- Platform-specific Claude Markdown and Codex TOML may differ in output format, but derive from one canonical role definition and have a drift test.
- Windows works with Git symlink support disabled through a tested junction/bootstrap or deterministic generation path; Unix symlink behavior remains supported.
- Unique platform settings and local runtime state are preserved or kept local; no user state is overwritten or tracked.
- The canonical gate passes and a regression check fails when any adapter diverges from .agents.
- AGENTS.md and setup documentation accurately describe the layout and repair/bootstrap command.
Observed state:
- .claude/rules and .claude/skills are Git symlinks but appear as regular path files in this Windows checkout.
- .claude/hooks is a tracked duplicate tree.
- .codex/hooks and .codex/agents are untracked copies.
This issue is an explicit user-requested prerequisite before continuing the remaining product queue.
The repository declares .agents as the agent-configuration source of truth, but the current checkout still duplicates shared hook trees under .claude and creates an untracked .codex mirror. Windows also materializes tracked Git symlinks as plain path files when core.symlinks is disabled.
Acceptance criteria:
Observed state:
This issue is an explicit user-requested prerequisite before continuing the remaining product queue.