15 KiB
Perfect Machine Audit Roadmap
Updated: 2026-07-12
Objective
Prepare Epiphany as a coherent organism whose repository access, evidence, projection, public speech, action, verification, continuity, durable state, runtime physiology, and inspection surfaces have one visible owner each.
This is a live authority audit. Historical implementation scars belong in git, distilled evidence, or archived notes. A green local test proves only the seam it actually observes.
Authority Map
| Faculty | Owner | Inputs | Outputs | Current proof | Live gap |
|---|---|---|---|---|---|
| Self | native coordinator and repo-work scheduler | typed state, job/result receipts, current route pressure | bounded launch/routing decisions | coordinator acceptance tests; repo-work scheduler authority tests | heartbeat is not yet an always-on Idunn-owned process |
| Substrate Gate | substrate_gate |
scoped read/mutation request | access grant, refusal, snapshot, mutation receipt | Research launch/acceptance and Hands gate proofs | audit remaining utility/bridge substrate touches for bypasses |
| Eyes | eyes_gateway |
inspected source under a Substrate Gate grant | evidence packet or refusal | Research acceptance proof profile | public/foreign Verse adoption still needs a full live Eyes-to-Mind proof |
| Imagination | planning and Persona projector boundaries | typed project/person state and candidate futures | plans, projections, consensus candidates | planning/consensus smokes and Persona projector tests | Persona projector/interpreter parity with the current Void reference needs a fresh audit |
| Persona | Persona turn and public mouth edges | projected context plus visible conversation | natural speech candidate and speech audit | Persona Discord/Reddit/Bifrost smokes | Aquarium-native conversational inspection remains incomplete |
| Hands | hands_gateway and repo-work execution |
approved intent, path scope, Substrate Gate grant | patch, command, commit, PR, rollback receipts | real repo-work execution/closure and Hands receipt-chain smokes | search for non-repo-work actuators that still bypass the chain |
| Soul | soul_gateway and verification phase |
Hands consequence receipts and changed body | verdict/invariant/regression receipts | live repo-work Soul phase and acceptance tests | unify remaining verifier-specific projections under narrow receipt queries |
| Modeling | typed repo-work Modeling route and model runtime | immutable Soul-verified request selected by current generation | immutable finding | generation-zero/generation-one runtime, Mind revision, Idunn launch, and admission proofs | no known authority split in the repo-work path |
| Mind | canonical state transaction and gateway reviews | bounded effect proposal plus required organ proofs | durable state and commit receipt | one canonical writer/store; atomic coordinator and repo-map admission proofs | audit other state families for pre-transaction legacy writers |
| Continuity | continuity contracts plus CRRC/stale-turn repair | pressure, checkpoint, sleep, and stale active state | checkpoint, recovery, sleep-distillation, stale-turn receipts | reorient acceptance and heartbeat stale-repair tests | sleep consolidation is callable, not continuously supervised physiology |
| Nervous system | heartbeat state, runtime spine, Idunn, CultMesh/CultNet | pressure, pending turns, daemon/runtime state | scheduling, lifecycle, telemetry, interrupts | typed heartbeat pump/routine, runtime-spine jobs, Idunn service receipts | the heartbeat loop is still an attached PowerShell vigil rather than a native supervised daemon |
| Body | repository, Rust binaries, CultCache/CultMesh stores, model transport | typed commands and granted external authority | real effects and inspectable artifacts | focused smokes and live repo work | continue cutting whole-context queries and compatibility-shaped native artifacts |
Structural Invariants
- Self routes; it does not author specialist findings or admit durable state.
- Substrate Gate owns substrate permission. Eyes owns evidence promotion.
- Hands alone changes the repository; Soul alone calls the consequence verified; Modeling updates the machine model after Soul.
- Mind is the only durable-state admission owner. Reviews, state mutation, and commit witnesses share the canonical transaction boundary where atomicity is required.
- Immutable Modeling findings never change. Mind may advance one stable typed route to a new generation; stale generations cannot close or regain current authority.
- Idunn owns process and daemon lifecycle. Self may request a launch but may not spawn, repair, or silently replace the child.
- CultCache documents are state, CultMesh is the local state/discovery substrate, CultNet is the wire, and Eve/CultUI is the interface projection. JSON is display or xenos-boundary cargo, not internal authority.
- Aquarium and other renderers inspect typed owners. They do not rebuild a second route graph or dashboard-shaped truth.
- Pending turns freeze repeat scheduling. Cooldown begins after completion. Stale turns require Continuity evidence, not timer-shaped amnesia.
- Public connection preserves consent, identity, permission, provenance, and private-state seals at the actual mouth edge.
Evidence Ledger
Proven executable chains
- Research: Substrate Gate grant -> Eyes packet -> Mind admission.
- Implementation: scoped Hands intent/review -> patch/command/commit receipts.
- Verification: Hands consequence -> Soul verdict -> Modeling request.
- Repo map: immutable Modeling finding -> current typed route -> Mind/map transaction -> Bifrost publication gate.
- Retry: runtime-authored non-passing generation zero -> explicit Mind review -> generation-one route -> consumer schema preflight -> Idunn lifecycle receipt -> runtime-authored passing finding -> current-generation admission.
- Recovery: reorient launch -> Continuity recovery receipt -> Mind admission.
- Public crossing: Persona speech audit -> Bifrost/Heimdall authority checks -> governed receipt or sealed refusal.
Proven negative boundaries
- Scheduler cannot author Modeling findings or impersonate Mind admission.
- CLI cannot counterfeit a runtime-authored Modeling finding.
- Non-passing and stale-generation findings cannot enter the repo map.
- Passing findings cannot be revised into retries.
epiphany-workcannot spawn the model child; Idunn owns process launch.- Consumer schema preflight happens before the runtime job is opened.
- Extinct Codex Epiphany DTO/route/bridge paths cannot write native state.
Current Highest-Priority Gap: Native Heartbeat Daemon
Current mechanism
epiphany-heartbeat-store owns typed tick, pump, complete,
repair-stale, routine, and status operations. It already enforces pending
turn freeze, completion-gated cooldown, adaptive pacing, swarm brakes, stale
turn repair, rumination, sleep, memory resonance, and dream maintenance.
The first native loop is landed as epiphany-heartbeat-store serve. It reuses
the existing routine state owner, writes per-pulse artifact directories, emits
compact sealed pulse/closure receipts, refuses a zero interval, and supports
bounded clean shutdown for verification. It does not spawn or own child
lifecycle. The old attached PowerShell rumination vigil has been deleted; it no
longer owns timing, loop survival, or cycle status.
Intended change
The bounded Idunn launch boundary is proven: the native loop survives brake
refusals, resumes from the same persisted store, and can be launched again by
Idunn without duplicate pending turns. The heartbeat binary owns pulse timing
and typed heartbeat receipts. Idunn owns child launch, stdout/stderr artifacts,
and lifecycle receipts. Self remains only the routing organ consuming heartbeat
pressure. Existing epiphany.cultmesh.daemon_restart_policy is not the right
owner for the remaining step: it is keyed to standing topology daemons and
their liveness status. The heartbeat loop is an Idunn-managed child service.
The missing owner is a typed managed-service desired-state policy keyed by
service id, plus compact operator readback; do not forge an eighth standing
daemon to reuse the daemon policy table.
That desired-state document is now landed as
epiphany.cultmesh.managed_service_policy.v0. Idunn can write it from the same
service command/args/cwd and sealed log refs used by lifecycle launch, and can
read it beside the latest lifecycle receipt. Readback explicitly reports
process observation as unknown until reconciliation probes reality; a past
launched receipt is not allowed to impersonate a living process.
Managed-service reconciliation is now implemented with a native platform PID
probe (OpenProcess/GetExitCodeProcess on Windows and kill(pid, 0) on
Unix). It honors enabled/restart mode/cooldown, observes alive services without
duplicating them, and delegates dead/missing restarts to service-launch.
Launch receipts now include an attempt timestamp so restart history is
immutable instead of overwriting one service/action key. Live heartbeat proof
launched, observed alive, simulated a crash, relaunched with a distinct PID and
receipt, then observed the replacement alive on the same heartbeat store.
Owner
- Heartbeat scheduler: when a pulse is due and which bounded routine/pump action runs.
- Idunn: whether the heartbeat process is running and how it restarts.
- Continuity: repair of stale active turns and sleep/compaction evidence.
- Mind: admission of durable self/memory changes proposed by heartbeat work.
Inputs
- heartbeat CultCache store;
- agent-memory store;
- local Verse store and swarm brake;
- bounded interval, maximum iterations, and shutdown signal;
- current pressure and pending-turn state.
Outputs
- typed heartbeat selection/completion/routine receipts;
- compact status/telemetry projection;
- Idunn service lifecycle receipt and sealed stdout/stderr artifacts;
- explicit clean shutdown or failure status.
Durable service policy requirement
Add one typed Idunn managed-service policy with owner Idunn and key
service_id. It may read the desired command/args/cwd, enabled state, restart
mode, cooldown/backoff, expected heartbeat store, stdout/stderr artifact refs,
and latest lifecycle receipt. It emits desired-state readback and delegates
every actual start/restart to the existing service lifecycle launch primitive.
It does not own heartbeat scheduling state, daemon topology, or routine output.
The persistence/publication half is complete. Next add reconciliation that
probes the policy's last PID or an equivalent platform process witness, applies
enabled/restart-mode/cooldown intent, and delegates any restart to the existing
service lifecycle launch primitive.
Reconciliation is complete as an explicit Idunn command. The remaining
unattended boundary is to include managed-service reconciliation in Idunn's
native serve scheduler and replace service-launch's full local-Verse context
load with the narrow swarm-brake query it actually needs.
That boundary is now complete. Service plan/launch use the narrow typed brake
loader and no longer reseed the full local Verse. A dedicated
managed-service-serve loop enumerates only managed-service policies and runs
their reconcile reflex independently of standing-daemon topology. Live proof
observed a heartbeat alive without duplicate launch, killed it, and the next
Idunn pulse restarted it from the same store with a distinct PID and immutable
lifecycle receipt. The next gap is inspectability: publish compact managed
service desired/observed rows through provider-owned Eve without opening command
payloads or routine artifacts.
The first sight organ is landed as epiphany-verse-query managed-services. Native process observation now lives in a shared
core module used by both Idunn reconciliation and provider sight projection. Rows show
desired enabled/restart mode, observed alive/dead/missing, PID, latest immutable
lifecycle receipt, compact last heartbeat pulse status/iteration/artifact, and
the private-state seal. Live proof transitioned the same row from READY/alive
to ATTN/dead after a forced process death without exposing command args or
routine payloads. Next lower this typed row family into the main provider-owned Eve
composition graph.
Forbidden writers
- PowerShell wall-clock loops deciding heartbeat truth;
- Self spawning or restarting the heartbeat process;
- a renderer owning scheduling state;
- sleep directly mutating durable identity without Continuity/Mind review;
- overlapping pulses while a previous pulse remains active.
Shared paths
Manual tick/pump/routine, daemon pulses, recovery after restart, swarm
brake refusal, and shutdown must call the same existing store primitives. The
daemon is orchestration around those owners, not a second scheduler.
Cut line
The attached PowerShell rumination vigil is deleted. Do not preserve its timing, status, or cycle-directory conventions as runtime authority.
Verification
- unit test:
serverefuses zero/unsafe interval and overlapping active work; - bounded smoke: two iterations use the same typed routine/pump primitives and stop cleanly;
- restart smoke: Idunn lifecycle receipt proves child ownership and a second process resumes from persisted heartbeat state without duplicate pending turns;
- brake smoke: an engaged swarm brake prevents mutation while the daemon stays observable;
- negative source check: the native heartbeat binary contains no child spawn or second state writer;
- operator readback: status names heartbeat owner, Idunn lifecycle owner, last completed pulse, next due pulse, active turn, and private-state seal.
Subsequent Audits
- Narrow the remaining
query_epiphany_local_verse_contextconsumers. Daemon and operator commands should load only the typed families they own or project. - Re-audit Persona Projector -> Persona -> Mind Interpreter against current Void behavior and public permission boundaries.
- Make Aquarium lower the organ graph, contract catalog, and per-turn receipt chains from CultMesh/Eve instead of hard-coded routes.
- Audit non-repo-work actuators and legacy state families for bypasses around Substrate Gate, Hands, Soul, or the canonical Mind transaction.
- Finish Codex starvation: retain only authenticated model transport and explicitly quarantined compatibility edges.
Perfect Machine Target
Self routes.
Substrate Gate grants substrate access.
Eyes certifies inspected evidence.
Imagination projects possible futures and lived context.
Persona speaks as a person.
Hands changes the world.
Soul verifies consequence and invariant.
Modeling updates the machine model from verified consequence.
Continuity preserves coherence across sleep, interruption, and rupture.
Mind admits durable state.
Idunn keeps the body alive.
CultMesh/CultNet carry typed signal.
CultCache preserves typed memory.
Eve/Aquarium make the organism inspectable without becoming its truth.