- conforms_to::[[Observation Form Contract]]
- has_epistemic_status::[[Empirical Observation]]
- in_practice_domain::[[eOS Continuum]]
- authored_by::[[Christopher Allen]]
- has_lifecycle::[[Seed Stage]]↗
- has_curation::[[Working Draft]]↗
Console and Wire State Queries Read the Live State Graph, Not a Synthesized View
Claim
On the running eOS runtime platform (DGD 1.7.9 plus the eOS-kernellib kernel layer), state queries at both operator surfaces answer from the live state graph: operator console verbs enumerate current subsystem state over telnet, and authenticated HTTP reads return current record state over the wire. A mutation committed by one operation is visible to the very next query -- a console bind shows up in the next identity show, a registrar approval shows up in the next query-approved-registrars, an agent suspension reaches an open server-sent-event stream within one poll interval and refuses the agent's next authentication ceremony. No restart, no redeploy, no debugger attachment, and no separately-maintained introspection API sit between the query and the state it reports.
Grounds
This is an Empirical Observation. The grounds are three machine-asserted runs captured 2026-07-18 against the same platform build.
Setup (verifiable from repo state):
- Driver: DGD 1.7.9 built from eOSContinuum/dgd.
- Kernel layer: eOSContinuum/eOS-kernellib's identity-recovery branch, HEAD
9a905ca(the recovery-ceremony wave, stacked on the SSE-activation and agent-panel waves). - Runs 2 and 3 load the lpc-ext crypto module; run 1 is deliberately module-less (its verbsets assert the crypto-absent stand-downs alongside the introspection reads).
Run 1 -- the ten-verbset console drive (module-less):
The console-drive smoke script boots the platform headless with vault-app and upgrade-cascade deployed, logs into the real telnet console, and drives ten verbsets whose every expectation is a regex assertion against live verb output. All ten passed. The introspection reads exercised, each read returning current state and each read-after-mutation reflecting the mutation:
status,users, andstatus <Index logical name>(admin-baseline): runtime and per-object resource state, including name-resolved clones (status Schema:Core:Entry,status Vault:Daemon).log-levelread back after every threshold set (logging-verbs): setnotice, readnotice; setdebug, readdebug.- Dispatcher introspection (dispatcher-verbs):
cascade-depthread/set/read cycles,batch-status,dispatch-trace statusreflectingon/offtransitions, andquery-approved-registrarsreflecting anapprove-registrarand itsunapprove-registrarin the immediately following reads; observer registration enumerated byobserversafterregister-observeragainst a live clone. - Port labels, Schema node reads, and Index lookups (
query_object(...)resolving live objects by logical name).
Run 2 -- the identity-recovery console verbset (crypto boot):
The console-drive smoke script run against the identity-recovery verbset, 10/10. The introspection-relevant sequence: identity mint 2 creates a record; identity bind <uuid> <challenge> <cdj> <ao> verifies a foreign-generated attestation and binds a passkey; the very next identity show <uuid> returns identity: credentials: 3 -- the two recovery-code rows plus the passkey the previous verb just bound. The read reports the record as it is after the atomic bind, with no intermediate refresh step.
Run 3 -- the composite example's wire surface (crypto boot):
The composite-app example's smoke run, 38/38 sentinels over real TCP. The introspection-relevant sentinels:
AGENT-LIST OK: an authenticatedGET /auth/agentsreturns the controller's live agent rows (uuid, suspended flag, delegated capabilities) -- the same record state the console'sidentity showreads, exposed over HTTP through the authd facade's session-scoped read.SSE-AGENTS-PUSH OK: with an agent-state stream held open, a suspend committed over the wire changes the rows, and the broker's next poll of the same read (a two-second cadence) pushes the changed snapshot to the open stream -- the query surface tracks the mutation with no cache to invalidate.AGENT-SUSPENDED-REFUSED OK: the suspended agent's next token ceremony is refused because the ceremony reads the record's live suspended flag at verification time; nothing served a stale cached authorization.
What the evidence establishes:
- The runtime answers state queries from its live image, at the operator console and over authenticated HTTP, while running.
- A committed mutation is visible to the next read on the same surface and across surfaces (a console bind visible to the console read; a wire suspend visible to the wire read, the open stream, and the ceremony gate).
- The introspection surface is mediated and bounded: console verbs run behind operator authentication, the wire read behind a live session with own-records scoping, and both behind the System-tier daemon gates. The queries read the state graph the daemons own -- introspection here is a governed platform surface, not raw memory access.
What the evidence does not establish:
The runs are sequential probes; no measurement here adjudicates read latency under load, concurrent-query behavior, or the cost of the reads. The wire read covers the own-agents scope only -- it does not demonstrate an unbounded cross-principal query surface (and the capability posture forbids one). The verbset assertions are regex expectations against verb output, not full-output captures; only the most recent run's raw transcripts survive locally.
What Would Revise It
- A run where a committed mutation is not visible to the next read -- an
identity showmissing a just-bound credential, aquery-approved-registrarsmissing a just-approved registrar, or an agent ceremony honoring a suspended record -- would falsify the live-state claim and indicate a cache or a synchronized-view layer had crept between the query surface and the state graph. The identity doctrine explicitly forbids cached authorization decisions, so such a finding would be a platform defect, not a reframing. - A platform change that routes these reads through a separately-maintained view (a reporting store, a periodically-synchronized snapshot) would shift the claim from "reads the live state graph" to "reads a synthesized view", which is exactly the pattern the downstream Conviction rejects; this Observation would then become evidence about the prior architecture only.
- Evidence that the poll-bridged agent stream is the only wire path and its cadence is misread as push latency would not revise the core claim (the poll reads live state each cycle) but would require the framing here to keep the poll cadence explicit wherever the stream's freshness is cited.
- A future load or concurrency measurement showing reads observing torn intermediate state during an atomic mutation would contradict the composition with the atomicity primitive and require both this node and the atomicity evidence to be re-examined together.
Sources
- eOS-kernellib's console-drive harness script and its verbset definitions -- the ten default verbsets whose assertions are the run-1 grounds; the identity-recovery verbset is the run-2 drive.
- eOS-kernellib
examples/composite-app/Inventory/sys/test.c-- the wire driver whose sentinel comment block maps the run-3 phases (AGENT-LIST, SSE-AGENTS-PUSH, AGENT-SUSPENDED-REFUSED). - eOS-kernellib
docs/admin-console.md-- the operator verb inventory the console reads belong to. - eOS-kernellib
docs/system-daemons.md-- the authdquery_agentssession-scoped read and the daemon gates that bound every query surface cited here.
Relations
-
conforms_to::[[Observation Form Contract]]
- Carries
has_epistemic_status::[[Empirical Observation]], names the measurements (three dated machine-asserted runs: the ten-verbset console drive, the identity-recovery verbset, the 38-sentinel composite wire run), states the limits (sequential probes; no load or latency measurement; own-agents wire scope; regex assertions not full captures), and lists concrete revision conditions.
- Carries
-
informs_downstream::[[Runtime State Is Queryable Directly, Not Through a Synthesized API]]
- The state-introspection Conviction this node evidences -- the last of the eight runtime primitives without a project-evidence Observation. The Conviction's gap analysis asked for an agent-facing introspection surface beyond the runtime's internal building blocks; the authd session-scoped read over HTTP and the operator verb inventory are that surface, and the mutation-tracking evidence demonstrates the no-synchronization-drift property the Conviction says adoption purchases.
-
grounded_in::[[Cloud Server (Croes, 2012, rev. 2026)]]
- The Cloud Server Reference marks state introspection cloud-server "Partial" --
status()used internally, no public introspection endpoint. The kernel layer's operator verbs and the authd wire read are the mediation the Reference's gap column anticipated; this Observation documents them working live.
- The Cloud Server Reference marks state introspection cloud-server "Partial" --
-
grounded_in::[[Capability Boundaries Are Runtime-Enforced, Not Policy-Checked]]
- The composition the evidence exercises from the introspection side: what each query can see is bounded (operator authentication for the console, a live session with own-records scoping for the wire read, System-tier gates under both). The bounded scope is part of the demonstrated behavior, not a caveat.
-
grounded_in::[[Event Notification Is Atomic With State Change, Not Polled or Queued]]
- The composition at the stream surface: the audit topic pushes from inside the atomic write, while the agent-state topic deliberately polls the live read on a cadence -- the SSE evidence here keeps the two shapes distinct, and the mutation-visibility claim rests on the read being live each cycle, not on push semantics.
-
contrasts_with::[[A Cached Snapshot Read Diverges From the Live Shared Log]]
- The sibling Observation demonstrating the failure shape this node's surfaces avoid: a read served from a cached copy diverges from live state. Here every cited read goes to the live graph, and the divergence pattern is what the What-Would-Revise-It conditions watch for.