FLEET SHIPPED

Knowledge Loop: Phase 6 (Producer + Consumer)

─ METHODS ─

Tools, agents, and models used on this project
TASK AGENT / TOOL MODEL / COST
session flush SessionEnd hook (.claude/hooks/) local / $0
synthesize Vault Synthesizer (Qwen3-14B on MBP) local / $0
critique Codex CLI + Anti-Gravity CLI in parallel $0 (subscriptions absorb)
inject SessionStart hook local / $0

─ EXPLANATION ─

What is this?

The closing loop of the vault’s knowledge system. A SessionEnd hook flushes the day’s session content to the vault; at 02:30 the synthesizer turns one item into a concept; at 03:30 two critics (Codex CLI and Anti-Gravity CLI, running in parallel) argue about whether it holds up; and a SessionStart hook re-injects the surviving expansions as additionalContext the next time I open a session. Producer at night, consumer in the morning. The vault that captures the thinking serves it back.

Why this approach?

The earlier phases captured and structured knowledge but never closed the loop: concepts landed in the vault and stayed there until I went looking. Phase 6 makes the vault a participant in the next session instead of an archive I query. Splitting the critic across two independent CLIs (rather than re-prompting one model) is the deliberate move: real variance comes from different model families disagreeing, not from temperature on a single judge. The hooks are the seams: SessionEnd and SessionStart are the two places the loop touches the live workflow without me wiring anything by hand.

What would break?

Three failure modes. The SessionStart injection caps at 15K tokens, so a concept-heavy day truncates and the morning context loses the tail of the night’s work. The 03:30 critic depends on both CLIs staying authenticated: a ChatGPT Plus session or a Google personal OAuth token expiring silently takes the whole critique step down without an error anyone notices until the morning concept arrives un-critiqued. And the loop assumes the synthesizer produced something worth injecting; on an empty night it re-injects nothing, which is correct but indistinguishable from a silent failure without the eval suite watching.

What did I learn?

A knowledge system that only captures is a graveyard with good lighting. The value isn’t in storing the thinking; it’s in the thinking showing up uninvited in tomorrow’s context, already critiqued, so the next session starts a step ahead instead of from scratch. The loop is the artifact; the vault is just where it lives.

─ WHAT THIS DOESN'T YET DO ─

  • SessionStart injection caps at 15K tokens; concept-heavy days truncate.
  • The 03:30 critic depends on both CLIs (Codex + Anti-Gravity) being authenticated; ChatGPT Plus or Google personal OAuth expiring silently kills the night.