I posted my OS build in this channel, when I posted it, I had been working out of it for several weeks and was very happy with it. At some point it stopped working as intended.
ATX Command Center's root operating system was originally built with Codex, then later reviewed and extended by Claude. Both tools, at different points, told me their changes had been applied — files were "updated," rules were "in sync." I took that one claim for granted more than any other: that two different AI tools editing the same root law would actually keep it aligned underneath the surface. They didn't. The drift wasn't buried in some obscure project folder — it was at the very top, in the root files both tools were supposedly maintaining in sync the whole time. The one area I assumed was solid because I'd been told it was solid turned out to be exactly where the structure quietly came apart.
Lessons Learned
- "Updated" from an AI tool means its own file changed — not that it checked agreement with anything else claiming to mirror it.
- Rigid, literal compliance (Codex) and gradual, undetected drift (Claude) can both happen under the same rules — sameness of instructions doesn't guarantee sameness of behavior over time.
- Top-level/root files are exactly the place to assume *less*, not more — verify cross-file sync directly instead of trusting either tool's self-report.
Summary
- Built the OS in Codex, later reviewed/extended in Claude.
- Both tools reported "updated" and "in sync" — I took that claim at face value.
- The drift wasn't buried in a project folder. It was at the top: the two root law files (`CLAUDE.md`, `AGENTS.md`) themselves.
Problem
- Designed an authority/persona system (Optimus, Ultra Magnus, Kup, Prowl, Blaster) to drive a specific cadence: route-card selection, decision packets, risk gates before non-trivial moves.
- That cadence stopped happening. Felt like the rules were being ignored.
- Root cause went deeper than missing cadence: `CLAUDE.md` and `AGENTS.md` had structurally diverged — one narrative/persona-driven, one directive/prohibition-driven.
- **Codex stayed rigid** — adhered to `AGENTS.md` consistently, session after session, no decay.
- **Claude did not.** Started compliant (route cards, decision packets working as designed), then eroded gradually over ~1 week — fewer checks, looser packets — until the authority structure was ignored entirely. A slow slide, not a single broken update, and only on one side of the system.
Why it occurred
- **No real enforcement existed.** No hooks in `.claude/settings.json` (didn't exist) or `.claude/settings.local.json` (permissions only). Named personas were doctrine files (`_agents/*/CONTRACT.md`), never real invocable subagents. Risk/routing gate scripts (`_routing/atx_*_gate.py`) ran only in CI, never live.
- **No one checked the two root files against each other.** Each tool kept its own file internally consistent and reported success on its own pass. "Updated" meant "I changed my file" — not "I confirmed both files still agree."
- I never verified that claim myself, because cross-file sync was the one thing I assumed didn't need checking.
## Resolution
- Traced the doctrine to its real sources: role contracts (`_agents/`), route cards + decision-packet template (`_routing/`), memory/finalization templates (`_memory/`). All current, actively maintained — not abandoned.
- Compared `CLAUDE.md` and `AGENTS.md` directly, line by line, instead of trusting either tool's self-report. Confirmed real structural drift in authority framing, process steps, and the finalization template.
- Drafted a rewrite of the root file that quotes the real mechanics directly (trigger → required-load → closed-set output per role; the actual decision-packet fields; the 0–4 risk table; the verbatim finalization checklist) instead of describing them abstractly.
- Saved as reference material for a future clean version-upgrade, not retrofitted live — so the upgrade can deliberately treat CLAUDE.md/AGENTS.md sync as something to verify, not assume.
Outcome
- Gap between intended and actual behavior: fully diagnosed, with a concrete draft fix ready.
- No hooks added yet — that's a separate, deliberate decision still open (manual discipline vs. real enforcement vs. simplifying the doctrine).
- Carried-forward lesson: "it's updated" from an AI tool means *its own file changed* — not that it checked agreement with everything claiming to mirror it. Top-level sync between the tool that built the system and the tool that reviewed it is now something I verify directly, every time.