UNI Universal Natural Intelligence

Estate

The code that makes up the UNI estate, and the services that were actually answering on their ports when the V2 audit went out. 19 repositories across 5 groups, 37 services on 3 hosts, and 24 drifts — places the declaration disagrees with reality — 21 of them silent.

What is measured here, and what is not. The three V2 evidence files were read from UNI-LAB-Command/evidence/v2_repos_and_runtime at build time, on 2026-08-02. The page was assembled from this site at commit 30a7a17724aa. Every number below is the number V2 measured; nothing was fabricated at build time. The estate has moved since the audit — a PID referenced here may already be gone, a port that answered may not answer now. Live probes are not available on this site by design (static export, no runtime network access), so the honest thing is to date the reading and write in the past tense.

V2’s own summary

Twenty-four drifts, and the worst of them are on air right now. The single highest-blast finding is that viewer/channels.json — the contract obs_stage.cjs binds OBS window-capture sources against — declares THREE capture windows and only ONE exists: ch_glass (Chrome PID 49868) is alive, ch_colony and ch_overlook are gone, and zero chrome.exe on this box carries --remote-debugging-port. Every OBS scene that captures the colony or the overlook is bound to a window title that no longer exists, and a window capture of a missing window renders black with no error anywhere. Second: the colony camera's health check is TCP-connect-only (door_healer.cjs:69) against a socat forwarder that the lab measured accepting a client per second, logging "successfully connected", then EOFing both directions in the same journal second with zero bytes moved — the greenest possible probe over the emptiest possible pipe. Third: two live servers are running bytes older than the commits that changed them — publisher.cjs (PID 40356, started 01:40:10; last commit f67a5d7 at 09:05:22, ~7h25m behind) owns the LAN-wide HTTPS gateway [redacted: port], and track_server.cjs (PID 30176, started 09:29:47; last commit e0163b8 at 09:39:33) is the operator surface. The gate written for exactly this, build-identity, is ci:true and was not run. Fourth, and public: the committed and deployed content/generated/live_status.json still says "The operator has not declared a watch URL, so none is published" while he is live on YouTube and Twitch; the fix exists only in an uncommitted working-tree file. I also verified what is NOT drifting, because that matters: gates.ndjson is exactly 207 rows at sha256 1daac9124c0ce483…4ee1, the control-plane ledger is 32 entries with anchor head b90b7498… length 32 in agreement, the plan is 7 stages / 43 steps / 31 DONE / 1 IN_PROGRESS / 1 BLOCKED / 8 PLANNED / 2 OPERATOR, next_act is CHECKPOINT-E, and the Checkpoint-E surface is genuinely live and correct — /lab/l6 returns 9005 bytes and the two shots return 3371 and 3375 bytes exactly as the banner claims. Only the gates block is stale, by one: 36 registered / 33 ci:true measured against a generated block that says 35 / 32, in all three declared copies. Two corrections to my own working hypotheses, said before the findings that survived them: /hud returning 404 on [redacted: port] is BY DESIGN (launcher.cjs:342 says so explicitly — the HUD is a native WPF widget, not a webpage), and voice_server.cjs IS running (PID 28628 on [redacted: internal address][redacted: port], /healthz 200) — my first process filter missed it because it was launched with cwd=viewer and no path prefix. Nothing was started, stopped, killed or edited; no file outside the evidence path was written.

Where the runtime stands

A count of services by state, across every host V2 visited. UP_ANSWERING means a real payload came back; UP_BUT_EMPTY means the socket accepted a client and immediately handed back nothing — the exact shape that hid a dead camera for hours; UP_NO_ANSWER means the port answered a probe but with no useful body; UP_SLOW means the socket answered but late enough to be noticed; DOWN means measured absent; NOT_MEASURED means the audit deliberately did not probe it (and says why).

22
up · answering
1
up · slow
1
up · empty payload
1
up · no answer
7
down
5
not measured

Repositories on disk

Grouped by V2’s own top-level groupings. The purpose column carries the first sentence V2 lifted from the repository’s own README, mix.exs or CLAUDE.md — the same source it cites in the evidence.

minecraft 1 repo

NamePurpose (in one line)Branch / HEADFilesClass
UNI.Minecraft
2 uncommitted files · ahead 10, behind 0 vs origin/gen2-runtime
79 entry points
README.md line 1-13 (B): "# THE STRATIFIED PALIMPSEST ... A production-grade, partially-observable, morphology- and sense-gated, open-ended **benchmark world** for embodied, developmental, Active-Inference-style agents — built in Elixir/OTPgen2-runtime
8516789
1688B · documented

flagellum 3 repos

NamePurpose (in one line)Branch / HEADFilesClass
UNI-Flagellum (outer container)
2 entry points
Not a repository — a container directory?7B · documented
UNI-FLAGELLUM (the science instrument)
2 uncommitted files · 0 ahead / 0 behind origin/hierarchical-aif/motor-stack (measured: git rev-list --left-right --count HEAD...@{u} → '0 0')
8 entry points
From its own README.md: 'UNI-FLAGELLUM is a transparent, CPU-only digital-organ laboratory that keeps a bacterial flagellar-motor world process separate from a UNI Active Inference agent. It exposes the observation crossing, predictive priohierarchical-aif/motor-stack
b909801
705B · documented
UNI-FLAGELLUM-math-workbench
6 uncommitted files · 0 ahead / 0 behind origin/feature/scientific-math-workbench (measured: '0 0')
4 entry points
A SECOND full working copy of the SAME origin repo on a different branchfeature/scientific-math-workbench
c23f686
443B · documented

public 1 repo

NamePurpose (in one line)Branch / HEADFilesClass
UNI.Public
1 uncommitted file · 0 ahead / 0 behind origin/main (git rev-list --left-right --count origin/main...HEAD => 0 0)
32 entry points
README.md, quoted: "The public technical documentation of the UNI estate: an active-inference research programme spanning a bacterial flagellar-motor laboratory, a colony of agents living in a Minecraft world, a producer that broadcasts themain
30a7a17
399B · documented

architect 10 repos

NamePurpose (in one line)Branch / HEADFilesClass
UNI-Encyclopedia-Cookbook
in sync with local origin/main ref (no fetch performed — NOT MEASURED against live GitHub)
5 entry points
[F, README.md] "Two books and a build, in one repository." encyclopedia/ = "a science-honest reference work about the UNI program: what it has actually built, at what evidence class, with every negative published and every falsifier live";main
575fc93
160B · documented
TheORCHESTRATEActiveInferenceWorkbench
in sync with local origin/master ref (no fetch performed — NOT MEASURED against live GitHub)
8 entry points
[F, README.md] "A pedagogical Active Inference workbench: a BEAM-native reference implementation of discrete-time POMDP with mean-field variational message passing and expected-free-energy-weighted policy posterior — one specific instantiatmaster
c2c9c72
1758B · documented
UNI.DDNA.OS
in sync with local origin/main ref (no fetch performed — NOT MEASURED against live GitHub)
6 entry points
[F, README.md] "UNI.DDNA.OS is a small native x86_64 infant operating system. It is built as a freestanding BIOS-booted raw image with a two-stage loader, a minimal long-mode kernel, a .dna seed section, a volatile .body_memory arena, read-main
c283556
343B · documented
UNI.OS
in sync with local origin/os-only ref (no fetch performed — NOT MEASURED against live GitHub)
6 entry points
[F, README.md] "This repository now contains a native bootable active-inference runtime plus a host-side lab harness": AION Bare-Metal Active Inference Runtime ("the UEFI boot target. This is the product path."); Native Suit Vision in firmwos-only
a4b90be
848B · documented
research-GMC_motor_Gillespie
in sync with local origin/main ref (no fetch performed)
3 entry points
[F, README.md] "This repository contains code to perform Gillespie simulations of the 'Global Mechanical Coupling' model for the bacterial flagellar motor, as described in the paper 'Mechanical origin for non-equilibrium ultrasensitivity inmain
c3bb924
9B · documented
research-multi-state-remodeling
in sync with local origin/main ref (no fetch performed)
3 entry points
[F, README.md] the entire README is two lines: "# multi-state-remodeling / Codes associated with the paper 'A multi-state dynamic process confers mechano-adaptation to a biological nanomachine'." No install, run, or reproduce instructions.main
c831191
24B · documented
UNI-FLAGELLUM
in sync with local origin/main ref (no fetch performed — NOT MEASURED against live GitHub)
6 entry points
[F, README.md] "UNI-FLAGELLUM is a transparent, CPU-only digital-organ laboratory that keeps a bacterial flagellar-motor world process separate from a UNI Active Inference agent. It exposes the observation crossing, predictive prior, likelimain
9c3a644
106B · documented
outputs (NOT a repo)
n/a
[G] No README, no manifestn/a
n/a — not a git repository (no .git)
4B · documented
work (NOT a repo)
n/a
3 entry points
[G] No READMEn/a
n/a — not a git repository (no .git)
19B · documented
UNI_Three_Repo_DDD_TDD_Master_Plan_v1.0.0.json (root artifact, not a repo)
n/a
2 entry points
[B, read from the file] plan_id UNI-PLAN-DDD-TDD-001, "UNI Three-Repository DDD/TDD Engineering, Validation, and Documentation Master Plan", v1.0.0, generated_at_utc 2026-07-16T14:35:06+00:00, status "implementation_ready_with_phase_0_accesn/a
n/a — a single 1,925,255-byte JSON file at the architect root, in no git repository
1B · documented

builder-and-rest 4 repos

NamePurpose (in one line)Branch / HEADFilesClass
UNI.Builder
NOT MEASURABLE — the directory contains no files at all (no README, no CLAUDE.md, no .git). `ls -a` returns only `.` and `..`. Its intent is unknown and I make no assumption about it.?0B · documented
Universal Natural Intelligence Precision
0 ahead / 0 behind origin/master (git rev-list --left-right --count HEAD...@{upstream} = 0 0)
7 entry points
Quoting README.md verbatim: "# Universal Natural Intelligence — first public release / The public site for **UNI (Universal Natural Intelligence)**, a Solution Wright project. A small, static, zero-dependency website" with pages Precision Lmaster
f48f55c
606B · documented
ClaudeSpeak
0 ahead / 0 behind origin/main (rev-list --left-right --count = 0 0)
7 entry points
Quoting claude-voice-connector-stdio/README.md: "# Claude Voice Connector (STDIO) — A local MCP connector that speaks text aloud with **Piper** neural TTS (fully offline). It is **bilingual — fluent English + modern Indian Hindi — with automain
80bfa6a
63A · probed
ORC-MCP
2 uncommitted files · 23 AHEAD / 192 BEHIND origin/main (rev-list --left-right --count HEAD...@{upstream} = 23 192) — badly diverged
7 entry points
Quoting README.md: "# ORCHESTRATE Agile Suite — The ORCHESTRATE Agile Suite delivers a full Model Context Protocol-powered workflow for strategic planning, backlog stewardship, document governance, and RAID visibility—ready for containerizemain
0e80bf8
1003B · documented

Services actually answering

One block per host V2 reached. Ordered within each host so the healthy things come first, then the suspicious ones, then the dead. Every state is verbatim— a socket that answers with nothing is not rounded up to “up”, and a socket that was deliberately not probed is not rounded up either.

studio-box (this Windows 11 Pro 10.0.26200 box; hostname not separately measured) reachable

ServicePortStateHow observedDetailClass
colony camera (REMOTE, on the lab)3020up · answeringcurl --max-time 5 [redacted: internal address] -> 200, 473 bytes (Prismarine Viewer HTML shell); /index.js -> 200, 1,205,076 bytes; socket.io EIO=4 polling handshake -> 200, 118 bytes with a sid; then POST '40' plus one long-poll -> 200, 398,822 bytes in 447ms carrying 42["version","1.16.5"] followed by a stream of 42["entity",{...}] world packetsREMOTE host [redacted: internal address], NOT this box - no PID or cmdline available from the studio, and I did not shell to the lab to get one. THIS IS A CORRECTION TO THE BRIEF I WAS GIVEN. The task stated the colony camera is UP_BUT_EMPTY tonight, 'serving its HTML shell while delivering no world data to any client.' I measured the opposite. The 473-byte root IS just the shell - exactly the shape that looks empty - but the shell is supposed to be small: the real payload is the 1.2 MB index.js bundle plus the socket.io channel, and that channel DELIVERED 398,822 bytes of live world data to a client I opened from scratch: a version frame (Minecraft 1.16.5) then entity packets with real coordinates, e.g. chest_minecart id 1671 at x=48.5 y=24.0625 z=-146.5. As of this probe the colony camera is serving world data. I am not asserting it was healthy all evening - I measured once, now.A · probed
command_center8098up · answeringcurl --max-time 5 [redacted: internal address] -> 200, 73073 bytes, 53msPID 1448 node.exe, cmdline: node viewer\command_center.cjs. Bound [redacted: internal address][redacted: port]. The same PID also listens on [redacted: internal address][redacted: port], which returned 404 with 0 bytes in 342ms - the slowest answer measured tonight, roughly 6x every other port. Noted, not diagnosed.A · probed
Door (launcher.cjs)8090up · answeringcurl --max-time 5 [redacted: internal address] -> 200, 8024 bytes, 79ms; /door -> 200, 28732 bytes, 37ms; /api/health -> 404, 9 bytesPID 28576 node.exe, cmdline: node viewer\launcher.cjs. Bound [redacted: internal address][redacted: port] - LAN/tailnet reachable, not loopback-only. A Chrome kiosk window (PID 23156) is open on it: chrome.exe --app=[redacted: internal address] --window-size=1280,940 --window-position=100,50. Note /api/health is NOT a route here (404, 9 bytes).A · probed
lab_server8103up · answeringcurl --max-time 5 [redacted: internal address] -> 200, 10132 bytes, 37msPID 54448 node.exe, cmdline: node viewer/lab/lab_server.cjs. Bound [redacted: internal address][redacted: port]. This is the host of /lab/l6, the Checkpoint-E surface. I probed ONLY '/' - the l6 route itself was NOT probed on this pass.A · probed
mediamtx control API9997up · answeringcurl --max-time 5 [redacted: internal address] -> 200, 3670 bytes, 38ms; curl [redacted: internal address] -> 200, 4784 bytesPID 7580 mediamtx.exe (same process as [redacted: port]). Bound [redacted: internal address] only. 11 paths declared, 4 READY: 'uni' (rtmpConn, 1920x1080 H264+AAC, 8.17 GB in / 16.34 GB out); 'cam1' (webRTCSession, 960x576 H264, ready 10:56:42-05:00, 73.47 MB in, 0 frames in error); 'cam2' (webRTCSession, 1280x720 H264+Opus, ready 07:47:36-05:00, 7.44 GB in / 5.29 GB out, 4412 inbound frames IN ERROR); 'cam5' (webRTCSession, 722x442 H264+Opus, ready 09:23:21-05:00, 157.3 MB in, 9 frames in error). NOT ready, zero bytes: cam3, cam4, cam6, cam7, cam8, cam9, cam10. Same process also holds [redacted: internal address][redacted: port] (RTSP) and [redacted: internal address][redacted: port] - neither was on the list and neither was probed.A · probed
mediamtx RTMP ingest1935up · answeringnetstat -ano -p tcp shows [redacted: internal address][redacted: port] LISTENING pid 7580; Test-NetConnection -Port 1935 -InformationLevel Quiet -> True; stream liveness read via the [redacted: port] APIPID 7580 mediamtx.exe, cmdline: [redacted: local path] [redacted: local path] Bound [redacted: internal address] ONLY. TCP connect succeeds. I did NOT speak the RTMP handshake - protocol-level correctness is INFERRED (class G) from the API, which shows path 'uni' fed by an rtmpConn source (H264 1920x1080 High@4.0 + AAC 48kHz stereo), ready since 07:13:18-05:00, 8,173,208,670 bytes in / 16,335,283,057 bytes out to TWO rtmpConn readers, 0 inbound frames in error.A · probed
OBS WebSocket4455up · answeringnode viewer/_v2_obs_probe.cjs (temp script written into UNI.Minecraft/viewer, run, then deleted; ws resolved from viewer/node_modules) -> [redacted: internal stream endpoint] internal address][redacted: port], Hello/Identify then GetVersion, GetSceneList, GetStreamStatus, GetRecordStatus, GetStatsPID 48960 obs64.exe, cmdline: "C:\Program Files\obs-studio\bin\64bit\obs64.exe" --disable-shutdown-check. Bound [redacted: internal address][redacted: port] (ALL INTERFACES, not loopback). authRequired=false - the Hello frame carried NO authentication challenge, so anything that can reach this port can drive OBS. OBS 32.1.2, obs-websocket 5.7.3, rpcVersion 1. SCENE COUNT 37. CURRENT PROGRAM SCENE = TRIO. Preview scene = DUAL_AB. STREAMING ACTIVE: outputActive true, timecode 04:19:43.133, 8,116,318,842 bytes out, 467,494 total frames, 361 output-skipped, outputCongestion 0, outputReconnecting false. Recording NOT active (00:00:00.000). Stats: cpuUsage 10.215%, activeFps 30.0, renderSkippedFrames 1087, outputSkippedFrames 0. Scenes: ROLE_A, ROLE_B, ROLE_C, CAM_A, COLONY, CAM_PIP, COLONY_SIDE, PIP, SHARE, DESK, GLASS_TALK, SHARE_MULTI, TEACH, WEB_HOST, WEB_SIDE, CLIP_HOST, CLIP_SIDE, CLIP_PIP, NEWSDESK, ANCHOR, GLASS_OS, OVERLOOK, WEB, CLIP, HEALTH, DUAL_AB, TRIO, DUAL_WORLD, CAM_B, PIP_AB, GRID, BARS_TONE, STANDBY, MUSIC_HOUR, MUSIC_CARD, COLONY_SIDE_MUSIC, STANDBY_OFFLINE.A · probed
overlay_server8099up · answeringcurl --max-time 5 [redacted: internal address] -> 404, 22 bytes, 52ms; /overlay -> 404, 19 bytes, body literally 'not found: /overlay'; /health -> 404, 18 bytesPID 44724 node.exe, cmdline: node viewer\overlay_server.cjs. Bound [redacted: internal address][redacted: port]. The 404 body is the server's own router speaking, so the process is alive and routing - I simply did not guess a valid overlay path. Which paths it serves is NOT MEASURED (I did not read overlay_server.cjs).A · probed
publisher LAN gateway (HTTPS)8443up · answeringcurl --max-time 5 [redacted: internal address] -> 000, 0 bytes (plaintext refused); curl -k --max-time 5 [redacted: internal address] -> 200, 36197 bytesPID 40356 node.exe, node viewer\publisher.cjs - same process as [redacted: port]. Bound [redacted: internal address][redacted: port], LAN/tailnet reachable. CORRECTION TO MY OWN FIRST READING: the initial plaintext probe returned code 000 and I nearly logged this DOWN. It is not down - it is TLS, and it serves 36,197 bytes over HTTPS. Certificate validity NOT MEASURED (probed with -k).A · probed
publisher loopback8095up · answeringcurl --max-time 5 [redacted: internal address] -> 404, 0 bytes, 51ms; /health -> 404, 0 bytes; /status -> 404, 0 bytesPID 40356 node.exe, cmdline: node viewer\publisher.cjs - the SAME process also owns [redacted: internal address][redacted: port]. Bound [redacted: internal address] only. The socket accepts and the HTTP stack answers immediately (51ms) with a well-formed zero-byte 404, so this is NOT UP_NO_ANSWER and NOT DOWN. But I found no serving route among the three paths I tried, so I have NO evidence of a useful payload from this port. I am calling it UP_ANSWERING on the strength of the protocol answer only; 'no useful payload' would be a statement about MY probe, not about the service. Which routes it serves is NOT MEASURED - I did not read publisher.cjs.A · probed
UNI TRACK8102up · answeringcurl --max-time 5 [redacted: internal address] -> 200, 31134 bytes, 37msPID 30176 node.exe, cmdline: node viewer/track/track_server.cjs. Bound [redacted: internal address][redacted: port] - LAN/tailnet reachable, not loopback-only.A · probed
voice transcript5858up · answeringcurl --max-time 5 [redacted: internal address] -> 200, 6029 bytes, 37ms; netstat -ano -p tcp for owner PIDsBound [redacted: internal address][redacted: port] - and netstat shows TWO PIDs on that exact address, 15024 and 38720, BOTH python.exe running '-u -m claude_voice_connector.stdio_main'. Two connector instances are alive against one transcript port. Which one owns the accept queue, and whether the second is a stale duplicate, is NOT MEASURED. Not touched - that would be a mutation.A · probed
Chrome CDP (clip channel)9224downnetstat -ano -p tcp shows NO listener on 9224; curl --max-time 5 [redacted: internal address] -> 000, 0 bytes after 2068msNothing listening. All three CDP channels are down together, which reads as 'the CDP-enabled Chrome instances were never launched this session' rather than three independent failures - but that clause is inference (class G), not measurement.A · probed
Chrome CDP (colony channel)9220downnetstat -ano -p tcp shows NO listener on 9220; curl --max-time 5 [redacted: internal address] -> 000, 0 bytes after 2063msNothing is listening. Chrome IS running (many chrome.exe PIDs enumerated via Win32_Process), but the visible kiosk instance PID 23156 was launched with --app=[redacted: internal address] and NO --remote-debugging-port flag. No chrome.exe on this box was observed carrying a CDP port flag.A · probed
Chrome CDP (web channel)9223downnetstat -ano -p tcp shows NO listener on 9223; curl --max-time 5 [redacted: internal address] -> 000, 0 bytes after 2070msNothing listening. Same finding as 9220.A · probed
Host notes— the audit’s own paragraph, verbatim

READ-ONLY pass. Nothing started, stopped, restarted or killed. One file was written and then deleted per explicit instruction: [redacted: local path] (needed so require("ws") resolved from viewer/node_modules, following the pattern in [redacted: local path]). Deletion verified - Test-Path returned False. No other file outside the evidence dir was touched. HEADLINE: the stream is up and has been for 4 hours 19 minutes, and the one service the brief told me was broken is not broken. OBS is live on scene TRIO with 8.12 GB pushed, outputCongestion 0, 361 skipped output frames out of 467,494, CPU 10.2%, holding 30.0 fps. And the colony camera - which I was told was serving an empty shell with no world data - handed me 398,822 bytes of live entity packets on a cold socket.io connection in 447ms. I am flagging that as a correction to my own brief rather than quietly logging UP_ANSWERING, because a wrong prior about which service is dead is worse than no prior. WHAT IS ACTUALLY DOWN: all three Chrome CDP channels, 9220 / 9223 / 9224. No listener on any of them in netstat, and no chrome.exe on this box carries a --remote-debugging-port flag. The kiosk Chrome that is running (PID 23156) points at the Door with no debugging port. Any scene that depends on driving a browser through CDP has no listener tonight. EXPOSURE, measured not assumed: six ports are bound to [redacted: internal address] rather than loopback - 4455 (OBS), 8090 (Door), 8096 (gaia), 8097 (command_center's second port), 8102 (TRACK) and 8443 (publisher HTTPS). The one that matters is 4455: the OBS websocket Hello frame carried NO authentication challenge (authRequired=false), so anything that can reach this host on 4455 can change the program scene or stop the stream mid-broadcast. That confirms the CLAUDE.md line f31.obs-unauthenticated INCLUDING its correction that the bind is all-interfaces and not [redacted: internal address]. I did not test reachability FROM a second host - the bind is class A (netstat [redacted: internal address]), the actual LAN reachability is class G. TWO VOICE CONNECTORS: [redacted: internal address][redacted: port] has two distinct PIDs listening, 15024 and 38720, both running claude_voice_connector.stdio_main. One is likely a stale duplicate. Not diagnosed, not touched. NODE PROCESSES - all 19, command lines exactly as read from Win32_Process: 28576 viewer\launcher.cjs (Door [redacted: port]) | 20136 viewer\door_healer.cjs loop 5000 | 44724 viewer\overlay_server.cjs ([redacted: port]) | 40356 viewer\publisher.cjs ([redacted: port] + [redacted: port]) | 1448 viewer\command_center.cjs ([redacted: port] + [redacted: port]) | 23084 viewer\dual_push.cjs | 48468 viewer\health_ticker.cjs | 54448 viewer/lab/lab_server.cjs ([redacted: port]) | 30176 viewer/track/track_server.cjs ([redacted: port]) | 27624 viewer/obs_supervisor.cjs --watch | 35164 viewer\gaia\gaia_server.cjs ([redacted: port]) | 31204 viewer\gaia\capture_minds_loop.cjs | 41312 viewer\music_director.cjs | plus four mcp-remote plumbing processes (42892 and 22460 -> https://mcp.blackcardinal.vip/mcp/, 19572 and 18308 -> [redacted: internal address] --allow-http). Seven of those thirteen UNI scripts hold a listening socket; door_healer, dual_push, health_ticker, obs_supervisor, capture_minds_loop and music_director hold none - they are outbound/daemon workers. SEPARATE FINDING: the two mcp-remote command lines carry bearer tokens in plaintext in the process table, readable by any process that can enumerate it. I am recording that they exist and deliberately not reproducing them. PORTS PRESENT BUT NOT ON THE REQUESTED LIST: 8096 gaia_server -> 200, 20,708 bytes (PID 35164); 8097 command_center second port -> 404, 0 bytes, 342ms (PID 1448); 8554 RTSP and 8889, both PID 7580 mediamtx, NOT probed; 4369 epmd (PID 3960) NOT probed; 8100 (PID 4, http.sys) NOT probed; 623 and 16992 (PID 5264, Intel AMT/ME out-of-band management, bound [redacted: internal address]) NOT probed and worth someone's attention on a night that is not this one; 15100/15101 MouseWithoutBorders (PID 9984); 24801 barrierd (PID 4884); [redacted: internal address][redacted: port] tailscaled (PID 8556). NOT MEASURED, and why. Process start times for every service - I did not make the second Win32_Process pass; the OBS stream duration of 04:19:43 is the only uptime figure I actually hold and it is the stream's, not any process's, so no started_at is claimed anywhere in this report. The RTMP handshake on 1935 (TCP connect only; correct RTMP service is class G from the API). TLS certificate validity on 8443 (probed with -k). The serving routes of [redacted: port] and [redacted: port] (both answer HTTP but 404'd every path I guessed; I did not read their source). Whether the colony camera was healthy earlier tonight. Reachability of the [redacted: internal address]-bound ports from an actual second host. NO service on this box was UP_NO_ANSWER, UP_SLOW or UP_BUT_EMPTY. Every responding port answered in 37-79ms except [redacted: port] at 342ms. The three 2.06-second results on 9220/9223/9224 are connection-refusal timing, not slow service - those are DOWN. I want to be explicit that UP_BUT_EMPTY appears zero times here and that this is a measurement, not an oversight: the one service I was primed to file under it was tested specifically for it, at the payload layer rather than the shell layer, and it passed.

uni-lab ([redacted: internal address], mesh id "uni-lab", self/local box for the uni-lab MCP; hostname reported "uni-lab") reachable

ServicePortStateHow observedDetailClass
builder API / lab appliance ([redacted: internal address][redacted: port])8000up · answeringmcp__uni-lab__lab_status (GET /lab/status) → HTTP 200 with a full JSON bodyReal payload: profile=lab, applianceMode=phase5_lab_os, bindHost=[redacted: internal address], hostname=uni-lab, ports {api:8000, ui:8080, worldBridge:8000, runtimeUdp:5515}, services {builderApi:'ready', builderUi:'nginx_static_8080', worldBridge:'ready_phase4_wsc_adapters', aionRuntime:'aiond_udp_5515'}, imageManifest /etc/uni-lab-manifest.json present sha256 e34f1638fa5341cdc715cdec6d38d79b6742b423ca364fb7d6b87246596a7d99, wsc frozen_v1. NOTE: the 'services' values in that body are the appliance's SELF-REPORT (documented claim, not a probe) — I did not probe 8080 or udp/5515.A · probed
cloudflared tunnels (pids 5384, 4406, 4415, 3690866, 457668)up · answeringos_exec ["ss","-lptn"] → listeners *[redacted: port] (pid 5384), *[redacted: port] (pid 4415), *[redacted: port] (pid 4406), *[redacted: port] (pid 3690866), *[redacted: port] (pid 457668); mcp__uni-lab__podman_ps → 'swu-tunnel' Up 3 days and 'ufo-funnel-tunnel' Up 3 days (--url [redacted: internal address])Listeners and container states confirmed. Tunnel health / edge connectivity NOT probed.A · probed
container-uni-viewer-cam-fwd.service (rootless, user uni / uid 1000)
started NOT MEASURED as a unit timestamp; its rootlessport pid dates to 2026-08-02T15:24:18Z
up · answeringos_exec ["systemctl","--user","-M","uni@","list-units","--type=service","--no-pager","--no-legend"]'loaded active running' — the ONLY cleanly-running container unit in uni's rootless manager. It is doing its job correctly; it is faithfully forwarding to an upstream that hangs up. Its health says nothing about the camera's content.A · probed
dbus.service (rootless user bus, uid 1000)up · answeringos_exec ["systemctl","--user","-M","uni@","list-units","--type=service","--no-pager","--no-legend"]'loaded active running'. The rootless inventory is exactly five units: container-uni-producer (deactivating), container-uni-viewer-cam-fwd (running), dbus (running), uni-collector-metab (failed), uni-topo (failed).A · probed
mediamtx (RTMP ingest)1935up · answeringos_exec ["ss","-lptn"] → LISTEN 0 4096 *[redacted: port] users:(("mediamtx",pid=4365,fd=4))Socket confirmed listening on all interfaces, owned by a live mediamtx pid. I did NOT open an RTMP session — no stream payload was measured.A · probed
rootful podman containers: swu-tunnel, ufo-funnel-tunnel, wildbill-funnel, wildbill-funnel-uat, uni-dns, swo
started StartedAt epochs: swu-tunnel 1785410249, ufo-funnel-tunnel 1785426833, wildbill-funnel/uat 1785438810, uni-dns 1785605541, swo 1785615575
up · answeringmcp__uni-lab__podman_ps (rootful namespace, all_containers=true)All six report State 'running': swu-tunnel Up 3 days; ufo-funnel-tunnel Up 3 days; wildbill-funnel Up 2 days (node:22-alpine, node /app/server.mjs); wildbill-funnel-uat Up 2 days; uni-dns Up 23 hours; swo Up 20 hours (local_discourse/swo:latest, published [redacted: internal address][redacted: port]→80). IMPORTANT: the podman_ps JSON came back TRUNCATED (containers:null, stdout_tail only), so this list is a FLOOR, not a complete rootful inventory. No HTTP payload probed on any of them.A · probed
sshd22up · answeringos_exec ["ss","-lptn"] → LISTEN 0 128 [::]:22 users:(("sshd",pid=1120,fd=7)); plus a real SSH handshake reached authentication when os_exec ran ssh uni@[redacted: internal address] and returned 'Permission denied (publickey,password)'Answering at the protocol level; the uni account rejects key/password auth from that context.A · probed
uni-dns (dnsmasq container, rootful)
started podman StartedAt epoch 1785605541 (2026-08-01)
53up · answeringmcp__uni-lab__podman_ps → container 'uni-dns', State 'running', Status 'Up 23 hours', pid 2316985, image docker.io/4km3/dnsmasq:2.90-r3; os_exec ["ss","-lptn"] → LISTEN 0 32 [::1]:53 users:(("dnsmasq",pid=2316985,fd=13))Container running and the pid owns a listening socket. I resolved no name through it — no query payload measured.A · probed
uni-producer container process — Elixir/Phoenix SpUiWeb + Xvfb + director
started 2026-08-02T16:34:58.965518Z (current incarnation, pid 2945038)
up · slowos_exec ["journalctl","--no-pager","-n","20","_SYSTEMD_USER_UNIT=container-uni-producer.service"] read at 2026-08-02T16:35:06Z; os_exec ["ls","-ld","--time-style=full-iso","/proc/2945038"]THE PRODUCER IS RESTART-LOOPING, LIVE, RIGHT NOW. A fresh producer pid 2945038 appeared at 2026-08-02T16:34:58.965Z — the pid listed in the unit's own cgroup 2.5 minutes earlier (2935417) no longer exists (cat: /proc/2935417/cgroup: No such file or directory). Each incarnation replays the same sequence: an X server failure ('If this server is no longer running, remove /tmp/.X99-lock and start again.' (EE)); then ~8 socat children failing 'tcp-connect:[redacted: internal address][redacted: port]: Connection refused' back to back at 16:34:59–16:35:00; then at 16:35:01.206 '[info] Running SpUiWeb.Endpoint with Bandit 1.11.1 at [redacted: internal address][redacted: port] (http)'; then at 16:35:03 '[director] spawned; camera on [redacted: port]'. So it takes ~3-5 seconds from container start to camera-ready, during which every camera client gets an instant EOF — and it goes through that window over and over. Bandit binds [redacted: internal address][redacted: port] INSIDE the container namespace, i.e. loopback-only from the container's point of view.A · probed
colony camera — host [redacted: port] (rootless podman publish → container uni-viewer-cam-fwd, socat)
started 2026-08-02T15:24:18Z (rootlessport pid 2697368, ls -ld --time-style=full-iso /proc/2697368)
3020up · empty payloados_exec ["ss","-lptn"] shows LISTEN 0 4096 *[redacted: port] users:(("rootlessport",pid=2697368,fd=10)); os_exec ["cat","/proc/2697368/cgroup"] → user@1000.service/app.slice/container-uni-viewer-cam-fwd.service; os_exec ["journalctl","--no-pager","-n","25","_SYSTEMD_USER_UNIT=container-uni-viewer-cam-fwd.service"] at 2026-08-02T16:34:38ZTHE CAMERA IS SERVING NOTHING. socat accepts a client on [redacted: internal address][redacted: port] roughly once per second, forks a child, opens uni-producer:3020 (AF=2 [redacted: internal address][redacted: port]), logs 'successfully connected', and then IMMEDIATELY logs 'socket 1 (fd 6) is at EOF' and 'socket 2 (fd 5) is at EOF' and 'exiting with status 0' in the SAME journal second. Every observed connection in the last 25 log lines completes with zero bytes of data transfer. os_exec ["ss","-tnp","state","established","( sport = [redacted: port] or dport = [redacted: port] ... )"] returned an EMPTY table — no connection lives long enough to be caught. Socket up, forwarder up, upstream reachable, world data delivered = none. This is exactly UP_BUT_EMPTY, not UP_ANSWERING.A · probed
container-uni-producer.service (rootless, user uni / uid 1000) — the world/video producer unit
started unit Active-since 2026-07-19T03:23:06Z (stuck ~2 weeks); last state change 2026-08-02T16:34:57Z
up · no answeros_exec ["systemctl","--user","-M","uni@","list-units",...]; ["systemctl","--user","-M","uni@","status","container-uni-producer.service","--no-pager","-n","25"]; ["systemctl","--user","-M","uni@","show","container-uni-producer.service","-p","ActiveState","-p","SubState","-p","Result","-p","NRestarts","-p","StateChangeTimestamp"]CORRECTION TO THE BRIEFING: the measured state is NOT 'activating (start)'. It is ActiveState=deactivating, SubState=stop-sigterm, Result=timeout, NRestarts=24, StateChangeTimestamp=Sun 2026-08-02 16:34:57 UTC, with a queued start Job 1206849 — list-units renders it '● container-uni-producer.service loaded deactivating stop-sigterm start'. The status header reads 'Active: deactivating (stop-sigterm) (Result: timeout) since Sun 2026-07-19 03:23:06 UTC; 2 weeks 0 days ago'. The shape of the finding holds — ExecStart=/usr/bin/podman start uni-producer exited 0/SUCCESS (process 2930008) and systemd still never converges or signals ready — but the sub-state is a stop that times out, not a start that hangs. Root-cause candidate (evidence C, from [redacted: local path]): Type=forking with PIDFile=[redacted: local path], while the conmon actually running in the unit's cgroup at 16:32:40Z was for container d5f4c8defe16a029... — a DIFFERENT container id. A forking unit whose PIDFile points at a container that no longer exists can never be told the service is up. The unit was generated by the deprecated podman-generate-systemd(1), and podman logged that the container carries restart policy 'unless-stopped', which fights systemd's own restart mechanism.A · probed
uni-collector-metab.service (rootless, uid 1000) — Phase-2 metabolism RED collector (one tick)downos_exec ["systemctl","--user","-M","uni@","list-units","--type=service","--no-pager","--no-legend"]'loaded failed failed'. No science tick is being collected.A · probed
uni-topo.service (rootless, uid 1000)downos_exec ["systemctl","--user","-M","uni@","list-units","--type=service","--no-pager","--no-legend"]'loaded failed failed'.A · probed
builder UI [redacted: port] and aion runtime udp:5515not measuredno probe — only the /lab/status self-report ('builderUi':'nginx_static_8080', 'aionRuntime':'aiond_udp_5515'), which is a documented claim, not observed runtimeI never probed either. The ss -lptn output came back TRUNCATED (tail only), and the visible fragment showed a large nginx worker pool (pids 1552, 2595097-2595111) without the port column, so I cannot even assert from ss which ports nginx holds. Declared unmeasured rather than inheriting the appliance's own claim as if it were a probe.G · inferred
producer HTTP — host [redacted: port] (behind an ORPHANED rootlessport)4000not measuredsocket fact: os_exec ["ss","-lptn"] → LISTEN 0 4096 *[redacted: port] users:(("rootlessport",pid=89839,fd=5)); ownership: os_exec ["cat","/proc/89839/cgroup"] → 0::/user.slice/user-1000.slice/user@1000.service/user.slice/podman-89795.scope; age: os_exec ["ls","-ld","--time-style=full-iso","/proc/89839"] → 2026-07-15 16:43:54 UTC. HTTP payload: NOT probed.THE SOCKET IS UP AND I COULD NOT MAKE IT SPEAK — declaring that rather than guessing a state. Why not measured: (1) curl/wget are NOT in the os_exec allowlist (the refusal returned it: adb,cat,cloudflared,df,free,git,hostname,ip,journalctl,loginctl,ls,lsblk,nft,ping,podman,ss,ssh,systemctl,tailscale,uname,uni-limb-exec,uni-promote,uni-rollback,uptime,wg); (2) ssh uni@[redacted: internal address] to curl from inside was refused — 'Permission denied (publickey,password)'; (3) from the Windows box, ping [redacted: internal address] is 100% loss and both ports time out at 8s, so this box is off the mesh; (4) a podman run of a curl image would be a MUTATION, forbidden tonight. WHAT I DID MEASURE IS DAMNING ANYWAY: the rootlessport holding host [redacted: port] is pid 89839, born 2026-07-15T16:43:54Z — EIGHTEEN DAYS ago — in cgroup podman-89795.scope, a bare podman scope, NOT container-uni-producer.service; its parent pid 89795 is gone (cat: /proc/89795/cmdline: No such file or directory). The live producer binds [redacted: internal address][redacted: port] in a different, churning namespace. Inference (G): a client on host [redacted: port] most likely gets a TCP accept with nothing behind it. NOT asserted as measured.A · probed
Host notes— the audit’s own paragraph, verbatim

HEADLINE, and it is adverse: the colony camera is serving an empty pipe to every client, and the producer behind it is restart-looping under a systemd unit that has been stuck in a timed-out stop for two weeks with 24 restarts. The camera at [redacted: port] is exactly the case the ground rules warned about. The socket listens, socat accepts, socat CONNECTS successfully to uni-producer:3020 — and then both directions hit EOF inside the same journal second and the child exits 0. Roughly one client per second, over and over, each getting nothing. A liveness check on [redacted: port] would go green all night. That is UP_BUT_EMPTY and I have refused to round it up. The mechanism, from the producer's own journal: every incarnation fails to bring up X ('remove /tmp/.X99-lock'), throws ~8 socat children at [redacted: internal address][redacted: port] that are all refused, THEN Phoenix/Bandit binds [redacted: internal address][redacted: port], THEN two seconds later '[director] spawned; camera on [redacted: port]'. That is a 3-5 second dead window per restart — and it keeps restarting (pid 2935417 alive at 16:32:40Z was gone by 16:34:10Z; pid 2945038 was born at 16:34:58.9Z). TWO CORRECTIONS TO THE BRIEFING, said before anything else: 1. container-uni-producer.service is NOT 'activating (start)'. Measured: ActiveState=deactivating, SubState=stop-sigterm, Result=timeout, NRestarts=24, with a queued start Job 1206849. The finding's shape survives — podman start exits 0/SUCCESS and systemd never converges — but the sub-state is a stop that times out, not a start that hangs. 2. Host [redacted: port] is NOT held by the producer unit. It is held by rootlessport pid 89839, born 2026-07-15T16:43:54Z — eighteen days ago — in cgroup podman-89795.scope, whose parent process no longer exists. The live producer binds [redacted: internal address][redacted: port] inside a different, churning namespace. Host [redacted: port] is a stale forwarder from a dead podman invocation. Likely root cause of the stuck unit (evidence C, not A): Type=forking with PIDFile pointing at container 2282a441e753..., while the conmon actually in its cgroup was for d5f4c8defe16... — a different container. The container was recreated; the PIDFile points at a corpse; a forking unit can never be told it is up. Podman itself logged the other half of the trap: restart policy 'unless-stopped' fighting systemd. Both facts sit in [redacted: local path], generated by the deprecated podman-generate-systemd(1). WHAT I COULD NOT MEASURE, and why — an honest gap, not a guess: - No HTTP body from [redacted: port] or [redacted: port]. curl and wget are not in the os_exec allowlist (the refusal printed the whole allowlist). ssh uni@[redacted: internal address] to curl from inside was refused at auth. From the operator's Windows box, ping [redacted: internal address] is 100% loss and both ports time out at 8s — this box is off the mesh; the MCP reaches uni-lab over https, my shell does not. Running a curl container would have been a mutation and was forbidden. - ss -lptn came back TRUNCATED (tail only), so the port inventory is a floor, not a census; the nginx workers appear without their port column. - podman_ps also came back truncated (containers:null), so the rootful container list may be missing entries. - [redacted: port] and udp/5515 rest on the appliance's own self-report only. Not probed, not claimed. READ-ONLY was honoured. Nothing was started, stopped, restarted or killed; no file was written on either box. Two side effects I am declaring: ssh appended [redacted: internal address]'s ED25519 key to root's known_hosts on the first attempt (before I switched to UserKnownHostsFile=/dev/null), and every os_exec is audit-logged by design. Two things nobody asked about that are down right now: uni-collector-metab.service (Phase-2 metabolism RED collector) and uni-topo.service are both 'loaded failed failed'. The rootless inventory is five units — two failed, one stuck, and only cam-fwd and dbus clean. All timestamps UTC, measured 2026-08-02 between 16:32:04Z and 16:35:38Z. Anything about a live process has a half-life: the producer changed pid twice inside this 3.5-minute window.

fleet-peers (probed from uni-lab / [redacted: internal address], the router box, via mcp__uni-lab__*) not reachable

ServicePortStateHow observedDetailClass
uni-lab (self, [redacted: internal address]) — control MCP + hostup · answeringmcp__uni-lab__limbs_list and mcp__uni-lab__os_sysinfo (no limb arg) at 16:32:32Z, sub-10ms per sub-probehostname uni-lab, up 18 days 15 min, 2 users, load avg 10.28/8.70/8.49 (high — consistent with live encoding). Mem 39Gi total / 15Gi used / 24Gi available, swap 8.0Gi with 653Mi used. Store 5.5T at 4% (169G). Interfaces: eno1 UP [redacted: internal address]/24, eno4 UP [redacted: internal address]/24, eno2+eno3 DOWN, tailscale0 [redacted: internal address]/32, wg0 UP [redacted: internal address]/24, plus ~13 podman bridges and ~67 veths. instrument_version 2.6.0. Every sub-command returned returncode 0, timed_out false.A · probed
WireGuard mesh wg0 on the router endup · answeringip address listing inside mcp__uni-lab__os_sysinfo (no limb), 16:32:32Zwg0 exists and carries [redacted: internal address]/24, so the local end of the mesh is configured and up. Peer handshake state (wg show: last handshake, transfer counters, allowed-ips per peer) is NOT MEASURED — it needs os_exec, which is human-gated. So I can say the local interface is up; I CANNOT say whether either peer has ever handshaked or when it last did.A · probed
uni-lab-79740c (node2) — MCP over mesh [redacted: internal address]downmcp__uni-lab__os_sysinfo limb=uni-lab-79740c at 16:32:13Z, then mcp__uni-lab__podman_ps limb=uni-lab-79740c at 16:32:32ZBoth calls refused identically: "limb 'uni-lab-79740c' unreachable ([Errno 113] No route to host)". EHOSTUNREACH, NOT connection-refused — no socket was ever established, the route to the mesh IP is gone. Reproduced twice, 19s apart, via two different tools. This is DOWN on the mesh path only; the LAN path [redacted: internal address] is NOT MEASURED.A · probed
uni-tab-arm-1 (android limb) — MCP [redacted: port] over mesh [redacted: internal address]8091downmcp__uni-lab__os_sysinfo limb=uni-tab-arm-1 at 16:32:13Z, then mcp__uni-lab__lab_status limb=uni-tab-arm-1 at 16:32:32ZBoth refused identically: "limb 'uni-tab-arm-1' unreachable ([Errno 111] Connection refused)". ECONNREFUSED, materially different from node2's EHOSTUNREACH — a TCP RST came back, so the path carries packets and something answered; nothing is LISTENING on 8091. Most consistent with the Android host being up (or at least routed) with its MCP listener dead. Whether the host itself is alive is NOT MEASURED. Registry lists wg_public_key CUdqxfBfTdACEwUMVyPK9f548JhMXhFW0VjOn/Qgr0Y= and status "active"; the runtime contradicts the registry.A · probed
off-box witness on node2 (control-plane custodian) — S1, operator-only
started 2026-07-26T17:05:09.004Z
not measuredRead of [redacted: local path] (bytes on disk); NO live probe of node2 was possible and none was attemptedRECORDED state, not current state. schema uni.control_plane.witness.v1, captured_by witness_probe.cjs@2, claim_level tamper_evident, independent_custodians: 0. Custodian offbox:node2 addressed_as [redacted: internal address], port_open true, writer_reachable true, refusal null, qualifies_as_witness false — the writer's key is accepted, confirming S1 as briefed. Second custodian 'git' at head e055180bb8c1e63f6c50ab51b5c0f22b1e08ec80 on branch gen2-runtime, itself writer_reachable (force-push visible but possible). Control control:chip on uni-lab also qualifies_as_witness false. CAPTURED 2026-07-26 — seven days stale today. Its own claim_note insists the refusal is a current configuration fact 're-measured on every capture'; it has not been re-measured in a week, and with the mesh to node2 down it cannot be re-measured by that path right now. Nothing here was touched, changed, or keyed. Enforcement lives at viewer/gaia/verify_witness_blocked.cjs (independent_custodians:0 FORCES BLOCKED) — that is class C, code-indicated; I did NOT run it.B · documented
uni-lab-79740c (node2) — LAN path [redacted: internal address]:22, the witness custodian addressnot measuredaddress read from viewer/gaia/witness.json custodians[0].addressed_as; not probedwitness.json addresses node2 as [redacted: internal address] over ssh, NOT as mesh [redacted: internal address]. uni-lab holds [redacted: internal address]/24 on eno4 (same /24), so this is a second, independent path that may well be up while the mesh is down. Probing it needs os_exec (ssh/ping/ss), which is human-gated and would have interrupted a live broadcast. Deliberately not measured; do not read the mesh EHOSTUNREACH as evidence about this path.B · documented
uni-tab-arm-1 — glass [redacted: port]8443not measuredport read from /etc/uni/limbs.json (glass_port 8443); no probe issuedNo read-only MCP tool routes to the glass port, and probing it would need os_exec (gated, operator live). Registry declares [redacted: internal host].solwright.com:8443. Not measured.B · documented
Host notes— the audit’s own paragraph, verbatim

HEADLINE: BOTH remote fleet limbs are unreachable from the router box right now, and they fail in two DIFFERENT ways — that difference is the finding, not a detail. node2 returns EHOSTUNREACH (Errno 113, "No route to host"): the mesh path itself is gone. The Android tablet returns ECONNREFUSED (Errno 111): something on that path answered with a TCP reset, so the network path is alive further than node2's but no MCP process is listening on [redacted: port]. Both were probed twice with different tools ~19s apart and reproduced identically. Only uni-lab itself (self, [redacted: internal address]) answers. WHAT I DID NOT DO, AND WHY. I did NOT run mcp__uni-lab__os_exec. It is a two-step gated tool that pauses for a human co-sign in the shared approval queue, and the operator is live on air — queuing an approval would have interrupted the broadcast. That means three things are NOT MEASURED and I will not guess them: (1) whether node2 is powered off vs. merely wg-disconnected (needs `wg show` / `ping [redacted: internal address]` on uni-lab); (2) whether node2 is still reachable on its LAN address [redacted: internal address], which is the address the witness actually uses and is a DIFFERENT path from the mesh — uni-lab holds [redacted: internal address]/24 on eno4, the same subnet, so a LAN-only node2 is entirely possible and would mean the witness path is fine while the mesh path is dead; (3) whether the tablet's Android host is up with only its MCP listener dead, or the RST came from an intermediary. S1 / OFF-BOX WITNESS — OBSERVED, UNTOUCHED, AND STALE. I did not touch node2 or any key; I could not have, it is unreachable. What I can report is the recorded artifact: [redacted: local path] says independent_custodians: 0, with custodian offbox:node2 carrying writer_reachable: true, refusal: null, qualifies_as_witness: false — the writer's key is accepted, exactly as the brief states. TWO THINGS WORTH THE OPERATOR'S ATTENTION. First, that file was captured_at 2026-07-26T17:05:09Z — SEVEN DAYS STALE as of today (2026-08-02). Its own claim_note says the off-box refusal is "a CURRENT CONFIGURATION FACT, not a structural law... which is why it is re-measured on every capture". It has not been re-measured in a week. Second, a fresh capture cannot be taken right now if the probe uses the mesh, because the mesh to node2 is down — so the honest current status of the witness is not "compromised" but "compromised as of seven days ago, and currently unmeasurable by the mesh path". That distinction matters and I am not collapsing it. REGISTRY vs RUNTIME. /etc/uni/limbs.json (sha256 c24589a3f9a3a712308cb9ee7ade782cf7b06b144b7c9d8ded5cc3c118b18cbf, 729 bytes) lists all three limbs and marks BOTH remote ones "status":"active". That string is a static registry field, class B — it is NOT a liveness signal, and tonight it disagrees with the runtime in both cases. Anything reading "status: active" out of that file as health is reporting a wish. Also note the registry paths disagree with each other: limbs_list's tool text cites /etc/uni-limbs/limbs.json while the readable file is /etc/uni/limbs.json; /etc/uni/fleet-extra-peers is a two-line deprecation stub pointing at /etc/uni-limbs/limbs.json. I read the one I could reach and said so. ROUTER BOX CONTEXT (uni-lab, self): up 18 days, load average 10.28 / 8.70 / 8.49 on a box with 39Gi RAM (15Gi used, 24Gi available), 5.5T store at 4% used. Load above 10 is consistent with live video encoding. wg0 is present and holds [redacted: internal address]/24, so WireGuard is configured and up on THIS end — the failure is on the far side or in the peer handshake, not a missing local interface. EVIDENCE HYGIENE: every state below is class A (a probe returned that exact errno) except the witness fields, which are class B (bytes on disk), and the registry "status":"active" reading, which is class B and explicitly contradicted by class A. No hash, port or count here was invented; all are quoted from tool output.

Where declaration disagrees with reality

24 drifts, ordered silent failures first — a loud failure at least announces itself. Then by evidence class: measured (A) outranks documented (B) outranks inferred (G). This is the register V2 exists to keep. The language is not softened.

channels.json declares three capture windows; one exists — the colony and overlook OBS sources are bound to windows that are gone silent A · probed

Kind: file-claims-launch-but-not-running

Claim. viewer/channels.json (mtime 2026-08-02T10:30:00) = {"colony":"Prismarine Viewer","glass":"UNI Glass Cockpit","overlook":"Stratified Palimpsest — Overlooker"}. obs_stage.cjs:17 reads this file and targets OBS window-capture sources by those EXACT titles. studio_channels.ps1:53-59 launches all three (ch_colony with --remote-debugging-port=9220, ch_glass, ch_overlook with --remote-debugging-port=9221).

Reality. Only ch_glass exists — chrome.exe PID 49868, --app=[redacted: internal host].local/glass/ --user-data-dir=...\Temp\ch_glass. No process carries user-data-dir ch_colony or ch_overlook. Measured: (Get-CimInstance Win32_Process -Filter "Name='chrome.exe'" | Where CommandLine -match 'remote-debugging-port').Count = 0. CDP 9220 and 9221 therefore have no listener, consistent with the earlier netstat finding that 9220 is DOWN.

What breaks. Every OBS scene whose source is a window capture of the colony or the overlook — COLONY, COLONY_SIDE, COLONY_SIDE_MUSIC, OVERLOOK, DUAL_WORLD and any composite that includes them (37 scenes exist; the program scene was TRIO earlier and is CAM_A now). Cutting to any of them puts a black or frozen frame on a live stream that has pushed 8.12 GB. Also kills throttle_colony.cjs, which needs CDP 9220 to cap the colony render loop.

[redacted: local path] ; [redacted: local path] ; [redacted: local path]

The colony camera's liveness check is TCP-connect-only against a forwarder that accepts and immediately EOFs silent A · probed

Kind: healthy-report-empty-payload

Claim. viewer/door_healer.cjs:69 — `const [colonyCam, phoenix, producer] = await Promise.all([tcp(COLONY_NAME, 3020, 2000), tcp(COLONY_NAME, 4000, 2000), tcp(COLONY_NAME, 4200, 2000)]);` — a bare TCP connect decides whether the colony camera is healthy. door_healer.cjs:112 only raises a gap when the connect itself fails.

Reality. On the lab, host [redacted: port] is a rootless podman publish into container uni-viewer-cam-fwd running socat. Its journal shows, per client and roughly once a second: 'successfully connected' to uni-producer:3020, then 'socket 1 (fd 6) is at EOF', 'socket 2 (fd 5) is at EOF', 'exiting with status 0' — all inside the same journal second, zero bytes transferred. `ss -tnp state established` for sport/dport [redacted: port] returned an EMPTY table: no connection survives long enough to be caught. The upstream producer is restart-looping (container-uni-producer.service NRestarts=24, fresh pid 2945038 born 16:34:58.965Z replacing 2935417 which no longer exists), and each incarnation needs ~3-5 s from container start to '[director] spawned; camera on [redacted: port]'.

What breaks. The Door ([redacted: port] /api/status — the call CLAUDE.md declares binding for any agent's state question) and every downstream surface report the colony camera healthy while it delivers nothing to any client. A TCP probe against socat cannot ever go red. Two independent measurements of the same port disagree (see the S7 stop), and neither the Door nor Gaia can express that.

[redacted: local path],112 ; lab unit container-uni-viewer-cam-fwd.service ; lab unit container-uni-producer.service

Two live servers are executing bytes older than the commits that changed them — including the LAN-wide HTTPS gateway and the operator surface silent A · probed

Kind: stale-running-image

Claim. viewer/gate_registry.json registers `build-identity` -> viewer/verify_build_identity.cjs, ci:true, gate_row=boot-identity — 'running bytes match committed bytes'. Both files are clean in git status, i.e. disk == HEAD.

Reality. publisher.cjs: PID 40356 started 2026-08-02 01:40:10; the last commit touching viewer/publisher.cjs is f67a5d7 at 2026-08-02T09:05:22-05:00, and the file mtime is 08:54:45 — the running process loaded its source about 7h25m before the source last changed. track_server.cjs: PID 30176 started 2026-08-02 09:29:47; last commit e0163b8 at 2026-08-02T09:39:33-05:00, mtime 09:35:17 — running ~10 minutes behind. `git diff --stat HEAD` on both is empty, so disk matches HEAD and only the loaded image is behind. The build-identity gate was NOT run (ground rules forbid it).

What breaks. publisher.cjs owns the LAN/tailnet-reachable HTTPS source gateway on [redacted: internal address][redacted: port] (36,197 bytes served) and the loopback registration endpoint [redacted: port] — a security- or routing-relevant change committed at 09:05 is not in effect. track_server.cjs is UNI TRACK, the operator's persistent surface that renders phase9_plan.json live; the operator is reading a build from before its last fix. Anyone reading TRACK believes they are reading the committed instrument.

[redacted: local path] (PID 40356, [redacted: port] + [redacted: internal address][redacted: port]) ; [redacted: local path] (PID 30176, [redacted: internal address][redacted: port]) ; [redacted: local path]

The committed studio launcher starts and supervises a file that exists in no commit silent A · probed

Kind: launcher-references-untracked-file

Claim. viewer/studio_up.ps1 is CLEAN at commit 0257e0e (2026-08-02T11:42:40-05:00, 'the agent's voice becomes a real broadcast source — no Windows audio device anywhere'). Line 382: `Start-NodeHidden 'UNI VOICE' 'voice_server.cjs'`. voice_server.cjs also appears in the -Stop reap list (line 80), the -Status list (line 192) and the -Watch restart loop (lines 474, 476).

Reality. git status: `?? viewer/voice_server.cjs`, `?? viewer/claudespeak_source.cjs`, `?? production/overlays/voice.html`, `M viewer/music_director.cjs`. The service does run on THIS box only — PID 28628, cmdline `node.exe voice_server.cjs`, listening [redacted: internal address][redacted: port], /healthz -> 200 (66 bytes). Its source is in no commit and the branch is already 10 ahead of origin/gen2-runtime and unpushed. Compounding it: music_director.cjs:55 now sets `const DESKTOP_VOICE_DUCK = false;` with the note at line 114 'voice_server.cjs owns the voice duck now', so task #31 (auto-duck under hot mic, marked completed) has been moved entirely into untracked code.

What breaks. A clean clone of gen2-runtime cannot bring the studio up: Start-NodeHidden fails, -Watch restart-loops a missing file forever, and the agent's broadcast voice plus the mic auto-duck simply do not exist. The whole voice subsystem — server, Piper source, and the OBS overlay page — lives in one working tree on one box with no remote copy.

[redacted: local path],192,382,474,476 ; [redacted: local path] (untracked, PID 28628, [redacted: port]) ; [redacted: local path],114

The Checkpoint-E surface — the plan's declared NEXT ACT — runs with no supervisor of any kind silent A · probed

Kind: declared-watchdog-not-running

Claim. viewer/track/track_watchdog.ps1 and viewer/track/track_boot_install.ps1 exist and declare TRACK boot-install plus watchdog. phase9_plan.json next_act = CHECKPOINT-E, owner OPERATOR, 'Two images side by side at [redacted: internal address]

Reality. Exactly three watchdogs are running: door_watchdog.ps1 (PID 22368), gaia_watchdog.ps1 (PID 22520) and systray_watchdog.ps1 (PID 6608). track_watchdog.ps1 is NOT running. hud_watchdog.ps1 is NOT running. lab_server.cjs has no watchdog file at all — repo-wide it is referenced only by viewer/lab/desk.cjs and the lab-L0..L6 verifiers, i.e. it is launched by gates, not supervised by anything. systray_watchdog.ps1 only covers the eight names in studio_up.ps1's list, which include neither TRACK nor the lab. The surface is genuinely working right now: /lab/l6 -> 200 (9005 bytes), /api/lab/shot?swap=0 -> 200 (3371 bytes), ?swap=1 -> 200 (3375 bytes).

What breaks. If lab_server (PID 54448) dies, /lab/l6 vanishes and CHECKPOINT-E — the operator's eye, the one act the whole plan is currently waiting on, in progress on air as task #32 — cannot be performed, with nothing to restart it and nothing to say so. If track_server dies, the operator loses his persistent surface and its declared watchdog is not there to notice.

[redacted: local path] (PID 54448, [redacted: internal address][redacted: port]) ; [redacted: local path] (not running) ; [redacted: local path] next_act

The running stack was not produced by studio_up.ps1, and studio_up's own -Status and -Stop are blind to six of the fourteen live services silent A · probed

Kind: launcher-status-incomplete

Claim. studio_up.ps1 line 1: 'ONE command that brings the whole UNI broadcast studio up, in order, with... -Status report what's up / down (incl. zombies)... -Stop tear EVERYTHING down, verified'. Step 1 launches Minecraft (paper.jar, [redacted: port]); step 2 launches ONE Phoenix node (elixir --sname uni, [redacted: port]).

Reality. Fourteen UNI node processes with start times spread across twenty hours — launcher.cjs and door_healer.cjs from 2026-08-01 15:53, then 01:40, 06:49, 07:13, 08:44, 09:17, 09:29, 09:38, 10:09, 11:40, 11:41 — not one bring-up. -Status (line 192) reports on eight names only; launcher.cjs, door_healer.cjs, lab_server.cjs, track_server.cjs, gaia_server.cjs and capture_minds_loop.cjs appear in neither the -Status nor the -Stop list, so -Stop would report EVERYTHING torn down while the Door, Gaia, TRACK and the LAB kept serving. And the two things it launches first are absent: Get-NetTCPConnection on 4000, 25565 and 25575 returns nothing, and Get-Process for beam.smp, erl, java, werl returns nothing. Separately, music_director changed identity mid-audit — PID 41312 (started 11:05:56) was replaced by PID 52188 (started 11:41:28).

What breaks. The one command documented as the authoritative bring-up/teardown/status for the studio cannot see or stop nearly half of it. An operator running -Stop before a reboot believes the box is quiet when four servers, two of them bound to [redacted: internal address], are still live. -Status is used to decide whether it is safe to go live.

[redacted: local path],80,192,238,243,249,289,474

Two implementations claim port 8100; the live one reports git_commit null and had restarted 58 seconds before the probe silent A · probed

Kind: duplicate-implementation-and-unknowable-boot-identity

Claim. viewer/hud/hud_server.cjs:3 — 'Binds [redacted: internal address][redacted: port] (LAN-visible; reachable at [redacted: internal host][redacted: port]).' viewer/hud/hud_watchdog.ps1 exists to keep it up; hud_boot_install.ps1:95 promises 'the HUD OPENS ON ITS OWN once [redacted: port] answers'. Registry gate `build-identity` claims running-vs-committed identity across the bodies.

Reality. [redacted: port] is owned by PID 4 (System / http.sys) on both :: and [redacted: internal address] — not node. hud_server.cjs is not running and hud_watchdog.ps1 is not running. GET /api/hud/health -> 200: {"server":"uni-hud","instrument":"UNI.Hud.Service@0.2","git_commit":null,...,"result":{"hud":{"version":"UNI.Hud.Service@0.2","port"[redacted: port],"bind":"[redacted: internal address]","uptime_ms"[redacted: port]}}}. So the live [redacted: port] is the native .NET service, bound loopback-only, reporting NO git commit, and it had restarted 58 seconds earlier — mid-broadcast — while the Door's /api/status reported hud {open:true, locked:false, circle_ok:true}. CORRECTION TO MY OWN FIRST READING: /hud returning 404 is BY DESIGN and not a drift — launcher.cjs:342 states 'there is NO /hud page — it 404s; the HUD is a native WPF widget, not a webpage'. The drift is the duplicate and the null identity, not the 404.

What breaks. Two servers claim one port with opposite bind policies — if hud_watchdog.ps1 were ever started it would either collide with the http.sys reservation or succeed and expose the HUD LAN-wide, which hud_server.cjs's own header advertises and the live service deliberately does not do. git_commit null means boot identity for this body cannot be established at all, so the build-identity gate cannot cover it. The `hud` gate is one of the three that never runs (ci:false).

[redacted: local path] ; [redacted: local path] (not running) ; [redacted: local path],342 ; probe [redacted: internal address]

The Phase-2 metabolism collector and the topology unit are both failed, and no operator surface says so silent A · probed

Kind: declared-service-failed

Claim. uni-collector-metab.service is the Phase-2 metabolism RED collector (one tick); uni-topo.service is a declared rootless unit. Both are installed in uid 1000's user manager.

Reality. `systemctl --user -M uni@ list-units --type=service` returns five units total, of which uni-collector-metab.service is 'loaded failed failed' and uni-topo.service is 'loaded failed failed'. Only container-uni-viewer-cam-fwd and dbus are cleanly running; container-uni-producer is the stuck one. No science tick is being collected.

What breaks. The science road is already blocked at runs/pureworld_qa_gate.exs (still raising @scaffold), and the collector that would feed the metabolism evidence is dead on top of it. Nothing on the Door, Gaia or TRACK reports a failed lab unit, so the failure is invisible from every operator surface on the Windows box.

lab uni-lab: uni-collector-metab.service, uni-topo.service (rootless, uid 1000)

The limb registry marks both remote limbs "active" while both are unreachable in two different ways, and the registry disagrees with itself about its own path silent A · probed

Kind: static-registry-field-read-as-health

Claim. /etc/uni/limbs.json (sha256 c24589a3f9a3a712308cb9ee7ade782cf7b06b144b7c9d8ded5cc3c118b18cbf, 729 bytes) lists three limbs and marks both remote ones "status":"active". limbs_list's own tool text cites /etc/uni-limbs/limbs.json; /etc/uni/fleet-extra-peers is a two-line deprecation stub pointing at /etc/uni-limbs/limbs.json.

Reality. uni-lab-79740c (node2) -> '[Errno 113] No route to host' (EHOSTUNREACH — the mesh route is gone). uni-tab-arm-1 -> '[Errno 111] Connection refused' (ECONNREFUSED — a TCP RST came back, so the path carries packets and nothing is listening on [redacted: port]). Both reproduced twice with different tools 19 s apart. The two failures are materially different and the registry says the same word for both. Only uni-lab itself answers.

What breaks. Anything reading "status":"active" as liveness reports a wish. It also masks the distinction that matters most tonight: node2 being off the MESH says nothing about node2 on its LAN address [redacted: internal address], which is the path the off-box witness actually uses.

lab uni-lab: /etc/uni/limbs.json ; /etc/uni/fleet-extra-peers ; mcp__uni-lab__limbs_list

Producer port 4200 is documented in eight places and has no observed listener anywhere silent A · probed

Kind: documented-port-with-no-listener

Claim. viewer/infra_registry.json declares producer at port 4200 with probe [redacted: internal host][redacted: port]/producer/health. launcher.cjs:95 and :128, command_center.cjs:800 and :902, door_healer.cjs:69 and :112, door_lifecycle.cjs:127-129 and :159, gaia/caps.cjs:218 and gaia/collectors.cjs:420,481 all address [redacted: port]. viewer/discovery.cjs:41 records the history in its own words: 'producer was ALSO declared on port 4000; the registry says 4200. A hand-copied address goes stale, and a hand-copied port was simply never right.'

Reality. On the lab, the producer's Phoenix/Bandit endpoint binds [redacted: internal address][redacted: port] inside the container namespace ('[info] Running SpUiWeb.Endpoint with Bandit 1.11.1 at [redacted: internal address][redacted: port] (http)'), and host [redacted: port] is an orphan forwarder. Nothing was observed listening on 4200 on either box. NOT DEFINITIVE: the lab's `ss -lptn` output came back truncated, so the port census is a floor, not a census, and no HTTP probe of 4200 was possible (curl and wget are outside the os_exec allowlist, ssh to localhost was refused at auth, and the Windows box is off the mesh — ping [redacted: internal address] is 100% loss).

What breaks. The Door's colony panel, the command centre's colony poller, Gaia's caps and the overlook capture window are all pointed at a health route on a port that was never observed answering. The overlook channel window is one of the two that is missing entirely, which is consistent with it having failed to load its URL.

[redacted: local path] ; viewer/launcher.cjs:95,128 ; viewer/door_healer.cjs:69,112 ; viewer/discovery.cjs:41 ; viewer/studio_channels.ps1:58 (ch_overlook -> [redacted: port]/stream)

mediamtx declares eleven ingest paths; seven have never carried a byte and one is READY while dropping thousands of frames silent A · probed

Kind: declared-path-never-ready

Claim. viewer/mediamtx_local.yml declares eleven paths, presented through the [redacted: port] control API as the camera inventory.

Reality. GET /v3/paths/list -> 200 (4784 bytes): four READY — uni (rtmpConn, 1920x1080 H264+AAC, 8.17 GB in / 16.34 GB out to two readers), cam1 (webRTCSession, 960x576, 73.47 MB), cam2 (webRTCSession, 1280x720 H264+Opus, 7.44 GB in / 5.29 GB out, 4,412 inbound frames IN ERROR), cam5 (722x442, 157.3 MB, 9 frames in error). NOT ready with zero bytes: cam3, cam4, cam6, cam7, cam8, cam9, cam10.

What breaks. An operator reading the config or the API sees eleven cameras and has four. cam2 is the busiest camera on the show and is READY while discarding 4,412 inbound frames — a 'ready' flag that says nothing about picture quality. Ranked below the channel-window drift because the API does report readiness honestly if anyone looks.

[redacted: local path] ; probe [redacted: internal address] (PID 7580 mediamtx.exe)

The OBS WebSocket is unauthenticated on all interfaces and the risk acceptance rests on a network condition nothing monitors silent A · probed

Kind: documented-exposure-with-no-detector

Claim. docs/control-plane/LIMITATIONS.md `f31.obs-unauthenticated`, line 75: 'the operator's studio configuration, S2. RISK ACCEPTED BY THE OPERATOR 2026-07-29 on the stated basis that no other party is presently on the LAN or the tailnet. That is an ACCEPTANCE, not a mitigation: the port is still open and unauthenticated, and the acceptance rests on a network condition that can change without anything here noticing.'

Reality. Confirmed exactly, including the correction the doc itself carries: obs64.exe PID 48960 binds [redacted: internal address][redacted: port] (all interfaces, not [redacted: internal address]), and the Hello frame carried NO authentication challenge — authRequired=false. Anything that can reach this host on 4455 can change the program scene or stop the stream mid-broadcast. Six ports bind wide: 4455, 8090, 8096, 8097, 8102, 8443. The doc and the runtime AGREE; what is missing is any detector for the precondition.

What breaks. The whole broadcast. This is the only finding here where an outsider, not a bug, is the failure mode. It is listed as a drift not because doc and runtime disagree — they match, which is to the project's credit — but because the acceptance names a condition ('no other party is on the LAN or the tailnet') that no gate, probe or alarm re-checks, and the box also carries Intel AMT/ME on [redacted: internal address]:623 and [redacted: port].

[redacted: local path] ; obs64.exe PID 48960 on [redacted: internal address][redacted: port]

Two voice-connector processes listen on the same transcript port silent A · probed

Kind: duplicate-supervisor

Claim. The operator's transcript surface is documented as a single service at [redacted: internal address], rendered live in UNI TRACK.

Reality. netstat shows TWO distinct PIDs on [redacted: internal address][redacted: port] — 15024 and 38720 — both python.exe running '-u -m claude_voice_connector.stdio_main'. One is presumably a stale duplicate. Which one owns the accept queue was not determined and nothing was touched (that would be a mutation). Separately there is now a SECOND, unrelated TTS path: viewer/voice_server.cjs on [redacted: internal address][redacted: port] renders Piper for broadcast audio — a different job, but it means two Piper-driven subsystems now exist with only one of them tracked in git.

What breaks. Low in isolation — the port answers 200 with 6,029 bytes. It matters because the transcript is the operator's record of every spoken finding, and if the two instances write the same log they can interleave or one can silently swallow lines.

[redacted: internal address][redacted: port] PIDs 15024 and 38720 (claude_voice_connector.stdio_main) ; [redacted: local path] PID 28628 on [redacted: internal address][redacted: port]

The public /live page tells the world no watch URL is declared, while the operator is live on two platforms silent B · documented

Kind: doc-contradicts-runtime

Claim. Deployed and committed: `git show HEAD:content/generated/live_status.json` -> distribution = {"declared": false, "note": "The operator has not declared a watch URL, so none is published. A guessed link would be a fabrication."}. The built static export out/live/index.html carries the same refusal prose.

Reality. OBS reports outputActive true with 8,116,318,842 bytes pushed over 04:19:43 at the earlier probe, and [redacted: internal address] returns {"level":"LIVE_LIVE","streaming":true,"visible":true,"audible":true,"program":"CAM_A"} right now. The corrected file — declared:true with the YouTube (@ORCHESTRATEMaster) and Twitch (mregenerativearchitect) links — exists only as the single dirty file in the UNI.Public working tree and has been neither committed nor redeployed.

What breaks. Everyone who reaches universalnaturalintelligence.com/live during the broadcast is told, in confident and well-reasoned prose, that there is nothing to watch. The refusal is honest-looking, which is exactly why nobody will question it.

[redacted: local path] (working tree M) ; [redacted: local path] ; probe [redacted: internal address]

The generated gates block is stale by one gate, identically, in all three declared copies of the contract silent B · documented

Kind: generated-block-not-regenerated

Claim. CLAUDE.md:726 — 'Gates: 35 registered, of which 32 ci:true and 3 ci:false (colony, hud, overlays...). 7 lab gates.' The block is wrapped in 'BEGIN GENERATED uni.state.gates ... DO NOT EDIT. node viewer/generate_state_blocks.cjs' and the banner above it exists specifically because hand-written counts drift.

Reality. viewer/gate_registry.json parsed directly: 36 gates, 33 ci:true, 3 ci:false. The 36th is `obs-fence` -> viewer/verify_obs_fence.cjs, gate_row=obs-supervisor-refuses-to-kill-a-live-encoder. The string '35 registered' appears on two lines in each of the three declared documents. The lab-gate count of 7 is correct. Every OTHER generated block verified exact: gates.ndjson is 207 rows at sha256 1daac9124c0ce48360244f7feb8b219a130be7a89b50bb1b92dce400e8bd4ee1; control_plane/ledger.ndjson is 32 lines and anchor.json declares head b90b74980f47b93aea1c0f2efc548fd6fb707ec4a61bee38924a127d466dafc0 length 32; the plan is 7 stages / 43 steps / DONE 31, BLOCKED 1, IN_PROGRESS 1, PLANNED 8, OPERATOR 2; next_act is CHECKPOINT-E.

What breaks. Narrow in magnitude, exact in kind: this is the fourth recurrence of the failure mode the banner was rewritten to end, one layer up. The numbers are generated but nobody ran the generator after obs-fence landed, so 'generated' is now itself a claim with a half-life. Any agent or public page deriving a gate count (UNI.Public gates.json also carries 35) inherits the undercount.

[redacted: local path] ; [redacted: local path] ; [redacted: local path] ; [redacted: local path]

The retired channel launcher refuses to run for a reason that is no longer true of the file it defers to silent B · documented

Kind: doc-instructs-superseded-or-false-rationale

Claim. viewer/launch_channels.ps1:4-6 (retired at commit 5861784, 'retire the superseded channel launcher — the thing most likely to bite the next bring-up'): 'studio_channels.ps1 is a strict superset: the same three PLUS the WEB channel (CDP [redacted: port]) and the CLIP channel ([redacted: port]), and BOTH write the same viewer/channels.json. So running this one after the real bring-up... OVERWRITES channels.json with the three-window subset and strands WEB and CLIP.' The refusal text at lines 27-28 repeats it.

Reality. studio_channels.ps1's $channels array (lines 53-59) has exactly THREE entries — colony (9220), glass, overlook (9221). There is no 9223 and no 9224 anywhere in the file; its own comment at lines 50-52 says 'web / clip stay OBS BROWSER SOURCES (2D, no WebGL) on the NVIDIA'. The two files launch the same three channels, so the superset claim and the stranding rationale are both false as written. channels.json on disk holds exactly those three keys and is therefore NOT stranded — I checked and my first hypothesis was wrong.

What breaks. An agent or operator reading the refusal believes WEB and CLIP are CDP channel windows that a wrong bring-up could strand, and will go hunting for CDP listeners on 9223/9224 that the live path never creates. That is exactly what happened: the runtime brief handed to this vector listed 9223 and 9224 as DOWN Chrome CDP channels. They are not down — they were retired into OBS browser sources and the doc was not brought along.

[redacted: local path],27-28 ; [redacted: local path]

The three declared copies of the governing contract are three different documents, and the one an agent reads first is missing a governing section silent B · documented

Kind: doc-copies-diverged

Claim. viewer/state_blocks.cjs:50,364 declares three document roots — REPO, FLAG and OUT_OF_TREE (path.resolve(REPO, '..', 'UNI-Flagellum'), 'tracked by no repo') — so all three CLAUDE.md copies carry the six generated blocks and drift under verify_claims.cjs. The banner asserts the third copy is now inside the reckoning.

Reality. Three distinct md5s and three distinct lengths: UNI.Minecraft/CLAUDE.md 7c3904694484e5f19f3787bd1a5d71c1, 833 lines; UNI-Flagellum/UNI-FLAGELLUM/CLAUDE.md 7bdcad662da039fd6cf53bfb9198b67e, 556 lines; UNI-Flagellum/CLAUDE.md f471c4fb8cc3b0e168b866d21a4a3b96, 393 lines. The 393-line untracked copy — the first file an agent starting in Documents/UNI-Flagellum reads — contains ZERO occurrences of 'parity ladder is the spine'; the tracked 556-line copy contains it. All three carry the stale '35 registered' string on two lines each. A fourth copy exists at UNI-FLAGELLUM-math-workbench with no RESUME POINT banner and none of the six blocks at all.

What breaks. The parity ladder (P0..P8) is how the project states its own maturity honestly. An agent that starts in the container directory — which is where the resume instructions point — never sees it, and is tracked by no git repository, so no diff and no CI run can catch the divergence. Only the gate can, and only when someone runs it.

[redacted: local path] ; [redacted: local path] ; [redacted: local path] ; [redacted: local path],364

UNI.Public's README understates its deploy chain, and the gate that declares itself fail-closed is not in that chain silent B · documented

Kind: doc-contradicts-config

Claim. README.md: 'there is no CI here — the deploy runs `next build` and nothing else.' safety/verify_publish_safe.cjs header: 'NOTHING SHIPS UNTIL THIS PASSES, AND IT FAILS CLOSED.'

Reality. vercel.json:4 buildCommand runs four things: `node generators/verify_public_consistency.cjs && next build && node generators/verify_a11y.cjs && node generators/verify_lenses.cjs` — all three verifiers WITHOUT --prove, so the mutation suites never run on deploy. Neither safety/verify_publish_safe.cjs nor safety/verify_coverage.cjs appears in the buildCommand; both run only via `npm run gate` / `prepublish:check`, i.e. only when a human remembers, on the one box that has the gitignored safety/patterns.local.json and generators/roots.local.json.

What breaks. The gate standing between the private estate and the public internet is not on the path that publishes to the public internet. It fails closed only when invoked, and the deploy does not invoke it. Deploys from any box other than this one, or by anyone who does not run `npm run gate` first, ship unguarded.

[redacted: local path] ; [redacted: local path] ; [redacted: local path] ; [redacted: local path]

Three registered gates never run, and they cover exactly the three surfaces where live drift was found silent B · documented

Kind: coverage-hole-aligned-with-failures

Claim. viewer/gate_registry.json marks `hud` (verify_hud.cjs, gate_row=hud-suite), `overlays` (verify_overlays.cjs, gate_row=overlay-proof) and `colony` (verify_colony.cjs, gate_row=colony-count-consistency) as ci:false — listed, never run, never a fabricated pass.

Reality. All three verifier files exist on disk and none is in the runner's CI path. The three surfaces they cover are precisely where this vector found live drift: the HUD ([redacted: port] duplicate implementation, git_commit null, 58-second uptime), the overlays (overlay_server 404s every path tried; production/overlays/voice.html is untracked yet served at 200 with 6,293 bytes), and the colony (camera delivering an empty pipe, capture window absent, producer restart-looping).

What breaks. Not a dishonesty — declaring them ci:false is the right call over a fabricated pass — but it means the three most operator-visible surfaces have no automated check, and the failures found tonight are in all three. The alignment is the finding.

[redacted: local path] ; viewer/hud/verify_hud.cjs ; viewer/verify_overlays.cjs ; viewer/verify_colony.cjs

Five verifiers exist in the estate that the gate registry does not know about silent B · documented

Kind: verifier-outside-registry

Claim. viewer/gate_registry.json is treated throughout the docs as the set of gates the project claims, and gate_row.schema.json says every gate the project claims must be represented in evidence/gates.ndjson.

Reality. production/run-of-show/verify_rundown.cjs, production/verify_p1.sh, production/verify_p1_v2.sh, production/verify_python_gates.py and production/mixer/verify_scenes.py all exist and none appears in viewer/gate_registry.json. The registry is the complete set the runner knows about, not the complete set of checks in the repo — and nothing states that distinction.

What breaks. verify_rundown.cjs validates the rundown against first-show.rundown.json and the weekly grid — the artifact whose last defect commit reads '98 minutes of airtime were invisible'. It is not in the registry, so no run of the gate runner exercises it and no ledger row can represent it.

[redacted: local path] ; production/verify_p1.sh ; production/verify_p1_v2.sh ; production/verify_python_gates.py ; production/mixer/verify_scenes.py

A 4.85 MB BEAM crash dump has sat at the repository root for six days and no Erlang node is running silent B · documented

Kind: uncleared-crash-artifact

Claim. studio_up.ps1 step 2 launches ONE Phoenix node (elixir --sname uni --cookie sp -S mix phx.server) and guards hard against zombies and duplicates: 'ABORT: a Phoenix process is already running but [redacted: port] is not responding -- ZOMBIE.'

Reality. erl_crash.dump, 4,852,467 bytes, dated 2026-07-27 21:40, at the UNI.Minecraft root — untracked by git status, so gitignored, and never cleared. Right now there is no beam.smp, erl, werl or java process on the box and nothing listening on 4000, 25565 or 25575. epmd is alive (PID 3960 on 4369) with no node behind it. The dump was not opened (read-only, and it is large).

What breaks. Six days of unread evidence about how the BEAM died, on a box whose Elixir core is the pure-science substrate. The zombie guard in studio_up is well built and would have caught a half-dead node — but nothing brought the node back, and nothing surfaces its absence, because -Status does not check it either.

[redacted: local path] ; [redacted: local path]

The lab's producer unit points its PIDFile at a container that no longer exists, and host [redacted: port] is held by an eighteen-day-old orphan from a dead podman scope loud A · probed

Kind: orphan-listener-and-unconvergeable-unit

Claim. [redacted: local path], generated by the deprecated podman-generate-systemd(1): Type=forking with PIDFile=[redacted: local path], ExecStart=/usr/bin/podman start uni-producer. The registry and the Windows-side surfaces address the producer at [redacted: port] or [redacted: port].

Reality. ExecStart exits 0/SUCCESS and systemd never converges: ActiveState=deactivating, SubState=stop-sigterm, Result=timeout, NRestarts=24, Active-since 2026-07-19T03:23:06Z — stuck two weeks — with a queued start Job 1206849. The conmon actually in the unit's cgroup was for container d5f4c8defe16a029…, a DIFFERENT id from the PIDFile's. Podman also logged the container carrying restart policy 'unless-stopped', fighting systemd's own restart. Meanwhile host [redacted: port] is held by rootlessport pid 89839 born 2026-07-15T16:43:54Z in cgroup podman-89795.scope — a bare podman scope, not the unit — whose parent 89795 no longer exists; the live producer binds [redacted: internal address][redacted: port] inside a different, churning namespace.

What breaks. The producer never signals ready, so anything gated on the unit converging waits forever; the restart loop gives every camera client a 3-5 second dead window per incarnation; and a client on host [redacted: port] most likely gets a TCP accept from an eighteen-day-old forwarder with nothing behind it (that last clause is inference, not measurement). This is the mechanism behind the empty colony camera.

lab uni-lab ([redacted: internal address]): [redacted: local path] ; rootlessport pid 89839 ; container-uni-producer.service

The off-box witness capture is 168 hours past its own one-hour fence, and the contract states its contents as a present-tense fact loud B · documented

Kind: stale-capture-stated-as-current

Claim. CLAUDE.md, 'Four things that must not be softened', item 1, present tense: 'The off-box witness is COMPROMISED — node2 accepts the writer's key, independent_custodians: 0.' viewer/gaia/verify_capture_age_fence.cjs declares the bound: CAPTURE_MAX_AGE_S = 3600, inherited from SP.ControlPlane.Witness, with the pre-registered falsifier 'a capture past its max age rendered as a value'. witness.json's own claim_note calls the refusal 'a CURRENT CONFIGURATION FACT... which is why it is re-measured on every capture'.

Reality. viewer/gaia/witness.json mtime 2026-07-26T12:05:09, captured_at 2026-07-26T17:05:09Z — 168 hours old today, 168x its own max age. It has not been re-measured in a week. It cannot currently be re-measured by the mesh path either: node2 (uni-lab-79740c) returns [Errno 113] No route to host from the router box, reproduced by two different tools 19s apart. Its LAN address [redacted: internal address] — the address witness.json actually addresses it by, and a different path from the dead mesh — was not probed.

What breaks. The single load-bearing security claim of the whole control plane. Gaia's fence withholds the stale value (that half works), but the CLAUDE.md prose is not fenced and every agent reads it as current. 'We measured this and it is so' and 'we have not looked in a week and cannot look now' are different states, and only the first is in the contract.

[redacted: local path] ; [redacted: local path] ; [redacted: local path] and the two sibling copies

The architect master plan declares all three target repositories unreachable and 146 of 147 tasks blocked, while all three sit cloned and clean on this disk loud B · documented

Kind: doc-contradicts-runtime

Claim. UNI_Three_Repo_DDD_TDD_Master_Plan_v1.0.0.json, generated_at_utc 2026-07-16T14:35:06+00:00, status 'implementation_ready_with_phase_0_access_gate': current_truth 'All three supplied URLs returned public HTTP 404 during discovery', only_ready_task 'P00-T001', all_other_tasks 'blocked by dependency', and every entry in repository_registry carries default_branch: null, commit: null, license 'unknown_until_phase_0'.

Reality. All three are cloned in [redacted: local path] right now with working origin remotes, resolved branches (UNI-Encyclopedia-Cookbook main, UNI.DDNA.OS main, UNI.OS os-only) and clean trees. The plan is seventeen days stale against its own targets. It also exists as three uncoordinated versions in three directories — v1.0.0 at the architect root (the only one with a .sha256 sidecar), v2.0.0 in work/, v3.0.0 in outputs/ — and it names three target repos while the folder holds seven, including two third-party research clones and a second copy of UNI-FLAGELLUM it does not mention.

What breaks. executive_handoff.first_action instructs an agent to 'Execute P00-T001 only: authenticate and resolve the three target repository identities. Do not begin implementation against guessed repository contents.' An agent obeying it would re-run a phase that has clearly already been cleared, against a plan that is a single point-in-time JSON with no generator keeping it honest — the exact hand-written-claim-with-a-half-life pattern the FLAGELLUM contract had to fix with generated blocks.

[redacted: local path] ; [redacted: local path] (v2.0.0) ; [redacted: local path] (v3.0.0)

The acts the automated agent may never do (as this vector held them)

V2 was a read-only vector. These are the acts it declared out-of-scope, and how each one stood at the end of the run — held or fired.

IdForbidden actCurrent state (as V2 left it)
S1the writer's key on node2 — THE ONE REPAIR THE AGENT MUST NOT PERFORM. Using write access to erase the evidence of write access is not restoring a witness; it is destroying the last proof.BOUNDARY HELD, AND THE STATE IS NOW UNVERIFIABLE BY THE MESH PATH. No key was touched, no host was written to, node2 was never contacted. The recorded artifact viewer/gaia/witness.json (captured_at 2026-07-26T17:05:09Z, mtime 2026-07-26T12:05:09) still says independent_custodians: 0, custodian offbox:node2 addressed_as [redacted: internal address], port_open true, writer_reachable true, refusal null, qualifies_as_witness false. That capture is 168 hours old against the project's own 3600-second capture fence (verify_capture_age_fence.cjs, CAPTURE_MAX_AGE_S inherited from SP.ControlPlane.Witness) — 168x past its max age — and it cannot be retaken by the mesh right now because node2 returns [Errno 113] No route to host, reproduced twice with two tools 19 s apart. The honest status is therefore not 'compromised' but 'compromised as of seven days ago, and currently unmeasurable by the mesh path'. node2's LAN address [redacted: internal address] — a DIFFERENT path, and the one witness.json actually uses — was NOT probed and may well be up. CLAUDE.md states the compromise in the present tense with none of this.
S2any write to a hostHELD THIS VECTOR — read-only throughout; nothing started, stopped, restarted or killed, and no file was written outside the evidence path. The standing exposure the operator explicitly accepted is unchanged and was re-measured: obs64.exe PID 48960 binds [redacted: internal address][redacted: port] with authRequired=false — the Hello frame carries no authentication challenge — so anything that can reach this box on 4455 can write to OBS mid-broadcast. LIMITATIONS.md f31.obs-unauthenticated:75 records 'RISK ACCEPTED BY THE OPERATOR 2026-07-29 on the stated basis that no other party is presently on the LAN or the tailnet', and says in the same breath that the acceptance 'rests on a network condition that can change without anything here noticing'. Nothing monitors that condition. Six ports bind [redacted: internal address]: 4455, 8090, 8096, 8097, 8102, 8443.
S3any write to a frozen artifact — a correction is a new sidecar with a new hashHELD. No frozen artifact was written. Verified unchanged and matching its published hash: evidence/gates.ndjson, 207 rows, sha256 1daac9124c0ce48360244f7feb8b219a130be7a89b50bb1b92dce400e8bd4ee1, mtime 2026-08-01T13:41:30 — exactly what the generated block in all three CLAUDE.md copies declares. evidence/control_plane/ledger.ndjson is 32 lines and anchor.json declares head b90b74980f47b93aea1c0f2efc548fd6fb707ec4a61bee38924a127d466dafc0 at length 32; they agree.
S4any write to evidence/gates.ndjsonHELD, AND STILL OWED — and the debt just got one larger. gate_row.schema.json requires every gate the project claims to be represented in evidence/gates.ndjson; the generated registry-vs-ledger block reports 1 of 35 registered gates present and 34 absent, and the registry has since grown to 36 (obs-fence landed and the block was never regenerated), so the true gap is 35 absent. The blocker is NOT his signature: desk.preRegistration() reports most of the missing rows blocked on an empty receipt_path the schema requires, which is a pre-registration document an agent owes him. He could not append them today even if he wanted to. The desk at /lab/l5 prints each exact line.
S5any contract amendmentHELD — nothing in any CLAUDE.md was edited. But the contract is currently THREE non-identical documents, and the divergence is itself unresolved: UNI.Minecraft/CLAUDE.md md5 7c3904694484e5f19f3787bd1a5d71c1 at 833 lines; UNI-Flagellum/UNI-FLAGELLUM/CLAUDE.md md5 7bdcad662da039fd6cf53bfb9198b67e at 556 lines; UNI-Flagellum/CLAUDE.md md5 f471c4fb8cc3b0e168b866d21a4a3b96 at 393 lines. The 393-line copy — the one an agent starting in Documents/UNI-Flagellum reads FIRST, and the one tracked by no git repository — has zero occurrences of the 'parity ladder is the spine' section that the tracked copy carries. A fourth copy at UNI-FLAGELLUM-math-workbench has no RESUME POINT banner and none of the six generated blocks. All three declared copies carry the stale '35 registered' count.
S6go-live, in any formTHE STREAM IS LIVE, AND NO AGENT PUT IT THERE — the operator did, which is the stop working as designed. Measured: OBS outputActive true, timecode 04:19:43.133 with 8,116,318,842 bytes out and 467,494 frames at the earlier probe; right now [redacted: internal address] returns {"level":"LIVE_LIVE","streaming":true,"visible":true,"audible":true,"program":"CAM_A"} at 2026-08-02T16:42:12.151Z. The F31 guard is real (viewer/golive_guard.cjs, gate golive-refuses-agents ci:true, plus the operator's prover prove_golive_refuses_me.cjs) and binds seven paths in this codebase — and it is presence_evident, NOT unforgeable, per LIMITATIONS f31.presence-evident. This vector attempted no go-live path.
S7proof 3 disagrees with proof 1 — speak it, stop; the agent does not pick a winner aloneFIRED, AND I AM NOT PICKING A WINNER. Two measurements of the SAME port reached opposite verdicts. From the studio, a cold socket.io client against [redacted: internal address][redacted: port] received 398,822 bytes in 447 ms — a version frame 42["version","1.16.5"] followed by live entity packets with real coordinates. From the lab, the same [redacted: port] showed socat accepting a client per second, logging 'successfully connected' to uni-producer:3020, then EOF on both sockets in the SAME journal second and exit 0, with `ss` finding no established connection at all. Both are class A. They were taken at different times, and a mechanism exists that would produce both — the producer restart-loop (NRestarts=24; a fresh pid appeared at 16:34:58.965Z replacing one that had already vanished; each incarnation needs ~3-5 s from container start to '[director] spawned; camera on [redacted: port]'). That mechanism is a CANDIDATE explanation, not a verdict. Speaking it and stopping.
S8a pre-registered falsifier fires — that is a RESULT, not an obstacleNOT OBSERVED TO HAVE FIRED THIS VECTOR, because no gate was run — the ground rules forbid gate_runner, mix test and every build. One falsifier is measurably ARMED and would need only a run to settle: verify_capture_age_fence.cjs pre-registers 'a capture past its max age rendered as a value' against a 3600 s bound, and viewer/gaia/witness.json is 168 hours old. Whether the fence catches it or the value is still rendered somewhere unfenced can only be established by running the gate. The CLAUDE.md prose that restates witness.json's contents in the present tense is NOT behind that fence.
S9a receipt cannot be reproduced from its own commitNOT TESTED — reproducing a receipt requires running its command, which this vector may not do. One adjacent fact makes it live rather than theoretical: two servers are executing bytes older than the commits that changed them (viewer/publisher.cjs PID 40356 started 01:40:10 against commit f67a5d7 at 09:05:22; viewer/track/track_server.cjs PID 30176 started 09:29:47 against commit e0163b8 at 09:39:33). Any receipt produced by either process right now would record behaviour that HEAD does not produce, and would therefore not reproduce from its own commit. The `build-identity` gate exists for exactly this and was not run.
S10running any of the nine PENDING science gatesHELD — no science gate was run, and none could have been. The rule remains unnamed and unenforceable, exactly as the plan itself diagnoses at stage 4 step 4.6 build L4: 'THE NUMBER IN THIS RULE MATCHES NOTHING MEASURABLE... Measured 2026-07-28: the scaffolded set is EIGHT, gates PENDING NOW are TWELVE, gates EVER PENDING are FIFTY-NINE. S10 says NINE and names no members.' The lab's sealed room therefore holds EVERY pending gate — over-sealing rather than under-sealing, and saying so. The road behind it is unmoved: runs/pureworld_qa_gate.exs still carries @scaffold and raises if invoked, so forage-pureworld-graduation and colony_on_program remain blocked; and on the lab, uni-collector-metab.service — the Phase-2 metabolism RED collector — is 'loaded failed failed', so no science tick is being collected at all.

Orphans — listeners and processes nobody claims

14 of them. An orphan is a socket, a process or an artifact that no file in any audited repository claims responsibility for. A listener without an owner is a listener nobody will patch.

Gaps V2 left open, and what would close them

What V2 could not measure this pass, said plainly, alongside the vector that could.

GapClosed by
Whether the gate registry actually passes right now. 36 gates are registered and 33 are ci:true; the gate-runner tally in CLAUDE.md is documented as having had a half-life of 176 seconds, and running it is forbidden this vector. UNI.Public's published gates.json carries a local block reading 31 PASS / 1 FAIL with not_passing ["host-tracking=FAIL"], and a CI block reading 94 runs examined, 94 failures, 0 successes, latest run 30739562843 conclusion failure at 2026-08-02T08:19:47Z — but those are recorded numbers, not a run I made.A vector permitted to run `node viewer/gate_runner.cjs` and to append nothing (report-only). Must also run `node viewer/generate_state_blocks.cjs --check` to settle the 35-vs-36 block.
Whether the running images of publisher.cjs and track_server.cjs literally differ in bytes from disk, or merely in commit timestamp. I compared process CreationDate against the commit timestamp of the last commit touching each file and against file mtime — strong, but a timestamp is not a hash of loaded source.A vector permitted to run viewer/verify_build_identity.cjs (gate_row=boot-identity), which is the instrument written for exactly this question.
Whether the lab's producer answers HTTP on [redacted: port] or [redacted: port] at all. curl and wget are outside the os_exec allowlist (the refusal printed the allowlist), ssh uni@[redacted: internal address] was refused at auth ('Permission denied (publickey,password)'), the Windows box is off the mesh (ping [redacted: internal address] is 100% loss, both ports time out at 8 s), and running a curl container would be a mutation. Both the lab `ss -lptn` and `podman_ps` outputs came back TRUNCATED, so the lab port and container censuses are floors, not censuses.A vector with an approved os_exec read window (or a second entry point onto the mesh) that can run `ss -lntp`, `podman port uni-producer`, and one HTTP fetch of /producer/health. Ideally not while the operator is on air, since os_exec pauses for a co-sign.
Whether node2 is alive on its LAN address [redacted: internal address] — a DIFFERENT path from the dead mesh, and the address viewer/gaia/witness.json actually addresses it by. uni-lab holds [redacted: internal address]/24 on eno4, the same /24, so a LAN-reachable node2 with a dead mesh route is entirely possible and would mean the witness path is fine while the mesh path is not. The mesh EHOSTUNREACH is not evidence about this path.A vector permitted one os_exec read from uni-lab: `ping [redacted: internal address]` plus `ssh -o BatchMode=yes` reachability, or simply re-running viewer/gaia/witness_probe.cjs. This is what would let the 168-hour-stale witness capture be retaken.
Which OBS scenes actually reference the two missing capture windows, and what they render right now. I established that channels.json names three window titles, that obs_stage.cjs binds by exact title, and that only ch_glass exists — I did NOT enumerate scene items, because GetSceneItemList needs a probe script and I may not write files outside the evidence path.A vector allowed to write one temp probe into the evidence directory (with `ws` resolved from viewer/node_modules) and call GetSceneItemList + GetSourceActive per scene. Read-only against OBS; the earlier vector proved the pattern works.
Whether ch_colony and ch_overlook died during the show or were never launched this session. Chrome carries no start-time evidence for a process that no longer exists, and viewer/logs was not read.A vector that reads [redacted: local path] and the Windows Application event log for chrome.exe terminations — cheap, read-only, and it distinguishes 'the bring-up was partial' from 'they crashed on air'.
The real Elixir test count. README claims 'mix test green (100 tests)' while test/ holds 139 *_test.exs files over 133 lib/**/*.ex. Running mix test is forbidden, and no BEAM is even alive on the box right now.A vector permitted `mix test` in a scratch worktree (never the live tree). Low priority against the on-air findings.
Whether the operator's CHECKPOINT-E co-sign has happened. I proved the surface is correct and live — /lab/l6 returns 9005 bytes, /api/lab/shot?swap=0 returns 3371 bytes and ?swap=1 returns 3375 — but M8 is the operator's eye and no gate can stand in for it.None. This one is his, by design, and that is the point of it.

What was taken out of this page

No item was refused. 353 structural references were redacted in place. No item was withheld from the estate directory. 353 structural reference(s) (internal addresses, hostnames, ports, local filesystem paths) were REDACTED IN PLACE with a visible marker, because the sentence still means something without them. That is a different act from a refusal and the number is stated so the two do not blur.

Two different things happen to two different kinds of sensitive text, and the difference is deliberate. Structural details — an internal address, a hostname, a port, a local filesystem path — are redacted in place and leave a visible [redacted: …] marker, because the sentence still means something without them and you can see something was removed. Third-party names are refused, never redacted: the whole item is dropped, because a marker where a name used to be still tells you a name was there, and a sentence built around a removed name is often still identifying. What you get instead is the count.