# DECISIONS.md > Append-only architectural decision log. Newest entries at the top. > Entry format: > > ``` > ## YYYY-MM-DD — > **Context:** why this came up > **Decision:** what we chose > **Rejected:** what we didn't choose and why > **Consequences:** what this means going forward > ``` --- ## 2026-04-24 — Adopt dual-agent handoff system (`.ai/` + `CLAUDE.md` + `AGENTS.md`) **Context:** Claude Code hits session and weekly usage limits. Work stalls when the primary agent is locked out. Needed a structured way for OpenAI Codex to resume where Claude left off without losing architectural truth or drifting across sessions. **Decision:** Split the old CLAUDE.md into `.ai/PROJECT_CONTEXT.md` (stable repo truth), agent-specific root files (`CLAUDE.md`, `AGENTS.md`) with a shared protocol block, and a small handoff toolkit (`CURRENT_TASK.md`, `HANDOFF.md`, `TODO.md`, `DECISIONS.md`, `SESSION_LOG.md`, `README.md`). Previous CLAUDE.md snapshotted in commit `e110fed` before the migration. **Rejected:** - Single symlinked CLAUDE.md/AGENTS.md — diverges silently, hides agent-specific tooling differences. - Putting GitNexus/gstack content in AGENTS.md — Codex doesn't have those tools; would mislead the resume agent. - Keeping the old CLAUDE.md as-is and adding AGENTS.md alongside it — duplicated truth, drift guaranteed. **Consequences:** - First read for either agent: `.ai/PROJECT_CONTEXT.md` + `.ai/CURRENT_TASK.md` + `.ai/HANDOFF.md`. - Architectural changes in the repo require updating PROJECT_CONTEXT.md, not the root agent files. - Git trailers differ per agent (`Claude Opus 4.7` vs `Codex`) — preserved in each root file. - Legacy `SESSION-HANDOFF.md` deleted in the same commit; superseded by `.ai/HANDOFF.md`.