diff --git a/.gitignore b/.gitignore index 727859f8..25afcfb3 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ apps/epiphany-gui/src-tauri/target/ .epiphany-character-loop/ .epiphany-rumination/ .epiphany-run/ +.epiphany-bootstrap/ .epiphany-status/ .voidbot/ state/agent-heartbeats.json diff --git a/epiphany-core/src/bin/epiphany-verse-query.rs b/epiphany-core/src/bin/epiphany-verse-query.rs index f017f2d0..c5380880 100644 --- a/epiphany-core/src/bin/epiphany-verse-query.rs +++ b/epiphany-core/src/bin/epiphany-verse-query.rs @@ -516,7 +516,7 @@ fn run_cli() -> Result<()> { args.requesting_agent_id.as_deref(), args.reason.as_deref(), &created_at_utc, - true, + false, )?; println!( "{}", @@ -7339,7 +7339,7 @@ mod swarm_brake_command_tests { "epiphany-yggdrasil", Some("engaged"), Some(EPIPHANY_CANONICAL_SWARM_BRAKE_ID), - Some("idunn"), + Some("Idunn"), Some("deployment sleep"), "2026-07-19T00:00:00Z", true, @@ -7374,6 +7374,32 @@ mod swarm_brake_command_tests { Ok(()) } + #[test] + fn ordinary_actor_can_engage_an_existing_canonical_released_brake() -> Result<()> { + let temp = tempfile::tempdir()?; + let store = temp.path().join("verse.cc"); + let released = default_epiphany_cultmesh_swarm_brake("2026-08-05T00:00:00Z"); + write_epiphany_cultmesh_swarm_brake(&store, "epiphany-starfire", released)?; + + let engaged = apply_explicit_swarm_brake_set( + &store, + "epiphany-starfire", + Some("engaged"), + Some(EPIPHANY_CANONICAL_SWARM_BRAKE_ID), + Some("codex-root"), + Some("cold-start verification"), + "2026-08-05T00:01:00Z", + false, + )?; + + assert_eq!(engaged.status, "engaged"); + assert_eq!( + engaged.operator_agent_id, + EPIPHANY_CANONICAL_SWARM_BRAKE_OWNER + ); + Ok(()) + } + #[test] fn release_cannot_touch_foreign_deployment_brake() -> Result<()> { let temp = tempfile::tempdir()?; diff --git a/notes/fresh-workspace-handoff.md b/notes/fresh-workspace-handoff.md index 8f78a9c9..75ae94fb 100644 --- a/notes/fresh-workspace-handoff.md +++ b/notes/fresh-workspace-handoff.md @@ -9,20 +9,21 @@ OpenAI-compatible authentication and model-transport boundary. The local `main` branch is clean and synchronized with its upstream. -Current host reality: +Current host authority: -- The intended bare-metal body at `94.130.223.131` is unreachable on ports 22, - 80, and 443 from both the operator workstation and the live production VM. -- DNS, SSH, public applications, and WireGuard currently terminate on - `94.130.75.184`. -- That reachable fallback is a 2 GB VM with 15 GB free. It runs Bifrost and the - public application stack, but has no Idunn or Epiphany service body. -- The operator workstation WireGuard service has been restored, but its - `10.77.0.1` peer is also the fallback VM. -- The Hetzner console is not authenticated in the available browser session. +- The bare-metal replacement is retired and must not steer deployment. +- The small Yggdrasil at `94.130.75.184` is canonical for Bifrost, DNS, SSH, + WireGuard, and public applications. +- Starfire is authorized to host Epiphany cognition while resource demand is + measured. +- Starfire runtime identity is `epiphany-starfire`; its local Verse is + bootstrapped and its canonical swarm brake is engaged. +- Native status completes and reports a cold runtime that needs source regather. +- Resident physiology and the governed Starfire-to-Yggdrasil crossing remain + to be started and proved. -No deployment, cognition release, broad Wake, or reboot is authorized until the -deployment Body is recovered or deliberately reassigned. +No cognition release, broad Wake, or host reboot is authorized during the +braked startup proof. ## Authority map @@ -41,11 +42,10 @@ deployment Body is recovered or deliberately reassigned. ## Next action -Sign in to the Hetzner console and inspect the power, rescue, and network state -of `94.130.223.131`. Recover it if it remains the intended canonical Body. If it -cannot be recovered, explicitly decide whether to adopt the constrained fallback -VM before installing Idunn or Epiphany there. Once the Body is settled, use the -canonical Idunn deployment path and verify sustained braked readiness. +Package the exact clean Starfire source, initialize heartbeat and resident Self +stores beneath the engaged brake, start supervised resident physiology, and +prove stable readiness. Then connect the existing Yggdrasil Bifrost transport +without moving cognition or state-admission authority off Starfire. ## Immediate Re-entry Instruction diff --git a/state/agents.msgpack b/state/agents.msgpack index 4fa10941..1e31f9e0 100644 Binary files a/state/agents.msgpack and b/state/agents.msgpack differ diff --git a/state/ledgers.msgpack b/state/ledgers.msgpack index 67bdcf36..7dff42bb 100644 Binary files a/state/ledgers.msgpack and b/state/ledgers.msgpack differ diff --git a/state/map.yaml b/state/map.yaml index 84ca4321..2a2f3dc3 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -4,7 +4,7 @@ experiment: purpose: Native, inspectable agent organism with typed state and explicit organ authority. objective: - current: Restore an authoritative Yggdrasil body, deploy Epiphany through Idunn, and prove sustained braked readiness before one bounded Persona conversation. + current: Run Epiphany's cognition body on Starfire, keep Bifrost crossings on the adopted small Yggdrasil, and prove sustained braked readiness before one bounded Persona conversation. architecture: body: Repository, runtime, service processes, stores, interfaces, and deployment substrate. @@ -34,28 +34,29 @@ invariants: - Evidence and git retain history; this map retains only state that changes future decisions. current_status: - summary: Epiphany is a native Rust/CultCache/CultMesh/CultNet organism, but no reachable host currently runs its canonical service body. The intended bare-metal Yggdrasil at 94.130.223.131 is unreachable on SSH, HTTP, and HTTPS from both the operator workstation and the live production VM. DNS, public applications, SSH, and WireGuard currently terminate on 94.130.75.184, a 2 GB fallback VM that runs Bifrost and the public stack but has no Idunn or Epiphany services. Provider-console inspection requires operator login. Choosing or recovering the deployment Body now precedes every Idunn request or grant. + summary: The retired bare-metal host is gone. The small Yggdrasil at 94.130.75.184 is the canonical public/crossing body and continues to own Bifrost, DNS, SSH, WireGuard, and public applications. Starfire is the authorized cognition/runtime body while Epiphany's RAM needs are measured. Starfire now has runtime identity epiphany-starfire, a bootstrapped local Verse, and an engaged canonical swarm brake. Native status completes against the cold runtime and correctly requests source regather before work. Resident physiology and the Yggdrasil Bifrost crossing are not yet running end to end. operational_state: - local_worktree: clean + local_worktree: deployment_changes_in_progress operator_wireguard: restored - intended_bare_metal_body: unreachable - live_fallback_body: production_apps_active_without_idunn_or_epiphany - deployment_brake: unavailable_with_unreachable_body - idunn: not_present_on_reachable_body - bifrost: active_on_fallback_body - epiphany_services: not_present_on_reachable_body - unresolved_authority: Decide whether 94.130.223.131 remains the canonical Body and must be recovered through Hetzner, or whether 94.130.75.184 is deliberately adopted and rebuilt as the canonical deployment Body. - next_action: Sign in to the Hetzner console and inspect the power, rescue, and network state of 94.130.223.131; if it cannot be recovered, explicitly authorize adoption of the constrained fallback VM before installing Idunn or Epiphany there. + yggdrasil: canonical_small_public_crossing_body + starfire: authorized_epiphany_cognition_body + starfire_runtime_identity: epiphany-starfire + starfire_swarm_brake: canonical_engaged + starfire_native_status: cold_needs_regather + bifrost: active_on_yggdrasil + resident_physiology: not_started + unresolved_authority: Define and prove the split-host provider/health boundary so Starfire cognition and Yggdrasil Bifrost transport remain separate owners. + next_action: Package the exact clean Starfire release, initialize heartbeat and resident Self stores under the engaged brake, start supervised physiology, and verify sustained readiness before wiring Bifrost transport. active_subgoals: - - Recover provider sight or obtain an explicit deployment-Body decision. - - Deploy Epiphany only after the Body owner is settled, then prove sustained braked readiness. + - Start Starfire resident physiology from an authenticated packaged release under the engaged brake. + - Connect Yggdrasil Bifrost as a governed crossing without moving Persona cognition authority. forbidden_actions: - Do not issue a speculative deployment grant. - Do not broadly Wake the swarm. - Do not reboot Yggdrasil as part of diagnosis. - - Do not install the control plane on the fallback VM without explicitly adopting that constrained Body. + - Do not move RAM-heavy cognition onto the small Yggdrasil until measured demand justifies growing it. - Do not treat stored status, process liveness, or an old receipt as current authority. memory_policy: diff --git a/tools/epiphany_local_run.ps1 b/tools/epiphany_local_run.ps1 index c3111eb3..bbcfbb4c 100644 --- a/tools/epiphany_local_run.ps1 +++ b/tools/epiphany_local_run.ps1 @@ -595,7 +595,6 @@ if ($Mode -eq "status" -or $Mode -eq "mvp") { if ($Mode -eq "status") { $resultPath = $statusJson $statusArgs = @( - "--source", "native", "--cwd", $Workspace, "--store", $runtimeStore, "--json",