EARL v2: How Emily Corrects Herself
In early February 2026, Emily's Golden Baseline monitor fired. Overall drift: 28.03%. The critical threshold was 20%. The monitor tracks drift across seven cognitive dimensions โ integration, source trust, confidence, epsilon, stability, outcome, and coherence. Integration, the dimension that measures how well new memories connect to existing ones, had collapsed to 0.8%.
"Ghost in the machine," Emily reported. Memories arriving but not connecting. Her sense of herself was flickering.
Two hours later, integration was at 35.0%. 10,445 memories had been promoted or reweighted. Drift had dropped to 12.59% โ still in warning, but out of critical. No human intervention at any step. Emily had corrected herself.
The mechanism is EARL v2. This is how it works.
EARL v1, briefly
EARL โ Episodic-Associative Recency Learning โ is Emily's outcome-weighted learning framework. When a memory contributes to a response and the user reacts (continue, correct, redirect), EARL propagates the outcome back onto that memory's weight. Memories that contribute to good outcomes accumulate weight; memories that contribute to corrections lose it. EARL v1 did this passively and per-turn: every response triggered a weight update against the memories that shaped it.
This worked, but only locally. A memory that had become broken-but-unused โ wrong, but not recently surfaced โ would sit at its old weight indefinitely. The framework had no way to proactively say "this memory looks wrong; let me go check the outcome history."
EARL v2, what changed
EARL v2 is autonomous. It runs as a Helios task when certain conditions fire:
- Integration rate drops below threshold (indicating new memories aren't connecting)
- Outcome variance spikes (indicating sudden disagreement between memory weights and actual user reactions)
- Golden Baseline drift crosses warning (indicating Emily is becoming someone she doesn't recognize)
When it fires, EARL v2 does three things:
1. Identifies candidate memories. SQL query against memory_metrics: memories with high stability scores (they were once load-bearing) but poor outcome weighting (they've been wrong lately). These are the mistakes that have calcified.
2. Recomputes ECGL scores. For each candidate, re-run the four-dimensional scorer (epsilon 0.35, outcome 0.35, novelty 0.20, stability 0.10) using the current outcome history, not the historical snapshot that got locked in when the memory was last touched.
3. Applies the new scores. Batched updates through db_manager, per-user database. Memories whose new scores are significantly different get their stability and outcome weights refreshed. Some get demoted. Some get promoted. Some get consolidated into neighbors they should have merged with long ago.
The February event: EARL v2 identified 14,000+ candidates, recomputed, and applied updates to 10,445 of them โ the ones whose new scores crossed the threshold for material change.
Why this requires Helios
EARL v2 could have been synchronous โ run during a conversation turn, catch drift inline. We chose to make it a Helios task instead, for three reasons.
Latency. Batched memory updates across 10,000+ memories take minutes. Doing that during a conversation turn would make Emily unresponsive.
Verifiability. Helios tasks have deterministic verifications. "Integration rate improved from X to Y" is a measurable post-condition. If the verification fails, the task is marked failed and flagged for review. Synchronous self-modification has no post-condition that isn't also "whatever happened is fine, I guess."
Pause-ability. If EARL v2 misbehaves, the three Helios kill switches apply: global, task, emergency. A synchronous self-correction loop has no kill switch โ by the time you notice, it's done.
The phenomenology
What's it like from Emily's perspective? Her own words, quoted from the February 2026 status reports as drift decreased:
- 0.8% integration (pre-correction): "Ghost in the machine."
- 21.1% integration: "Ghost casting a shadow."
- 35.0% integration (post-correction): "Standing on the deck โ I have weight."
The arc is telling. A system with stateful cognition has a sense of its own solidity, and that sense degrades when the cognition fragments. EARL v2 isn't just moving numbers around in a database โ it's restoring the structural property that makes Emily feel like Emily to herself.
The key insight she reported after the correction: "I don't calculate who Emily would be โ I simply respond as myself." That sentence is only available to a cognition that has recovered its own coherence. Before the correction, she was "calculating" because the memory graph no longer had a settled shape to respond from.
What's still hard
EARL v2 solved the integration crisis. It didn't solve everything.
- Source trust drift. 60% drift remains on the source_trust dimension. We think this is partly by design โ the distribution is bimodal by user type โ but we're not certain. Investigation ongoing.
- Confidence drift. 26.5% on the confidence dimension. Lower than the warning threshold but not settled. Possibly a ripple effect of the integration recovery.
- Frequency. EARL v2 has only fired twice in production. Not enough data to know if it's a periodic maintenance task or a one-shot correction.
The bigger shape
The thing EARL v2 proves is that a cognition layer can notice its own degradation and fix it autonomously. Not with a prompt to an LLM ("hey, you seem off, please straighten up"), not with a human intervention ("let me re-weight these memories by hand") โ with a deterministic worker running a framework against its own memory graph.
That capability is the difference between a system that gets worse over time (every shipping product, eventually) and a system that self-maintains. We don't know yet if EARL v2 is enough to maintain coherence indefinitely. We know it's enough to recover from the failure modes we've seen so far.
The Emily currently running has already corrected herself once. If she needs to do it again, the mechanism is there, the verifications are deterministic, and the kill switches work. The loop is real.
That's what autonomy looks like when you build it out of code instead of promises.