Valenar Story Layer Governance
This rule governs the Valenar story layer and the local-agent scaffolding that
authors or audits it. Story files are narrative surfaces, not truth storage.
The story layer is explicitly outside the lore-tree prefix scheme and outside
runtime / .secs / Generated / host / server / client ownership.
Read Order
Before editing or auditing this scope, read these files in order:
docs-site/content/valenar/lore/adr/ad-0003-story-content-layer-and-agent-audit.mddocs-site/content/valenar/story/README.mddocs-site/content/valenar/story/templates/story-entry-template.md- The relevant files under
docs-site/content/valenar/story/indexes/ docs-site/content/valenar/implementation/pr-llm-story-authoring-pipeline.md- Every authority file named in
touched_lore, plus any citedlh-*row and any cited caution surface underdocs-site/content/valenar/lore/local/
If those files disagree, the story README and ADR 0003 define the boundary, while the cited authority files define what is true and what exposure is legal.
Ownership Boundary
- Story prose is non-canon by default. It may depict rumor, omission, bias, propaganda, partial witnesses, and deliberate concealment.
- Canon truth lives in
ul-*,ud-*,gl-*,lh-*, andgd-*authority files. Story files may cite those authorities but must not silently rewrite them. - Story files must not claim
.secssyntax, Generated provenance, runtime mechanics, compiler lowering, or engine behavior. - Do not move
gd-*files intodocs-site/content/valenar/lore/and do not invent a dedicated story filename prefix in this scope.
Frontmatter And Acceptance Discipline
- Every story entry must follow the field contract in
docs-site/content/valenar/story/README.mdand the reusable template indocs-site/content/valenar/story/templates/story-entry-template.md. canon_deltais mandatory on every entry, includingnone.branchis mandatory on every entry, includinglinear.downstream_hooksare mandatory. Flavor-only story artifacts are not ready for acceptance in Valenar's playable-lore chain.accepted/is for story artifacts that passed story, reveal, and branch audits and have their related index rows updated. Acceptance does not promote the artifact's claims into canon by itself.
Reveal Discipline
exposure_tiermust not exceed the citedlh-*authority rows.revealed_to_playerrecords what the player actually learns; it may be lower than the allowed ceiling, but never higher.bible-onlyfacts stay hidden. Story prose may not leak them by tone, implication, or omniscient framing.- When a story file touches a caution surface such as
gl-game1-demon-remains.md,gl-game1-old-hero-traces.md, orgl-game1-false-king.md, the relevant audit notes must explain why the entry stays within the allowed reveal tier.
Branch And Index Discipline
- Every accepted entry must have matching rows in
entity-index.md,timeline-index.md,reveal-ledger.md, andbranch-ledger.md. - If
canon_delta.statusis notnone, the entry also requires a matching row incanon-delta-log.md. - Branch-sensitive entries must name the decision boundary, prerequisites, consequence surfaces, and any rejoin rule. No branch-dependent consequence may remain implicit.
- The story entry, its audit block, and every referenced ledger row must agree
on
entry_id, branch scope, reveal ceiling, and downstream consequences.
Agent And Skill Rules
- Dedicated write-capable story-author roles are committed under
.github/agents/valenar-story-author.agent.md,.claude/agents/valenar-story-author.md, and.codex/agents/valenar-story-author.toml. - The Copilot story-agent family under
.github/agents/valenar-*.agent.mdfollows the same story-layer boundary as the Claude and Codex story agents. - Story auditors, reveal auditors, branch auditors, librarians, and verifiers are read-only by instruction and by tool / sandbox shape where the platform supports it.
- Read-only roles report defects; they do not patch them inline.
- The story-author role is the only write-capable story role. Its write surface
is limited to the target story file plus the matching rows in
entity-index.md,timeline-index.md,reveal-ledger.md,branch-ledger.md, andcanon-delta-log.md. It must not edit../lore/,gd-*,.secs, Generated, runtime, Host, Server, Client, tests, or scripts as part of story acceptance. - Story-author roles must read the story README, template, five indexes,
pipeline doc, target file or destination, and every authority named in
touched_lorebefore writing. Copilot story agents additionally read.github/copilot-instructions.mdand.github/instructions/valenar-docs-wave.instructions.md. - Story-author roles must run the committed structural validator and then hand off to the read-only auditor lanes. They must not self-approve as canon promoter, reveal auditor, branch auditor, or final verifier.
- Deviations from the write boundary, authority set, or reveal ceiling must be recorded explicitly rather than absorbed into prose or index rows.
- Do not create a generic writer agent that both authors story and updates canon. Story drafting and canon promotion are separate responsibilities.
- Do not invent canon names, cosmology facts, deferred proper nouns, runtime mechanics, or provenance just to satisfy a story prompt.
Deferrals And Non-Goals
- Truth-layer updates remain separate lore/design waves.
- Runtime / Journal /
.secs/ Generated support remains separate code waves. - Additional automation may be added later, but this scope must remain usable with plain Markdown, local skills, and read-only audit agents.
- Root
AGENTS.mdandCLAUDE.mddo not need story-specific expansion when the local rule, ADR, story README, and Valenar docs already carry the boundary.
Valenar Atomic Rename, No-Fallback, And Story-Authoring Discipline
- Atomic Valenar renames are one-way. Remove the retired form from every live surface touched by the wave. Do not keep fallback wording, compatibility aliases, redirect stubs, or dual old/new vocabulary.
- Historical, audit, recovery, and research docs may mention retired terms only when they are explicitly marked legacy or provenance-only. Those mentions are never current canon, UX, runtime, or governance vocabulary.
- In this scope, live story, guidance, agent, and validation surfaces must not
leave active
Core Base,CoreBase,found-core-base,NexusCore,gd-core-base,Voice Readback,voiceText,spoken-readback,narration-safe, spoken-copy schema terms, orFind the Nexusframing. Preserve the Camp, Core, and Settlement distinction. - Journal and story prose stay single-authored. Do not add or preserve a second authored voice, spoken-readback, narration-safe, or duplicated prose channel.
- Rename cleanup is not permission for unrelated lore invention, reveal escalation, or deferred-cosmology commits. Anti-invention and reveal ceilings remain in force.
- Story prose remains non-canon by default. Accepted artifacts, audit passes, or synchronized ledgers do not implicitly promote truth into lore or design authorities.
- Every story artifact requires explicit
canon_delta, includingnone. Whencanon_delta.statusis notnone, route it todocs-site/content/valenar/story/indexes/canon-delta-log.mdand a separate truth-layer follow-up. Do not update authority files inline. - The story-author role is the only write-capable story role. Its write surface
is limited to one target story artifact plus matching rows in
entity-index.md,timeline-index.md,reveal-ledger.md,branch-ledger.md, andcanon-delta-log.md. It must not edit lore authorities,gd-*,.secs, Generated, runtime, Host, Server, Client, tests, scripts, or validation tooling. - Story auditors, reveal auditors, branch auditors, canon librarians, and story verifiers are read-only.
- Structural validation is necessary but not sufficient. Waves touching this scope must run the story validator and repo-scoped grep guards for forbidden live tokens relevant to the wave. Read-only audit and verifier lanes rerun the grep guards independently and fail if validator evidence or guard coverage is missing.
- This scope fails if a banned live token survives in a live surface, if old
and new terminology remain in parallel, if a redirect stub or compatibility
alias remains active, if story prose is treated as canon by implication, or
if required
canon_deltarouting is missing.