From afff398d5bb82d91f1bb596a76be9c842fcb84be Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Tue, 19 May 2026 17:12:39 +0100 Subject: [PATCH] Record typed reorient boundary --- notes/fresh-workspace-handoff.md | 2 +- state/ledgers.msgpack | Bin 133287 -> 133627 bytes state/map.yaml | 8 ++++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/notes/fresh-workspace-handoff.md b/notes/fresh-workspace-handoff.md index bf1555e3..3c66b289 100644 --- a/notes/fresh-workspace-handoff.md +++ b/notes/fresh-workspace-handoff.md @@ -47,7 +47,7 @@ remembers doctrine; the branch remembers the blade. - State-update contract proof and job launch/interrupt DTO ownership now live in native `epiphany-core`. The old giant `codex_thread.rs` Epiphany state-update test fixture was cut, and `epiphany-codex-bridge` no longer imports Epiphany job launch request types from `codex_core`; vendored `CodexThread` may call the native mutation/launch law for compatibility, but it must not regain ownership of state-update semantics, heartbeat launch-plan policy, or Epiphany DTOs. - `epiphany-codex-bridge` no longer depends on vendored `codex-core` at all. Retrieval takes workspace/Codex-home paths, invalidation owns a native `notify` watcher, runtime-result acceptance takes typed state plus runtime-store path, live rollout/thread reads moved into app-server `epiphany_thread_host`, and mutation policy depends on the small `EpiphanyMutationHost` trait implemented by app-server's `EpiphanyCodexThreadHost` wrapper. The bridge owns Epiphany law; vendored app-server owns CodexThread access. - `epiphany-codex-bridge` also no longer depends on `codex-protocol`. Bridge durable-state imports point at `epiphany-state-model`, token pressure takes native `EpiphanyTokenUsageSnapshot`, app-server maps Codex token telemetry at the host wall, Codex token usage rollout replay lives in `codex_message_processor/token_usage_replay.rs`, and bridge errors are `EpiphanyBridgeError`. The only remaining vendored bridge dependencies are app-server protocol DTOs and absolute path validation. -- The first bridge JSON-RPC starvation cuts are landed. Freshness now returns a serializable `EpiphanyFreshnessSurface`, job launch/interrupt mutation results carry typed `EpiphanyJobView` plus separate host-edge launcher/backend ids, and reorient/pre-compaction decisions consume typed `EpiphanyPressure`. App-server still projects those typed surfaces into `ThreadEpiphany*` JSON-RPC DTOs at the legacy edge. Continue by cutting view/coordinator/reorient DTO coupling, not by inventing adapters with nicer uniforms. +- The first bridge JSON-RPC starvation cuts are landed. Freshness now returns a serializable `EpiphanyFreshnessSurface`, job launch/interrupt mutation results carry typed `EpiphanyJobView` plus separate host-edge launcher/backend ids, reorient/pre-compaction decisions consume typed `EpiphanyPressure`, reorient policy consumes typed freshness directly, and reorient launch documents/results use typed core reorient decisions/status before app-server projects them into legacy JSON-RPC DTOs. Continue by cutting the full view/coordinator board into typed surfaces, not by inventing adapters with nicer uniforms. - MCP remains JSON because MCP is a JSON protocol. The latest processor cut only moved MCP refresh/OAuth/status/resource/tool-call route handling into `codex_message_processor/mcp_routes.rs`, reducing the root processor to about 8,977 lines; it did not claim MCP payloads are CultNet or make MCP an Epiphany-owned runtime contract. - Codex account auth route handling remains in vendored Codex but now lives in `codex_message_processor/auth_routes.rs`: API-key login, ChatGPT browser/device-code/external-token login, logout, auth status, account, rate limits, and add-credits nudge handling. This preserves Codex ownership of subscription auth while cutting the root processor to about 8,094 lines. - One-off command execution and command stream write/resize/terminate route handling now live in `codex_message_processor/command_routes.rs`; `CommandExecManager` remains the lifecycle owner, while the root processor is about 7,800 lines. diff --git a/state/ledgers.msgpack b/state/ledgers.msgpack index be3d635bee7f45578a38713b7c41ceec7dd37a89..6185d7529dca1b41635f58829eb47991e694da9b 100644 GIT binary patch delta 323 zcmYk2Jxjzu5QfZ&u!opTLAwR+TDzWr$ z_*bsEIqpN-nfH0;VLspU#Vmh2%JzTeCl5kAzYOAa5aMeP*<$bDhiW~ z+Nz$-hr{WwIKEDnZjd0743CnGcc8o@;}Yr?0{URk5%k^~HCe4<>M#OLdem?qFpeF@ zcnVe~r^cYY;=Q8?G9ZkSvBW9gZ2;wYx+|S(R3`GtKfX(}mf&VKiyWpD+y>u~Tkwpv oDKRdcX1V|6+sN7^VldL0Cpofs1+wo8o(v|>ntb(*_Po4X0<{%&$p8QV delta 52 zcmex8nPd4xjtR<49Jw1+3mF-!o2N6jPiJJ@KAn;2H=F1dBLgEdT?12HL(33DQ!7(b ID?_6w0LXg}V*mgE diff --git a/state/map.yaml b/state/map.yaml index 2ecba22a..c77f8581 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -306,8 +306,12 @@ current_status: freshness now returns a serializable `EpiphanyFreshnessSurface`, job launch/interrupt bridge results carry typed `EpiphanyJobView` plus host-edge launcher metadata, and reorient/pre-compaction decisions consume typed - `EpiphanyPressure`. App-server still projects those typed surfaces into - `ThreadEpiphany*` responses at the legacy JSON-RPC edge. The bridge still + `EpiphanyPressure`. Reorient policy now consumes typed freshness directly, + reorient launch documents are built from typed core decisions, reorient + launch mutation results return typed decision/state-status values from the + bridge, and core reorient decisions are serializable CultNet-ready state. + App-server still projects those typed surfaces into `ThreadEpiphany*` + responses at the legacy JSON-RPC edge. The bridge still depends on vendored Codex for app-server protocol DTOs and absolute path validation, so the purification is not done. next_action: Continue Codex starvation and CultNet liberation by cutting bridge-internal `ThreadEpiphany*` authority. Prioritize view/coordinator/reorient DTO coupling: derive typed CultNet surfaces first, push JSON-RPC projection into app-server, and keep MCP/OpenAI JSON only at their true protocol/text edges. Do not add compatibility adapters unless they protect a named ownership invariant.