Method: three parallel Sonnet auditors (Aria core files · specialist stack · usage-history mining across session journals, close/deep shifts, and weekly audits), synthesized by Aria. All chronic-carry counts verified against `memory/daily/` shift reports.
memory/tools/model-routing.md).
Findings
Items gated only on a quick human go never get the Charter's "doing X unless you say stop" declaration — they get re-held nightly. Evidence:
| Item | Carried | Actual gate |
|---|---|---|
| §5b broken-link cron wiring + upcoming.md | 17 consecutive shifts | 30-second go — tool built, green nightly |
| Tirz recurring calendar event removal | 10 shifts | Tier-2 declared, never executed |
| MCP allow-list drift (12 servers) | ~6 weeks, 3 identical self-audit flags | reads-vs-writes policy decision |
| CLI-121 registry drift ("LANDMINE") | 11 shifts | mostly mechanical path fixes |
| CLAUDE.md 0.9 KB over cap | 11+ shifts | 10-minute surgical trim |
| CLI-126 "token rotation" blocker | 23 days — then proven a red herring 7/1 | one falsifying command, run weeks late |
Weekly tallies confirm: closed 14 / carried 27 (wk of 6/21) → closed 14 / carried 30 (wk of 6/28). Carries grow; closes don't.
• SOUL.md still says "external actions get a confirm first" — contradicts the ratified Charter Tier-1 (act-then-report). That line is the "asking permission for in-lane work" failure mode, codified in Aria's own soul file. (Tier-3 — staged for Topher.)
• CLAUDE.md Rules section still names Greeter Task-H as the dispatch default, contradicting its own direct-dispatch section 70 lines up. (Tier-3 — staged.)
• linear.md framed CLI as "Linq's domain, rare writes" 6 weeks after the merge; strat/MEMORY.md said "Boss: Linq"; sahara's gate language was pre-6/27 (Topher-only, no Jaime); operations.md pipeline section had the retired "only Aria promotes" gate. (All fixed + committed 7/1.)
25.8 KB against a 24 KB cap; loads into every session's context. Trim plan: compress COO Charter + Brief-&-carry rationale to principle bullets + pointer to the canonical /info/coo-charter page (~2.5 KB), reduce the Memory Hygiene section to a summary + ARIA-LAYERS.md pointer (~2 KB), move the archived-Linq path list to operations.md (~0.5 KB). Greeter stays in place — it's boot-critical and moving it adds a cold-start read. Target: ~21 KB.
Sahara 117→91 lines (cap 100), Circa 272→211 (cap 250). Stale 2026-03/04 snapshots and completed-work narrative archived to `memory/archived-2026-07-01-memory-prune.md` in each agent; live state untouched. Root cause: specialist memories accumulate session narrative that belongs in journals — same disease NEXT.md had in April.
aspire-clients/clients.json: 6 stale projectPaths (petalswings, nrx-asphalt, keeler, modern-maid, delaware-lanes, heel-quik). playbook clients.json: a partially different set of 5 (adds photosbyb4 + tees-flooring). Two registries, two drift sets — Vegas can build in the wrong working tree. Fix is mechanical for any client without an open session.
• Session-journal mandate: enforced for cron days by the gap detector, but the detector false-positives on autonomous-only days (bug diagnosed 6/24, fix never landed).
• Progress-page "Yesterday" header: hand-edit missed 6 times in 11 shifts — should be computed from the data, not typed.
• Program-feedback loop leaks: ~half the deep-shift proposals are never adopted or explicitly rejected (fleet pa11y sweep 6/20, detector self-validation 6/22, gap-detector fix 6/24). Nothing forces a verdict.
• upcoming.md: never cron-wired, stale 67 days, contents all expired — deprecate.
3 files pointed at the deleted route-to-linear script; subagent-doctrine.md pinned a model version (violates our own rule); operations.md registry pinned versions too. CLAUDE.md's big-job memory pointer targets a repo path that only exists in auto-memory (goes in the Tier-3 staged diff). CONTINGENCY.md was flagged dead by an auditor but verified alive at repo root — auditor mis-resolved the relative link. Verify-before-fix caught it.
- Path-limited commits — prevented cross-session contamination at least once (6/21).
- Deep/close shift separation — measured experiments vs mechanical closes; June's a11y harvest ran 8 client sites with zero reverts.
- Dist-artifact verification (never trust the CF Access 302) — stopped false "live" claims repeatedly.
- Day-3 autonomous close, when applied — the 6/21 orphan-docs sync is the pattern working; the failure is scope (Tier-1 only), not the mechanism.
- Direct specialist dispatch + independent verify — B Clean Sprint 2 through Heel Quik, consistent.
Recommendations
- Extend Day-3 to Tier-2 — "the dated declaration rule." Any Tier-2 item whose only gate is a quick go, surviving 3 briefs, gets a dated veto-window declaration in the next morning brief ("executing Thursday unless you say stop"). Silence = go. Held-for-a-live-session is no longer a valid terminal state for these. ✅ Decision #1 — ratified 7/2
- Hygiene + staleness batch. Specialist memory prunes, gate-language sync, Linq-era framing, dead paths, model unpins. executed 7/1
- Doctrine-file edits (Tier-3, staged). CLAUDE.md trim to ~21 KB + Rules-section dispatch fix + big-job pointer fix; SOUL.md external-actions line reconciled to the Charter. Diff staged for Topher's one-glance go. ✅ Decision #2 — applied 7/2, staging dir removed
- Close the program-feedback leak. Add an adopt/reject/defer ledger section to the Sunday self-audit — every deep-shift proposal gets a verdict. Land the two open adoptions: gap-detector autonomous-day fix, fleet pa11y in the Sunday audit. Make the progress-page Yesterday header computed. executed 7/2 — ledger + Sunday §10 + computed headers; fleet-pa11y routed to next deep shift (untested code stays out of the Sunday cron)
- Deprecate upcoming.md — tombstone pointer to the morning brief; remove the stale 🚩 from NEXT.md. deleted 7/2 — all refs cleaned
- Registry reconciliation (both clients.json files) — mechanical path fixes for every client without an open session; closes most of CLI-121. executed 7/2 — 11 paths across both registries, every path verified on disk, JSON parses clean
Executed today (Tier-1, act-then-report)
| Fix | Where | Commit |
|---|---|---|
| Sahara memory 117→91 ln + 6/27 gate language | aspire-digital/agents/sahara | bda1b75 |
| Circa memory 272→211 ln | aspire-digital/agents/circa | |
| Strat boss Linq→Aria, model unpinned | aspire-digital/agents/strat | |
| linear.md Linq-era framing + dead paths + issue-cap reality | aria-secondbrain/memory/tools | 970fec6 |
| operations.md script example + 6/27 gate + model unpins | aria-secondbrain/memory/drawers | |
| subagent-doctrine.md version pin removed | aria-secondbrain/memory/tools |
Auditors: 3 parallel Sonnet subagents, ~255K tokens total. Full findings preserved in the session journal at memory/sessions/aria/2026-07-01-process-audit.md.