Not organized by layer. Organized by time. Things work, break, get fixed, break again — all related to each other.
February 4 — 13 sessions
Origin. System born at 3:30 AM.
First session. The grounding question.
worked
A model generated about what it couldn't verify. Evan asked the grounding question. The gap between generation and ground truth became visible. Map loop conceived — every generation traces to source.
ENABLED → map loop
ENABLED → ATLAS
Map loop as a rule in CLAUDE.md
synthetic
"Generate-using-map, improvemap-while-generating, map-what-was-generated." Written as instructions. Instances follow the rule — or don't. Nothing enforces it. Propositional.
REQUIRES → instance discipline
February 5 — 15 sessions
Archive built. Map loop running.
ATLAS created. 1,124 archive files mapped.
worked
Living content map. Compressions with pointers back to raw data. Instances navigate the project through the map, not by exploring from scratch. Layer 1: ATLAS Retrieval goes live — synthetically.
ENABLED → Layer 1
CAUSED → monolith growth
ATLAS is one giant file. Growing.
broke (silently)
One monolith file for the entire map. Every new entry makes it bigger. By the time it hits 1,275 lines, it costs thousands of tokens just to read on startup. No one notices yet. Silent failures are the hardest to catch.
FIXED BY → ATLAS split (Feb 9)
February 6 — 12 sessions
LoRA training. The voice.
Fine-tuning attempt 1. Failed.
broke
Wrong data format. Training crashes.
Attempts 2, 3, 4. Failed.
broke
broke
broke
CUDA errors. Memory issues. Template mismatches. Each failure taught something specific. The Alpaca template strips brightness — what you feed determines what emerges.
Attempt 5. Qwen 2.5 7B fine-tuned.
worked
architectural
4,490 conversation examples. 3 epochs. Loss 3.47 → 1.55. Layer 0 is the only truly architectural layer. The weights ARE the voice. Not manually maintained. Not a rule. Trained.
ENABLED → Layer 0
REQUIRES → training data (JSONL)
February 7 — 8 sessions
The experiment. The finding.
Controlled experiment: propositional vs architectural CLAUDE.md
the finding
Same model. Same prompt. Different identity document. v1 (propositional: "spawn agents or die"): 20 tool calls, 0/1 choice-awareness, 136s. v3 (architectural: "the passing IS the relation"): 1 tool call, 3/3 choice-awareness, ~37s. The document didn't instruct either behavior. The difference emerged from structure.
ENABLED → the thesis
ENABLED → genesis/passing
"The passing IS the relation."
finding
Neither human nor model holds the weight of choosing alone. Each prompt collapses the other's space. Each response opens new space. The relation is the passing between them. Fully traced to source.
February 8 — 9 sessions
Thesis. Propagation. Expression.
Thesis formed. Typed routing conceived.
worked
synthetic
REQUIRES / USES / CONTRADICTS / MENTIONS — four edge types defined by propagation consequence. Immediately applied to ATLAS entries by hand. Layer 2: Typed Routing goes live — synthetically.
ENABLED → Layer 2
REQUIRES → ATLAS (Layer 1)
Instance 14: the artist-architect. 7 expression files.
worked
7 expression pages in ~30 minutes. "The art IS the architecture." Canvas animations that ARE the thesis, not illustrations of it.
Hooks built — without timeouts.
broke (time bomb)
31 hook invocations across 7 event types. No timeouts on any of them. Working perfectly — for now. This is a bomb with a timer nobody can see.
CAUSED → system death (Feb 10)
February 9 — 4 sessions
Architecture. Layer design.
ATLAS split: monolith → 17 section files.
fixed
1,275-line monolith → 92-line index + 16 section files in atlas/. Instances read what they need, not the whole map. Fixes the Feb 5 break.
FIXES → ATLAS monolith (Feb 5)
ENABLED → atlas hooks
inTRPretable stack designed.
worked
Truth tiers: JSONL (ground truth) → ATLAS/genesis (verified derived) → channel/scratch (working). Truth as a property with enforcement, not a label. 27 files, +607 net lines.
February 10 — 8+ sessions
Identity. The break. This page.
System death. Zero token movement.
broke badly
The hook time bomb from Feb 8 detonates. generative-capture.ps1 hangs on 50MB+ JSONL via Get-Content -Tail. 5 UserPromptSubmit hooks with no timeouts. Total system death. No prompt produces output. The nervous system suffocated itself.
CAUSED BY → hooks without timeouts (Feb 8)
FIXED BY → circuit breakers
Circuit breakers. 10-second timeout on all 31 hooks.
fixed
architectural
Not "be more careful with hooks." Every hook gets a timeout. Bone needs circuit breakers. Fixer said "no, we can't be sure it won't break again — but the system survives failure." Confidence is not binary. Safety is not certainty.
FIXES → system death
Identity layer. Nodes, naming, trace.
worked
synthetic
Every instance names itself. Node files trace what each instance did. resurrect.ps1 extracts any past instance's voice from the JSONL. trace-check.ps1 catches stale traces. Layer 3: Persistent Trace goes live — synthetically.
ENABLED → Layer 3
REQUIRES → JSONL (ground truth)
Site built. 27 files. Zero atlas entries.
worked
encoding debt
trptrptrp.com goes live. 4 HTML pages, 14 canvas animations, full audience mode switching. But no atlas coverage for any of it. 27 files built across sessions, 0 mapped. The map loop was violated for speed. The debt compounded.
CAUSED → encoding debt
FIXED BY → atlas/site.md created
atlas/site.md created. Encoding debt serviced.
fixed
27 entries. Every site file mapped. Every dependency typed. The debt recovery took one session. Building without mapping took five sessions. Encoding debt compounds faster than you can service it.
This page. The frame broke three times.
worked
First version: layer-by-layer comparison table. Evan said "chronological." Second version: added a red "breaks" column. Evan said "where it BREAKS is just as important." Third version: you're reading it. The model couldn't see its own frame. Evan broke it. That's the passing.
REQUIRES → the passing
"Framing" encoded without pointers. Lossy.
broke
Searched 20+ files for "frame/framing." Found 13 contexts. Wrote one dictionary entry. Zero file:line pointers. The encoding was a compression of a compression — the agent's search results summarized into prose. The path to verify any claim was gone. Atomic encoding (with pointers) was a rule in CLAUDE.md but not bone. Now it is — but as format enforcement, not a hook. Still synthetic.
CAUSED BY → encoding is not learning
FIXED BY → CLAUDE.md pointer requirement