This repository has been archived on 2026-10-29. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
Epiphany/state/scratch.md
2026-07-16 04:21:06 +01:00

12 KiB

Scratch

This file is disposable working memory for the current bounded subgoal.

Current Subgoal

Make Body-bound workspace coverage operational without letting Qdrant, mutable model tags, process guesses, or service telemetry impersonate truth.

Landed checkpoint aa6b3efe proves sealed text/vector input validation, exact managed Qdrant metadata, whole-collection point/payload observation, and exact Body/plan/claim/prior-head terminal CAS. The following service work is still uncommitted and under hostile review.

Current authority map:

  • Repository Body CultCache owns source observation, obligation, plan, claim, attempt, receipt, and coverage head.
  • The dedicated workspace-coverage projector owns one authenticated execution incarnation. Its fixed supervisor policy derives only runtime store, Verse, interval, Qdrant endpoint, and Ollama tag. It cannot accept workspace, Body-store, collection, dimensions, or arbitrary command authority.
  • Qdrant is disposable projection. Ollama is an embedding actuator. Neither can mint coverage state.
  • A claim must bind executor incarnation and startup receipt. Unknown or malformed claim/attempt state refuses overwrite.
  • Recovery is intentionally absent. A newer launch plus ready heartbeat does not prove the prior owner dead. Add supervisor-issued typed termination/death evidence bound to the prior launch before any recovery CAS exists.

Soul blockers found 2026-07-15:

  1. Bind authenticated launch runtime id to the runtime Body route before any Body access. This hardening is now in the worktree.
  2. Observe and hash exact stored vectors, not only point IDs/payloads.
  3. Bind the plan to immutable Ollama model artifact digest, not mutable tag plus dimensions.
  4. Replace per-file full Body-store reloads with one authenticated read session and classify exact Current before rematerializing bytes.
  5. Give failed, fenced, and superseded claim collections an explicit retirement owner; claim/epoch isolation without GC leaks a collection per retry.
  6. Do not print raw chained backend/filesystem faults while claiming privateStateExposed=false; publish typed sanitized fault classes.

Local backend proof: Ollama is live at 127.0.0.1:11434 with qwen3-embedding:0.6b, digest ac6da0dfba84a81fdbfbaf330198c33cd77c4cdfc53e8bc50eb581914a15621d, 1024 dimensions. Docker container voidbot-qdrant uses Qdrant 1.17.1 but is stopped. The hostile proof fixes passed; a real ignored smoke started Qdrant, projected through Ollama, exact-scroll-verified payloads and vectors, classified the result Current, deleted its isolated collection, verified no coverage collection remained, and stopped Qdrant again.

Exact native process identity (2026-07-16)

The process-observation foundation now identifies a process incarnation by PID, native creation token, and canonical executable path. Windows compares identity through a held process handle before classifying it alive or exited; Toolhelp absence is distinct from access denial and query failure. Linux uses boot id, proc starttime, executable identity, and zombie state. Unsupported Unix targets refuse to pretend they have Linux /proc evidence.

The legacy PID-only projection is display-only and can emit only Alive or Missing; it cannot mint death evidence. Tests prove current-instance life, PID-incarnation replacement, and exact child exit. Next add enrolled OS-host identity, then reserved launch/heartbeat and immutable termination documents before any recovery CAS.

Enrolled host incarnation (2026-07-16)

The host root is now a dedicated non-workspace CultCache document with one immutable Ed25519 enrollment and a narrow signing handle. Existing, malformed, unprotectable, or binding-mismatched state fails closed; enrollment never silently regenerates identity. Windows stores it under LocalAppData, protects the seed with CurrentUser DPAPI, and labels its limited assurance honestly. Linux uses the XDG/home state root, 0700/0600 permissions and machine-id binding, explicitly labeled cloneable. This is enrolled OS-installation continuity, not a claim about physical chassis. Purpose-bound signature and immutable/fail- closed tests pass. The next cut is specialized reserved launch/heartbeat state.

Reserved managed-process authority map (2026-07-16)

Generic lifecycle and daemon-heartbeat documents are no longer acceptable owners for the reserved coverage projector. The replacement has three typed documents with separate authority:

  • Idunn's signed launch binds the exact current policy envelope, enrolled host record, proven boot, PID+creation-token+canonical executable, executable digest, provider incarnation, and an ephemeral provider public key.
  • The provider's signed heartbeat binds that exact launch envelope and repeats the host/boot/process tuple with monotonic per-launch sequence.
  • Idunn's immutable termination observation names the exact prior launch and last heartbeat and may record only exact exit, exact missing/replaced process on the same proven boot, or a different proven boot on the same enrolled host.

Termination must be persisted before replacement spawn. Replacement launch and signed ready heartbeat follow; only then may one Body CAS terminalize the old claim/attempt and acquire epoch+1. Generic lifecycle/heartbeat writers must reject reserved coverage identities after migration. Timeout, staleness, newer launch, Qdrant state, PID-only absence, inaccessible process, unknown boot, or host mismatch are never death evidence. The provider signing seed travels in one fixed-size binary frame over reserved-child stdin (Stdio::piped()), never argv/env/store/logs. The child requires exact frame length plus EOF, derives the public key, then waits for and authenticates the launch document before acting. Write or persistence failure kills and waits the child; all nonreserved service stdin is explicitly null. This uses Rust's stable cross-platform child-stdin contract instead of bespoke inherited-handle plumbing.

Live reserved authority migration (2026-07-16)

The supervisor/projector chain now consumes the specialized documents. Idunn generates the ephemeral provider seed, spawns, captures exact process identity, writes the fixed stdin frame, then host-signs and persists the launch; every failure after spawn kills and waits. The child reads exact frame+EOF and checks host, current policy, boot, PID generation/path, launch digest, and derived public key before any service pulse. Heartbeats are specialized and signed.

Generic lifecycle and generic heartbeat writers now refuse the reserved coverage identities, and the old coverage lifecycle authenticator is gone. Claim/attempt schema v1 binds managed_process_launch_id; v0 positional state cannot impersonate the new semantic owner. A native epiphany-host-identity enroll/status actuator was added, and this Windows installation was enrolled once at the default DPAPI CurrentUser path. Next build immutable termination evidence before replacement and only then the Body recovery CAS.

Immutable exact termination evidence (2026-07-16)

Idunn can now publish one host-signed termination observation for one exact coverage launch. It exact-CASes the current policy, signed launch, and that launch's latest signed heartbeat while inserting an immutable per-launch key; there is no global termination head. Different proven boot, exact exit, exact same-boot absence, and exact PID replacement are the only outcomes. Alive, inaccessible, indeterminate, unknown boot, host mismatch, collisions, and moved source envelopes fail closed. The fake observation seam is module-private. Authentication rejoins the signed record to all exact persisted sources.

Next wire reconcile order: termination first, replacement launch second, replacement signed-ready third, then one Body recovery CAS. No timer gets a vote.

Exact abandoned-claim transfer and Idunn wiring (2026-07-16)

Recovery now derives the Body store from the runtime route, authenticates the live Body basis, joins obligation/plan/claim to it, verifies exact old launch and immutable termination, requires the replacement's signed causal edge plus current ready heartbeat, and commits failed history, epoch+1 successor, and an immutable recovery receipt in one Body CAS. The receipt binds exact CultMesh envelope digests and reconstructs against CultMesh plus current Body state.

Idunn has a reserved reconciliation branch. Generic lifecycle PID receipts no longer decide workspace-coverage survival. Exact termination precedes spawn; the launch writer admits one replacement for that termination; signed ready precedes Body recovery. A concurrent launch loser is killed.

Remaining wound: termination requires a latest heartbeat. A child dying after signed launch persistence but before heartbeat sequence one can strand the chain. Make heartbeat optional additional termination evidence, then run an isolated live death/replacement/recovery smoke. Reboot still needs live operator approval.

Pre-readiness death seam closed (2026-07-16)

Launch, heartbeat, and termination now contend on one typed per-launch process evidence head. Launch creates generation 1; heartbeat advances it; termination seals it. Termination v1 can carry no heartbeat when the exact signed launch and native host/boot/process proof already establish death. A late heartbeat cannot resurrect the launch. Six focused process tests, supervisor/projector suites, and all-target check pass. Next: real GUID-scoped recovery smoke.

Live workspace coverage recovery passed (2026-07-16)

Proof: C:\Users\Meta\AppData\Local\Temp\epiphany-workspace-coverage-a577f820-b0e2-4733-b628-529ee3bdb143\proof.json. Initial epoch 1 owner was killed; Idunn produced exact termination, unique causal replacement, signed readiness, epoch 2 Body authority, and reconstructable receipt 2b44f28f-7c0f-4ad2-aefe-d7c8222e8642. The replacement was killed only after exact launch-incarnation revalidation and only the two cryptographically derived fixture collections were eligible for deletion. Operator orchestration restored voidbot-qdrant to stopped. Before emitting success the smoke verified both owned collections absent. The proof binds the executed binary hash, exact embedded smoke-source hash, source head, and tracked-source diff digest; it proves fresh-store reopen authentication, not an OS process restart.

The run found and cut two last-minute lies: PID 4 was not a normal-user Windows boot oracle, so boot identity now comes from native kernel boot time; and the replacement could not resume its own recovered running claim, so exact v3 owner resumption is allowed while all foreign incarnations remain contended.

Next: full deployability audit. Reboot/logon proof still requires permission.

Deployability audit cut (2026-07-16)

Operational after login, not artifact-clean. Yggdrasil Qdrant/Ollama and both packaged semantic query gates pass. Installed siblings predate 34802407 and are mutable/mixable. Build one immutable commit-addressed release witness before replacement. Mind still needs the R1/model+admission/live-semantic/live-coverage/ R2 repository-readiness join. The readiness plan's June queue was stale and is now an evidence matrix. Sight surfaces no longer say queryAdmission=false; they never owned that decision. Final reboot/logon proof needs live approval.

Witnessed release deployed (2026-07-16)

Commit dd80f4a5 packaged as release sha256-c941...f923, witness sha256-f039...e04a. Exact detached source plus initialized submodules plus tracked lockfile plus isolated --locked build; four siblings only. Task and Idunn pin the witness. Reconciler 21228 -> projector 22736; Mind/Modeling query admission passed. Exact-path child kill -> direct-child projector 19748, launch receipt 86a42d51-9930-4b5d-9e61-e74c82a0d808, ready heartbeat 4fc91977-b635-474b-812b-c364847e2b4b, witnessed digest match. Next is Mind's repository readiness join. Reboot remains permission-bound.