UNI Universal Natural Intelligence

Wiki · Evidence & Verdicts

Receipt — door-lifecycle-circle (the circle written in code) — 2026-07-14

Evidence & Verdicts · docs/receipts/door_lifecycle_circle_2026-07-14.md @ 44baf03d5041 (gen2-runtime) — opens the published snapshot ac338733bbba

How to read this page

Three ways to read this page. Precise is the document itself, exactly as it is written in the repository. Plain and Clear were written for this website to help you meet that document — they are about it. They are not it, and they are not evidence.

Eighty-seven dated pages: receipts, pre-registrations, handoffs, validation records and review verdicts. A receipt is written at the moment a piece of work was checked. It names what was claimed, the commit and the seed, what was actually run, and the outcome in one of a small set of controlled words. Then it names what the work did not achieve. That last part is what makes it a receipt rather than an announcement. A pre-registration is the same discipline run in advance: the conditions that would count as a pass and the conditions that would falsify the claim are written down before the run, so neither can be adjusted once the numbers arrive.

That is why so many small dated stubs are an audit trail rather than noise. No one of them is meant to be a good read. The value is in the sequence and in the dates, because you can watch a prediction be registered, then the run happen, then the verdict land — sometimes against the prediction. Pages here record a falsified result, a rejected fix, a retracted overclaim, and a green receipt that turned out not to be reproducible from the commit that carried it. A record that carried only successes would be worth a good deal less than this one.

A gentle way in is to read a pre-registration first, so the shape becomes familiar, then a result page, then one of the corrections. This section sits off the main navigation on purpose: it is the record you check the rest of the site against, not the place to begin.

What it is not: documentation, and not a summary. Nothing here has been tidied in hindsight. Every entry reads as of its date, a later entry may overturn an earlier one, and the presence of a page is not a claim that its result stood.

Your browser cannot switch reading levels, so the document itself is shown.

Precise — the source document

This is the document. Rendered from the repository at the commit above, with nothing rewritten for the web. A gate re-renders it on every deploy and fails the build if a single byte differs.

Gate row: door-lifecycle-circle. Verdict PASS for the drilled legs (register, prediction, mandate, graceful close-all, one-key open-all); OBS graceful-close leg honestly PARTIAL (see below).

What was built

  • viewer/door_lifecycle.cjs — the lifecycle engine: 12-door registry (studio/frame/observer/ virtual/remote scopes), state = open/closed x locked/unlocked, the four vectors per door (HOW it opens/closes/locks/unlocks), circle invariant (circle_ok: an open door must be ready to close, a closed door ready to open), per-door predictions of next transitions, append-only audit ledger (viewer/runtime/door_lifecycle.ndjson), register file (door_state.json), ONE KEY (door "all" -> studio_up.ps1 / graceful -Stop).
  • /api/door/state|open|close on the launcher; DOORS panel + audit trail + one-key buttons on /door.
  • Graceful shutdown verbs: POST /api/shutdown (command_center, stops fan-out children first), POST /shutdown (overlay_server :8099, publisher :8095 — both loopback-bound). studio_up.ps1 -Stop gained a GRACEFUL PHASE: systray stopped FIRST (no resurrection mid-close), graceful POSTs, OBS CloseMainWindow -> taskkill WM_CLOSE -> force only as fallback.
  • THE MANDATE fence: remote doors (world/colony/colonycam/relay) refuse open/close with "this system never impacts the UNIs; it only observes them" — mutation belongs to Organic Operator Michael Polzin (fleet approval queue / science seat).
  • Gaia projection: studio.doors.register declared in viewer/gaia/sources.json (verbatim file signal; predictions are the source's own). verify_gaia.cjs stays 11 PASS / 0 FAIL.

Honest calibrations — two falsified designs, corrected forward

  1. detached:true spawns die mute under the launcher's node context: the first close-all wrote a log header and NOTHING else — no action, no error. Proven by re-running the identical command non-detached (full output, exit 0). Fixed in door_lifecycle.ps() AND the pre-existing launcher.runPs (whose START/STOP/RESTORE buttons carried the same latent silent-failure).
  2. OBS graceful close is PARTIAL: tray-minimized OBS no-ops CloseMainWindow and ignored WM_CLOSE (taskkill) in 8s -> force fallback fired. The enforced guarantee is therefore START-side: every open path clears .sentinel + safe-mode markers and launches with --disable-shutdown-check — OBS self-heals and starts clean; the safe-mode dialog cannot block a bring-up regardless of how the previous instance died.

Drill outputs (verbatim)

  • REGISTER: 12 doors, all circle_ok=true; stream open=False locked=True (the human key CONFIRM); remote doors locked by mandate.
  • PREDICTION: closed overlays individually -> ledger predicted systray reopen -> :8099 False at +2s, True at ~10s — PREDICTION VERIFIED.
  • MANDATE: close colony -> HTTP 409 {"refused":true,"mandate":"REFUSED - this system never impacts the UNIs; it only observes them... Organic Operator Michael Polzin..."}.
  • CLOSE-ALL (graceful): systray stopped first; graceful stops sent to command center / overlay server / publisher; OBS fallback; === DOWN: VERIFIED CLEAN (nothing left running) === exit 0. Frame (:8090) + witness (:8096) stayed OPEN. UNIs untouched: colony :4000 HTTP 200 + :3020 up during the entire studio death.
  • ONE KEY OPEN-ALL via /api/door/open {door:all}: every studio door UP within 180s (4455/9997/8098/8099/8443/8095), OBS started unattended (ws answering = no safe-mode block), overlays proof gate ran inside the bring-up, CamHost rebound. Register: all circle_ok=true.

Residual known papercuts (open, honest)

  • OBS ignores WM_CLOSE when tray-minimized -> its close stays force-fallback (start-side self-heal is the guarantee). A cleaner exit needs an OBS-side mechanism (no Quit request in obs-websocket v5).
  • studio_stage rebuilds reset the CamHost dshow device; the open-all drill rebinds it explicitly.

sha256 d53282aa332c990c — of the original file, so what was ingested stays checkable.

Plain — written for this website, not the source document

Written for this website — not the document. This is a plain-language retelling, written to help you meet the document. It is not the source, and it is not evidence. It has not yet been checked by a person. (or choose Precise in the reading-level control above)

A receipt — a file recording what was run — for a piece of software that treats everything openable as a door. For each one it records how it opens, how it closes, and whether it is currently ready to do the opposite of whatever it is doing. Most of the drilled legs passed: a graceful close-all shut everything down cleanly, one key brought it all back, and a prediction the system made about itself came true on the timescale it named. One leg is honestly marked partial: a stubborn program ignores a polite request to close, and the receipt does not round that up. A hard limit holds in the middle of it: ask to close anything belonging to the colony and the answer comes back refused.

Plain · written 2026-08-01 by claude-opus-5 · not yet checked by a person · about the document whose sha256 is d53282aa332c990c

Clear — written for this website, not the source document

Written for this website — not the document. This is a clearer retelling, written to help you meet the document. It is not the source, and it is not evidence. It has not yet been checked by a person. (or choose Precise in the reading-level control above)

A receipt — the file recording what was run — with a mixed verdict, and the mix is deliberate. The drilled legs pass; the one leg that closes a particular program politely is recorded as partial rather than folded into the total.

What was built is a lifecycle engine: a register of doors across several scopes, each with a state and four routes, which are how it opens, closes, locks and unlocks. Over the top sits an invariant that an open door must be ready to close and a closed one ready to open. It keeps an append-only audit trail, publishes its register, and offers one key that opens or closes everything. A graceful shutdown path stops the thing that would otherwise resurrect processes first, then asks each service to stop, and forces only as a last resort.

There is a hard limit in the middle of it. Doors belonging to the colony do not open or close at all. The answer comes back refused, with a message saying this system only observes the bodies and never affects them. Such changes belong to the operator, through the approval queue. The drill shows that refusal as a real response rather than as a claim about one.

Then two designs that were falsified and corrected forward rather than quietly rewritten. First, processes spawned detached died mute, writing a log header and nothing else; this was caught by re-running the identical command attached and getting full output, and the same latent fault was fixed in an older path that shared it. Second, a tray-minimised program ignores the polite close, so the force fallback fires; the guarantee was therefore moved to the start side, where every open path clears the markers that would otherwise leave it stuck in a limited mode.

The drill outputs are quoted, including a prediction the engine made about its own next transition, which then happened. The close-all ended clean while the parts that watch the colony stayed up and the colony itself was untouched throughout. A closing section lists the papercuts that stay open.

Clear · written 2026-08-01 by claude-opus-5 · not yet checked by a person · about the document whose sha256 is d53282aa332c990c