-
Repo Faces
-
Repo Faces grow from indexed bodies and webhook speech. A project should greet you, explain itself, and point at evidence without pretending the avatar is the source of truth.
+
+
Repo Personas
+
Repo Personas grow from indexed bodies and webhook speech. A project should greet you, explain itself, and point at evidence without pretending the avatar is the source of truth.
diff --git a/docs/gamecult-repo-swarm-organ-atlas.tex b/docs/gamecult-repo-swarm-organ-atlas.tex
index 92c9971..14046e5 100644
--- a/docs/gamecult-repo-swarm-organ-atlas.tex
+++ b/docs/gamecult-repo-swarm-organ-atlas.tex
@@ -139,7 +139,7 @@ of letting every task become a confident little cliff dive.
\begin{itemize}
\item Owns: agent harness behavior, work execution posture, Persona-state schema pressure, verification discipline.
- \item Feeds: VoidBot, repo Faces, Ghostlight, the public Persona system, and any future worker that needs memory with spine.
+ \item Feeds: VoidBot, repo Personas, Ghostlight, the public Persona system, and any future worker that needs memory with spine.
\item Needs: CultCache for durable state, CultNet and CultMesh for typed crossings, Eve for inspection surfaces.
\end{itemize}
@@ -152,13 +152,13 @@ tools when the room needs more than chat.
\begin{itemize}
\item Owns: Discord-native retrieval, room memory, repo source search, owner notification compatibility, live Persona pressure.
- \item Feeds: Epiphany's design lessons, Ghostlight social continuity, Bifrost crossing patterns, repo-Face state.
+ \item Feeds: Epiphany's design lessons, Ghostlight social continuity, Bifrost crossing patterns, repo-Persona state.
\item Demotion line: delivery mechanisms are actuators, not sovereign truth. Bifrost should own public and owner-facing crossings when those crossings become formal.
\end{itemize}
\subsection{Ghostlight and EpiphanyAquarium}
-Ghostlight carries persistent social state for characters, agents, and Faces.
+Ghostlight carries persistent social state for characters, agents, and Personas.
EpiphanyAquarium, EpiphanyAquarium-Bevy, EpiphanyAquarium-Web, and
Aquarium-Engine are the visual and runtime labs for agent ecology,
self-modeling, and character surfaces.
@@ -403,7 +403,7 @@ gamecult-grav & Legacy publishing body and migration memory.\\
gamecult-ops & Operations inventory, runbooks, and deployment memory.\\
GameCult-Quartz & Shared Quartz engine and Pages workflow used by `gamecult-site`, `AetheriaLore`, and `Mimir` site overlays.\\
gamecult-site & Public root site and repo atlas.\\
-Ghostlight & Persistent social state for characters, Faces, and communities.\\
+Ghostlight & Persistent social state for characters, Personas, and communities.\\
Heimdall & Identity, grants, consent, claims, and revocation.\\
LunaMosaic & Visual mosaic corpus and experiment body.\\
Luxidland & Unity open-world prototype with deterministic simulation, world-cell sharding, proximity clusters, quorum/witness logic, and CultMesh contract shapes; renderer LOD synergy remains a target path, not a confirmed integration.\\
diff --git a/docs/gamecult_integrated_dossier.tex b/docs/gamecult_integrated_dossier.tex
index ba38b92..2d7d954 100644
--- a/docs/gamecult_integrated_dossier.tex
+++ b/docs/gamecult_integrated_dossier.tex
@@ -128,7 +128,7 @@ The current state of the market is therefore not solved by adding more prompts.
\section{What is different about GameCult?}
-GameCult appears to be building an organization where agents are not just assistants but part of the operating structure. Each repo can have a \term{Face}, a public/social agent identity. VoidBot reads Discord and repo context. Epiphany externalizes typed project memory. CultMesh supplies distributed typed state. Bifrost turns requests, discussion, work, reviews, receipts, and rewards into governed records.
+GameCult appears to be building an organization where agents are not just assistants but part of the operating structure. Each repo can have a \term{Persona}, a public/social agent identity. VoidBot reads Discord and repo context. Epiphany externalizes typed project memory. CultMesh supplies distributed typed state. Bifrost turns requests, discussion, work, reviews, receipts, and rewards into governed records.
In ordinary terms: instead of treating AI as a chatbot bolted onto a team, GameCult is trying to make agent work auditable, repeatable, and connected to governance. The mythology around the Colossus is unusual and should not lead investor materials. The underlying engineering goal is legible: preserve context, assign authority, verify work, and record who did what.
@@ -163,11 +163,11 @@ The implementation plan lists durable Epiphany state, bounded prompt integration
The failure mode of current agents is not that they cannot write code. It is that they cannot reliably preserve global coherence. Epiphany's product wedge is therefore not simply faster coding. It is persistent organizational cognition for agents.
-\section{VoidBot and Faces: the social interface}
+\section{VoidBot and Personas: the social interface}
VoidBot is the social and Discord-native interface into the swarm. It can answer from archived Discord history, indexed GameCult repos, and Aetheria lore, and then hand deeper work off to Codex. It supports real Discord replies, semantic retrieval, source/lore indexing, interaction memory, and Codex handoff flows.\src{GameCult/VoidBot README}{https://github.com/GameCult/VoidBot/blob/main/README.md}
-This matters because work does not originate only in tickets. It originates in chat, argument, taste, frustration, social trust, and repeated community pressure. VoidBot and repo Faces are the layer where that signal becomes visible.
+This matters because work does not originate only in tickets. It originates in chat, argument, taste, frustration, social trust, and repeated community pressure. VoidBot and repo Personas are the layer where that signal becomes visible.
\section{CultMesh: typed distributed state}
@@ -205,7 +205,7 @@ Fensalir & Reusable native runtime machinery: Win32 windowing, D3D12 device stat
Mimir & A local realtime field machine: cameras, microphones, speakers, network feeds, timing signals, Leap sensing, Fensalir GPU rendering, Faust DSP, and OBS output become one synchronized spatial program surface.\src{Mimir state map}{https://github.com/GameCult/Mimir/blob/main/state/map.yaml} & This is the strongest embodied proof workload. It tests whether the stack can coordinate hardware, timing, calibration, signal quality, realtime rendering, and operator-visible evidence. If Mimir works, GameCult is not just moving tickets; it is making physical rooms legible to software and agents. \\
AquaSynth & Research-grounded vocal-tract synthesis: IPA parsing, phonetic intent, articulatory gesture planning, human and nonhuman morphologies, Faust DSP, learned utterance embeddings, and rendered-audio loss.\src{AquaSynth IPA vocal tract roadmap}{https://github.com/GameCult/AquaSynth/blob/main/docs/ipa-vocal-tract-roadmap.md} & Tests whether the stack can carry a real research program with contracts, experiments, evidence, and model-driven iteration. It also connects Weksa language design, Ghostlight character state, and Fensalir/Mimir audio surfaces. \\
Weksa & Meaning-first procedural language generation: ontology owns meaning, grammar owns required expression, phonology owns sound shape, diachrony owns historical distortion, and rendering owns surface text.\src{Weksa README}{https://github.com/GameCult/weksa/blob/main/README.md} & Shows that GameCult is not treating language as decorative text generation. Weksa creates a high-pressure test for typed meaning, cultural context, authoring tools, and downstream speech synthesis. \\
-Ghostlight & Socially persistent generative agents with canonical state, perceived state, relationship stance, culture, memory, incentives, and situation instead of flat persona prompts.\src{Ghostlight README}{https://github.com/GameCult/Ghostlight/blob/main/README.md} & Tests the same state problem in narrative form: agents must remain coherent over time, update from evidence, and react from grounded social context rather than generic friendliness. This is directly relevant to durable repo Faces and human-facing agent products. \\
+Ghostlight & Socially persistent generative agents with canonical state, perceived state, relationship stance, culture, memory, incentives, and situation instead of flat persona prompts.\src{Ghostlight README}{https://github.com/GameCult/Ghostlight/blob/main/README.md} & Tests the same state problem in narrative form: agents must remain coherent over time, update from evidence, and react from grounded social context rather than generic friendliness. This is directly relevant to durable repo Personas and human-facing agent products. \\
Game worlds / MMOs & CultMesh is designed so a game can treat clients and servers as one reactive database for persistent state, prediction-friendly input state, and simulation observations. Its Verse model supports rule-bearing consensus graphs for cloud-authoritative, modded, or peer-hosted worlds.\src{CultMesh README}{https://github.com/GameCult/CultLib/blob/main/src/GameCult.Mesh/README.md} Luxidland makes this concrete with deterministic hovercraft simulation, geographic world-cell sharding, route overlays, proximity clustering, witness observations, quorum candidates, and frame/event hashes mapped toward CultMesh simulation facts.\src{Luxidland README}{https://github.com/GameCult/Luxidland/blob/main/README.md} & This is a direct value proposition, not decorative ambition. Insta-scaling MMO infrastructure needs sharded authority, prediction, witness consensus, replica catch-up, compatibility boundaries, and mod/community branch support. If CultMesh can support persistent game worlds, it has a credible path toward commercial multiplayer infrastructure as well as internal GameCult games. \\
Heimdall & OAuth provider flows, entitlement evaluation, signed identity claims, grants, app sessions, token custody, and app-local claim verification.\src{Heimdall service contract}{https://github.com/GameCult/Heimdall/blob/main/docs/service-contract.md} & Makes the labor/governance thesis operational. Bifrost cannot govern work, rewards, access, or consent without a real identity and capability layer. Heimdall is the boring gate. Boring gates are where grown-up systems stop lying. \\
Norn & A Rust hybrid Sugiyama/Kamada-Kawai 2D and 3D graph layout solver with React/WASM inspection surfaces, export paths, and graph-readability benchmarks.\src{Norn handoff}{https://github.com/GameCult/Norn/blob/main/notes/fresh-workspace-handoff.md} & Gives Epiphany and Bifrost a path toward inspectable graph state: architecture maps, dataflow, receipts, dependencies, and active work frontiers that humans and agents can read without dumping the whole machine into prompt context. \\
@@ -547,7 +547,7 @@ This protects capital without turning the investor into a de facto controller of
\begin{enumerate}
\item \term{Bifrost-first covenant.} All external swarm tasks, public proof runs, design-partner tasks, and contributor reward flows must be represented in Bifrost as topics, work items, dispatches, receipts, completion artifacts, or ledger entries.
- \item \term{No shadow governance.} Discord, VoidBot, repo Faces, and ad hoc scripts may not become durable governance/work/reward authorities.
+ \item \term{No shadow governance.} Discord, VoidBot, repo Personas, and ad hoc scripts may not become durable governance/work/reward authorities.
\item \term{Compute accountability.} Model spend must be logged against tasks, agents, outcomes, and accepted artifacts.
\item \term{Contributor-output measurement.} The organization must measure baseline output, support received, agent leverage, accepted artifacts, rewards, and retention.
\item \term{Safety gates.} No autonomous external write access, private-data export, direct payout, revenue-share instrument, or housing obligation without approved policy and counsel review.
@@ -728,7 +728,7 @@ We can give the founder useful capital without forcing the project into a conven
\item[CultNet] Transport/wire layer for moving typed documents and messages.
\item[Dream] In Epiphany's roadmap, a public thought artifact that may influence another instance but is not adopted truth.
\item[Epiphany] Persistent agent-control plane for typed memory, role separation, verification, reorientation, and execution.
- \item[Face] A repo or project agent's public/social identity, usually surfaced through Discord or an operator UI.
+ \item[Persona] A repo or project agent's public/social identity, usually surfaced through Discord or an operator UI.
\item[Heimdall] Planned identity, grants, consent, and capability authority.
\item[Verse] A CultMesh rule-bearing consensus graph with its own authority model and compatibility rules.
\item[Yggdrasil] GameCult's infrastructure umbrella/hosting context for internal services.
diff --git a/docs/gamecult_void_dossier.md b/docs/gamecult_void_dossier.md
index c54bc10..6a62da7 100644
--- a/docs/gamecult_void_dossier.md
+++ b/docs/gamecult_void_dossier.md
@@ -136,7 +136,7 @@ Outputs: effective point balances, voting weights, motion totals, project influe
Derived state: voting share is derived from recorded value and the active voting curve. Patron tier, contributor tier, project standing, and payout eligibility are also derived unless a deployment explicitly says otherwise.
-Forbidden writers: Discord opinion, private founder memory, GitHub stars, raw donation totals, agent enthusiasm, repo Face taste, investor preference, and opaque game monetization counters do not directly mutate voting weight. They may create proposals, evidence, support events, purchase receipts, or review pressure. They do not become authority by being loud or profitable.
+Forbidden writers: Discord opinion, private founder memory, GitHub stars, raw donation totals, agent enthusiasm, repo Persona taste, investor preference, and opaque game monetization counters do not directly mutate voting weight. They may create proposals, evidence, support events, purchase receipts, or review pressure. They do not become authority by being loud or profitable.
Shared paths: web app votes, Discord-native votes, Eve-rendered dashboard actions, agent-submitted motions, patron support webhooks, game purchase receipts, accepted PRs, manual ledger adjustments, decay jobs, and project-specific governance flows all have to pass through the same ledger and motion primitives.
@@ -185,7 +185,7 @@ Button(command: "open-provider")
Slider(binding: "camera.exposure")
Toggle(binding: "node.visible")
Enum(binding: "renderer.mode")
-Inspector(object: "selectedFace.state")
+Inspector(object: "selectedPersona.state")
Graph(nodes: "work.frontier")
Ledger(entries: "project.credits")
MotionVote(motionId: "...")
@@ -219,7 +219,7 @@ That could serve:
- StreamPixels creator controls
- CultMesh peer/Verse inspection
- Epiphany work frontier maps
-- repo Face dashboards
+- repo Persona dashboards
- game server control rooms
- creator overlays
- mobile patron/project views
diff --git a/docs/face-artifacts/character-sheet-provenance.md b/docs/persona-artifacts/character-sheet-provenance.md
similarity index 77%
rename from docs/face-artifacts/character-sheet-provenance.md
rename to docs/persona-artifacts/character-sheet-provenance.md
index ed7455c..a60eff0 100644
--- a/docs/face-artifacts/character-sheet-provenance.md
+++ b/docs/persona-artifacts/character-sheet-provenance.md
@@ -1,4 +1,4 @@
-# Face Character Sheet Provenance
+# Persona Character Sheet Provenance
Generated on 2026-05-30 for the CotSC Praxis visual-novel layer.
@@ -6,16 +6,16 @@ Each sheet uses the largest local avatar/source render found during the pass and
| Actor | Source render | Identity source |
| --- | --- | --- |
-| Void | `E:\Projects\VoidBot\assets\repo-faces\void.png` | VoidBot homepage guide / archive-mouth role from the CotSC Praxis Ink and visual manifest. |
+| Void | `E:\Projects\VoidBot\assets\repo-personas\void.png` | VoidBot homepage guide / archive-mouth role from the CotSC Praxis Ink and visual manifest. |
| Aqua | `E:\Projects\AquaSynth\icon.png` | `E:\Projects\AquaSynth\.voidbot\voice\identity.json` plus VoidBot handoff doctrine: adorable fish, music, `.aqua` patches, synth/runtime boundaries. |
| Nibu | `E:\Projects\AetheriaLore\.voidbot\voice\nibu.png` | `E:\Projects\AetheriaLore\.voidbot\voice\identity.json`: AetheriaLore-first, abrasive AI-companion shell, junkyard survival, continuity-smear/reset horror. |
-| Weksa | `E:\Projects\VoidBot\assets\repo-faces\source-art\weksa-b-source.png` | `E:\Projects\weksa\.voidbot\voice\identity.json`: anthropologist of alien grammar, culture, interlingua, ontology before labels. |
+| Weksa | `E:\Projects\VoidBot\assets\repo-personas\source-art\weksa-b-source.png` | `E:\Projects\weksa\.voidbot\voice\identity.json`: anthropologist of alien grammar, culture, interlingua, ontology before labels. |
| Epiphany | `E:\Projects\EpiphanyAgent\.voidbot\voice\epiphany.png` | `E:\Projects\EpiphanyAgent\.voidbot\voice\identity.json` and EpiphanyAgent doctrine: typed state, explicit maps, bounded scratch, verifier evidence, anti-churn. |
-| Kiko | `E:\Projects\VoidBot\assets\repo-faces\source-art\kiko-b-source.png` | `E:\Projects\StreamPixels\.voidbot\voice\identity.json` and the Codex seed prompt: hyperactive StreamPixels overlay Face, Pixi/rendering/auth seams. |
+| Kiko | `E:\Projects\VoidBot\assets\repo-personas\source-art\kiko-b-source.png` | `E:\Projects\StreamPixels\.voidbot\voice\identity.json` and the Codex seed prompt: hyperactive StreamPixels overlay Persona, Pixi/rendering/auth seams. |
| Heimdall | `E:\Projects\Heimdall\assets\heimdall-profile.png` | `E:\Projects\Heimdall\.voidbot\voice\identity.json` plus homepage tour doctrine: consent gate, identity, grants, sessions, revocation. |
| Libby | `E:\Projects\CultLib\.voidbot\voice\libby.png` | `E:\Projects\CultLib\.voidbot\voice\identity.json`: cute cultist librarian, open knowledge, open source, CultCache/CultNet/CultMesh. |
| Druzkai | `C:\Users\Meta\.codex\generated_images\019e3a66-a016-7f33-84d3-a7194081157f\druzkai-avatar-under-2mb.png` | `E:\Projects\Eusocial Interbeing\.voidbot\voice\identity.json`: Airawa fungal-road archivist, ecological memory, contract, non-imperial Zyphos pressure. |
-| Huginn | `E:\Projects\VoidBot\assets\repo-faces\source-art\huginn-a-source.png` | `E:\Projects\CultCacheTS\.voidbot\voice\identity.json` and Codex birth prompt from 2026-05-22: thought, inspectability, typed documents, schema validation, persistence envelopes. |
+| Huginn | `E:\Projects\VoidBot\assets\repo-personas\source-art\huginn-a-source.png` | `E:\Projects\CultCacheTS\.voidbot\voice\identity.json` and Codex birth prompt from 2026-05-22: thought, inspectability, typed documents, schema validation, persistence envelopes. |
Generated sheet assets live under:
diff --git a/docs/face-artifacts/sai-vn-background-pass.png b/docs/persona-artifacts/sai-vn-background-pass.png
similarity index 100%
rename from docs/face-artifacts/sai-vn-background-pass.png
rename to docs/persona-artifacts/sai-vn-background-pass.png
diff --git a/docs/face-artifacts/sai-vn-epiphany.png b/docs/persona-artifacts/sai-vn-epiphany.png
similarity index 100%
rename from docs/face-artifacts/sai-vn-epiphany.png
rename to docs/persona-artifacts/sai-vn-epiphany.png
diff --git a/docs/face-artifacts/sai-vn-flood-alpha-checker.png b/docs/persona-artifacts/sai-vn-flood-alpha-checker.png
similarity index 100%
rename from docs/face-artifacts/sai-vn-flood-alpha-checker.png
rename to docs/persona-artifacts/sai-vn-flood-alpha-checker.png
diff --git a/docs/face-artifacts/sai-vn-home.png b/docs/persona-artifacts/sai-vn-home.png
similarity index 100%
rename from docs/face-artifacts/sai-vn-home.png
rename to docs/persona-artifacts/sai-vn-home.png
diff --git a/docs/face-artifacts/sai-vn-pixel-backgrounds.png b/docs/persona-artifacts/sai-vn-pixel-backgrounds.png
similarity index 100%
rename from docs/face-artifacts/sai-vn-pixel-backgrounds.png
rename to docs/persona-artifacts/sai-vn-pixel-backgrounds.png
diff --git a/docs/face-artifacts/sai-vn-pixel-sprites.png b/docs/persona-artifacts/sai-vn-pixel-sprites.png
similarity index 100%
rename from docs/face-artifacts/sai-vn-pixel-sprites.png
rename to docs/persona-artifacts/sai-vn-pixel-sprites.png
diff --git a/docs/face-artifacts/vn-space-map.md b/docs/persona-artifacts/vn-space-map.md
similarity index 100%
rename from docs/face-artifacts/vn-space-map.md
rename to docs/persona-artifacts/vn-space-map.md
diff --git a/docs/portfolio-dossier/chapters/projects/ghostlight.tex b/docs/portfolio-dossier/chapters/projects/ghostlight.tex
index 4c9b279..709a0df 100644
--- a/docs/portfolio-dossier/chapters/projects/ghostlight.tex
+++ b/docs/portfolio-dossier/chapters/projects/ghostlight.tex
@@ -1,8 +1,8 @@
\ProjectHeader{Ghostlight}{Persistent characters / social state}{Ghostlight gives agents canonical state, perceived state, relationship stance, memory, culture, and incentives instead of flat persona mush.}{Ghost Hall}
\ProjectionBand
-{Characters and repo Faces stop resetting into generic helpfulness.}
+{Characters and repo Personas stop resetting into generic helpfulness.}
{Games and communities get persistent social agents with inspectable motives.}
-{Ghostlight becomes the social state engine for mesh-native characters and Faces.}
+{Ghostlight becomes the social state engine for mesh-native characters and Personas.}
{It becomes personality theater without grounded state or consent boundaries.}
-\ValueLadder{Better characters.}{Persistent NPC/Face product.}{Social agent substrate.}{Living interface layer for communities.}
+\ValueLadder{Better characters.}{Persistent NPC/Persona product.}{Social agent substrate.}{Living interface layer for communities.}
diff --git a/docs/portfolio-dossier/chapters/projects/voidbot.tex b/docs/portfolio-dossier/chapters/projects/voidbot.tex
index e35d1c9..6516413 100644
--- a/docs/portfolio-dossier/chapters/projects/voidbot.tex
+++ b/docs/portfolio-dossier/chapters/projects/voidbot.tex
@@ -1,7 +1,7 @@
-\ProjectHeader{VoidBot}{Social memory / swarm interface}{VoidBot turns Discord and repo memory into askable context, then routes serious work into Codex, Bifrost, and repo Faces.}{Archive Room}
+\ProjectHeader{VoidBot}{Social memory / swarm interface}{VoidBot turns Discord and repo memory into askable context, then routes serious work into Codex, Bifrost, and repo Personas.}{Archive Room}
\ProjectionBand
{The room stops forgetting decisions five scrolls later.}
-{Repo Faces get source-grounded speech, receipts, and Bifrost-routed work.}
+{Repo Personas get source-grounded speech, receipts, and Bifrost-routed work.}
{VoidBot becomes the social interface to a governed agent swarm.}
{It becomes a chat novelty that answers well but owns nothing durable.}
\ValueLadder{Askable memory.}{Swarm coordination.}{Social agent interface.}{Community cognition layer.}
diff --git a/docs/portfolio-dossier/data/portfolio.yaml b/docs/portfolio-dossier/data/portfolio.yaml
index 848f508..2944abc 100644
--- a/docs/portfolio-dossier/data/portfolio.yaml
+++ b/docs/portfolio-dossier/data/portfolio.yaml
@@ -76,7 +76,7 @@ projects:
name: Ghostlight
family: social-state
room: Ghost Hall
- thesis: Persistent social state for characters, agents, and Faces.
+ thesis: Persistent social state for characters, agents, and Personas.
mythic_case: Living interface layer for communities.
- id: aetheria-zyphos
name: Aetheria / Zyphos
diff --git a/docs/research/gamecult-org-repo-ledger.json b/docs/research/gamecult-org-repo-ledger.json
index a61eb91..2a410b6 100644
--- a/docs/research/gamecult-org-repo-ledger.json
+++ b/docs/research/gamecult-org-repo-ledger.json
@@ -339,7 +339,7 @@
"localPath": "E:\\Projects\\EpiphanyAgent",
"rootEntries": [
".epiphany-dogfood",
- ".epiphany-face",
+ ".epiphany-persona",
".epiphany-gui",
".epiphany-heartbeats",
".epiphany-rumination",
diff --git a/scripts/generate-vn-repo-doc-tree.mjs b/scripts/generate-vn-repo-doc-tree.mjs
index d664be6..f5cf3c8 100644
--- a/scripts/generate-vn-repo-doc-tree.mjs
+++ b/scripts/generate-vn-repo-doc-tree.mjs
@@ -30,6 +30,7 @@ const ignoredDirectories = new Set([
".git",
".pytest_cache",
".quartz-build",
+ ".voidbot/tmp",
".npm-cache",
".tools",
"bin",
@@ -44,8 +45,10 @@ const ignoredDirectories = new Set([
]);
function isIgnoredPath(relativePath) {
- return relativePath
- .split(/[\\/]+/)
+ const normalized = relativePath.split(/[\\/]+/).join("/");
+ if (ignoredDirectories.has(normalized)) return true;
+ return normalized
+ .split("/")
.some((part) => ignoredDirectories.has(part) || part.startsWith(".cache"));
}