Sizes Thing Script's floor for campaign thing2, target thing2:target:r1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
38 KiB
Thing 2.0 consumer census
Campaign: thing2. Target: thing2:target:r1. Ruling cited: thing:ruling:wire-rename-freeze-fold.
Author: Eyes (agent eyes-thing2-consumer-census, session self-2026-10-10c-eureka), read 2026-10-10. Facts only; "(inferred)" marks a reading from patterns rather than a located line. No recommendation.
Purpose: size the floor of the four consumer-contract parts in docs/thing2-target.md (Thing Script documents, binding, commands with typed results, advertisement) from what consumers publish, bind and command today. It does not re-derive docs/thing-campaign.md; rows are cited as T (rename table), E1-E7 (edges), B1-B28 (body facts). Campaign B14 (102 eve ids, 24 repos carry the advertisement id), B15 (what Idunn runs), B16 (one Verse-wide discovery edge), B19-B24 stand and are not repeated.
Method and limits
- Every repo read at its
origindefault ref (not the local branch), viagit grep/git show. Heads read: Ymirf8c0e39(2026-09-29), CultLibdbcb2a8e(2026-10-10), EveUnity92f0dbb(2026-08-26), EveConformance048ea2f(2026-09-16), EveElectroncba684c(2026-09-13), EveFlutter3511e5c(2026-07-10), EvePluginsc5a4a75(2026-07-15), EveTui01ea52f(2026-07-10), AquaSynthaed6525(2026-09-13), Lokib20fb98(2026-06-13), repixelizer06c1cf4(2026-09-30), Sai2e7be7e(2026-07-10), Stonks3f6e91c(origin/codex/stonks-market-daemon, 2026-09-30; no origin/main default), StreamPixels8d40541(2026-10-03), Vili8773c15(2026-09-13), weksad16cff5(2026-09-13), Bifrost67072b2(2026-10-10), Gjallar6a92976(2026-09-29), Odin8e1de66(2026-10-01), Ghostlight327cbe3(2026-10-10), Heimdall7904e17(2026-09-30), Hermodrf8e6e84(2026-09-06), Mimird88f2e6(2026-09-14), Muninn1d0ea0b(2026-09-30), VoidBot46d891b(2026-09-13), Brokkrf97d4dc(2026-10-10), Aetheria0caf1fa5(origin/master, 2026-10-10), Eveb7d154b(2026-10-10), gamecult-ops9aed01f(2026-10-10; B15 pinnede4042ee). - "Kind" counts come from regex over publisher source (JSON/JS/Rust/C#/Python literals
kind: "x","kind": "x", and builder-call names such aspane(,.Metric(). The vocabulary used to recognise a kind is the union of the kernel fixtures andeve-browser-lowering'skind ===tests (70 names). Counts are literal-occurrence counts in publisher files, not runtime node counts. Publishers that build node trees from computed strings or typed structs are undercounted (inferred). Test, doc, dist and fixture paths excluded unless stated. - "Advertisement fields filled" is a text match for the schema's property names in the publisher files; typed-struct publishers can hide fields from it (inferred).
- Aetheria publishes nothing:
git grepforgamecult.eve,EveSurface,cultuiin non-markdown files oforigin/masterfinds one Obsidian index blob only. Its surfaces come through AetheriaEve (frozen, out of scope per target). - Not located: Gjallar and Ghostlight do not appear in
scripts/idunn/idunn-deployment-targets.ps1at9aed01f(Ghostlight has its own bindingidunn/yggdrasil/bindings/ghostlight.toml.in; Gjallar'sgjallar.serviceis as B15 states). Not re-derived.
The kernel's own vocabulary (floor reference)
- Kernel fixtures:
web/fixtures/*.jsonsurface fixtures at Eveb7d154bhold 35 distinct node kinds over 12 fixture files (node = object withid,kindand props/children); 24card, 34text, 10metric, 8input.number, 7partition, 7pane, 7control.button, 6surface. Single-use kinds:vn.stage,embed.norn,embed.tex,field.surface2d,graph,canvas.editor,dropzone,input.file,layer.cards,layer.embedded-surfaces,status.stage,panel.dialogue,text.dialogue,rail.actions,image.background. (thing2-target.mdsays 41 kinds in the fixtures; the 35 here is the JSON surface fixtures only,.eveDSL fixtures usecard/text/list.) Source:/f/Projects/Eveweb/fixtures/(scripts/k1.py). - Kernel authoring/lowering mentions 70 distinct kind names across
eve-browser-lowering/src/index.ts(kind ===tests:rail,row,column,grid,form,modal,dashboard,cockpit,world.scene2d,world.scene3d,world.entity3d,inventory.grid,inventory.item,inventory.drag_session,list.item,control.*,input.*,image.sprite, ...), the fixtures, and the C# builder. - Kernel contract doc:
docs/surface-contract-v1.md:93-109("Kinds are semantic", primitives plus "domain kinds such asvn.stagewhen the provider needs richer semantics", fallback "through the kind path":panel.dialoguerenders aspanel);:293-bindings (bindingName,writeCommand,captureBindings, local drafts);:255-standard command names (select,invoke,open-provider,story.*,style.patch,edit.value,toggle.visibility,transform.*).
1. Per-consumer facts
Liveness key: LIVE = Idunn target running per B15 (cited, not re-derived); BUILD = build-time or library consumer; DORMANT = no deploy target and no commit within ~90 days of 2026-10-10 (or no target).
Providers and Verse daemons (publishers)
Ghostlight 327cbe3 — LIVE (Yggdrasil, own binding; B15). Commits 90d: many (2026-10-10).
- Publishes:
gamecult.eve.surface.v1viacrates/ghostlight-dungeon/src/eve.rs(1007 lines). Kind literals:textx7 (:173),cardx3 (:188),control.input.textareax6 (:271),control.input.textx5 (:257),control.input.numberx1 (:433),control.buttonx1 (:826),surfacex1 (:808),heimdall.access_gate(:119),heimdall.identity(:236). 9 distinct kinds, 2 domain (heimdall.*). Provider/surface ids inmesh.rs(12 id hits). - Binding: node
stateBindingswithlocal_draftentries{targetProp:"value", pointerId:"ghostlight.local.<key>", sourceId:"eve.browser.local", schemaId:"gamecult.eve.local_draft.v1", routeKind:"in-process", bindingName, valueKind, accessMode:"local-draft", authority:"eve.browser"}(eve.rs:872-884; 19stateBindingshits,eve.rs:259). Capture of drafts:captureBindingssent underpayload.bindings(runtime.rs:144comment). Relies on the renderer (vendoredvendor/evelowering via its own web client, B17) to hold drafts and resolve; server routes/api/eve/{provider,surfaces/{id},commands,events}(runtime.rs:655-658, from B17). - Commands handled (operation ids,
runtime.rs:845-1476; request schema mapeve.rs:708-720):heimdall.auth.begin(heimdall.auth_begin_command.v1),heimdall.auth.complete(heimdall.auth_complete_command.v1),app.auth.logout(ghostlight.app_logout.v2),world.create(ghostlight.world_create.v4),world.approve(..._v0),world.activate,world.advance_time,world.seed(ghostlight.world_seed.v1),world.play(ghostlight.world_play.v0). 9 operations. Envelope validated ateve.rs:665-700(invocation schemagamecult.eve.command_invocation.v1,receiptSchemamust equalgamecult.eve.command_result.v1, payload schema must equal the operation's). Result:gamecult.eve.command_result.v1built byeve.rs:734 command_result. - Known rejected path (in source):
eve.rs:723-731— a flat result is rejected whole by the browser ("invalid Eve command result: data must not have additional properties", no command completes) because the result schema admits exactlyschema, receipt, transientProjection, pluginPayload, draftDirective. Schema: Eveschemas/gamecult.eve.command_result.v1.schema.json(required: [schema, receipt]). - Advertisement: 17 of 18 schema properties matched in
mesh.rs(all 11 required); alsopluginsurface docs via Heimdall (below). - Test gap: four
#[ignore]Eve-bridge tests run on no automated path (B17).
Muninn (daemon + sleipnir) 1d0ea0b — LIVE (Starfire, Raven, Nightwing; B15).
- Publishes:
crates/muninn-daemon/src/main.rs:2637-2750(publish_move_hue_eve_surface):card(:2655),dashboard(:2687),panex5 (:2695),textx4 (:2698); surface keysurface:muninn.telemetry.<host>.move-hue(:611).crates/sleipnir-daemon/src/main.rs:cardx3 (:1034),panex7 (:1104),dashboardx2 (:1121),input.binding-map(:1376),binding.target(:1401),textx2 (:1459). 6 distinct kinds across both; all primitives (inferred:input.binding-mapis a kernel lowering kind,docs/surface-contract-v1.md/index.ts). - Binding: records written to a CultCache node via
node.put(&surface_key, &surface)withEveSurfaceStateRecord(main.rs:2673-2753); no stateBindings located (inferred: static snapshots republished each tick). - Commands: reads
gamecult.eve.command.v1documents (main.rs:785), command namesmuninn.capture_stream_command(:2966),muninn.move_light_command(:2978),muninn.set-move-hue-program(:2986); actionsstart/stopwithpending/runningstates (:1185-1191); supersede logic for stale capture commands (:1172-1282). Receipts: command document default id"eve-command"(:840). - Advertisement: 13 of 18 properties;
schemasandwitnesses(required) not matched (inferred: may be built elsewhere).
VoidBot 46d891b — LIVE (swarm publisher on Yggdrasil; B15).
- Publishes:
scripts/render-voidbot-swarm-dashboard.mjsbuilds the tree witheveNode(id, kind, props, children):metricx13 (:1449),panex10 (:1411),textx8 (:1412),listx7 (:1484),gridx3 (:1455),rowx2 (:1397),control.buttonx2 (:1495),cockpit(:1378),rail(:1400),control.slider(:1428). 10 distinct, all primitives. Provider ads inscripts/export-voidbot-provider-advertisements.mjs. - Binding: richest located use. Node props carry
stateBindings: [{targetProp:"text", pointerId:"globalHeat", sourceId:"voidbot.swarm_control_state:voidbot-swarm", schemaId:"voidbot.swarm_control_state.v1", routeKind:"cultmesh-rudp", routeDescription}](render-...dashboard.mjs:1415-1421).statePointer-family regex finds 175 hits repo-wide, mostly Persona/state-path code unrelated to Eve (inferred; the Eve use is the dashboard). Alsogamecult.eve.surface_state.v1x9,interface_binding.v1x5 id mentions (e.json). - Commands:
scripts/serve-voidbot-swarm-cultmesh.cjs:159-193— acceptsgamecult.eve.command.v1, onlycommand.command === "swarm.set_heat"forproviderId "voidbot.swarm"(:161), range check 0.05-2 throws (:164), appliesglobalHeatand writesgamecult.eve.command_receipt.v1(:182-193). One command. - Advertisement: 9 of 18 properties;
serviceId,kind(required) not matched.
Vili 8773c15 — LIVE (Raven; B15).
- Publishes:
scripts/vili-daemon.mjs:422-449eveSurface()— nodes use the legacytypekey notkind:panel(:431),statx7 (:434),commandx2 (:441).statandcommandare not kernel kinds (not in the 70-name vocabulary) (inferred legacy dialect;commandis{type:"command", method:"GET", href}). Vili also serves/eve/operator,/eve/deck(:25, :256-308). - Binding: none. Commands: none through Eve;
gamecult.vili.command_boundary.v1is its own schema (:85-96, :315-322). Advertisement: 9 of 18;serviceId, kind, freshness, schemas, witnesses, commandsnot matched.
Stonks 3f6e91c (origin/codex/stonks-market-daemon) — LIVE (Starfire; B15).
- Publishes:
src/stonks-daemon.cjs:623-720builderspane(x5,metricNode(x14,textNode(x6, plus akind: "interface"node (:661) that child-surface aggregators read (GjallarProgram.cs:616filters children onkind == "interface").gamecult.eve.surface_state.v1document type (:195-199). - Binding: none located. Commands:
stonks.command_boundary.v1own schema (:179-183); no Eve command handler. Advertisement: 10 of 18; requiredserviceId, verseId, freshness, schemas, witnessesnot matched.
weksa d16cff5 — LIVE (Starfire; B15).
- Publishes:
scripts/weksa-daemon.mjsbuildOperatorSurfacearea (:619, :826, :1014):panel,person,text. Document typesgamecult.eve.surface_state.v1,interface_binding.v1,provider_advertisement.v1(:395-423); witnesseve-surfaces.cc(:160, :286).personis likely a weksa domain node (inferred). - Binding:
gamecult.eve.interface_binding.v1document (:412); 18state_ref/statePath-family hits (e.json). Commands: RUDP command server (scripts/weksa-rudp-command.cjs), single commandmimo voicedesign(weksa-daemon.mjs:69-71, schemaWEKSA_MIMO_VOICEDESIGN_COMMAND_SCHEMA_ID), receipt viahandleMimoVoiceDesign; not an Evecommand.v1handler (inferred). Advertisement: 14 of 18;freshnessunmatched.
Gjallar 6a92976 — LIVE (Nightwing gjallar.service; B15).
- Publishes:
src/Gjallar/Program.cskind literalsdashboard(:846),pane(:1599),text(:1610),interface(:810); reads childinterfacenodes (:616).VerseState.cs:169dashboard. 4 distinct, 1 non-kernel (interface). - Binding/commands: none located (0 command hits). Advertisement: 15 of 18;
commandsunmatched.
Heimdall 7904e17 — LIVE (Yggdrasil; B15).
- Publishes: no surface;
gamecult.eve.plugin_advertisement.v1(x5) with plugin idHEIMDALL_ACCESS_PLUGIN_ID, capabilityheimdall.access_gate(src/access-plugin.ts:86), ABIgamecult.eve.plugin_abi.request.v1(:63), plugin operationsdescribe/validate/project(:40), transportcultnet.operation.v0(:33-37). This is the only live domain-kind capability besides Ghostlight's use of it. - Commands advertised:
heimdall.auth.begin,heimdall.auth.complete,app.auth.logout(:56); envelopegamecult.eve.command_invocation.v1, receiptgamecult.eve.command_result.v1(:41-42). Private command receipts in Postgres (src/store/schema.ts:70). - Advertisement: 8 of 18;
serviceId, verseId, freshness, surfacesunmatched.
StreamPixels 8d40541 — LIVE (Yggdrasil service + web; B15).
- Publishes: advertisement only (
apps/service/src/verse-state.ts:32-134), surface referenceeveSurfaceId: "streampixels.eve.service_status.v0"(:134); no kind literals. Binding/commands: none located (0 hits). Advertisement: 8 of 18;serviceId, verseId, freshness, schemasunmatched.
Odin 8e1de66 — LIVE (Yggdrasil, Starfire, Raven; B15). Consumer/aggregator, emits none.
crates/odin-core/src/documents.rs:10-12,155-183: readsgamecult.eve.surface_state.v1(EveSurfaceStateRecord),interface_binding.v1(EveInterfaceBindingCompatRecord),provider_advertisement.v1. Rust readers drop unknown records (B10/B16).
Hermodr f8e6e84 — target status archived though a compose service exists (B15). Role: lowering and command relay: src/hermodr-daemon.cjs:37-52 document types command.v1, command_receipt.v1 ("reconciled" state per README); src/static-lowering.cjs, src/lower-surface.cjs (no kind literals found; Hermodr lowers server-side, inferred). Subscription code present (17 subscribe hits).
Bifrost 67072b2 — blocked (B15); 66 commits in 90 days.
- Publishes:
tools/provider-advertisement.mjsmetricNode(x9 (:859),dashboard(:914),panel(:984),metric(:993),list(:1001),textx2 (:1006),Program.cs:229Text(x24;Features/Motions/MotionEveSurfaceService.cs:form(:35),textx3 (:47),panel(:53),card(:100). 6 distinct, all primitives. Surface endpoints/eve/tui,/eve/gui(:321-322). - Commands:
bifrost.motion_command.v0atcultmesh://<svc>/commands/motion(MotionEveSurfaceService.cs:7,provider-advertisement.mjs:166,330),bifrost.bridge_action.v0, discord-post commands (:323-326). These are Bifrost schemas, notgamecult.eve.command*(inferred from endpoint list). Binding:interface_binding.v1x2. Advertisement: 15 of 18;serviceIdunmatched.
Mimir d88f2e6 — Nightwing dashboard target archived (B15 / ops file :250-259).
- Publishes:
src/Mimir.EveDashboard/Program.cs: builder callsText(x77 (:1198),Pane(x20 (:1197),Card(x7,Metric(x8,Row(x3; literalsavatar(:3424). Own idsmimir.eve_dashboard_state.v1,mimir.eve_operator_surface.v1,cultmesh.eve_surface.v0(x3),mimir.eve_sensor_observation.v1,mimir.eve_media_observation.v1,mimir.eve_dashboard_command.v1(E1 per T). Binding: reload-heavy (274reload|pollhits) (inferred polling dashboard). Advertisement: 7 of 18.
repixelizer 06c1cf4 — blocked (B15); 4 commits in 90 days.
- Publishes:
src/repixelizer/eve_surface.py:partitionx5 (:214),text(:27),card(:38),pane(:72),input.select(:310),control.range(:342),surface(:443); fixtureweb/fixtures/repixelizer.eve-surface.jsonin Eve. 7 distinct, all primitives.surface_state.v1x2,verse_state.pyx16 id hits. Commands/binding: none located. Advertisement: 8 of 18.
Loki b20fb98 — DORMANT (not deployed; last commit 2026-06-13).
- Publishes:
src/loki-daemon.mjs:517-622surface,panelx2,metricx8 (call+literal),textx2,inspector.kvx4 (:492) (inspector.kvis not a kernel kind except in EveUnity UI Toolkit lowerer; inferred domain-ish). Advertisement 16 of 18 (schemasincl.gamecult.eve.surface.v1:389,446);commands: [](:453,456). Binding/commands: none.
Sai 2e7be7e — DORMANT (not deployed; last commit 2026-07-10).
- Publishes:
src/eve.jsemits the VN domain family:vn.stage(:301),panel.dialogue(:267),text.dialogue(:279),rail.actions(:285),image.background(:255),layer.embedded-surfaces(:262),layer.sprites(:263),layer.cards(:264),embed.norn(:117),embed.tex(:170),control.button(:216); pluscolor/selectstyle controls (:76, :90). 11 domain-or-VN kinds; this is the only repo emittingvn.*. It also emitssurface-state/surface-commandenvelopes (:290, :333). - Commands:
src/eve-sidecar.cjs:52story.continue,story.choose,story.jump; capabilitiesvn.stage+ same (:53); rejects withrespond(..., "rejected", error.message)(:21);receiptSchema: gamecult.eve.command_receipt.v1(:95). Plugin advertisementplugins/sai-vn.plugin.json.
AquaSynth aed6525 — DORMANT/undeployed; 8 commits in 90 days. tools/export-provider-advertisement.mjs: advertisement only (7 of 18), kinds patch, compile, instrument, speech, operator are provider sub-kinds, not node kinds (inferred). No surface builder, binding or Eve command. 133 reload, 33 subscribe hits are audio, not Eve (inferred).
Brokkr f97d4dc — not deployed (B15); 41 commits in 90 days (active). brokkr-daemon/src/main.rs: advertisement partial (5 of 18) with surfaces, commands; own command schemas brokkr.unity.command_receipt.v0 (:284), brokkr.blender.command_receipt.v0 (:320); operation kinds transform, parent, material, active-state (:2749-3083) (not Eve node kinds; inferred). No surface kind literals.
Ymir f8c0e39 — not deployed (B15); 23 commits in 90 days. src/Ymir.Core/YmirServicePublicationDocument.cs:124-134: GameCult.Eve.Surface.EveSurface.Create("ymir.physics.operator") with 5 .Metric(...) calls; record key surface:ymir.physics.operator (:147). Advertisement: 3 of 18 (providerId, title, updatedAtUtc) (inferred: typed YmirServicePublicationDocument rather than Eve's advertisement type). CommandLowerings = [] (:29,109). Uses the C# GameCult.Eve.Surface package (E5 ProjectReference).
Library, build-time and test consumers
CultLib dbcb2a8e — BUILD. Carries Eve ids in: packages/cultcache-ts/src/swarm-documents.ts (16 hits; document types surface_state, interface_binding, :83-100), packages/cultmesh-kotlin/.../EveDocuments.kt (8), packages/cultnet-ts/test/cultnet.test.ts (17), tests/GameCult.Mesh.Tests/CultMeshBodyTransportTests.cs (6), samples/eve-two-runtime/sample.mjs (10, with stateBindings at :61), samples/eve-browser-network/ (C# + TS), provider session tests. Mesh primitives: CultMeshOperationInvocationDescriptor/CultMeshOperationPayload/bindingName (GameCult.Mesh/CultMeshPrimitives.cs:3387, cultmesh-ts/src/index.ts:319, 39 hits). B19 covers compatible-id wire behaviour. No node-kind emission (0 kind-literal publisher files).
EveUnity 92f0dbb — BUILD (renderer; Unity packages; 2026-08-26). See section 6. Commands: ResolveOperation builds CultMeshOperationInvocationDescriptor from node props (EveUnitySceneSurfaceLowerer.cs:64, EveUiToolkitSurfaceLowerer.cs:495,510); command receipts class with default gamecult.eve.command_receipt.v1 (EveUnityPlayableWorldLiveClient.cs:284,298). Binding: world root reads props statePointerId/worldStatePointerId, assetManifest, inputProfile, cameraRig, movementCommand, focusCommand (EveUnitySceneSurfaceLowerer.cs:121-128); scene lowerer additionally reads kinds field.volume3d (:114), field.particles3d (:116). Live provider transport over CultMesh: Runtime/CultMesh/EveUnityCultMeshLiveProviderTransport.cs (41 id hits). Pins: UPM git URLs (B21).
EveConformance 048ea2f — BUILD (test/parity tooling). tools/parity/parity-manifest.json (22 schema-id hits; schemas under ../Eve/schemas/), consume-export.mjs, run-parity.mjs. Requires every runtime to report command schema gamecult.eve.command_invocation.v1 (consume-export.mjs:883,1118, run-parity.mjs:1471). Lock file pins six family repos (B21).
EveElectron cba684c (2026-09-13), EveTui 01ea52f (2026-07-10), EveFlutter 3511e5c (2026-07-10), EvePlugins c5a4a75 (2026-07-15) — BUILD / renderer repos. EveTui command schema gamecult.eve.command_invocation.v1 (src/eve-tui-shell.mjs:42); EveElectron src/cultmesh-provider-client.mjs:2,229 (invocation schema; operationId); EveFlutter lib/main.dart:326. Output grid schema gamecult.eve.tui_grid.v1 (EveTui x8). EvePlugins: plugin ABI/endpoint ids only (gamecult.eve.plugin_endpoint.v1, plugin_witness.v1), 0 surface hits.
Eve kernel fixtures/package b7d154b: browser reference + eve-browser-lowering, C# org.gamecult.eve.surface (EveSurfaceBuilder.cs: 149 id/builder hits), Android MainActivity.kt, iOS Sources/. B-rows: B14, B17-B19, B24.
2. Binding: observed shapes (union)
| # | Shape | Where | Resolved by |
|---|---|---|---|
| BD1 | Node prop stateBindings: [{targetProp, pointerId, sourceId, schemaId, routeKind, routeDescription}] |
VoidBot render-voidbot-swarm-dashboard.mjs:1415-1421; CultLib samples/eve-two-runtime/sample.mjs:61 |
renderer (inferred; no daemon pushes values into the tree) |
| BD2 | stateBindings local draft: adds bindingName, valueKind, accessMode:"local-draft", authority:"eve.browser"; schemaId gamecult.eve.local_draft.v1, routeKind in-process |
Ghostlight eve.rs:872-884 |
renderer holds draft; captureBindings -> payload.bindings (runtime.rs:144) |
| BD3 | writeCommand on a binding; captureBindings on operations; "accepted results may request that exact bindings be cleared" (draftDirective) |
docs/surface-contract-v1.md:293- ; command_result schema |
renderer + provider |
| BD4 | World root props statePointerId, worldStatePointerId, assetManifest(Uri), inputProfile, cameraRig, viewId, playerEntityId, movementCommand, focusCommand |
EveUnity scene lowerer :121-128 |
Unity host with CultMesh live transport |
| BD5 | DSL binding primitives var, collection, derive, bind (compiled into the tree) |
docs/surface-contract-v1.md (Eve DSL section); fixtures reactive-composition.eve, huginn-cc-surface.eve (collection ..., list ... bind <collection>) |
browser reference web/eve-dsl.js |
| BD6 | Whole-document republish: provider writes gamecult.eve.surface_state.v1 records ({providerId, version, updatedAt, surface}) to a CultCache/CultMesh node and bumps version |
Muninn main.rs:2673-2753, Vili, Stonks, weksa, Gjallar, Hermodr, Bifrost (surface_state id counts: VoidBot 9, Gjallar 7, Stonks 4, Bifrost 3, Odin 3, Hermodr 3) |
Odin aggregates; renderer re-fetches/reloads on version change (inferred) |
| BD7 | gamecult.eve.interface_binding.v1 document (13 id mentions: VoidBot 5, CultLib 2, weksa 2, Bifrost 2, Odin 2) |
swarm-documents.ts:99, weksa :412, Odin documents.rs:11,173 |
Odin reads as EveInterfaceBindingCompatRecord ("Compat" in the type name) |
| BD8 | Embedded documents: node embeddedDocuments:[{slotId, documentId:"cultmesh://norn/graphs/...", schemaId, presentationKind}] |
web/fixtures/sai-vn-surface.json; surface-contract-v1.md:144-153 |
renderer plugin (embed.norn, embed.tex) |
| BD9 | Reload/poll: DOM reference has reload (poll) paths; Mimir 274 `reload |
poll` hits, StreamPixels 59, Odin 34 (repo-wide, not Eve-specific; inferred) | n/a |
Daemons using no binding at all in their published tree: Muninn, Vili, Stonks, Gjallar, Bifrost, repixelizer, Loki, Ymir (BD6 only) (inferred from absence of stateBindings/pointerId in publisher files).
3. Commands: observed set (union)
| Command / operation id | Handler | Request schema | Result schema | Cite |
|---|---|---|---|---|
heimdall.auth.begin / .complete / app.auth.logout |
Ghostlight (and advertised by Heimdall plugin) | heimdall.auth_begin_command.v1, heimdall.auth_complete_command.v1, ghostlight.app_logout.v2 |
gamecult.eve.command_result.v1 |
eve.rs:708-713, access-plugin.ts:56 |
world.create, world.approve, world.activate, world.advance_time, world.seed, world.play |
Ghostlight | ghostlight.world_* (v0/v1/v4) |
command_result.v1 |
eve.rs:714-719, runtime.rs:1272-1476 |
swarm.set_heat |
VoidBot swarm publisher | gamecult.eve.command.v1 payload {value} |
gamecult.eve.command_receipt.v1 |
serve-voidbot-swarm-cultmesh.cjs:159-193 |
muninn.capture_stream_command, muninn.move_light_command, muninn.set-move-hue-program |
Muninn | gamecult.eve.command.v1 |
command receipt (shape inferred) | main.rs:2966-2986 |
story.continue, story.choose, story.jump |
Sai sidecar | command.v1 (eve.js:3) |
command_receipt.v1 |
eve-sidecar.cjs:52,95 |
style.patch, select, invoke, open-provider, edit.value, toggle.visibility, transform.* |
kernel standard names | command_invocation.v1 |
command_receipt.v1 |
surface-contract-v1.md:255- |
motion command, bridge_action, discord-post |
Bifrost | bifrost.motion_command.v0, bifrost.bridge_action.v0, Bifrost discord schema |
bifrost.*_receipt (inferred) |
provider-advertisement.mjs:323-330 |
mimo voicedesign |
weksa RUDP server | WEKSA_MIMO_VOICEDESIGN_COMMAND_SCHEMA_ID |
own receipt | weksa-daemon.mjs:69-71 |
transform/parent/material/active-state |
Brokkr (Unity/Blender bridges) | brokkr.* |
brokkr.unity.command_receipt.v0, brokkr.blender.command_receipt.v0 |
brokkr-daemon/src/main.rs:284,320,2749-3083 |
mimir.eve_dashboard_command.v1 |
Mimir | own | n/a | e.json |
Ymir: CommandLowerings = []; own typed session commands (YmirStepSessionCommand etc.) are not Eve commands |
n/a | n/a | n/a | YmirServicePublicationDocument.cs:29,109 |
Counts (id mentions in non-test, non-JSON source): command_receipt.v1 35 (Eve 13, CultLib 7, VoidBot 5, Ghostlight 4, Hermodr 3, EveUnity 2, Sai 1), command_invocation.v1 34 (Eve 14, EveConformance 6, Ghostlight 5, EveElectron 3, EveTui 3, EveFlutter 2, Heimdall 1), command.v1 29, command_result.v1 12 (Eve 6, Ghostlight 5, Heimdall 1).
Rejected or failing command paths located in source or schema:
- Ghostlight
eve.rs:723-731: flat result is rejected whole by the browser lowering's schema check (see section 1). - Sai
eve-sidecar.cjs:21,43:rejectedresponses andrejectedComponentKindswhen a requested kind is not owned. - Muninn
main.rs:4721-4768:rejected_stale/radius/bounds/continuitycounts (these are sensor tracking counters, not command rejections; listed so they are not mistaken, inferred). - VoidBot
swarm.set_heatout-of-range throws (:164). thing2-target.mdWhy section cites "July failures (views that had to reload, failing commands, schema-rejected results)"; the schema-rejected case is the Ghostlight one above (inferred correspondence; the July commits were not read).
4. Advertisement
Schema schemas/gamecult.eve.provider_advertisement.v1.schema.json in Eve: 18 properties; required 11: schema, providerId, serviceId, verseId, title, kind, freshness, schemas, witnesses, surfaces, commands; optional rootVerse, canonicalService, locatedService, cultMeshAddress, updatedAt, updatedAtUtc, conformanceScenarios. Fixtures: web/fixtures/*.provider-advertisement.json (sai-vn, repixelizer, epiphany-model-atlas, eve-world-smoke) carry also requiresPlugins[] per surface entry with pluginId, versionRange, availability, requiredCapabilities.
Fields matched per publisher (matched / 18; text-match, so typed-struct publishers may be undercounted, inferred):
| Publisher | matched | required-not-matched |
|---|---|---|
| Ghostlight | 17 | none |
| Loki | 16 | none |
| Bifrost | 15 | serviceId |
| Gjallar | 15 | commands |
| weksa | 14 | freshness |
| Muninn | 13 | schemas, witnesses |
| Stonks | 10 | serviceId, verseId, freshness, schemas, witnesses |
| VoidBot | 9 | serviceId, kind |
| Vili | 9 | serviceId, kind, freshness, schemas, witnesses, commands |
| Heimdall | 8 | serviceId, verseId, freshness, surfaces |
| StreamPixels | 8 | serviceId, verseId, freshness, schemas |
| repixelizer | 8 | serviceId, verseId, schemas, commands |
| Hermodr | 8 | serviceId, verseId, freshness, schemas, witnesses |
| Mimir | 7 | serviceId, verseId, freshness, schemas, witnesses |
| AquaSynth | 7 | serviceId, verseId, freshness, commands |
| Odin (reads) | 7 | n/a (consumer) |
| Brokkr | 5 | providerId, serviceId, verseId, freshness, schemas, witnesses |
| Ymir | 3 | most |
Other advertisement-adjacent ids: plugin_advertisement.v1 x11 (Heimdall 5, CultLib 2, Eve 2, EveConformance 1, Odin 1), plugin_abi.v1 x12 (EveUnity, EveElectron, EveTui 3 each), mimir.eve_sensor_observation.v1 x9 (Mimir 3, Eve 3, Odin 2, CultLib 1; E1). Top-line id mention counts (non-test, non-JSON source): surface.v1 94 (Bifrost 15, Eve 15, Ghostlight 12, weksa 7), provider_advertisement.v1 72, surface_state.v1 40 (VoidBot 9, Gjallar 7), interface_binding.v1 13, 64 distinct eve-named schema ids found by this pass (B14's 102 includes JSON/docs paths this pass excludes).
5. Liveness summary
| Class | Consumers |
|---|---|
LIVE Idunn targets (B15; ops 9aed01f re-read for targets file: Odin x3 hosts, Stonks, weksa, Muninn x3, Vili, VoidBot, StreamPixels, Heimdall are listed with Status idunn-managed/runtime-enforced/enforced) |
Odin, Ghostlight, Heimdall, VoidBot, StreamPixels, Muninn (Starfire, Raven, Nightwing), sleipnir, Vili, Stonks, weksa, Gjallar |
| Blocked or archived targets (code present) | Bifrost (blocked), repixelizer (blocked), Hermodr (archived target), Mimir dashboard (archived), eve-ipad, periwinkle (blocked) |
| Not deployed by any target | Sai (last 2026-07-10), Loki (2026-06-13), AquaSynth, Brokkr (active, 41 commits/90d), Ymir (23 commits/90d), Epiphany (excluded) |
| Build-time / library | CultLib, EveUnity, EveConformance, EveElectron, EveFlutter, EveTui, EvePlugins, Eve kernel |
| No Eve publication | Aetheria (surfaces via frozen AetheriaEve) |
6. Renderer-side (renderer repos only)
Renderer capability manifests (eve-runtime-capability.json, schema gamecult.eve.runtime_capability.v1) list supportedFeatures, supportedPlugins[].capabilities and unsupportedPlugins; none lists node kinds. Every manifest's unsupportedPlugins is []. Kind coverage therefore comes from literal presence in renderer source (heuristic, section Method), not a declared matrix.
| Renderer | features (manifest) | plugin capabilities | node-kind names present in source (of 70) |
|---|---|---|---|
Eve web reference (web/, eve-browser-lowering) |
8 (embeddedDocuments, providerAdvertisements, odinProviderDiscovery, genericWorldDiscovery, providerAssets, stateBindings, styleTokens, authorityWitnesses) |
fields.surface 5, sai.vn 4, norn.graph 1, tex.math 1 |
56 |
Eve Android (MainActivity.kt, 1 file) |
not read | not read | 35 |
Eve iOS (Sources/*.mm, 8 files) |
not read | not read | 23 |
| Eve C# surface package (builder/document) | n/a (authoring) | n/a | 27 |
| EveUnity UI Toolkit | embeddedDocuments |
sai.vn 4, norn.graph 1, tex.math 3 |
28 (incl. world.scene2d/3d, inspector.kv) |
| EveUnity scene | 26 (providerSurfaceSession, sceneGraphProjection, playableWorldProjection, unityGameObjectSceneSink, ...) |
fields.surface 6 (incl. volume.raymarch), sai.vn 4, norn.graph 1, tex.math 4 |
13 (+ field.volume3d, field.particles3d literals) |
| EveFlutter | no manifest in repo | n/a | 35 |
| EveElectron | 9 | sai.vn 4, norn.graph 1, tex.math 3 |
8 (bar, embed.norn, embed.tex, label, surface, surface.slot, text, vn.stage) — low; delegates to browser lowering (inferred) |
| EveTui | 6 | sai.vn 4, norn.graph 1, tex.math 3 |
7 (embed.*, label, metric, surface.slot, text, vn.stage); output tui_grid.v1; delegates to lowering package (inferred) |
| Hermodr lowering | n/a | n/a | 0 |
| Ghostlight web client | n/a | n/a | 1 (surface); uses vendor/eve browser lowering (B17) |
Kinds in the kernel vocabulary that no live publisher emits (rows of section 7 with zero in the "live" columns) include every vn.*, embed.*, layer.*, field.*, world.*, inventory.*, canvas.*, image.*, color.swatch, control.tabs/popup/toggle/select/choice-group/box/part and modal/form/options/progress/bar (live publisher counts below).
7. Cross-table: kind x consumer (publisher literal counts)
Columns: GL Ghostlight, MU Muninn+sleipnir, VB VoidBot, VI Vili (legacy type), ST Stonks, WK weksa, GJ Gjallar, BF Bifrost, MI Mimir (call+literal), RP repixelizer, LK Loki, SA Sai, YM Ymir, KF kernel fixtures (JSON, 12 files). First six data columns after KF are LIVE except as noted: GL MU VB VI ST WK GJ are LIVE; BF MI RP blocked/archived; LK SA YM undeployed. - is zero. Domain = my classification of a kind owned by one provider/domain rather than a layout/display/input primitive (inferred).
| kind | class | GL | MU | VB | VI | ST | WK | GJ | BF | MI | RP | LK | SA | YM | KF |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| text | primitive | 7 | 6 | 8 | - | 6 | 1 | 1 | 5 | 78 | 1 | 2 | - | - | 34 |
| pane | primitive | - | 12 | 10 | - | 5 | - | 1 | - | 21 | 1 | - | - | - | 7 |
| card | primitive | 3 | 4 | - | - | - | - | - | 1 | 7 | 1 | - | - | - | 24 |
| metric | primitive | - | - | 13 | - | 14 | - | - | 10 | 9 | - | 8 | - | 5 | 10 |
| dashboard | primitive | - | 3 | - | - | - | - | 2 | 1 | - | - | - | - | - | - |
| panel | primitive | - | - | - | 1 | - | 1 | - | 2 | - | - | 2 | - | - | 2 |
| partition | primitive | - | - | - | - | - | - | - | - | - | 5 | - | - | - | 7 |
| list | primitive | - | - | 7 | - | - | - | - | 1 | - | - | - | - | - | 4 |
| grid / row / rail / cockpit | primitive | - | - | 3/2/1/1 | - | - | - | - | - | 3 (row) | - | - | - | - | rail 1 |
| form | primitive | - | - | - | - | - | - | - | 1 | - | 8 (calls) | - | - | - | - |
| surface | primitive | 1 | - | - | - | - | - | - | - | - | 1 | 1 | - | - | 6 |
| control.button | primitive | 1 | - | 2 | - | - | - | - | - | - | - | - | 1 | - | 7 |
| control.slider / control.range | primitive | - | - | 1 | - | - | - | - | - | - | 1 (range) | - | - | - | 1 (range) |
| control.input.text / textarea / number | primitive | 5/6/1 | - | - | - | - | - | - | - | - | - | - | - | - | - |
| input.number / input.select | primitive | - | - | - | - | - | - | - | - | - | 1 (select) | - | - | - | 8/1 |
| input.binding-map, binding.target | primitive | - | 1/1 | - | - | - | - | - | - | - | - | - | - | - | - |
| avatar | primitive | - | - | - | - | - | - | - | - | 1 | - | - | - | - | - |
| interface (aggregate marker) | non-kernel | - | - | - | - | 1 | - | 1 | - | - | - | - | - | - | - |
stat, command (legacy type) |
non-kernel | - | - | - | 7/2 | - | - | - | - | - | - | - | - | - | - |
| person | domain (inferred) | - | - | - | - | - | 2 | - | - | - | - | - | - | - | - |
| heimdall.access_gate, heimdall.identity | domain | 1/1 | - | - | - | - | - | - | - | - | - | - | - | - | - |
| inspector.kv | domain | - | - | - | - | - | - | - | - | - | - | 4 | - | - | - |
| vn.stage, panel.dialogue, text.dialogue, rail.actions, image.background, status.stage | domain | - | - | - | - | - | - | - | - | - | - | - | 1 each (no status.stage) | - | 1 each |
| layer.cards / layer.embedded-surfaces / layer.sprites, embed.norn, embed.tex | domain | - | - | - | - | - | - | - | - | - | - | - | 1 each | - | 1 each (no layer.sprites) |
Aggregates:
- Distinct node kinds emitted by the 7 LIVE surface publishers (GL, MU, VB, VI, ST, WK, GJ): text, pane, card, metric, dashboard, panel, list, grid, row, rail, cockpit, control.button, control.slider, control.input.text, control.input.textarea, control.input.number, input.binding-map, binding.target = 18 kernel primitives; plus non-kernel
interface,stat,commandand domainheimdall.access_gate,heimdall.identity,person(inferred) = 24 names total, 2 to 3 domain. - Including blocked/archived/undeployed publishers (BF MI RP LK SA YM): adds partition, form, surface, input.select, control.range, avatar, inspector.kv, and the full Sai VN family (11 domain kinds). Union 40 names; domain kinds 14 (11 Sai + 2 heimdall + inspector.kv), all but heimdall tied to the dormant Sai or Loki.
- The kernel fixtures (35 kinds) contain 15 single-use domain/embed kinds; their only repo-owned emitter in source is Sai (
vn.*,layer.*,embed.*,panel.dialoguefamily) and, forfield.surface2d/world.*, the kernel and EveUnity (provider side not located in the repos surveyed; Aetheria's emission is via frozen AetheriaEve). - Of the kernel's 70-name vocabulary, the live publishers emit 18 (26 percent).
inventory.*(3 kinds) is emitted by no surveyed publisher (Eve's ownEveInventoryInteraction.csand tests only);world.*is consumed by EveUnity scene and emitted by none surveyed (inferred: Aetheria-side, frozen). - Binding union: BD1-BD9 above. Command union: section 3 table (7 distinct command families on the Eve
command.v1/command_invocation.v1/command_result.v1envelopes; others use their own schemas).
8. Source notes and scars
- Scripts and per-pass outputs:
eyes-thing2-consumer-census/s/*.pyin the scratchpad (a.py repo refs, c.py kind literals, e.py id matrixe.json, f.py command hits, h.py/m.py located kinds, j.py renderer coveragej.json, k.py advertisement fields). - One shell mistake created a stray interactive Python process that wrote a 64 MB tool-result file (
C:\Users\Meta\.claude\projects\F--Projects-CultLib\4afe6932-3e75-4766-be3f-a62ca680f00c\tool-results\b6rc8vggm.txt); the task was stopped; the file is harness-owned and left in place. - Kind-literal counting is regex-based and undercounts computed or typed-struct emission; the Mimir 114 builder-call figure and VoidBot numbers are the largest counts and the least uniform (inferred).
- Not read: Epiphany (excluded by
operator-epiphany-out-of-scope), AetheriaEve (frozen), Fensalir/Delvehold-class Eve consumers outside the named list, Android/iOS manifests.