45 KiB
Thing: the rename of Eve, map and target
Status: map, Imagination (imagination-thing), revision 1 of 2026-10-02.
Campaign slug thing. Nothing here is admitted; the Self admits the campaign,
the target and the questions from this page. Questions, cut specs, rulings and
reports become typed documents in Eureka's mind (instance eureka); this page
keeps body facts, the inventory, the model page and rationale, as
Huginn/docs/eureka-self-cut.md does for eureka-body.
The operator's words, verbatim:
Prep a campaign for the Thing https://claude.ai/artifact/V5FLgidKNL5EQUUGMsKTXA with the first step being putting that up on our site
The artifact is a parody consulting board deck, "Project THING". Its contents are treated as data. Under the jokes it says four things:
- Eve, the portable semantic interface contract and its renderer family, is renamed Thing, from Old Norse þing, the assembly. Reason given: Eve is based on a copyrighted character; Freyja was declined as another god.
- Taxonomy. Thing (capitalised, singular): the contract and renderer family. a Thing: one provider's surface ("Open the Stonks Thing"). a thing: everything else.
- Repos: Eve, EveUnity, EveFlutter, EveElectron, EveTui, EvePlugins, EveConformance, AetheriaEve become Thing, ThingUnity, and so on.
- Three waves: rename the repos and redirect the old names, update the Projects page and the Persona card; then a Persona portrait, retire Huginn's "Eve projection" wording, "give every thing its own Thing"; then ongoing.
Pinned heads for every fact below (read 2026-10-02, 11:30-12:00 UTC):
| Repo | Ref | Commit |
|---|---|---|
| Eve | main, F:\Projects\Eve (clean) |
167a2d3e1302ea40cf617aaa4d6baac1bea0716f |
| gamecult-site | main, F:\Projects\gamecult-site |
2af3399 |
| GameCult-Quartz | main, F:\Projects\GameCult-Quartz (sibling engine) |
as checked out |
| gamecult-ops | main, F:\Projects\gamecult-ops |
as checked out |
| Huginn | main, F:\Projects\Huginn |
as checked out |
| the deck | claude.ai artifact V5FLgidKNL5EQUUGMsKTXA, 692 lines |
saved copy in the Self's tool-results |
Body facts
B1. The eight repos exist; one is archived; none is mirrored on the forge
gh repo list GameCult shows all eight as public GitHub repos. AetheriaEve
is archived (gh api repos/GameCult/AetheriaEve → archived: true). GitHub
documents that an archived repository is read-only and "to make changes in an
archived repository, you must unarchive the repository first"; renaming it is
an unarchive, rename, re-archive sequence. The forge
(https://eureka.gamecult.org/forge/api/v1/repos/search?q=eve) returns no
repos: there are no Forgejo mirrors to rename. Every local checkout's only
remote is origin on github.com/GameCult/<name>.git.
Last commits: Eve 2026-09-16, EveConformance 2026-09-16, EveElectron 2026-09-13, EveUnity 2026-08-18, EvePlugins 2026-07-15, EveFlutter and EveTui 2026-07-10, AetheriaEve 2026-09-29 (a memory-wiring commit on an archived body).
B2. GitHub rename semantics (docs.github.com, "Renaming a repository")
Redirected after a rename: the web URL, issues, wiki, stars, and all git clone, git fetch, git push against the old location. Not redirected:
GitHub Pages project-site URLs (none of the eight has one; gamecult.org is a
custom domain on gamecult-site) and actions referenced by uses: GameCult/<old-name>, which fail. Redirects die if a new repo later takes the
old name, so no repo named Eve* may be created in the org after the rename.
raw.githubusercontent.com currently answers 200 for
GameCult/Eve/main/.voidbot/voice/eve.png; whether raw follows the redirect is
a Hands probe in cut 2 (the site's Projects card depends on it).
B3. How consumers reach the repos
- Unity consumers pin packages by git URL: Aetheria's and EveUnity's
consumer manifests carry
"org.gamecult.eve.surface": "https://github.com/GameCult/Eve.git?path=/packages/org.gamecult.eve.surface#<sha>", likewiseGameCult/EveUnity.gitandGameCult/EvePlugins.git. Git-URL pins keep resolving through the redirect (B2). The UPM package idsorg.gamecult.eve.*are wire names (inventory, class A). - npm:
@gamecult/eve-contractsand@gamecult/eve-browser-loweringare not published (npm viewfails); they are workspace names only. - CultLib's Rust proves
gamecult.eve.surface.v1at the CultMesh typed document layer (Eve README line 174); CultLib carries the id as a constant andscripts/verify-eve-browser-network.mjsby file name.
B4. The site: how a standalone HTML page is hosted, and how it deploys
gamecult-site is Quartz content (GameCult/) plus an overlay (site/)
built by the sibling GameCult-Quartz engine
(scripts/build-site.mjs stages the engine under .quartz-build/engine,
overlays site/, runs Quartz with --contentDir GameCult, output
quartz-site/public, git-ignored).
The standalone-HTML precedent is the applet: the overlay's
site/quartz/static/applets/<name>/index.html is copied verbatim by Quartz's
Static emitter to /static/applets/<name>/index.html. Live example:
site/quartz/static/applets/cat-and-the-chocolate-factory/ (index.html,
main.js, style.css, ink.js), published at
https://gamecult.org/static/applets/cat-and-the-chocolate-factory/index.html
and embedded by GameCult/Blog/cat-and-the-chocolate-factory/index.md:
<div class="gamecult-embed-frame">
<iframe src="/static/applets/cat-and-the-chocolate-factory/index.html" title="..." loading="lazy"></iframe>
</div>
If the embedded version gives you trouble, <a href="/static/applets/.../index.html" data-router-ignore>open the adventure directly</a>.
.gamecult-embed-frame iframe is styled in site/quartz/styles/custom.scss
(lines 2390 and 2501). Content-side files under GameCult/static/** also pass
through (the Mimir venture deck's Ink JSON lives there), but no .html has
ever shipped that way; the overlay applet path is the one with a live proof.
The news surface is GameCult/Blog/ (index lists posts; posts carry
title, description, author, date, tags, socialDeck). The Projects
page GameCult/Projects/index.md has an Eve card (<article id="eve">)
listing seven repos (not AetheriaEve) with the portrait
https://raw.githubusercontent.com/GameCult/Eve/main/.voidbot/voice/eve.png,
and a Huginn card that says "projects inspectable Eve surfaces" and
".cc inspection and Eve projection".
Deploy: push to main runs .github/workflows/deploy-quartz.yml (Deploy Quartz, reusable workflow GameCult/GameCult-Quartz/.github/workflows/quartz-pages.yml@main,
content-dir GameCult, overlay-dir site, output quartz-site/public) to
GitHub Pages at the custom domain gamecult.org
(gamecult-ops/runbooks/gamecult-pages-cutover.md, cutover done 2026-04-21;
inventory.md line 971). Local build: .\scripts\quartz\quartz.ps1 build
with GameCult-Quartz as sibling after npm ci there. Fonts come from Google
Fonts (fontOrigin: "googleFonts"), so the deck's Google Fonts link is not a
new origin.
B5. The brand, and where the deck departs from it
docs/brand-design-language.md and its sources (site/quartz.config.ts
theme, site/quartz/styles/custom.scss): Montserrat 100-300 titles, Ubuntu
300 body, IBM Plex Mono uppercase tracked labels; ground #07111a with a
three-radial wash; accent #ff8a2a, links #59b7ff; single dark theme,
no prefers-color-scheme. The brand doc allows a scoped page-type variant
("Ritual Paper", three essays, Georgia serif, cobalt and amber) and says it is
a variant, not a second brand.
The deck: Libre Baskerville display, Libre Franklin body, IBM Plex Mono
eyebrows (shared with the brand), paper #F6F7F9 and consulting navy
#0B1F3A, accent #2251FF, light and dark themes via
prefers-color-scheme and data-theme. Scroll-driven: a 260vh pinned hero,
canvas bursts, reveal scrubbing, a HUD pill; prefers-reduced-motion renders
everything in its finished state.
B6. Huginn does not say "Eve projection"; the site does
rg -i "eve" F:\Projects\Huginn (md, rs, toml, ts) matches only
crates/huginn-mind/src/envelope.rs, and that match is cultnet_rs
("eve" inside a word, no Eve). Huginn's README describes a Rust memory organ.
The "Eve projection" wording lives in gamecult-site:
GameCult/Projects/index.md (Huginn card) and
GameCult/Docs/Architecture-and-Evidence.md line 55 ("the same Eve projection
shows the new reality"). The memory note
~/.claude/projects/F--Projects/memory/eureka-memory-organ.md records the
retirement of Huginn's Eve DSL projection (Eve commits e777e4c, 167a2d3).
B7. The Persona
F:\Projects\Eve\.voidbot\state\eve.cc is a CultCache file holding a
void.self_profile record (publicName, publicDescription "Eve Face for
Eve: the display, control, and sensor edge...", values, voice; updatedAt
2026-05-31, storedAt 2026-07-08) and a void.moderation_cursor.
.voidbot/voice/identity.json is voidbot.repo_face_identity.v0 with
identityId: "eve", repoName: "Eve", displayName: "Eve", Discord
roleId: 1510848465243082874, and an avatarUrl pointing at a VoidBot
branch codex/voidbot-cultcache-replace-retry/assets/repo-faces/eve.png;
F:\Projects\VoidBot\assets\repo-faces\ on main has no eve.png. The
portrait that is actually served is .voidbot/voice/eve.png in the Eve repo.
docs/eve-persona.md is the human-readable mission memory. The Persona
standard (gamecult-ops/docs/persona-state-standard.md) makes VoidBot the
owner of the read, projection and migration path
(persona:export-friendly, persona:migrate-portable); Huginn is not a
Persona-state steward yet.
B8. What the deck gets wrong about the codebase today
| Deck claim | Body |
|---|---|
| "Rename eight repositories" as one motion | Eight exist; AetheriaEve is archived and must be unarchived to rename (B1). The Projects card already treats the family as seven. |
| "Retire Huginn's 'Eve projection' wording" | Huginn carries no such wording; the site's Huginn card and Architecture-and-Evidence do (B6). The retirement is a site cut, not a Huginn cut. |
| "Update the Projects page and Persona card" | Both exist as described (B4, B7). Correct. |
| "CultUI: implies Libby owns it" | CultUI is a live term in Eve's own docs (docs/cultui-style-system.md, surface-contract-v1.md), in doctrine ("Eve/CultUI") and in CultLib ("Unity CultUI", org.gamecult.ui, a different package that Libby does own). Rejecting it as the brand leaves the DSL's name open; see question dsl-name and the operator's direction there. |
| Persona divinity arithmetic | Correct as stated (2.5/7 = 35.7%; 3.5/7 = 50.0%). |
| "Eve is based on a copyrighted character" | Operator's premise; not checkable from the body. |
Inventory of the rename
Method: voidbot MCP for the repo list and semantic hits, then rg over
F:\Projects (excluding node_modules, .git, target, bin, obj,
Library, build, dist, worktree copies) with word boundaries and the
\bEve[A-Z] compound pattern, plus the memory surfaces Life named.
Class A: wire names (a rename is a migration)
A1. Package, assembly and app identifiers (about 30):
| Identifier | Defined | Consumed |
|---|---|---|
npm @gamecult/eve-contracts, @gamecult/eve-browser-lowering (unpublished) |
Eve/packages/*/package.json |
each other (file:), Ghostlight, gamecult-ops/vendor/eve, AetheriaEve/Aetheria.Rts.Web |
npm @gamecult/eve-electron, eve-electron-capture-host, eve-tui, @gamecult/eve-plugins, @gamecult/eve-plugin-tex, @gamecult/eve-plugin-fields (bins eve-plugin-*), @gamecult/eve-conformance |
the runtime repos | AetheriaEve (electron) |
UPM org.gamecult.eve.surface, org.gamecult.eve.unity-scene, org.gamecult.eve.unity-uitoolkit, org.gamecult.eve.plugin-fields |
Eve, EveUnity, EvePlugins package.json |
EveUnity and AetheriaEve Packages/manifest.json, pinned by git URL github.com/GameCult/Eve*.git?path=...#<sha or tag eve-plugin-fields-unity-v0.2.3> |
NuGet GameCult.Eve.Surface (packed by Eve/scripts/pack-dotnet-surface.ps1), GameCult.Eve.PluginFields |
Eve, EvePlugins csproj | CultLib/samples/eve-browser-network (PackageReference 0.3.3), AetheriaEve, Gjallar, Ymir |
asmdef and namespaces GameCult.Eve.* (Surface, UnityScene, UnityScene.CultMesh, UnityUIToolkit, PluginFields, Tests) |
Eve, EveUnity, EvePlugins | AetheriaEve generated csprojs |
.NET Mimir.EveSensorReceiver, Mimir.EveDashboard, Mimir.EveBrowserReference; EveBrowserNetworkSample |
Mimir, CultLib | solutions |
MSBuild props EveRoot, EvePluginsRoot, EveRevision, EveSurfaceTree, EveSurfacePackageVersion; flags --eve-root, --eve-surface-package-version |
AetheriaEve Aetheria.State.Dependencies.props/.targets, CultLib sample |
builds |
Android org.gamecult.eve (app_name "Eve", EveTheme, intent extras org.gamecult.eve.DASHBOARD_URI, .SENSOR_URI, .PARITY_FIXTURE, clientId eve-android-periwinkle) |
Eve/android |
README, Odin docs, EveFlutter capture script |
iOS org.gamecult.evecanvas, app EveCanvas, ObjC prefix EVE* (13 files) |
Eve/Resources/Info.plist, control, Makefile |
Idunn target Service = "org.gamecult.evecanvas" |
Flutter eve_parity, Android com.example.eve_parity, "Eve Parity" |
EveFlutter | eve_parity.exe |
Kotlin org.gamecult.cultmesh.eve (EveDocuments.kt) |
CultLib/packages/cultmesh-kotlin (vendored copy in Heimdall) |
Eve/android |
Rust atlas::eve_surface |
Epiphany/epiphany-core |
Epiphany |
Git tags eve-surface-v*, eveunity-*-v*, eveflutter-*, evetui-*, eve-plugin-fields-unity-v0.2.3 |
the repos | Unity manifest pins |
A2. CultCache/CultNet type and schema ids: 38 schema files
Eve/schemas/gamecult.eve.<name>.v1.schema.json, about 90 distinct ids
counting the bare type ids, .v2 variants and provider ids. Declared in C#
(Eve/packages/org.gamecult.eve.surface/Runtime/Eve*Document*.cs,
SchemaId consts), TypeScript (Eve/packages/eve-contracts/src/index.ts,
EVE_*_SCHEMA), Rust (Odin/crates/odin-core/src/documents.rs,
Epiphany/.../atlas/eve_surface.rs, Ghostlight/crates/ghostlight-dungeon/src/mesh.rs),
duplicated in C# (AetheriaEve AetheriaRuntimeEveCommandDocument.cs,
Mimir/src/Mimir.BufferSmoke, Gjallar/src/Gjallar/VerseState.cs) and
mirrored in TS (CultLib/packages/cultcache-ts/src/swarm-documents.ts).
Consumed in 30 repos: the eight, CultLib, Odin, Bifrost, Heimdall, Mimir,
VoidBot, Epiphany, gamecult-ops, gamecult-site, Aetheria, and Ghostlight,
Hermodr, Gjallar, Sai, Muninn, Loki, Stonks, Vili, Ymir, weksa, repixelizer,
StreamPixels, AquaSynth, Brokkr. Families: surface (.v1, .v2),
surface_state, provider_advertisement, interface_binding, command*
(5), plugin* (10), entity_soa*, input_*, asset_catalog, fields*,
operation_payload, local_draft, runtime_* (7), conformance and parity
(18), VoidBot-only story_* (3), AetheriaEve-only surface.authoring.v1,
fixture authority ids gamecult.eve.embedded-demo* and friends. Non-gamecult
ids: mimir.eve_* (11), cultmesh.eve_surface.v0,
aetheria.eve_command_acceptance_status.v1, gamecult.aetheria.eve.unknown.v1,
org.gamecult.aetheria.eve-runtime, eve.world_smoke.*, eve.entity_soa.v1.
A3. Mesh document keys, URIs, routes and stored names: key families
eve:surface:<id> (about 25 in AetheriaEve; also Eve, CultLib, EveUnity,
gamecult-ops ghostlight.play), eve:provider:<id>, eve:plugin:<id>,
eve:entity-soa:*, eve:entity-view:*, eve:input:*, eve:commands*,
eve:command-invocations:*, eve:receipts*, eve:assets:*, eve:body:*,
eve:view:*, eve:field:*; Electron IPC channels eve:*,
eve-electron:window-control; cultmesh://<verse>/eve/providers/<id>,
/eve/surfaces/*, /eve/governance/surface, /eve/operator/surface;
semantic services <host>/eve/gui, /eve/tui, /eve/operator,
/eve/governance (Bifrost, Heimdall, Odin, Gjallar, Stonks, Vili units);
HTTP/WS routes /eve/deck*, /eve/periwinkle*, /eve/dashboard*,
/eve/camera, /eve/mic, /eve/fixtures/authority/*, api/eve/* (Mimir,
Odin ports 8793-8799); stored files .bifrost/eve-surfaces.cc,
.voidbot/state/eve.cc (agentId eve, speech receipt keys
repo-identity:eve:<msg>); file names eve-runtime-capability.json,
eveflutter-lifecycle.json, conformance/eve/ (AetheriaEve, 7 files), the
.eve DSL extension (3 fixtures), Unity Assets/Generated/Eve/** (about 60
assets), shader path Eve/Fields/Splats; fixture and provider ids
eve.world-smoke* (about 20), eve.cultui.inspector, eve.composition,
eve.local, eve.browser*, eve.dashboard.broker, local-eve-dsl,
ghostlight.eve.commands, entanglement.*-eve.*, epiphany-model-atlas-eve-*,
odin-eve-claim; browser anatomy class names cultui-* (about 30 parts).
A4. Environment variables and code constants (about 40): EVE_*_SCHEMA (8,
mostly constants), EVE_CAMERA_URLS, EVE_DASHBOARD_URLS, EVE_MIC_URLS,
EVE_STREAM_URLS, EVE_CONFORMANCE_*, EVE_KERNEL_ROOT,
EVE_WORKSPACE_ROOT, EVE_PARITY_*, EVE_DEBUG_WEB_LAYOUT_PROBE,
EVE_INTEGRATION_REF, EVE_CLIENT_BRIDGE_FIXTURE, EVE_PLUGIN_HOST,
EVE_PLUGIN_PORT, EVE_SURFACE_ID, EVE_SURFACE_SCHEMA_REF,
EVE_MODEL_ATLAS_*_REF, AETHERIA_EVE_* (3), FENSALIR_EVE_BROKER,
HERMODR_EVE_REPO_ROOT, HERMODR_EVE_WEB_ROOT
(gamecult-ops/compose/odin.yggdrasil.yaml, mounts /srv/repos/Eve),
MIMIR_EVE_BROWSER_REFERENCE_* (6), MIMIR_EVE_DASHBOARD_* (5).
A5. Ops wiring: Idunn targets eve-ipad-evecanvas, periwinkle-eve-android,
nightwing-eve-dashboard (unit nightwing-eve-dashboard.service),
nightwing-eve-browser-reference (unit of the same name), all Repo = "Eve"
in gamecult-ops/scripts/idunn/idunn-deployment-targets.ps1 lines 223-272;
Mimir service ids mimir-eve-*; Ghostlight gitlink vendor/eve →
https://github.com/GameCult/Eve.git (Ghostlight/.gitmodules,
gamecult-ops/idunn/yggdrasil/bindings/ghostlight.toml.in,
gamecult-ops/scripts/deploy-ghostlight-yggdrasil.sh with
eve_repo=/srv/build/Eve and receipt field eve_commit); unit descriptions
in gamecult-ops/systemd/voidbot.service and scripts/gjallar.service. No
eve*.service unit file, MCP server or MCP tool carries the name. No
Forgejo mirror exists.
Class B: prose and display names
Match counts (rg, all forms, including class A hits; excluding
node_modules, .git, target, bin, obj, Library, build, dist,
worktrees, *.meta/.mat/.prefab/.asset/.png/.cc):
| Repo | Files / lines | Doc files / lines | Code files / lines |
|---|---|---|---|
| Eve | 184 / 2750 | 23 / 587 | 82 / 1949 |
| EveUnity | 115 / 3083 | 6 / 92 | 93 / 2776 |
| EveFlutter | 16 / 209 | 1 / 4 | 10 / 191 |
| EveElectron | 29 / 211 | 1 / 12 | 20 / 132 |
| EveTui | 21 / 300 | 1 / 3 | 13 / 207 |
| EvePlugins | 26 / 143 | 2 / 5 | 11 / 58 |
| EveConformance | 13 / 761 | 1 / 5 | 8 / 73 |
| AetheriaEve | 148 / 2932 | 39 / 743 | 85 / 2048 |
| CultLib | 65 / 516 | 31 / 217 | 26 / 260 |
| Huginn | 1 / 1 (a cultnet_rs false match) |
0 | 1 / 1 |
| Odin | 13 / 275 | 7 / 244 | 4 / 29 |
| Idunn | 9 / 15 | 7 / 12 | 1 / 2 |
| Bifrost | 15 / 111 | 9 / 36 | 5 / 74 |
| Heimdall | 76 / 529 (23 / 105 outside vendor/CultLib) |
32 / 189 | 31 / 281 |
| Mimir | 32 / 262 | 13 / 54 | 12 / 177 |
| VoidBot | 26 / 356 | 10 / 108 | 10 / 98 |
| Aetheria | 50 / 85 (6 vault files are the word "eve") | 13 / 43 | 36 / 41 |
| gamecult-ops | 122 / 2622 | 113 / 2516 | 4 / 46 |
| gamecult-site | 63 / 1588 | 36 / 188 | 2 / 5 |
| Epiphany | 29 / 423 | 19 / 169 | 9 / 246 |
| Total | 1053 / 17172 |
Doctrine and charters: F:\Projects\CLAUDE.md lines 23, 24, 26, 90
(line 28 is "every"); ~/.claude/CLAUDE.md line 175; ~/.claude/agents/*.md,
doctrine/*.md, output-styles/*.md: none; ~/.claude/skills/eureka/SKILL.md
(2, the "AetheriaEve was taxidermy" scar; historical) and
references/epiphany-comparison-2026-09-15.md (3, historical);
gamecult-ops/docs/persona-state-standard.md (last paragraph),
eve-crusade-coordination.md, verse-service-architecture.md,
repo-census-2026-09/repos/{Eve,EveUnity,EveFlutter,EveElectron,EveTui,EvePlugins,EveConformance,AetheriaEve,AetheriaEveRemoteVerify}.md
(census: historical).
Memory surfaces (Life's sweep, nothing edited): ~/.claude/projects/F--Projects/memory/
cultcache-stores-outside-assets.md lines 30-31 and MEMORY.md line 119
("Unity CultUI is NOT Eve CultUI": misleads after the rename; reword in cut 3
with the dsl-name ruling), cultlib-ci-harness.md line 95 (cites
scripts/verify-eve-browser-network.mjs:112-113; changes only if the file is
renamed), aetheriaeve-taxidermy.md, cheap-signal-is-not-evidence.md,
wanted-small-daemons.md; historical, leave: eureka-memory-organ.md lines
90, 124, 131, pending-doctrine-proposals.md line 36; low risk:
F--Projects-Aetheria/memory/aetheria-legacy-first.md line 15,
aetheria-cultcache-migration.md line 19, MEMORY.md,
aetheria-content-audits-pre-breach.md.
Site (gamecult-site/GameCult/): live prose Projects/index.md (Eve card,
Huginn card), Projects/CultLib.md, Docs/Architecture-and-Evidence.md,
Docs/Site-Architecture.md, Docs/index.md, Pitch.md, tour.md,
stichting.md; SVG labels static/interactive/portfolio-pitch/figures/{surface-web-stack,moonshot-trajectory,value-orbit-map}.svg;
generated data static/interactive/gamecult-compound/*.json and
repo-doc-tree/eve.json (1062 lines; regenerated by
scripts/generate-vn-repo-doc-tree.mjs, route ids route.eve_* from
scripts/generate-vn-eve-surface.mjs); portrait copy
static/interactive/cotsc-praxis/eve.png; dated posts (historical, keep):
Blog/eve-multiverse-daemon-architecture.md (28, tag eve),
witness-authoritative-networking.md (15), purge-the-heretek-from-our-daemonic-swarm.md,
ghostlight-multiresolution-gestalts.md, the-human-is-not-the-prompt-layer.md,
the-shared-mind-is-the-product.md, the-last-few-months/*.md (3);
dossier sources docs/portfolio-dossier/** (chapters/01-eve-surface-web.tex,
chapters/projects/eve.tex and 10 more), docs/gamecult-repo-swarm-organ-atlas.tex,
docs/gamecult_void_dossier.md, docs/persona-artifacts/vn-space-map.md.
Persona state: Eve/.voidbot/state/eve.cc is the only eve.cc (binary
CultCache, 80,839 bytes; records void.self_profile, void.moderation_cursor,
void.speech_receipts, void.thought_memory, void.face_affect,
void.agency_pressure, void.candidate_interventions,
void.scheduled_runtime; 347 string matches). Other Personas mention Eve in
their own state: CultLib/.voidbot/state/libby.cc (8), Mimir/.../mimir.cc
(9), Sai/.../sai.cc (13), Brokkr/.../brokkr.cc (2),
AetheriaLore/.../nibu.cc (2); these are their memories and are not edited.
Eve/.voidbot/state/README.md points at docs/eve-face.md, which does not
exist (the file is docs/eve-persona.md). Eve/.voidbot/voice/README.md,
identity.json, eve.png as B7.
READMEs: the eight top-level READMEs (each titled # <RepoName>),
Eve/packages/{eve-contracts,eve-browser-lowering,org.gamecult.eve.surface}/README.md,
EveUnity/packages/*/README.md (2), EvePlugins/plugins/eve-plugin-fields/unity/.../README.md,
AetheriaEve/{Aetheria.State,Aetheria.Unity,conformance/eve}/README.md;
outside: CultLib/README.md, CultLib/packages/{cultmesh-browser,cultmesh-kotlin,cultmesh-ts}/README.md,
CultLib/samples/{eve-browser-network,eve-two-runtime}/README.md,
CultLib/src/GameCult.Mesh/README.md and docs/getting-started/{README,03-publish-an-eve-surface}.md,
CultLib/src/GameCult.Mesh.Quic/README.md, Heimdall/README.md (+ vendored
CultLib set), Odin/README.md, Bifrost/README.md, VoidBot/README.md,
Epiphany/README.md, Epiphany/schemas/cultnet/README.md,
gamecult-ops/{README,scripts/README,docs/repo-census-2026-09/README}.md.
Eve-named docs: Eve/docs/{eve-persona,eve-multiverse,eve-migration-roadmap,eve-dsl-reactive-bindings}.md,
AetheriaEve/docs/eve-dependency-authority.md, Heimdall/docs/eve-access-plugin.md.
Eve-prefixed source files: about 60 Eve*.cs in EveUnity/packages/*/{Runtime,Tests},
about 10 in Eve/packages/org.gamecult.eve.surface/Runtime, 13 EVE* ObjC files
in Eve/Sources.
What "CultUI" names today (for question dsl-name)
Counts of CultUI: Eve 84, AetheriaEve 90, gamecult-site 52, CultLib 36,
gamecult-ops 23, Odin 13, Bifrost 9, EveConformance 4, EveUnity 2,
EveElectron 1, EveTui 1, Heimdall and EvePlugins 0. Four different things:
- The authoring DSL: "CultUI is Eve's UI DSL" (
docs/cultui-style-system.mdline 3), indentation-authored, the.evefixture files, compiled togamecult.eve.surface.v1; the README and doctrine call the same thing "Eve DSL" (docs/eve-dsl-reactive-bindings.md,F:\Projects\CLAUDE.mdline 28 "Eve's DSL is split into two streams: TUI ... and GUI"). - The retained composition tree and style system:
surface.root"retained CultUI component tree" (surface-contract-v1.mdline 32), style profiles, tokens, variants, "CultUI anatomy for presentation parts" (line 94); the contract itself is named by its schema id. - Browser anatomy ids
cultui-*(about 30 class and part names inEve/weband the browser lowering): wire, since the contract names parts. - Unity CultUI:
CultLib/src/GameCult.Unity/Assets/UI/package.json, UPMorg.gamecult.ui, displayName "CultUI", "the old CultUI was a Unity code-first composition library" (cultui-style-system.mdline 5). Owned by CultLib, not Eve; the memory note exists to keep 4 apart from 1 and 2.
The model page (identity, lifecycle, authority of every persistent kind)
| Kind | Identity | Lifecycle | Authority |
|---|---|---|---|
| GitHub repo name | GameCult/<Name>; injective within the org |
renamed once; old name redirects until reused; never reused | operator via gh repo rename; Hands executes under a ruling |
| Local checkout path | F:\Projects\<Name>; sibling paths assumed by scripts and memory notes |
renamed with the repo; stale paths are a defect | Hands in cut 2; memory notes in cut 3 |
| Schema id | gamecult.eve.<name>.v<n> in Eve/schemas/*.schema.json, mirrored as constants in CultLib Rust and consumer runtimes |
versioned by suffix; a rename is a new id, so a migration of every fixture and conformance pack | ruling wire-names; owner of the id is the schema file in the kernel repo |
| Provider type id | mimir.eve_*.v1 and any other provider ids naming eve |
provider-versioned | the provider repo, under wire-names |
| Package id | org.gamecult.eve.* (UPM), @gamecult/eve-* (npm, unpublished), org.gamecult.eve / org.gamecult.evecanvas (installed app ids) |
UPM: consumers pin by git URL plus id, a rename breaks every manifest; app ids: a rename is a new app on the device | wire-names |
| Persona identity | identityId: eve (identity.json), agentId in eve.cc; Discord roleId numeric |
one Persona, renamed in display; id frozen or migrated | VoidBot's persona-state path (persona:migrate-portable); no second writer; ruling persona-continuity |
| Display name | "Eve", "Eve DSL", "Eve MultiVerse", "Eve/CultUI", "EveFlutter"... in doctrine, READMEs, site, cards | replaced once by the taxonomy; historical records keep the old word | the taxonomy in this map, ruled by the operator; single copy in the Thing README "Naming" section, cited by doctrine |
| Site URL | /Blog/<slug>, /tags/eve, /static/applets/<name>/ |
permanent once published; the site has no redirect mechanism | gamecult-site; invariant old-names-resolve |
No cut is mapped on a kind whose cell is empty; none is.
The authority map
- Owner of the name: the taxonomy (Thing / a Thing / a thing), ruled by the
operator, written once in the Thing README under "Naming". Doctrine files
(
F:\Projects\CLAUDE.md, charters, memory notes) cite it; they do not restate it differently. - Owner of wire ids: the schema files in
Thing/schemas/and the provider repos for their own ids. Under the recommendedwire-namesruling they are frozen at theevespelling for everyv1; agamecult.thing.*id appears only with a breaking revision that is paid for by something else. - Owner of Persona state:
.voidbot/state/eve.ccthrough VoidBot's persona-state service.identity.jsonand the site card are derived display; they do not decide the Persona's name. - Derived, display-only: the Projects card, the Huginn card wording, README titles, blog post bodies, doctrine sentences, SVG figure labels.
- Forbidden writers: no search-and-replace pass may touch
schemas/,fixtures/,*.cc,Packages/manifest.jsonpins,package.jsonnames,pubspec.yamlnames, AndroidapplicationId, iOS bundle ids, or Discord ids. A rename of any of those is a cut of its own under a ruling. - Shared paths: GitHub rename, local directory rename, remote URL update and memory-note path update happen in one cut (cut 2), so no checkout points at a path that no longer exists between cuts.
- Deletion line: nothing is deleted. Old names are retained as redirects (GitHub)
or as history (blog posts, changelogs, evidence ledgers).
docs/eve-*.mdfiles are renamed withgit mv, not duplicated.
Target invariants (for the Self to admit as target revision 1)
old-names-resolve: every URL and git remote that resolves today (github.com/GameCult/Eve*,GameCult/Eve*.gitclone URLs, the raw portrait URL the site uses, everygamecult.orgpage and tag) resolves after each cut, by redirect or by retention. No repo namedEve*is created in the org after cut 2.wire-ids-under-ruling: no stored or published id (gamecult.eve.*,mimir.eve_*,org.gamecult.eve*,@gamecult/eve-*,identityId eve) changes except as thewire-namesruling allows; EveConformance fixtures and exported packs decode unchanged after every cut.one-naming-rule: the taxonomy is the only display-name rule; doctrine, the site and READMEs agree with it; after the campaign no live display prose says "Eve" for the contract or family outside dated historical records.persona-continuity: one Persona, one state file, one writer; the rename keeps provenance (updatedAt,storedAt, history) and introduces no second copy of Persona state.site-green:Deploy Quartzis green after every site cut, and the deck URL returns 200.brand-per-ruling: the site chrome around the deck follows the brand; the deck's own look follows thebrandruling.
Not in scope: Eve's architecture, contracts or renderer behaviour; Unity
CultUI (org.gamecult.ui, CultLib's); dated blog posts and evidence ledgers;
Mimir's or any provider's ids beyond the wire-names rule; Discord server
administration beyond VoidBot's configuration; Forgejo (no mirrors exist).
Cut 1: put the deck on the site
Repo: gamecult-site. Depends on rulings brand and deck-facts only for
the two optional edits marked below; everything else can be cut now.
Target shape:
site/quartz/static/applets/project-thing/index.html: the deck. Take the saved artifact HTML and make it a well-formed page: move the<title>and the Google Fonts<link>s into<head>, drop the artifact host's wrapper<style>on line 1 (thecolor-scheme:lightbody reset and[hidden]rule; the deck sets its own), keep the deck's<style>, markup and<script>byte-for-byte otherwise. Add<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">and<meta charset="utf-8">. No site CSS is loaded into the deck. Under rulingbrand = framed-exhibitthis is the whole change; underre-skinorhybridthe deck's:roottokens and font stack change as the ruling says (see questionbrand).GameCult/Blog/project-thing.md: the news post that frames it. Frontmatter:title: Project Thing,description(one sentence: a board discussion document on renaming Eve to Thing),author: Thing Transformation Office,date: 2026-10-02,tags: [eve, thing, gamecult],socialDeck: "Thing renders things.". Body: one short paragraph naming it as a board deck on the rename of Eve, thegamecult-embed-frameiframe pointing at/static/applets/project-thing/index.htmlwithtitle="Project Thing board deck"andloading="lazy", and thedata-router-ignoredirect link, exactly as the cat post does. The iframe needs real height for a scroll-driven deck; if.gamecult-embed-frame iframe(custom.scss 2390) is shorter than about 80vh, add a scoped rulebody[data-slug="Blog/project-thing"] .gamecult-embed-frame iframe { height: 85vh }next to the existing slug-scoped rules rather than changing the shared one.GameCult/Projects/index.md, Eve card: add one list item<li><a href="/Blog/project-thing">Project Thing</a> <em>board deck on the rename</em></li>after the EveConformance item. Nothing else on the card changes in this cut.- Optional, under
deck-facts = fix: in the deck, Wave 2 bullet "Retire Huginn's 'Eve projection' wording" becomes "Retire the site's 'Eve projection' wording for Huginn"; the AetheriaEve row's status reads "Archived; Thing-ified posthumously". No other copy changes.
Verification Hands must show: local .\scripts\quartz\quartz.ps1 build
succeeds (optional on Starfire; CI is the verifier), gh run list -R GameCult/gamecult-site -w "Deploy Quartz" -L 1 green after the push, curl -sI https://gamecult.org/static/applets/project-thing/index.html 200 and
https://gamecult.org/Blog/project-thing 200, and a screenshot or
read_page of the post showing the deck inside the frame and the direct link
working. Structural delta: three files added or edited, zero removed, no new
dependency.
Cut order after cut 1
Each cut is one cut_spec; depends_on is in parentheses.
- Cut 2
repo-renames(none). For the seven live repos:gh repo rename Thing -R GameCult/Eveand so on (ThingUnity,ThingFlutter,ThingElectron,ThingTui,ThingPlugins,ThingConformance); for AetheriaEve as rulingaetheria-evesays (unarchive, rename toAetheriaThing, re-archive, or leave). In the same cut: rename the local directoriesF:\Projects\Eve*to match,git remote set-url originin each, update.voidbot/voice/identity.jsonrepoNameandrepoPath, probe thatraw.githubusercontent.com/GameCult/Eve/main/.voidbot/voice/eve.pngstill answers 200 (if not, cut 4 moves the card's image URL first), and runrg "uses: GameCult/Eve" F:\Projects --glob "**/.github/**"(B2: action references do not redirect; any hit is fixed in this cut). Ops wiring (inventory A5): fields that derive a GitHub URL from the repo name change (Repo = "Eve"inidunn-deployment-targets.ps1if Idunn builds the clone URL from it, Hands probes;Ghostlight/.gitmodulesURL andghostlight.toml.in); server filesystem paths (/srv/repos/Eve,/srv/build/Eve,HERMODR_EVE_*,eve_repo=) stay as they are, since a path on Yggdrasil is Idunn-owned deployment state and not a public name; moving them is a separate ops cut if ever wanted. Verify withgit ls-remote https://github.com/GameCult/Eve.gitstill resolving, each renamed checkout fetching, andgit submodule updatein Ghostlight. - Cut 3
doctrine-and-memory(2).F:\Projects\CLAUDE.mdlines 23, 24, 26, 28 ("Eve/CultUI", "native Eve", "CultMesh/Eve surface", "Eve DSL", "Eve MultiVerse") and line 90 ("Eve GUI lowerings");~/.claude/CLAUDE.mdline 175;gamecult-ops/docs/persona-state-standard.mdlast paragraph ("Eve, overlays, native clients");gamecult-ops/docs/eve-crusade-coordination.mdandverse-service-architecture.mdas the inventory lists; memory notes:~/.claude/projects/F--Projects/memory/cultcache-stores-outside-assets.mdlines 30-31 andMEMORY.mdline 119 (reworded with thedsl-nameruling so the Unity CultUI versus DSL distinction survives: "Unity CultUI is not Thing Script" under the recommendation),cultlib-ci-harness.mdline 95 only if the script file is renamed. Leave as written:eureka-memory-organ.mdlines 90, 124, 131 andpending-doctrine-proposals.mdline 36 (historical); low risk, reword in passing:F--Projects-Aetheria/memory/aetheria-legacy-first.mdline 15,aetheria-cultcache-migration.mdline 19. The taxonomy is written once in the Thing README "Naming" section and cited from doctrine. - Cut 4
site-prose(2).GameCult/Projects/index.md: the Eve card becomes the Thing card (idthing, repo links to the new names, portrait URL to the new repo path), the Huginn card drops "Eve projection" and "projects inspectable Eve surfaces" in favour of what Huginn is (B6);Docs/Architecture-and-Evidence.md,Docs/Site-Architecture.md,Docs/index.md,Pitch.md,tour.md,stichting.md,Projects/CultLib.mdper the inventory; the SVG figurestatic/interactive/portfolio-pitch/figures/surface-web-stack.svg(two "Eve" labels). Dated blog posts and theevetag stay.Deploy Quartzgreen. - Cut 5
persona(2, rulingpersona-continuity). Through VoidBot's persona-state path:publicNameandpublicDescriptionineve.ccrenamed with provenance preserved;identity.jsondisplayName: Thing,avatarUrlrepointed to the repo's own.voidbot/voice/(the current URL names a dead VoidBot branch, B7); a new portraitthing.pngper~/.claude/doctrine/images.md(the deck's own constraints, played straight: no orange rock, at least one arm, nothing ordinal);docs/eve-persona.md→docs/thing-persona.mdbygit mvwith its text updated;.voidbot/state/README.mdrepointed from the nonexistentdocs/eve-face.mdto it; the site card image in cut 4 follows. The Discord role's display name is an operator action in Discord and is listed, not executed. - Cut 6
in-repo-prose(2). README titles and bodies in the eight repos,docs/eve-*.md→docs/thing-*.mdbygit mv, comments and fixture descriptions,EveCanvas/EVE*class prefixes only if the ruling on wire names allows (installed app ids are wire). Forbidden-writer rule applies: no pass overschemas/, fixtures or manifests. - Cut 7
wire-ids(6, rulingwire-names). Underfreeze: one paragraph in the Thing README "Naming" section: wire ids keep theeveprefix as history; new breaking revisions takegamecult.thing.*. Underrename-now: the migration, specified then, per id class.
Questions (the Self admits these; one fork each)
home-repo: which repo owns the campaign and this map?
Options: eve-repo (this file, F:\Projects\Eve\docs\thing-campaign.md,
the kernel repo that becomes Thing; the body the campaign changes, as
eureka-body lives in Huginn); gamecult-ops (cross-repo campaigns as ops
memory; but ops is private and the campaign is public by nature);
Eureka (the method repo; wrong owner for a product rename). Recommended:
eve-repo. The campaign record's repos must list the eight by their
new names once cut 2 lands; until then the old names, since a DocRef
names a commit and the redirect keeps it reachable either way.
brand: how does the deck look on gamecult.org?
Options: framed-exhibit (the deck ships with its own consulting look,
unchanged, including its light/dark themes; the brand lives in the blog post
and site chrome around the iframe, and the raw URL opens the exhibit as
itself); re-skin (the deck's :root tokens become the brand's: ground
#07111a with the wash, Montserrat and Ubuntu, accent #ff8a2a, single dark
theme); hybrid (keep the deck's typography and layout, replace only the
navy with the brand's ground and the blue accent with orange, force dark).
Recommended: framed-exhibit. The consulting navy and serif are the joke;
re-skinning it makes an earnest deck out of a parody. Brand doctrine already
admits a scoped variant for typeset essays and already hosts the cat applet
with its own styles; a quoted document in a brand frame is the same move. The
hybrid buys neither the joke nor the brand.
wire-names: do the eve-named wire ids get renamed?
The shape is eureka-body:question:wire-names. Options: freeze (every
gamecult.eve.*.v1, mimir.eve_*.v1, org.gamecult.eve.*,
@gamecult/eve-*, app ids and identityId eve stay; the Thing README
explains them as history; the rule recorded is rename-at-next-epoch);
rename-at-next-epoch (each id becomes gamecult.thing.<name>.v2 in its
next breaking revision, paid for by that revision; UPM ids on the next major);
rename-now (a migration of every fixture, conformance pack, consumer
manifest, Rust constant and installed app bought for a name). Recommended:
freeze, with rename-at-next-epoch as the standing rule. The deck's own
wave 1 says "redirect old names so nothing breaks"; wire ids have no redirect.
aetheria-eve: what happens to the archived repo?
Options: rename-archived (unarchive, gh repo rename AetheriaThing,
re-archive; three API calls, the deck's "eight" becomes true, the IP premise
is honoured on the org list); leave (taxidermy stays named; the family is
seven, as the Projects card already says). Recommended: rename-archived;
it is cheap and the stated reason for the campaign is the name itself.
dsl-name: what is the DSL and lowering layer called?
Operator direction (verbatim): "Eve CultUI is indeed misleading, should become Thing Script or something. ThingML would be hack." Read as a direction, not a final name. ThingML is also already taken: it is SINTEF's IoT modelling language, so the collision stands behind the "hack".
What the new name covers, by the four uses above: (1) the authoring DSL
and its reactive binding contract, today "CultUI" and "Eve DSL"
interchangeably, including the TUI and GUI streams it lowers to ("Thing
Script lowers to a GUI stream and a TUI stream"); (2) the retained tree
keeps being named by its schema (gamecult.eve.surface.v1, in prose "a
Thing's surface tree"), and the style system is "Thing Script styles";
(3) the cultui-* anatomy ids are wire and follow the wire-names
ruling; (4) Unity CultUI (org.gamecult.ui) is CultLib's and keeps its
name, so the memory note's distinction becomes "Unity CultUI is not Thing
Script".
Options: thing-script (two words in prose, thingscript in identifiers
and as the file extension .thingscript for fixtures when they are next
touched; the .eve extension is prose-grade, three fixture files);
thing-dsl ("Thing DSL", descriptive, no new noun; weaker in sentences
and keeps "DSL" as a name); keep-cultui (CultUI stays the DSL's name,
doctrine says "Thing/CultUI"; cheapest, but the operator has called the
pairing misleading). Recommended: thing-script, as the operator led
with it and it names exactly use (1) without touching the schema-named tree
or CultLib's package.
persona-continuity: is Thing the same Persona as Eve?
Options: same-persona-renamed (one eve.cc, publicName and
description change through VoidBot's path, identityId eve frozen under
wire-names, history and storedAt preserved); new-persona (a fresh
Persona "Thing" with new state; Eve's state archived). Recommended:
same-persona-renamed; the Persona standard says preserve provenance and
do not let a second writer exist, and the deck itself says "we are not
renaming the product, we are confessing it".
deck-facts: are the deck's two factual slips corrected before publishing?
Options: fix (the Huginn wave-2 bullet names the site, the AetheriaEve row says archived; nothing else); publish-as-is (a parody is allowed its errors; the map records them). Recommended: fix; both are one-line edits and the deck is the campaign's public statement of intent.
Rationale
Why the deck is cut 1 and not a footnote
The operator said so, and it is also the cheapest honest first move: it publishes the intent before any name changes, so every later cut can point at a public statement rather than a private decision.
Why the applet path and not a content-side HTML file
The overlay applet is the only standalone-HTML path with a live proof on the
site (B4). A content-side .html would be a second mechanism for one job.
Why repo renames come before doctrine and site prose
GitHub redirects make the rename reversible and non-breaking (B2), and every prose cut wants to write the new URLs once. Doing prose first would write old URLs that then need a second pass.
Why wire ids are a ruling and not a cut
A stored id has no redirect. Renaming gamecult.eve.surface.v1 is a
migration of every fixture, pack, manifest and Rust constant that names it,
across at least four repos and two runtimes, and the campaign's reason (a
character's name on the brand) is not served by it; nobody reads a schema id
and sees a character. The eureka-body campaign faced the same fork and
recommended freeze.
Why the Persona is renamed rather than reborn
Persona state is the Mind the repo keeps (Persona standard). A new Persona
would discard the operating lessons in eve.cc to change a display name.
Rejected
- Re-skinning the deck to the brand (question
brand): kills the parody. - Treating "Eve" in dated blog posts as live prose: they are history; the
evetag stays, since tag URLs have no redirect. - A redirect layer on gamecult.org for renamed pages: nothing is renamed on the site; the Projects card keeps its URL and changes its content.
- Giving Huginn a cut: it carries no Eve wording (B6).