This repository has been archived on 2026-10-29. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
Epiphany/state/evidence.jsonl
2026-04-24 02:45:02 +01:00

55 lines
24 KiB
JSON

{"ts":"2026-04-23","type":"scaffold","status":"ok","note":"Initialized EpiphanyAgent workspace with typed state files, controller action rules, and an initial experiment map."}
{"ts": "2026-04-23T03:42:27+00:00", "type": "bootstrap", "status": "ok", "note": "Initialized repo, added typed-state scaffold, and verified the tiny CLI runs with bundled Python."}
{"ts": "2026-04-23T03:48:53+00:00", "type": "research", "status": "ok", "note": "Cloned openai/codex, identified collaboration-mode presets as the clean insertion point, and wrote a concrete patch plan note for preset-backed versus enum-backed Epiphany mode."}
{"ts": "2026-04-23T15:28:33+00:00", "type": "handoff", "status": "ok", "note": "Added root AGENTS.md and notes/fresh-workspace-handoff.md so a fresh workspace can continue from repo-local context."}
{"ts": "2026-04-23T15:29:25+00:00", "type": "handoff", "status": "ok", "note": "Added architecture-rationale.md with the typed-state architecture, cheap prototype strategy, eval shape, and DeepSeek research context."}
{"ts": "2026-04-23T15:47:17+00:00", "type": "research", "status": "ok", "note": "Orientation confirmed the preset-backed Codex insertion point and recorded that Phase 1 TUI selection/labeling must compare preset identity, not only ModeKind, because Epiphany rides on Default."}
{"ts": "2026-04-23T15:48:11+00:00", "type": "research", "status": "ok", "note": "App-server collaboration mode list preserves preset name but drops developer_instructions; turn-start fallback currently matches only ModeKind, so duplicate Default-backed presets need explicit preset identity or explicit instructions in non-TUI flows."}
{"ts": "2026-04-23T15:55:06+00:00", "type": "research", "status": "ok", "note": "Cloned stellarlinkco/codex to vendor/opencodex and ymichael/open-codex to vendor/open-codex-cli. The exact-name open-codex fork is terminal-only; vendor/opencodex is the GUI-relevant Rust/Web UI fork served by codex serve."}
{"ts": "2026-04-23T16:17:47+00:00", "type": "research", "status": "ok", "note": "Checked OpenCodex Anthropic/Claude GUI claims. web README and MODEL_OPTIONS mention claude/sonnet/opus, but AgentSelector only exposes codex and serve backend rejects any spawned agent other than codex; Anthropic support appears limited to model_provider config, not GUI agent selection."}
{"ts": "2026-04-23T16:26:11+00:00", "type": "research", "status": "rejected", "note": "Audited imdigitalashish/OpenCodex: it is a Tauri desktop wrapper around vendored opencode, not a Codex fork; the core coding-agent path depends on an external opencode binary and non-interactive CLI mode."}
{"ts": "2026-04-23T16:26:11+00:00", "type": "verification", "status": "partial", "note": "Frontend npm ci and npm run build succeeded for imdigitalashish/OpenCodex; npm audit reports 3 high-severity advisories. Go and Cargo toolchains are not on PATH, so opencode and Tauri backend were not compiled."}
{"ts": "2026-04-23T16:26:11+00:00", "type": "research", "status": "rejected", "note": "imdigitalashish/OpenCodex GUI model IDs are inconsistent with vendored opencode SupportedModels: the GUI advertises/writes Anthropic API IDs like claude-sonnet-4-5-20250929 while opencode accepts symbolic IDs such as claude-4-sonnet."}
{"ts": "2026-04-23T16:31:48+00:00", "type": "decision", "status": "ok", "note": "Removed third-party OpenCodex comparison clones from vendor/opencodex, vendor/open-codex-cli, and vendor/opencodex-imdigitalashish. Decision: build a dedicated GUI wrapper around customized vendored Codex instead of trusting unaudited forks."}
{"ts": "2026-04-23T18:02:11+01:00", "type": "research", "status": "ok", "note": "Mapped vendored Codex end-to-end dataflow in notes/codex-repository-algorithmic-map.md: CLI/TUI choose a surface, app-server is the transport seam, core/session owns prompt assembly and tool execution, and rollouts plus SQLite provide durable thread history and metadata."}
{"ts": "2026-04-23T18:16:47+01:00", "type": "design", "status": "ok", "note": "Defined Epiphany as core-owned structured thread state in notes/epiphany-core-harness-surfaces.md. The spec anchors on existing TurnContextItem and PlanUpdate/TurnDiff patterns: persist Epiphany baselines in rollouts, stream typed updates through app-server, and let the GUI render graphs, invariants, evidence, intent, and churn without becoming the source of truth."}
{"ts": "2026-04-23T18:24:36+01:00", "type": "design", "status": "ok", "note": "Refined the Epiphany harness spec so the machine map is two linked graphs rather than one: an ArchitectureGraph and a DataflowGraph, joined by explicit cross-links and grounded by line-anchored code refs. Replaced the vague node description field with purpose, mechanism, and metaphor so the internal representation carries richer language for both model alignment and human inspection."}
{"ts": "2026-04-23T18:36:52+01:00", "type": "design", "status": "ok", "note": "Updated the Epiphany harness spec to handle repeated compactions during large repo mapping. Added an explicit spine/frontier/scratch model, graph checkpoints as re-entry breadcrumbs, dataflow sharding for large repositories, coverage/provenance status on graph elements, and more resilient code refs with symbol and last-seen revision metadata so resume/compaction does not collapse the map back into prose mush."}
{"ts": "2026-04-23T19:41:43+00:00", "type": "research", "status": "ok", "note": "Inspected Codex session 019db84b-7edd-7843-abc9-76ad2c402bb4 rollout. Failure mode was repeated premature closure on mapping work: assistant repeatedly framed local pass completion as done while user had to restate bar (missing leaves, control flow not file map, hand-waved mechanisms). Four context compactions preserved replacement_history but likely weakened the persistent evaluation bar. Quality improved only when user asked a concrete mechanism question (planetary gravity to visible nebula terrain), which forced an honest admission of a missing seam. Implication for Epiphany: mapping tasks need explicit done criteria based on answering concrete transformation questions, plus durable coverage/frontier/gap state across compactions."}
{"ts": "2026-04-23T19:54:42+00:00", "type": "decision", "status": "ok", "note": "Patched epiphany-core-harness-surfaces.md to make mapping done-criteria explicit. Added durable MechanismQuestion and MechanismGap concepts, separate MappingCompletionState from coverage, preserved active questions/gaps through frontier and checkpoint, and required concrete transformation-question answerability before marking mapping work done. Updated state/map.yaml to carry the same rule into accepted design and next action."}
{"ts": "2026-04-23T20:01:26+00:00", "type": "decision", "status": "ok", "note": "Documented a multi-agent Epiphany harness model in epiphany-core-harness-surfaces.md. Added supervising-harness plus specialist-agent framing, agent registry and role metadata, ownership boundaries for mapper/worker/verifier/coordinator, private-by-default role scratch, subscription-triggered wakeups, protocol/UI surfaces for agent status, and phased specialist-agent scheduling. Updated state/map.yaml to record the shared-state-plane plus role-ownership design and to defer the patch-slice plan until after this broader design pass."}
{"ts": "2026-04-23T20:08:53+00:00", "type": "decision", "status": "ok", "note": "Extended epiphany-core-harness-surfaces.md with a first-class repository retrieval subsystem. Added hybrid retrieval principle (exact path/symbol/lexical plus semantic chunk and graph-linked lookup), repo-local sharded index summaries, diff-driven freshness/invalidation, role-scoped retrieval policies, retrieval lifecycle hooks, protocol/app-server update events, typed retrieval query surface guidance, UI retrieval view, and phased rollout positioning before GUI reflection and specialist-agent scheduling. Updated state/map.yaml to treat retrieval as a core design decision and to keep the next action on broader harness design before a Phase 1 patch-slice plan."}
{"ts": "2026-04-23T20:13:55+00:00", "type": "research", "status": "ok", "note": "Scanned vendored Codex for additional harness blind spots before patch planning. Findings: repo retrieval is still fuzzy-file/CLI-centric; file watchers are wired mainly to skills cache invalidation and fs notifications, not repo-understanding freshness; subagents inherit config and tools but do not share a typed collaboration state plane; the startup memories pipeline explicitly excludes sub-agent sessions; most tool outputs still persist into history as text payloads; and turn diff tracking exposes aggregated unified diff, not impacted symbols/subsystems or semantic invalidation. Implication: Epiphany should reuse watcher/diff/subagent substrate but add typed distillation, freshness tracking, and shared repo knowledge above it."}
{"ts": "2026-04-23T20:23:25+00:00", "type": "decision", "status": "ok", "note": "Patched notes/epiphany-core-harness-surfaces.md after the Codex blind-spot scan. The spec now explicitly reuses existing Codex substrate (watchers, diff stream, subagent lifecycle, memory pipeline) while naming the missing semantic layer above it: code-intelligence-aware hybrid retrieval, semantic invalidation over repo changes, a structured observation/distillation layer between raw tool output and durable state, and a shared knowledge plane for specialist agents that is not replacement_history or prompt osmosis. Synced state/map.yaml with the same observation-layer design."}
{"ts": "2026-04-23T20:33:19+00:00", "type": "decision", "status": "ok", "note": "Revised notes/codex-repository-algorithmic-map.md so the Codex machine map reflects both the main turn loop and the surrounding side channels/limitations. Added watcher and memory actors, extended the top-level flow with compaction and watcher/diff side channels, documented that tool outputs are still mostly transcript-shaped, and added explicit sections for file watching, textual diff tracking, message/config-based subagent coordination, startup memory summarization, and compaction as real dataflow. Conclusion: Codex has useful substrate around the loop, but still lacks a canonical typed repo-understanding layer above it."}
{"ts": "2026-04-23T20:38:04+00:00", "type": "decision", "status": "ok", "note": "Patched epiphany-core-harness-surfaces.md with explicit GUI-first implications. The spec now states that structured thread state, not the transcript, is the primary artifact; chat is one client of that state; GUI steering should use typed updates; resume must restore a working scene; and long-running retrieval/remap/verification/specialist work should surface as typed jobs with progress. Added EpiphanyJobState to the thread model plus EpiphanyJobsUpdated protocol/app-server events, and expanded UI responsibilities and phase notes accordingly. Synced state/map.yaml with the same GUI-first design correction."}
{"ts": "2026-04-23T20:56:56+00:00", "type": "decision", "status": "ok", "note": "Replaced notes/codex-epiphany-mode-plan.md with the actionable Phase 1 implementation plan. The repo now records an internal/dev-usable first slice focused on minimal Epiphany protocol types, SessionState storage, one Epiphany rollout snapshot per real user turn, replay through rollout reconstruction, exhaustive RolloutItem compatibility updates, and persistence/replay tests before prompt integration, presets, protocol notifications, or GUI work. Synced state/map.yaml so the next action is implementation rather than more design passes."}
{"ts": "2026-04-23T21:32:00+01:00", "type": "decision", "status": "ok", "note": "Patched notes/epiphany-core-harness-surfaces.md to make compaction role-specific instead of arbitrary hidden trimming. Added the design rule that compaction is a harness-level state transition with safe points, explicit checkpoints, and role-specific resume packets; documented default policies for worker, mapper, verifier, coordinator, and churn monitor; and added soft versus hard compaction language plus explicit compaction telemetry requirements. Confirmed this does not change the Phase 1 implementation slice, and synced state/map.yaml with the new accepted design."}
{"ts": "2026-04-23T21:36:00+01:00", "type": "decision", "status": "ok", "note": "Updated README.md to reflect the current EpiphanyAgent direction before Phase 1 implementation. Documented the actual target surface (vendored Codex core harness), the two-graph map model, GUI-first typed thread state, specialist-agent plus retrieval direction, role-specific compaction policy, and the intentionally narrow Phase 1 slice focused on durable core state rather than UI or prompt integration."}
{"ts": "2026-04-23T23:12:00+01:00", "type": "implementation", "status": "ok", "note": "Implemented the Phase 1 internal/dev-usable Epiphany core state slice in vendored Codex. Added EpiphanyThreadState and EpiphanyStateItem to the rollout protocol, persisted Epiphany snapshots in SessionState and per-turn rollout metadata after TurnContext, restored the latest surviving snapshot through rollout reconstruction across resume/rollback/compaction, and patched rollout/state/app-server readers plus fork filtering to tolerate the new RolloutItem::EpiphanyState variant."}
{"ts": "2026-04-23T23:12:00+01:00", "type": "verification", "status": "ok", "note": "Installed Rust and Visual Studio Build Tools to verify the Phase 1 slice in a real toolchain. cargo fmt completed; codex-protocol, codex-app-server-protocol, codex-rollout, and codex-state lib test suites passed; and the new codex-core tests for Epiphany persistence and reconstruction passed when CARGO_TARGET_DIR was moved to C: to avoid the v8 crate's Windows cross-drive symlink privilege failure."}
{"ts": "2026-04-23T23:19:29+01:00", "type": "decision", "status": "ok", "note": "Flattened vendor/codex into the parent repository by removing the gitlink/submodule wiring and nested .git metadata so the Codex Phase 1 Epiphany harness changes can be reviewed and committed as ordinary tracked files alongside the project state."}
{"ts": "2026-04-23T23:25:52+01:00", "type": "decision", "status": "ok", "note": "Replaced the stale Phase 1 plan and stale workspace handoff with current persisted guidance. The new notes pin the next slice as Phase 2 prompt integration: render a bounded Epiphany developer-context summary from SessionState.epiphany_state, inject it during Session::build_initial_context, keep activation internal-only via state presence, and verify it with prompt-facing tests and a snapshot before touching GUI or retrieval."}
{"ts": "2026-04-23T22:48:30+00:00", "type": "implementation", "status": "ok", "note": "Implemented the Phase 2 prompt-integration slice in vendored Codex. Added a dedicated EpiphanyStateInstructions developer fragment, rendered a bounded summary from SessionState.epiphany_state, injected it into Session::build_initial_context after collaboration-mode instructions, and added prompt-facing inclusion/omission/resume coverage plus a stable snapshot."}
{"ts": "2026-04-23T22:55:33+00:00", "type": "decision", "status": "ok", "note": "Documented the pre-compaction persistence workflow as an explicit Epiphany design rule. Updated the core harness spec, README, handoff note, and canonical map to state that Epiphany should be an opinionated software development agent: before compaction or handoff it should persist map, evidence, blockers, and next action on purpose rather than relying on transcript continuity."}
{"ts": "2026-04-24T00:39:29+01:00", "type": "decision", "status": "ok", "note": "Delivered Phase 3 as a conservative typed read-surface slice instead of full live event/update exposure. Added optional epiphanyState to hydrated app-server Thread payloads and kept dedicated Epiphany-specific update RPCs and live notifications deferred so the client can read canonical state without scraping prompt text."}
{"ts": "2026-04-24T00:39:29+01:00", "type": "implementation", "status": "ok", "note": "Implemented the Phase 3 typed client exposure slice in vendored Codex. Added a shared core helper to reconstruct the latest surviving EpiphanyThreadState from rollout items, exposed live thread epiphany_state through CodexThread, added optional Thread.epiphany_state in app-server protocol v2, hydrated thread/start, thread/resume, thread/fork, thread/read, thread/unarchive, and detached review-thread startup from live state or rollout, patched exhaustive Thread test fixtures, and documented the new field in app-server/README.md."}
{"ts": "2026-04-24T00:39:29+01:00", "type": "verification", "status": "ok", "note": "Verified the Phase 3 slice with the Windows CARGO_TARGET_DIR workaround. cargo fmt --all passed; cargo test -p codex-core -p codex-app-server-protocol -p codex-app-server -p codex-analytics -p codex-exec -p codex-tui --lib --no-run passed; and targeted tests passed for codex-core latest_epiphany_state_from_rollout_items, codex-app-server load_epiphany_state_from_rollout_path_reads_latest_snapshot, and codex-app-server-protocol serialize_client_response."}
{"ts": "2026-04-24T00:44:53+01:00", "type": "decision", "status": "ok", "note": "Patched the Epiphany spec and handoff workflow to make compaction pressure-aware instead of purely reactive. Added the rule that the harness should detect rising context pressure before the hard limit, checkpoint at the next safe point when pressure is high, and persist immediately when pressure is critical rather than waiting for forced compaction to erase live reasoning."}
{"ts": "2026-04-24T00:47:37+01:00", "type": "decision", "status": "ok", "note": "Updated the repo-local AGENTS.md to carry the operational bootstrap and re-entry protocol explicitly. Fresh sessions and post-compaction resumes should reread the persisted state files, run tools/epiphany_state.py status immediately, restate the persisted next action before edits, and treat rising context pressure as a cue to checkpoint before forced compaction."}
{"ts": "2026-04-24T00:50:33+01:00", "type": "decision", "status": "ok", "note": "Added a dedicated current-state Epiphany algorithmic delta map in notes/epiphany-current-algorithmic-map.md. The note documents only the currently landed divergence from plain Codex: durable Epiphany state in protocol/rollout, replay-aware restoration, prompt injection through build_initial_context, and typed app-server Thread.epiphanyState hydration, while explicitly calling out what has not diverged yet."}
{"ts": "2026-04-24T00:03:39+00:00", "type": "research", "status": "ok", "note": "Recovered from source that existing exact/path lookup substrate already exists through codex_file_search in vendored Codex, currently used by app-server fuzzy search in vendor/codex/codex-rs/app-server/src/fuzzy_file_search.rs."}
{"ts": "2026-04-24T00:03:39+00:00", "type": "research", "status": "ok", "note": "Recovered from source that codex-core already depends on bm25 and uses it in vendor/codex/codex-rs/core/src/tools/handlers/tool_search.rs, so a bounded local BM25 retrieval backend can reuse in-tree library precedent instead of inventing a new search dependency."}
{"ts": "2026-04-24T00:03:39+00:00", "type": "research", "status": "ok", "note": "Preflighted the tracked Phase 4 source corpus using git-tracked files rather than raw working-tree disk usage. At vendor/codex HEAD d45ab10, tracked vendor/codex/codex-rs source is 3642 files / 31.09 MB; raw working-tree size is polluted by build artifacts and should not drive retrieval design."}
{"ts": "2026-04-24T00:03:39+00:00", "type": "decision", "status": "ok", "note": "Chose the first bounded Phase 4 retrieval backend as a query-time hybrid retriever: reuse codex_file_search for exact/path-ish lookup, use workspace-local BM25 chunk search as the initial semantic backend, keep the slice loaded-thread-first and read-only, and defer embeddings, vector stores, persistent indexing, and watcher-driven invalidation."}
{"ts": "2026-04-24T00:03:39+00:00", "type": "implementation", "status": "in_progress", "note": "The current working tree contains an unverified protocol scaffold for Phase 4 in vendor/codex/codex-rs/protocol/src/protocol.rs. It adds EpiphanyThreadState.retrieval plus EpiphanyRetrievalState, EpiphanyRetrievalStatus, and EpiphanyRetrievalShardSummary, but core/app-server wiring and test verification are still pending."}
{"ts": "2026-04-24T00:22:05+00:00", "type": "decision", "status": "ok", "note": "Live hydrated thread epiphanyState now backfills a lightweight retrieval summary when the thread already has Epiphany state but no persisted retrieval metadata yet; this keeps the first slice loaded-thread-first and read-only without inventing a write path."}
{"ts": "2026-04-24T00:22:05+00:00", "type": "implementation", "status": "in_progress", "note": "Phase 4 working tree now wires query-time hybrid retrieval across core and app-server: new core epiphany_retrieval module, CodexThread retrieval entry points, experimental app-server protocol method thread/epiphany/retrieve, and app-server request handling/mapping are all present but not formatted or verified yet."}
{"ts": "2026-04-24T00:22:05+00:00", "type": "verification", "status": "pending", "note": "Phase 4 retrieval wiring still needs cargo fmt and targeted Windows-safe Rust verification for codex-core, codex-app-server-protocol, and codex-app-server; no tests have been run on the current wider diff yet."}
{"ts": "2026-04-24T02:07:46+01:00", "type": "implementation", "status": "ok", "note": "Finished the first bounded Phase 4 query-time hybrid retrieval slice in the working tree. Fixed the live-thread mapping fallout in codex_message_processor.rs, added retrieval: None to the prompt fixture Epiphany state, tightened the exact-hit retrieval test fixture to a genuinely matchable path, and kept the retrieval surface additive and read-only with live retrieval-summary backfill rather than inventing a write path."}
{"ts": "2026-04-24T02:07:46+01:00", "type": "verification", "status": "ok", "note": "Verified the Phase 4 slice with the Windows CARGO_TARGET_DIR workaround. cargo fmt --all passed; cargo test -p codex-core -p codex-app-server-protocol -p codex-app-server --lib --no-run passed; targeted tests passed for codex-core retrieve_workspace_*, codex-app-server-protocol thread_epiphany_retrieve*, and codex-app-server map_epiphany_retrieve_response_preserves_summary_and_results; full cargo test -p codex-app-server-protocol passed after stable schema regeneration."}
{"ts": "2026-04-24T02:07:46+01:00", "type": "decision", "status": "ok", "note": "Stable app-server protocol schema fixtures are the only safe checked-in schema state for the Phase 4 slice. Running write_schema_fixtures with --experimental rewrites the same schema tree, causes stable protocol tests to fail if left in place, and therefore must be followed by stable fixture regeneration before the repo is left in a landed state."}
{"ts": "2026-04-24T02:07:46+01:00", "type": "decision", "status": "ok", "note": "Kept EpiphanyThreadState sparse at the protocol/export boundary. The protocol export test now explicitly exempts EpiphanyThreadState from the optional-nullable params rule because durable thread state intentionally uses optional fields, and flattening it into a fake params-shaped object would be the worse lie."}
{"ts": "2026-04-24T02:11:38+01:00", "type": "decision", "status": "ok", "note": "Deferred durable retrieval-summary persistence beyond the verified Phase 4 slice. EpiphanyState snapshots are still persisted on real user-turn boundaries, so teaching thread/epiphany/retrieve to append durable state now would require a new out-of-band rollout semantic or a fake turn boundary; keep the current slice as the landing zone instead of widening the machine casually."}
{"ts": "2026-04-24T02:11:38+01:00", "type": "decision", "status": "ok", "note": "Adopted Qdrant as the intended first persistent semantic retrieval backend after the verified BM25 baseline. The rationale is practical rather than fashionable: the user is already moving away from a blob-thrashing Postgres/JSON embedding store in adjacent infrastructure, so Epiphany should target a real vector DB for persistent semantic indexing while keeping exact/path search first-class and retaining BM25 as bootstrap/fallback/control rather than going vector-only."}
{"ts": "2026-04-24T02:43:41+01:00", "type": "decision", "status": "ok", "note": "Resolved the remaining backend policy fork before shipping Phase 4 slice 1: Qdrant is the preferred later persistent semantic backend, but not a hard runtime requirement for basic Epiphany use. The verified BM25 retriever remains the no-hassle bootstrap/fallback/control path for users who do not want Qdrant or when Qdrant is unavailable."}