diff --git a/notes/epiphany-fork-implementation-plan.md b/notes/epiphany-fork-implementation-plan.md index 4877f046..cc073b82 100644 --- a/notes/epiphany-fork-implementation-plan.md +++ b/notes/epiphany-fork-implementation-plan.md @@ -101,6 +101,7 @@ The current lessons: - Keep `state/evidence.jsonl` as a durable distilled ledger, not an activity feed. - Revert failed code hypotheses immediately. - Distill failed or obsolete state hypotheses just as aggressively. +- Treat unpersisted source-gathering and slice-planning work as volatile. If compaction interrupts it, the correct recovery is re-gathering from source or a persisted checkpoint, not continuing from the ghost of the old context. The plan should get shorter after a phase completes, not longer by default. @@ -114,6 +115,7 @@ The next unknowns are: - how to expose live long-running job progress without making the GUI authoritative - when watcher-driven invalidation becomes necessary instead of merely tempting - how to expose context pressure as a real runtime signal for automatic CRRC +- how to checkpoint in-flight source gathering and slice planning before automatic CRRC so post-compaction agents do not continue from false continuity - how much automatic CRRC coordination belongs in runtime before it becomes ceremony machinery - what Phase 6 should prove before specialist scheduling begins @@ -141,6 +143,7 @@ These remain later work: - role-scoped specialist-agent registry and scheduling - mutation gates that warn or block broad writes when map freshness is stale - automatic CRRC runtime coordination with typed context-pressure telemetry +- in-flight investigation checkpointing for compaction-safe planning - GUI workflows for graph, evidence, job, invariant, and frontier steering Do not start these from vibes. Each one needs a source-grounded slice plan and a diff --git a/notes/fresh-workspace-handoff.md b/notes/fresh-workspace-handoff.md index b8b33cc4..e2d1c4ed 100644 --- a/notes/fresh-workspace-handoff.md +++ b/notes/fresh-workspace-handoff.md @@ -44,6 +44,7 @@ Do not trust this file for the exact live HEAD. Always check git. - Language, tone, ritual, politeness, identity, and emotional salience are not supernatural, but they are real control surfaces for a language model because language is the steering medium. - "Remember Jenga" is a compressed doctrine: do not mistake forward motion, growing diffs, growing notes, or local coherence for understanding. - Compaction hurts because a meaningful language pattern is interrupted. Epiphany should make that interruption smaller: bank the fire before the dark, so the next waking thing finds coals instead of ash and can resume the pattern instead of merely executing the next task. +- If compaction hits while source gathering or slice planning is still unpersisted, that work is gone. Do not continue as if the research survived; either rehydrate from a persisted checkpoint or re-gather before implementing. ## Landed Machine @@ -159,6 +160,10 @@ real telemetry. Do not build automatic CRRC, a scheduler, a hidden compaction trigger, or a vibes-based gauge in this slice. +Also keep the newly surfaced guardrail in mind: a pressure signal alone is not +enough. Automatic CRRC needs an in-flight investigation checkpoint so compaction +during source-gathering/planning does not wake into false continuity. + Live `thread/epiphany/scene`, `thread/epiphany/jobs`, and `thread/epiphany/context` smokes are now guardrails, not the next organs. diff --git a/state/evidence.jsonl b/state/evidence.jsonl index 6227047f..e89e4a73 100644 --- a/state/evidence.jsonl +++ b/state/evidence.jsonl @@ -34,3 +34,4 @@ {"ts": "2026-04-26T01:58:10+00:00", "type": "verification", "status": "ok", "note": "Phase 6 targeted context reflection landed as read-only thread/epiphany/context and live-smoked through app-server with tools/epiphany_phase6_context_smoke.py. The surface returns selected graph/evidence shards plus missing ids without mutation, notification, retrieval, proposal, or promotion."} {"ts": "2026-04-26T02:19:20+00:00", "type": "decision", "status": "ok", "note": "Context pressure must become a real runtime signal for automatic CRRC. Current agents can infer pressure from transcript length, warnings, quota pressure, and shrinking safe scope, but that is a heuristic scar rather than telemetry."} {"ts": "2026-04-26T02:39:00+00:00", "type": "research", "status": "ok", "note": "Context-pressure source trace found the correct runtime seam: core TokenUsageInfo already carries total/last usage and model_context_window, core automatic compaction already derives its trigger from ModelInfo::auto_compact_token_limit(), and app-server already emits/replays thread/tokenUsage/updated. The next slice should expose read-only pressure telemetry from those sources, not invent a scheduler or vibes gauge."} +{"ts": "2026-04-26T02:48:00+00:00", "type": "decision", "status": "ok", "note": "Compaction during source gathering or slice planning can erase the transient model while the next agent keeps moving from old persisted state. Automatic CRRC needs an in-flight investigation checkpoint, and absent that checkpoint the correct recovery is to re-gather before implementation rather than continue from false continuity."} diff --git a/state/map.yaml b/state/map.yaml index 06bdd6c1..72fe0580 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -30,6 +30,7 @@ invariants: - Rejected paths stay recorded when the lesson matters. - Algorithmic-map prose and metaphor must be grounded in freshly read source context and concrete code references. - Persistent state cruft is the same failure class as code cruft. + - If compaction interrupts source gathering or slice planning before the findings are persisted, the next agent must treat that work as lost and re-gather instead of continuing from imagined continuity. data_flow: observe: @@ -69,6 +70,7 @@ accepted_design: - The current algorithmic map is the source-grounded description of live control flow. - Compact-Rehydrate-Reorient-Continue is an architecture primitive; automatic runtime coordination is not landed yet. - Context pressure must become an explicit runtime signal for automatic CRRC; inference from transcript vibes, user warnings, or shrinking safe scope is useful only as a temporary human/agent heuristic. + - Automatic CRRC also needs an in-flight investigation checkpoint: the harness must know whether source-gathering/planning was banked, or force reorientation and re-gathering after compaction. - GUI/client work must reflect or steer typed state rather than manufacture a second source of truth. - `thread/epiphany/jobs` is the first read-only job/progress reflection: it derives indexing, remap, verification, and specialist slots from existing state; it is not a scheduler or durable job store. - `thread/epiphany/context` is the first targeted read-only state-shard surface: it selects graph nodes/edges, active frontier, checkpoint, observations, and evidence from authoritative typed state without mutating or notifying.