diff --git a/epiphany-core/src/bin/epiphany-mvp-coordinator.rs b/epiphany-core/src/bin/epiphany-mvp-coordinator.rs index a92e7fba..87008581 100644 --- a/epiphany-core/src/bin/epiphany-mvp-coordinator.rs +++ b/epiphany-core/src/bin/epiphany-mvp-coordinator.rs @@ -1178,9 +1178,21 @@ fn record_hands_implementation_gate( requested_at: requested_at.clone(), contract: "Coordinator continuation becomes a typed Hands action intent before any file edit, command, or commit may count as implementation evidence." .to_string(), - frontier_route_id: String::new(), - plan_candidate_sha256: String::new(), - plan_action: String::new(), + frontier_route_id: route + .adopted_plan + .as_ref() + .map(|_| route.route_id.clone()) + .unwrap_or_default(), + plan_candidate_sha256: route + .adopted_plan + .as_ref() + .map(|plan| plan.candidate_sha256.clone()) + .unwrap_or_default(), + plan_action: route + .adopted_plan + .as_ref() + .map(|plan| plan.action.clone()) + .unwrap_or_default(), }; put_hands_action_intent(runtime_store, &intent)?; @@ -2346,6 +2358,12 @@ mod tests { assert_eq!(grant.receipt_id, intent.substrate_gate_grant_receipt_id); assert_eq!(intent.intent_id, review.intent_id); assert_eq!(intent.requested_action, "continueImplementation"); + assert_eq!( + Some(intent.frontier_route_id.as_str()), + gate["routeId"].as_str() + ); + assert_eq!(intent.plan_candidate_sha256, "coordinator-plan-hash-test"); + assert_eq!(intent.plan_action, "Implement the bounded coordinator gate test."); assert_eq!( gate.pointer("/recordPassCommand/executable") .and_then(serde_json::Value::as_str), @@ -2363,7 +2381,7 @@ mod tests { } fn seed_hands_frontier(store: &Path) -> Result<()> { - let item = epiphany_core::RepoFrontierItem { + let mut item = epiphany_core::RepoFrontierItem { id: "coordinator-hands-frontier-test".to_string(), migration_body: "Exercise the coordinator-owned Hands gate.".to_string(), question: "Does Self route the admitted implementation frontier?".to_string(), @@ -2375,6 +2393,20 @@ mod tests { status: epiphany_core::RepoFrontierStatus::Active, ..Default::default() }; + item.adopted_plan = Some(epiphany_core::RepoFrontierAdoptedPlan { + planning_request_id: "coordinator-planning-request-test".to_string(), + result_id: "coordinator-imagination-result-test".to_string(), + job_id: "coordinator-imagination-job-test".to_string(), + candidate_id: "coordinator-plan-candidate-test".to_string(), + candidate_sha256: "coordinator-plan-hash-test".to_string(), + safe_paths: item.source_scope.clone(), + action: "Implement the bounded coordinator gate test.".to_string(), + command: "cargo test --bin epiphany-mvp-coordinator".to_string(), + checks: vec!["focused coordinator test passes".to_string()], + stop_conditions: vec!["authority scope changes".to_string()], + rollback_steps: vec!["revert the bounded change".to_string()], + commit_message: "Bind Hands intent to adopted plan".to_string(), + }); let mut model = epiphany_core::EpiphanyMemoryGraphSnapshot { schema_version: Some(epiphany_core::MEMORY_GRAPH_SCHEMA_VERSION.to_string()), graph_id: "mvp-coordinator-test-model".to_string(), diff --git a/notes/fresh-workspace-handoff.md b/notes/fresh-workspace-handoff.md index d8af8a85..42de51cc 100644 --- a/notes/fresh-workspace-handoff.md +++ b/notes/fresh-workspace-handoff.md @@ -1,55 +1,55 @@ # Fresh Workspace Handoff -## Current authority — 2026-08-07 canonical-organ cut +## Current authority — 2026-08-07 Hands binding cut The active branch is `codex/epiphany-shakedown-live`. Exact pushed commit -`872d8ad6188fdfe8afcf5d4e9dd65a791fa444f2` is authenticated and published as -`sha256-b97f457cfde1eea2b45464b3ca12e7cdba4cb13d4c1b261b20267e960e1a326e` +`4338b0331a374802c649aa2a647a9c39f9a9f92d` is authenticated and published as +`sha256-1023d71c625706694cc67e034172b9f33ea331594924c5e7b786d0818f077a21` with witness -`sha256-40d6bda4d82a2da67614722a52810078abc37d2d5bfe60330b479fa611f726ab`. -The exact package contains 21 binaries and exposes no private state. +`sha256-0d351a7001c01a46b46207a9364e6221325d3811cd2cccfd72786430115282be`. +The package contains 21 binaries and exposes no private state. -Fresh v25 lives at -`F:\Projects\.epiphany-runtime\shakedown\live-20260807-v25`. It was cold-started -from the packaged repository-body tool at Git head `872d8ad6`; only canonical -`agents.cc` crossed from v24. Its repository Body is generation 1, its local -Verse was seeded fresh, and the exact release was published into that Verse. +Fresh v26 lives at +`F:\Projects\.epiphany-runtime\shakedown\live-20260807-v26`. It was cold-started +from the packaged repository-body tool at Git head `4338b033`; only canonical +`agents.cc` crossed from v25. The exact release was published into its fresh +local Verse. -Proposal `shakedown-v25-continuity-imagination-r1` selected request -`repo-frontier-proposal-modeling-e5e04c43b3d255baa8ba2f3778e2865b8aec275d8249dca0dfa3ace034b6d80c`. -Packaged Self derived `launchModeling` without overrides. Modeling job -`5af5100d-e097-4928-9bd3-2ba60a2fbbb3` completed, and Mind accepted its active -frontier with canonical sorted unique source scope at thread revision 3. +Proposal `shakedown-v26-continuity-imagination-r1` was selected without a +routing override. Packaged Self derived `launchModeling`; job +`6683204c-d2d5-46f2-a518-c355268afcf1` completed and was accepted. Its exact +canonical Imagination frontier became eligible, Self launched Imagination job +`b2c01a84-b006-4483-afd1-1dc4af4cebf1`, and dedicated Mind job +`7daa2630-0ea2-4adf-b17a-24f0c3c7037e` returned `adopt`. -The worker emitted `recommended_next_organ=imagination` in lowercase. Proposal -admission accepted the arbitrary non-empty string, while Self's planning -selector owns the exact canonical identity `Imagination`. Typed eligibility -therefore reported admission count one but zero candidates, and Self returned -`awaitFrontierProposal`. v25 is insert-only evidence; do not mutate or replay it. +The decision commit admitted the plan and selected the resulting Hands route. +The next gate failed with `repo frontier Hands authority chain violates its full +authority contract`. The validator is correct: `record_hands_implementation_gate` +persisted empty `frontier_route_id`, `plan_candidate_sha256`, and `plan_action` +even though the selected route carried an adopted plan. v26 is failure evidence; +do not mutate or replay it. -The local cut now makes proposal admission accept only exact routeable organ -identities `Hands`, `Eyes`, or `Imagination`. Modeling prompt and launch context -state that exact vocabulary. Planning eligibility exposes -`recommendedNextOrganValid` and includes case-mismatched Imagination-shaped -legacy documents as ineligible diagnostics; it does not case-fold them into -authority. Focused hostile-admission, challenge/eligibility, canonical launch -context, and MVP status tests pass. +The local cut derives those three intent fields from the selected route's +adopted plan. The existing no-plan path remains empty by derivation. The focused +regression test now seeds an adopted plan and proves persisted intent identity; +all 14 coordinator binary tests pass. ## Next action -Commit and push the canonical-organ cut, then package and publish that exact -commit. Cold-start v26. Prove the complete native path without overrides: +Commit and push the Hands binding cut, then package and publish that exact +commit. Preserve v26 and cold-start a clean generation. Replay the native path +without overrides and prove: -1. Self derives proposal-bound Modeling. -2. Mind admits one active frontier with sorted source scope and exact - `recommended_next_organ=Imagination`. -3. Self selects and launches Imagination. -4. Imagination emits one typed plan. -5. Dedicated Mind accepts, holds, or refuses it through the typed lifecycle. -6. Inspect the next typed action rather than assuming Hands authority. +1. Self derives proposal-bound Modeling and canonical Imagination. +2. Dedicated Mind adopts the typed candidate. +3. Hands intent exactly echoes route id, candidate digest, and plan action. +4. RepoFrontierHandsAuthority binds route, model, plan, intent, review, grant, + and sorted scope. +5. Execute the bounded Continuity crash/restart/closure proof and capture Soul + evidence rather than treating the gate as completion. -After that proof, continue the actual readiness campaign. Persona public -consequence, Continuity crash/restart/closure, retention bounds, long-duration -resource behavior, and Linux/Yggdrasil cognition remain open. Yggdrasil is the -small canonical public crossing Body; Starfire remains the temporary cognition -and release forge until measured runtime demand justifies resizing Yggdrasil. +After that, continue the actual readiness campaign. Persona public consequence, +retention bounds, long-duration resource behavior, and Linux/Yggdrasil cognition +remain open. Yggdrasil is the small canonical public crossing Body; Starfire +remains the temporary cognition and release forge until measured runtime demand +justifies resizing Yggdrasil. diff --git a/state/ledgers.msgpack b/state/ledgers.msgpack index bc208265..d27ebe4c 100644 Binary files a/state/ledgers.msgpack and b/state/ledgers.msgpack differ diff --git a/state/map.yaml b/state/map.yaml index 471e2af3..4e665f49 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -34,15 +34,15 @@ invariants: - Evidence and git retain history; this map retains only state that changes future decisions. current_status: - summary: Epiphany is a supervised engineering alpha on Starfire, not deployment-ready. Exact 872d8ad6 is authenticated and published as sha256-b97f457c with witness sha256-40d6bda4. Clean live v25 proved packaged Self derives proposal Modeling without overrides and Mind admits active canonical sorted-unique source_scope. It then exposed the next admission/selection split: Modeling emitted lowercase recommended_next_organ=imagination, Mind admitted it, and Self's exact canonical Imagination selector correctly found no candidate. The local repair makes exact routeable organ identity a Mind admission invariant, tells Modeling the canonical Hands/Eyes/Imagination vocabulary, and exposes organ validity in typed planning eligibility. Focused hostile-admission, eligibility, launch-context, and MVP status tests pass. v25 is sealed evidence; a clean next generation must prove Modeling-to-Imagination-to-Mind after this repair is packaged. Persona consequence, Continuity execution, retention, long-duration pacing, and Linux/Yggdrasil cognition remain open. + summary: Epiphany is a supervised engineering alpha on Starfire, not deployment-ready. Exact pushed 4338b033 is authenticated and published as sha256-1023d71c with witness sha256-0d351a70. Clean v26 proved the native proposal chain through dedicated Mind without routing overrides: Self launched Modeling, Mind admitted its exact canonical Imagination frontier, Self launched Imagination, and dedicated Mind returned adopt. The subsequent Hands gate exposed a coordinator authority-binding defect: the persisted route carried an adopted plan, but record_hands_implementation_gate emitted empty route/plan fields, so the correct runtime validator refused the chain. The local cut derives the Hands intent's route id, candidate digest, and action from the adopted route; all 14 coordinator tests pass. v26 is preserved as failure evidence until the fixed commit is packaged and replayed in a clean generation. Persona consequence, Continuity execution, retention, long-duration pacing, and Linux/Yggdrasil cognition remain open. operational_state: - local_worktree: proposal_frontier_canonical_organ_invariant_repair_uncommitted + local_worktree: adopted_plan_hands_authority_binding_repair_uncommitted operator_wireguard: restored yggdrasil: canonical_small_public_crossing_body starfire: temporary_epiphany_cognition_body starfire_runtime_identity: epiphany-starfire starfire_swarm_brake: released - starfire_release: authenticated_872d8ad6_published_v25_modeling_route_proven + starfire_release: authenticated_4338b033_published_v26_native_mind_chain_proven starfire_repository_body: bound_and_observed starfire_verse_topology: bound_to_current_repository_body starfire_native_status: supervised_shakedown_active @@ -52,8 +52,8 @@ current_status: bifrost_feedback_crossing: authenticated_transport_only yggdrasil_epiphany_services: absent resident_physiology: heartbeat_and_self_running - unresolved_authority: v25 revision 3 contains one admitted active frontier whose lowercase recommended_next_organ makes it permanently invisible to Self's canonical Imagination selector. Insert-only proposal authority provides no coherent typed repair, so v25 must not be used to prove native Imagination. The local canonical-organ admission/context/eligibility repair is focused-test-proven but unpublished. Native Imagination live proof, Persona consequence, Continuity crash/restart/closure, retention, long-duration behavior, and Linux/Yggdrasil cognition remain open. - next_action: Commit, push, package, and publish the proposal-frontier canonical-organ invariant repair. Seal v25 as evidence, bootstrap a clean v26 runtime generation, and prove one exact packaged proposal-Modeling result is admitted active with canonical source_scope and recommended_next_organ=Imagination, selected by Self, launched through Imagination, and decided by dedicated Mind without overrides. + unresolved_authority: v26 committed the adopted plan and selected its Hands route, then failed before persisting RepoFrontierHandsAuthority because the coordinator's intent did not echo the route's adopted-plan identity. The local owner-aligned repair is test-proven but unpublished. A clean generation must prove the repaired route-to-intent-to-review-to-grant chain and then execute the bounded Continuity proof. Persona consequence, retention, long-duration behavior, and Linux/Yggdrasil cognition remain open. + next_action: Commit, push, package, and publish the adopted-plan Hands binding repair. Preserve v26 as evidence, cold-start a clean generation, replay native Modeling-to-Imagination-to-Mind, and prove the resulting Hands authority exactly binds route, model, adopted plan, intent, review, grant, and scope before executing the Continuity crash/restart/closure plan. active_subgoals: - Prove Persona, Self, Eyes, Modeling, Imagination, Hands, Soul, Mind, Continuity, and nervous-system behavior individually. @@ -63,13 +63,13 @@ active_subgoals: organ_readiness: persona: partial; authenticated feedback transport is live, but public cognition and speech consequence still need a fresh end-to-end proof. - self: partial; proposal recovery, Mind admission, Hands routing, Soul routing, verdict incorporation, proposal preemption, challenge-aware Eyes routing, in-process status ownership, and single-use Research-to-Modeling routing are live. Exact 872d8ad6 also proved native proposal-to-Modeling launch and active frontier admission; canonical organ identity still blocks packaged Imagination proof. + self: partial; proposal recovery, Mind admission, Hands routing, Soul routing, verdict incorporation, proposal preemption, challenge-aware Eyes routing, in-process status ownership, and single-use Research-to-Modeling routing are live. Exact 4338b033 proved native proposal Modeling, canonical Imagination selection, Imagination launch, and dedicated Mind decision without overrides; the downstream coordinator Hands binding still needs packaged proof. eyes: proven for one bounded challenged-claim circuit; exact 84f00929 launched Research and Mind accepted the first source-gap packet with typed evidence/checkpoint, exact 148d4527 accepted its causal reorientation, and exact 6f019cf8 proved downstream Modeling consumption. modeling: proven for the current bounded circuit; proposal-bound source inspection, Mind admission, exact routed identity preservation, and first-valid verdict incorporation completed without retry churn. Broader Body-map coverage remains open. - imagination: unproven live in the current campaign; the typed lifecycle and MVP route are locally implemented, while v25 exposed that recommended_next_organ identity was admitted as an arbitrary string even though Self routes exact canonical organ names. + imagination: proven for one bounded live circuit; exact 4338b033 selected the admitted canonical frontier, launched Imagination, persisted its typed candidate, and handed it to dedicated Mind without overrides. Broader option generation remains open. hands: proven for bounded consequences; native patch, command, commit, push, and typed receipts bind reviewed path ceilings to exact changed-path subsets. soul: proven for the current bounded consequence; the exact 2dd25341 release launched Soul, produced an accepted pass verdict grounded in focused and full-library receipts, and routed verdict incorporation. - mind: partial; RepoModel admission, thread-state admission, gateway review, state commit, and first-valid verdict incorporation are live; broader stale or overstated frontier correction remains open. + mind: partial; RepoModel admission, thread-state admission, gateway review, state commit, first-valid verdict incorporation, and dedicated frontier-plan adoption are live; broader stale or overstated frontier correction remains open. continuity: partial; heartbeat and resident Self survive sequential cycles, while restart, crash, reboot, closure, and retention remain open. nervous_system: partial; detached scheduling, runtime jobs, typed feedback, ordinary Windows coverage-store identity, and operator projection work; long-duration pressure and resource plateau remain open. Exact release packaging took about seventeen minutes and observed more than 3 GiB compiler working set, so Yggdrasil is not a release forge at its current 1.9 GiB RAM.