Add Epiphany CRRC coordinator recommendation
This commit is contained in:
parent
289ab31e64
commit
9d18cdbe9f
16 changed files with 920 additions and 38 deletions
|
|
@ -58,6 +58,7 @@ The rule is:
|
|||
| `thread/epiphany/context` | read-only reflection | landed, live-smoked | Targeted state shard for graph nodes/edges, active frontier, graph checkpoint, investigation checkpoint, observations, and evidence. |
|
||||
| `thread/epiphany/pressure` | read-only reflection | landed, live-smoked | Context-pressure gauge derived from token telemetry and recorded auto-compact/context limits. |
|
||||
| `thread/epiphany/reorient` | read-only policy reflection | landed, live-smoked | Bounded CRRC reorientation verdict derived from checkpoint, freshness, watcher, and pressure signals; returns resume vs regather without acting on the decision. |
|
||||
| `thread/epiphany/crrc` | read-only coordinator reflection | landed, live-smoked | Composes pressure, reorientation verdict, bound worker status/result, and available actions into one recommendation without launching, accepting, compacting, or mutating state. |
|
||||
|
||||
## Write Authority
|
||||
|
||||
|
|
@ -84,6 +85,7 @@ The following must stay read-only:
|
|||
- `thread/epiphany/context`
|
||||
- `thread/epiphany/pressure`
|
||||
- `thread/epiphany/reorient`
|
||||
- `thread/epiphany/crrc`
|
||||
- `thread/epiphany/reorientResult`
|
||||
|
||||
`thread/epiphany/index` is a write to the retrieval catalog. It is not a
|
||||
|
|
@ -91,7 +93,7 @@ license to mutate map/evidence/churn state as a side effect.
|
|||
|
||||
## Reflection Authority
|
||||
|
||||
Scene, jobs, freshness, context, reorient, and GUI surfaces may compress state for humans and
|
||||
Scene, jobs, freshness, context, reorient, CRRC, and GUI surfaces may compress state for humans and
|
||||
clients. They may not invent canonical understanding.
|
||||
|
||||
Reflection surfaces should:
|
||||
|
|
@ -147,7 +149,7 @@ These are not landed yet:
|
|||
- typed turn intent before broad mutation
|
||||
- hard mutation gates for stale map or violated invariants
|
||||
- role-scoped specialist-agent registry and scheduling
|
||||
- automatic runtime Compact-Rehydrate-Reorient-Continue coordination
|
||||
- automatic runtime Compact-Rehydrate-Reorient-Continue execution beyond the landed read-only coordinator recommendation
|
||||
|
||||
Do not implement these as one blob. Each needs a bounded surface, a write rule,
|
||||
and a verification story.
|
||||
|
|
@ -178,10 +180,10 @@ Out of scope for the MVP:
|
|||
- a second job backend unless the current `agent_jobs` adapter blocks read-back
|
||||
or interruption
|
||||
|
||||
The first read-back and acceptance blockers are landed. The current MVP blocker
|
||||
is bounded CRRC coordination: deciding when the harness should recommend or
|
||||
request the landed pressure -> verdict -> launch -> result -> accept loop
|
||||
without becoming an ambient scheduler.
|
||||
The first read-back, acceptance, and read-only coordinator blockers are landed.
|
||||
The current MVP blocker is dogfood visibility: exposing scene, pressure,
|
||||
reorient, jobs, result, and CRRC recommendation in a small operator-facing view
|
||||
that can be tested during real coding work without reading Rust.
|
||||
|
||||
## Job And Progress Surface Direction
|
||||
|
||||
|
|
@ -223,6 +225,14 @@ caller asks for those writes. It emits `thread/epiphany/stateUpdated` with
|
|||
source `reorientAccept`; it does not accept pending work, auto-promote arbitrary
|
||||
worker output, launch follow-up jobs, or silently continue implementation.
|
||||
|
||||
The first read-only coordinator over that loop is also landed as
|
||||
`thread/epiphany/crrc`. It composes pressure, the resume-versus-regather
|
||||
verdict, the fixed reorient-worker binding, result status/finding, and scene
|
||||
actions into one recommendation such as continue, prepare checkpoint, launch
|
||||
worker, wait for worker, review result, accept result, or regather manually. It
|
||||
is not a scheduler, a hidden launch, a hidden accept, a compactor, or a second
|
||||
source of truth. The little tyrant remains theoretical, for now.
|
||||
|
||||
The first live bound-runtime progress notification is also landed as
|
||||
`thread/epiphany/jobsUpdated`. It rides existing `agent_job_progress:{json}`
|
||||
background events from the runtime job runner, resolves matching launcher
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ The important question for this file is not "what is Epiphany supposed to become
|
|||
|
||||
Current Epiphany is a forked Codex harness with a typed modeling spine.
|
||||
|
||||
The spine exists in twenty-one live paths:
|
||||
The spine exists in twenty-two live paths:
|
||||
|
||||
- protocol state shape: `EpiphanyThreadState`, `RolloutItem::EpiphanyState`, retrieval summaries, and prompt tags live in [protocol.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/protocol/src/protocol.rs:103).
|
||||
- in-memory session state: `SessionState` stores an optional `EpiphanyThreadState`, and `Session` exposes thin async accessors over it in [state/session.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/core/src/state/session.rs:36) and [session/mod.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/core/src/session/mod.rs:1240).
|
||||
|
|
@ -30,6 +30,7 @@ The spine exists in twenty-one live paths:
|
|||
- targeted context reflection: app-server declares experimental read-only `thread/epiphany/context`, reads the same live/stored Epiphany state view used by scene/jobs, and derives a bounded state shard containing selected graph nodes/edges, links, active frontier, checkpoint, the full durable investigation-checkpoint packet, observations, direct evidence, linked evidence, and missing requested ids without retrieval, proposal, promotion, notification, mutation, or persistence in [common.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server-protocol/src/protocol/common.rs:355), [v2.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server-protocol/src/protocol/v2.rs:4253), [codex_message_processor.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server/src/codex_message_processor.rs:4261), and [codex_message_processor.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server/src/codex_message_processor.rs:11152).
|
||||
- context-pressure reflection: core token telemetry carries `model_auto_compact_token_limit` beside total/last usage and `model_context_window`; app-server declares experimental read-only `thread/epiphany/pressure`, reads live token usage or the latest stored rollout `TokenCount`, and derives `unknown`/`low`/`elevated`/`high`/`critical` pressure plus a non-acting compaction-prep recommendation without mutating Epiphany state or scheduling compaction in [protocol.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/protocol/src/protocol.rs:2237), [turn_context.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/core/src/session/turn_context.rs:103), [session/mod.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/core/src/session/mod.rs:2716), [common.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server-protocol/src/protocol/common.rs:360), [v2.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server-protocol/src/protocol/v2.rs:4361), [token_usage_replay.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server/src/codex_message_processor/token_usage_replay.rs:75), [codex_message_processor.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server/src/codex_message_processor.rs:4306), and [codex_message_processor.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server/src/codex_message_processor.rs:11028).
|
||||
- reorientation policy: app-server declares experimental read-only `thread/epiphany/reorient`, reuses the same live/stored thread view plus mapped pressure/freshness/watcher signals, and derives a bounded `resume`/`regather` verdict with checkpoint-path/frontier reasons without mutating, compacting, scheduling, notifying, or continuing work in [common.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server-protocol/src/protocol/common.rs:365), [v2.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server-protocol/src/protocol/v2.rs:4514), [codex_message_processor.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server/src/codex_message_processor.rs:4394), and [codex_message_processor.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server/src/codex_message_processor.rs:11424).
|
||||
- CRRC coordinator recommendation: app-server declares experimental read-only `thread/epiphany/crrc`, reuses the same pressure/freshness/watcher/reorientation mapping plus the fixed `reorient-worker` binding and result read-back helper, and returns one bounded recommendation such as continue, prepare checkpoint, launch worker, wait, review, accept, or regather manually without mutating, launching, accepting, compacting, notifying, scheduling, or silently continuing work in [common.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server-protocol/src/protocol/common.rs:370), [v2.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server-protocol/src/protocol/v2.rs:4661), and [codex_message_processor.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server/src/codex_message_processor.rs:4546).
|
||||
- reorientation launch: app-server now declares experimental `thread/epiphany/reorientLaunch`, requires a loaded thread plus durable investigation checkpoint, consumes the live reorientation verdict, and launches one fixed `reorient-worker` binding through the existing job-control seam with explicit resume-versus-regather scope, checkpoint-derived payload, and structured-output expectations instead of pretending CRRC suddenly grew a scheduler in [common.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server-protocol/src/protocol/common.rs:370), [v2.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server-protocol/src/protocol/v2.rs:4575), and [codex_message_processor.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server/src/codex_message_processor.rs:4519).
|
||||
- reorientation result read-back: app-server now declares experimental read-only `thread/epiphany/reorientResult`, defaults to the fixed `reorient-worker` binding, resolves that binding through the current `agent_jobs` backend when available, reads the single backend item result, and projects a reviewable finding with mode, summary, next safe move, checkpoint-validity flag, inspected files, frontier ids, evidence ids, raw result, and any job/item errors without mutating state, promoting evidence, or scheduling follow-up work in [common.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server-protocol/src/protocol/common.rs:374), [v2.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server-protocol/src/protocol/v2.rs:4610), and [codex_message_processor.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server/src/codex_message_processor.rs:4684).
|
||||
- reorientation finding acceptance: app-server now declares experimental `thread/epiphany/reorientAccept`, requires a loaded thread and a completed `reorient-worker` backend result, appends accepted observation/evidence records, optionally banks the finding into scratch and the durable investigation checkpoint, persists through the normal typed update path, and emits `thread/epiphany/stateUpdated` with source `reorientAccept` without accepting pending work, auto-promoting arbitrary worker output, launching follow-up work, or silently continuing implementation in [common.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server-protocol/src/protocol/common.rs:378), [v2.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server-protocol/src/protocol/v2.rs:4635), and [codex_message_processor.rs](E:/Projects/EpiphanyAgent/vendor/codex/codex-rs/app-server/src/codex_message_processor.rs:4885).
|
||||
|
|
@ -82,6 +83,10 @@ flowchart TD
|
|||
QF --> QR["thread/epiphany/reorient derives read-only resume/regather verdict"]
|
||||
QQ --> QR
|
||||
QR --> Q
|
||||
QR --> QCRRC["thread/epiphany/crrc recommends the next explicit CRRC action"]
|
||||
QQ --> QCRRC
|
||||
QJ --> QCRRC
|
||||
QCRRC --> Q
|
||||
QR --> QRL["thread/epiphany/reorientLaunch can explicitly consume that verdict"]
|
||||
QRL --> QRLR["thread/epiphany/reorientResult reads back worker findings"]
|
||||
QRLR --> Q
|
||||
|
|
@ -1320,6 +1325,7 @@ stored Epiphany state
|
|||
-> reflected as targeted read-only graph/evidence context shards for clients
|
||||
-> reflected as read-only context pressure from token telemetry
|
||||
-> reflected as a read-only resume/regather verdict from checkpoint + freshness + watcher + pressure
|
||||
-> reflected as a read-only CRRC recommendation over verdict + worker/result state
|
||||
-> can be consumed explicitly by one bounded reorient-worker launch surface
|
||||
-> retrieval/indexing can inform future work
|
||||
-> explicit distillation can draft observation/evidence patches
|
||||
|
|
@ -1329,7 +1335,7 @@ stored Epiphany state
|
|||
-> successful writes emit thread/epiphany/stateUpdated
|
||||
```
|
||||
|
||||
The current remaining missing organ is not the red pen, not the first chewing motion, not the first state-change bell, not the first client-shaped scene, not the first job/progress reflection, not the first live bound-job notification, not the first freshness lens, not the first watcher-backed invalidation read, not the first targeted graph/evidence context read, not the first context-pressure gauge, not the first durable investigation checkpoint packet, not the first bounded reorientation verdict, not the first thin launcher seam, not the first explicit launch/interrupt authority surface over that seam, not the first runtime consumer that can act on the reorientation verdict without becoming a hidden tyrant, not the first read-back surface for that worker's findings, and no longer the first explicit acceptance write for completed findings. Those exist. Proposal now has the first bits of map memory, focus, and selection hygiene: it can auto-select a bounded evidence-backed observation cluster when ids are omitted, requires accepting recent evidence behind selected observations, prioritizes stronger selected observations for proposal wording, reuses existing architecture nodes by concrete code-ref/path/id checks before creating new path nodes, can rescue unanchored graph nodes through strict unique semantic overlap, follows graph links and incident edges into the frontier, and reports match-kind-aware churn pressure from the actual proposal shape. Distillation now also has the first source-output-aware teeth for tool/model summaries. Promotion now notices risky deltas instead of just checking the shape of the envelope, treats graph expansion as risky even if the patch tries to mumble "low pressure" while dragging a new wall into the blueprint, token-matches strong verifier kinds so `contest` cannot sneak past as `test`, and validates investigation checkpoints against known evidence before the packet can be inked. Successful update/promote writes now emit `thread/epiphany/stateUpdated` with `source: "update"` or `source: "promote"`, event-level revision, and typed changed fields so clients no longer need to poll blindly, infer the cause from timing, or diff the whole state to know which top-level sections moved. Runtime `agent_job_progress` background events now also emit `thread/epiphany/jobsUpdated` with changed bound-job payloads so clients no longer need to poll `thread/epiphany/jobs` just to watch one real owner move, the bound jobs now reflect launcher id, authority scope, and backend kind/job id instead of treating raw runtime pointers as the architecture, `jobLaunch` / `jobInterrupt` can create or tear down those bindings without pretending reflection is authority, `reorientLaunch` can launch one fixed `reorient-worker` job from the checkpoint verdict without turning the verdict itself into a writer, `reorientResult` can read the worker's structured output back as a reviewable finding without promoting it, and `reorientAccept` can explicitly bank a completed finding into typed observation/evidence plus optional scratch/checkpoint state. The scene, jobs, freshness, context, pressure, reorient, and reorient-result surfaces give clients compact or bounded read-only views without making the GUI/client authoritative, scene/context surface the checkpoint packet back out without becoming writers, freshness surfaces watcher telemetry without becoming a hidden worker, and reorient now turns those signals into an explicit wakeup verdict that one explicit launch surface can consume on purpose. The remaining missing organs are a second backend if `agent_jobs` stops being enough, a bounded CRRC coordinator that decides when to use the landed launch/read-back/acceptance path, and eventually role-scoped specialist ownership without silently auto-promoting anything.
|
||||
The current remaining missing organ is not the red pen, not the first chewing motion, not the first state-change bell, not the first client-shaped scene, not the first job/progress reflection, not the first live bound-job notification, not the first freshness lens, not the first watcher-backed invalidation read, not the first targeted graph/evidence context read, not the first context-pressure gauge, not the first durable investigation checkpoint packet, not the first bounded reorientation verdict, not the first thin launcher seam, not the first explicit launch/interrupt authority surface over that seam, not the first runtime consumer that can act on the reorientation verdict without becoming a hidden tyrant, not the first read-back surface for that worker's findings, not the first explicit acceptance write for completed findings, and no longer the first read-only CRRC coordinator recommendation. Those exist. Proposal now has the first bits of map memory, focus, and selection hygiene: it can auto-select a bounded evidence-backed observation cluster when ids are omitted, requires accepting recent evidence behind selected observations, prioritizes stronger selected observations for proposal wording, reuses existing architecture nodes by concrete code-ref/path/id checks before creating new path nodes, can rescue unanchored graph nodes through strict unique semantic overlap, follows graph links and incident edges into the frontier, and reports match-kind-aware churn pressure from the actual proposal shape. Distillation now also has the first source-output-aware teeth for tool/model summaries. Promotion now notices risky deltas instead of just checking the shape of the envelope, treats graph expansion as risky even if the patch tries to mumble "low pressure" while dragging a new wall into the blueprint, token-matches strong verifier kinds so `contest` cannot sneak past as `test`, and validates investigation checkpoints against known evidence before the packet can be inked. Successful update/promote writes now emit `thread/epiphany/stateUpdated` with `source: "update"` or `source: "promote"`, event-level revision, and typed changed fields so clients no longer need to poll blindly, infer the cause from timing, or diff the whole state to know which top-level sections moved. Runtime `agent_job_progress` background events now also emit `thread/epiphany/jobsUpdated` with changed bound-job payloads so clients no longer need to poll `thread/epiphany/jobs` just to watch one real owner move, the bound jobs now reflect launcher id, authority scope, and backend kind/job id instead of treating raw runtime pointers as the architecture, `jobLaunch` / `jobInterrupt` can create or tear down those bindings without pretending reflection is authority, `reorientLaunch` can launch one fixed `reorient-worker` job from the checkpoint verdict without turning the verdict itself into a writer, `reorientResult` can read the worker's structured output back as a reviewable finding without promoting it, `reorientAccept` can explicitly bank a completed finding into typed observation/evidence plus optional scratch/checkpoint state, and `crrc` can recommend the next explicit action over that loop without doing the action itself. The scene, jobs, freshness, context, pressure, reorient, crrc, and reorient-result surfaces give clients compact or bounded read-only views without making the GUI/client authoritative, scene/context surface the checkpoint packet back out without becoming writers, freshness surfaces watcher telemetry without becoming a hidden worker, reorient turns those signals into an explicit wakeup verdict that one explicit launch surface can consume on purpose, and crrc now tells the operator whether to continue, checkpoint, launch, wait, review, accept, or regather manually. The remaining missing organs are a second backend if `agent_jobs` stops being enough, a dogfood-facing operator view over the landed loop, and eventually role-scoped specialist ownership without silently auto-promoting anything.
|
||||
|
||||
```text
|
||||
model/tool observations
|
||||
|
|
@ -1343,7 +1349,7 @@ model/tool observations
|
|||
|
||||
The typed write path exists, the first deterministic observation/evidence distillation path exists, source-output-aware distillation now summarizes noisy tool/model output into typed evidence with final result/error/finished lines ahead of generic warnings, the first deterministic map/churn proposal path exists, proposal-quality hardening now auto-selects bounded observation clusters when ids are omitted, requires accepting recent evidence, reuses existing graph nodes by observed code refs, prioritizes stronger selected observations, rescues unanchored graph nodes by strict semantic overlap, focuses linked frontier context, reports match-kind-aware map-delta pressure, and the first verifier-backed promotion gate exists. The first map/churn safety layer also exists: promotion can reject state replacement patches that are not tied to explicit observations/evidence, that contain structurally broken subgoal, invariant, graph, frontier, checkpoint, investigation-checkpoint, or churn fields, that try to promote risky churn without a warning and stronger verifier evidence, that claim a graph expansion is low-pressure to dodge the warning gate, or that rely on substring verifier-kind accidents. The first live state notification layer also exists: accepted writes publish updated typed state plus event-level revision and typed changed fields; rejected promotions stay quiet.
|
||||
|
||||
In natural language: current Epiphany can preserve a map, show a map, project a compact scene from the map, project derived job/progress slots from the map and retrieval summary, reflect a thin launcher seam over bound work, explicitly launch or interrupt that bound work through a bounded authority surface, emit live bound-job progress notifications from runtime `agent_job_progress` events, project a read-only freshness lens over retrieval and graph staleness, layer watcher-backed invalidation telemetry onto that lens for loaded threads, project a targeted graph/evidence context shard from the map, project context pressure from token telemetry, bank an in-flight investigation packet in durable typed state, reflect that packet back into prompt/scene/context, turn those signals into a read-only resume-versus-regather verdict, explicitly launch one bounded `reorient-worker` job from that verdict, retrieve evidence for the map, draft one explicit observation/evidence patch, derive a bounded graph/frontier/churn candidate from verified evidence-backed observations with code refs, choose a small coherent observation set when the caller does not provide one, favor the strongest selected observation when drafting that candidate, reject or accept a verified candidate, apply explicit map/evidence/churn edits, notify clients after successful writes, and sanity-check those edits before they hit the ledger. It still does not invalidate stale graph regions automatically, reflect reorientation-worker results back into typed state, execute Epiphany-owned long-running jobs beyond the borrowed runtime `agent_jobs` backend, or coordinate specialist ownership. Teeth are installed; chewing is supervised; the first bell rings; the first wall board exists; the first shift board exists; the first freshness clipboard exists; the first door sensor now exists too; the first binder lens exists; the first pressure gauge exists; the first ember packet exists; the first verdict slip now exists too; the first bounded launch lever and stop switch now exist too; the first explicit wakeup-hand now exists too; the next slices are about safe waking and real ownership, not jawbones.
|
||||
In natural language: current Epiphany can preserve a map, show a map, project a compact scene from the map, project derived job/progress slots from the map and retrieval summary, reflect a thin launcher seam over bound work, explicitly launch or interrupt that bound work through a bounded authority surface, emit live bound-job progress notifications from runtime `agent_job_progress` events, project a read-only freshness lens over retrieval and graph staleness, layer watcher-backed invalidation telemetry onto that lens for loaded threads, project a targeted graph/evidence context shard from the map, project context pressure from token telemetry, bank an in-flight investigation packet in durable typed state, reflect that packet back into prompt/scene/context, turn those signals into a read-only resume-versus-regather verdict, recommend the next explicit CRRC action over the verdict and worker/result state, explicitly launch one bounded `reorient-worker` job from that verdict, read its result back for review, explicitly accept a completed finding into typed state, retrieve evidence for the map, draft one explicit observation/evidence patch, derive a bounded graph/frontier/churn candidate from verified evidence-backed observations with code refs, choose a small coherent observation set when the caller does not provide one, favor the strongest selected observation when drafting that candidate, reject or accept a verified candidate, apply explicit map/evidence/churn edits, notify clients after successful writes, and sanity-check those edits before they hit the ledger. It still does not invalidate stale graph regions automatically, execute Epiphany-owned long-running jobs beyond the borrowed runtime `agent_jobs` backend, show the whole loop in a humane dogfood surface, or coordinate broad specialist ownership. Teeth are installed; chewing is supervised; the first bell rings; the first wall board exists; the first shift board exists; the first freshness clipboard exists; the first door sensor now exists too; the first binder lens exists; the first pressure gauge exists; the first ember packet exists; the first verdict slip now exists too; the first bounded launch lever and stop switch now exist too; the first explicit wakeup-hand now exists too; the first coordinator clipboard now exists too. The next slices are about making the wakeup legible and giving real roles real ownership, not jawbones.
|
||||
|
||||
## Verification Hooks
|
||||
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ The landed machine now has:
|
|||
- bounded Phase 6 reorient-guided worker launch through `thread/epiphany/reorientLaunch`
|
||||
- read-only Phase 6 reorient-worker result read-back through `thread/epiphany/reorientResult`
|
||||
- explicit Phase 6 reorient-worker finding acceptance through `thread/epiphany/reorientAccept`
|
||||
- read-only Phase 6 CRRC coordinator recommendation through `thread/epiphany/crrc`
|
||||
- live Phase 6 reorientation app-server smoke coverage in `tools/epiphany_phase6_reorient_smoke.py`
|
||||
- live Phase 6 reorient-launch app-server smoke coverage in `tools/epiphany_phase6_reorient_launch_smoke.py`
|
||||
- live Phase 6 job-control app-server smoke coverage in `tools/epiphany_phase6_job_control_smoke.py`
|
||||
|
|
@ -100,6 +101,7 @@ These boundaries are more important than the individual method names:
|
|||
- `thread/epiphany/context` is a targeted reflection, not a state writer or hidden proposal engine.
|
||||
- `thread/epiphany/pressure` is a context-pressure reflection, not an automatic compactor, scheduler, or CRRC coordinator.
|
||||
- `thread/epiphany/reorient` is a bounded policy verdict, not an automatic runtime coordinator, scheduler, compactor, or hidden state writer.
|
||||
- `thread/epiphany/crrc` is a read-only coordinator recommendation over existing signals, not a scheduler, launch button, acceptance gate, compactor, or hidden state writer.
|
||||
- The GUI may render and steer typed state, but it must not manufacture canonical understanding.
|
||||
- The app-server remains a host seam; Epiphany-owned machinery should live in `epiphany-core` where practical.
|
||||
- Qdrant is the preferred persistent semantic backend; BM25 remains the bootstrap/fallback/control path.
|
||||
|
|
@ -136,9 +138,8 @@ and notify typed state. It can.
|
|||
|
||||
The next unknowns are:
|
||||
|
||||
- how much automatic CRRC coordination belongs once pressure, verdict, launch, result read-back, and explicit acceptance all exist
|
||||
- how the landed watcher-backed invalidation telemetry should be consumed without turning freshness into a secret worker
|
||||
- how much automatic CRRC coordination belongs in runtime once pressure, freshness, watcher, checkpoint, and reorientation signals all exist
|
||||
- how far the read-only CRRC recommendation should go before explicit client/operator action takes over
|
||||
- whether future bounded CRRC consumers should keep reusing the landed `agent_jobs` backend through the explicit job-control seam or start defining a second backend contract
|
||||
- what Phase 6 should prove before specialist scheduling begins
|
||||
|
||||
|
|
@ -170,12 +171,12 @@ marketplace, broad ambient scheduling, automatic promotion of every tool
|
|||
observation, a GUI-first workflow, or a second job backend unless the current
|
||||
`agent_jobs` seam blocks the product loop.
|
||||
|
||||
The read-back and acceptance blockers are now landed as
|
||||
`thread/epiphany/reorientResult` and `thread/epiphany/reorientAccept`. The next
|
||||
MVP blocker is bounded CRRC coordination: the harness can measure pressure,
|
||||
return a reorientation verdict, launch a worker, read its result, and explicitly
|
||||
accept the finding, but it still lacks the small policy surface that decides
|
||||
when to recommend or request that loop.
|
||||
The read-back, acceptance, and coordinator blockers are now landed as
|
||||
`thread/epiphany/reorientResult`, `thread/epiphany/reorientAccept`, and
|
||||
`thread/epiphany/crrc`. The next MVP blocker is product dogfooding: a human can
|
||||
now ask the harness what it believes and what it recommends, but the loop still
|
||||
needs a small non-Rust-facing surface that makes that answer easy to inspect
|
||||
and act on during real work.
|
||||
|
||||
## Phase 6 Direction
|
||||
|
||||
|
|
@ -183,7 +184,7 @@ Phase 6 should grow observable harness state outward from the typed spine.
|
|||
|
||||
Useful candidates:
|
||||
|
||||
1. Decide how much bounded CRRC coordination belongs now that pressure, freshness, watcher, checkpoint, reorient, explicit job control, reorient launch, result read-back, and explicit acceptance all exist.
|
||||
1. Build a minimal dogfood-facing view over scene, pressure, reorient, jobs, reorient result, and CRRC recommendation so a non-Rust-speaking operator can test the product loop.
|
||||
2. Keep accepted worker findings review-gated; do not convert acceptance into automatic promotion of arbitrary worker output.
|
||||
3. Add targeted scene/jobs/context/pressure/reorient fields only when a client or smoke exposes a real gap.
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ Do not trust this file for the exact live HEAD. Always check git.
|
|||
|
||||
- Do not copy exact branch or HEAD from this note. Run `git status --short --branch` and `git log --oneline -5`.
|
||||
- Phase 1 through Phase 5 are complete enough.
|
||||
- Phase 6 has read-only `thread/epiphany/scene`, `thread/epiphany/jobs`, `thread/epiphany/freshness`, `thread/epiphany/context`, `thread/epiphany/pressure`, `thread/epiphany/reorient`, and `thread/epiphany/reorientResult`; durable `jobBindings` now act as a thin Epiphany-owned launcher seam with launcher id, authority scope, and backend kind/job id, `thread/epiphany/jobLaunch` / `thread/epiphany/jobInterrupt` now provide explicit bounded authority over that seam, jobs can overlay it onto live runtime `agent_jobs` progress for loaded threads, and `thread/epiphany/jobsUpdated` now translates live `agent_job_progress:{json}` background events into changed launcher-bound notifications without polling or scheduling. Freshness carries watcher-backed invalidation inputs, reorient turns checkpoint plus freshness/pressure/watcher signals into a read-only resume-versus-regather verdict, `thread/epiphany/reorientLaunch` is the first explicit runtime consumer over that verdict, `thread/epiphany/reorientResult` reads the launched worker output back as a reviewable finding without mutation or promotion, and `thread/epiphany/reorientAccept` explicitly banks completed findings into accepted observation/evidence plus optional scratch/checkpoint state.
|
||||
- Phase 6 has read-only `thread/epiphany/scene`, `thread/epiphany/jobs`, `thread/epiphany/freshness`, `thread/epiphany/context`, `thread/epiphany/pressure`, `thread/epiphany/reorient`, `thread/epiphany/crrc`, and `thread/epiphany/reorientResult`; durable `jobBindings` now act as a thin Epiphany-owned launcher seam with launcher id, authority scope, and backend kind/job id, `thread/epiphany/jobLaunch` / `thread/epiphany/jobInterrupt` now provide explicit bounded authority over that seam, jobs can overlay it onto live runtime `agent_jobs` progress for loaded threads, and `thread/epiphany/jobsUpdated` now translates live `agent_job_progress:{json}` background events into changed launcher-bound notifications without polling or scheduling. Freshness carries watcher-backed invalidation inputs, reorient turns checkpoint plus freshness/pressure/watcher signals into a read-only resume-versus-regather verdict, `thread/epiphany/reorientLaunch` is the first explicit runtime consumer over that verdict, `thread/epiphany/reorientResult` reads the launched worker output back as a reviewable finding without mutation or promotion, `thread/epiphany/reorientAccept` explicitly banks completed findings into accepted observation/evidence plus optional scratch/checkpoint state, and `thread/epiphany/crrc` recommends the next explicit CRRC action without launching, accepting, compacting, scheduling, or mutating.
|
||||
- Durable in-flight investigation checkpointing is now landed in authoritative typed state, writable through `thread/epiphany/update` or accepted `thread/epiphany/promote`, rendered into the prompt, and reflected through scene/context.
|
||||
- The repo is an Epiphany fork of Codex, not a Codex preset.
|
||||
- `vendor/codex` is tracked directly, not a submodule.
|
||||
|
|
@ -66,6 +66,7 @@ The current spine:
|
|||
- bounded reorient-guided worker launch through `thread/epiphany/reorientLaunch`
|
||||
- read-only reorient-worker result read-back through `thread/epiphany/reorientResult`
|
||||
- explicit reorient-worker finding acceptance through `thread/epiphany/reorientAccept`
|
||||
- read-only CRRC coordinator recommendation through `thread/epiphany/crrc`
|
||||
- thin launcher metadata in durable `jobBindings`
|
||||
- live bound-job progress notification through `thread/epiphany/jobsUpdated`
|
||||
- read-only compact reflection through `thread/epiphany/scene`
|
||||
|
|
@ -74,6 +75,7 @@ The current spine:
|
|||
- read-only targeted state-shard reflection through `thread/epiphany/context`
|
||||
- read-only context-pressure reflection through `thread/epiphany/pressure`
|
||||
- read-only CRRC reorientation policy through `thread/epiphany/reorient`
|
||||
- read-only CRRC next-action recommendation through `thread/epiphany/crrc`
|
||||
- durable investigation checkpoint packet through typed state, prompt, scene, and context
|
||||
- live scene app-server smoke through `tools/epiphany_phase6_scene_smoke.py`
|
||||
- live jobs app-server smoke through `tools/epiphany_phase6_jobs_smoke.py`
|
||||
|
|
@ -99,6 +101,7 @@ The exact current control flow is documented in
|
|||
- `thread/epiphany/context` is read-only.
|
||||
- `thread/epiphany/pressure` is read-only.
|
||||
- `thread/epiphany/reorient` is read-only.
|
||||
- `thread/epiphany/crrc` is read-only.
|
||||
- `thread/epiphany/reorientResult` is read-only.
|
||||
- Durable typed state writes go through `thread/epiphany/update`, accepted `thread/epiphany/promote`, `thread/epiphany/reorientAccept`, or the bounded `thread/epiphany/jobLaunch`, `thread/epiphany/jobInterrupt`, and `thread/epiphany/reorientLaunch` authority surfaces when they mutate `jobBindings`.
|
||||
- `thread/epiphany/index` writes the retrieval catalog, not durable Epiphany understanding.
|
||||
|
|
@ -167,6 +170,10 @@ For the bounded reorient-guided worker launch surface, run:
|
|||
& 'C:\Users\Meta\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe' '.\tools\epiphany_phase6_reorient_launch_smoke.py'
|
||||
```
|
||||
|
||||
The same smoke now also covers the read-only `thread/epiphany/crrc`
|
||||
coordinator recommendation over continue, wait, accept, interrupt, and relaunch
|
||||
states.
|
||||
|
||||
For Codex Rust work on this Windows machine:
|
||||
|
||||
```powershell
|
||||
|
|
@ -228,20 +235,21 @@ The bounded CRRC coordination/policy layer is now also landed as read-only
|
|||
watcher, and investigation-checkpoint signals to decide whether a checkpoint
|
||||
still deserves `resume` or has to admit `regather`.
|
||||
|
||||
Also keep the guardrail in mind: a read-only reorientation verdict is still not
|
||||
automatic CRRC. Runtime coordination and next-action execution are still future
|
||||
work even though read-only job ownership/progress reflection now has a real
|
||||
runtime seam, the thin launcher boundary is landed, and one explicit
|
||||
reorient-guided launch surface can now consume the verdict on purpose.
|
||||
Also keep the guardrail in mind: a read-only reorientation verdict and read-only
|
||||
CRRC recommendation are still not automatic CRRC execution. Runtime action is
|
||||
still explicit even though read-only job ownership/progress reflection now has a
|
||||
real runtime seam, the thin launcher boundary is landed, and one explicit
|
||||
reorient-guided launch surface can consume the verdict on purpose.
|
||||
|
||||
When the user asks to continue, the next likely organ is bounded CRRC
|
||||
coordination over the landed pressure, verdict, launch, result, and accept
|
||||
loop. Keep it explicit and narrow; do not build a broad hidden scheduler.
|
||||
When the user asks to continue, the next likely organ is a minimal dogfood-facing
|
||||
operator view over the landed scene, pressure, reorient, jobs, result, and CRRC
|
||||
recommendation loop. Keep it explicit and narrow; do not build a broad hidden
|
||||
scheduler or GUI-as-source-of-truth.
|
||||
|
||||
Live `thread/epiphany/scene`, `thread/epiphany/jobs`,
|
||||
`thread/epiphany/freshness`, `thread/epiphany/context`,
|
||||
`thread/epiphany/pressure`, and `thread/epiphany/reorient` smokes are now
|
||||
guardrails, not the next organs.
|
||||
`thread/epiphany/pressure`, `thread/epiphany/reorient`, and
|
||||
`thread/epiphany/crrc` smokes are now guardrails, not the next organs.
|
||||
|
||||
## Not Yet
|
||||
|
||||
|
|
@ -249,7 +257,7 @@ guardrails, not the next organs.
|
|||
- automatic observation promotion
|
||||
- specialist-agent scheduling
|
||||
- GUI-as-source-of-truth
|
||||
- automatic runtime CRRC coordinator acting on the landed reorientation verdict and launch/read-back path
|
||||
- automatic runtime CRRC execution acting on the landed recommendation/verdict and launch/read-back path
|
||||
- Epiphany-owned long-running job execution beyond the current runtime `agent_jobs` seam
|
||||
- broad event stream beyond the landed state update notification
|
||||
|
||||
|
|
|
|||
Reference in a new issue