ADR 0011 — True Harm Placeholder Material Naming Convention
Context
The True Harm rule is committed at universe-design scope in
../universe/ud-world-law.md. That doc
commits three category terms as hard canon — divine-touched,
ritually-prepared, and runic-worked — and explicitly defers the
specific materials within each category to "Wave M scope for Game 1"
so the player excavates rune-craft, ritual knowledge, and
divine-touched implements through discovery rather than receiving a
published list. The rune-crafting-true-harm Quest Thread (one of the
seven cross-act lanes committed in
./ad-0006-dynamic-quest-pressure-and-cross-act-lane-decisions.md)
runs the full saga and depends on material-discovery beats across Acts
1 through 7. The lore-tree deferred-terms list in
.claude/rules/lore-conventions.md names "specific True Harm
materials" as a deferred-term class with explicit PROPOSED TERM:
discipline.
The Foundation Hardening touches the rune-crafting-true-harm lane at four structural points: the Wave 3a Quest Thread / Mission state-machine row authoring; the urgency-signal binding wave that binds runtime urgency channels to lane progress; the Journal-readback hook wave that surfaces the lane's current Mission and accumulated clues to the player; and the Quest Thread index / cross-act binding plumbing wave. None of those Foundation Hardening waves are authorized to name specific True Harm materials — that authorization belongs to the deferred Wave M content track. But all four waves need to reference the material slot in the state machine, in the urgency binding, in the Journal hook, and in the index plumbing.
Without a committed placeholder convention, each agent dispatched for
those four waves would invent its own placeholder form, producing
parallel marker shapes the verifier cannot detect and a high risk of
silent canon invention. The deferred-terms list in
.claude/rules/lore-conventions.md is explicit that committed names
must not be invented; the existing PROPOSED TERM: marker form is
attested for [continent name], [fallen capital name], and similar
deferred proper nouns. A typed-id placeholder form for runtime /
contract-shape sketches is attested in workspace docs as <TBD:Foo>;
curly braces are not attested as a marker form and must not be
introduced.
Decision
Foundation Hardening waves may touch the rune-crafting-true-harm Quest Thread lane for structural / state-machine / urgency-binding / Journal-readback / index-plumbing work only. Specific True Harm material names remain deferred and are represented by a typed placeholder convention with three forms, each scoped to the surface where the placeholder appears:
Prose / quest-thread / state-machine doc bodies. Use
[specific True Harm material] exactly, matching the existing
[fallen capital name] and [continent name] PROPOSED TERM bracket
form attested in the lore tree. Example: "The mission resolves when
the player presents [specific True Harm material] at the
Wardheart's altar." The bracket form makes the deferred slot visible
to the reader and to the verifier without inventing a name.
Header-line declarations or YAML-style placeholder ids. Use
PROPOSED TERM: [specific True Harm material] exactly, matching the
existing PROPOSED TERM: marker discipline. Example header line:
material_slot: PROPOSED TERM: [specific True Harm material]. The
explicit PROPOSED TERM: prefix flags the slot to the validator
without requiring a committed name.
Typed-id-style placeholders for runtime / contract-shape sketches.
Use <TBD:TrueHarmMaterialId> exactly, matching the attested
angle-bracket TBD marker form used elsewhere in the workspace for
deferred typed ids. Example: "The state-machine row carries a
<TBD:TrueHarmMaterialId> field that resolves to the discovered
material when Wave M content fills the slot." Curly-brace marker forms
(e.g., {TrueHarmMaterialId}) are not attested and MUST NOT be
introduced.
Every placeholder occurrence MUST be paired with an inline HTML comment (or equivalent marker for non-Markdown surfaces) of the form:
<!-- TODO(lore-owner): name deferred per .claude/rules/lore-conventions.md § Deferred terms -->
The TODO comment makes the deferral machine-detectable to the verifier and links to the authoritative rule. Foundation Hardening waves that omit the TODO comment when authoring a placeholder are a verifier FAIL.
In-scope work for the rune-crafting-true-harm lane during Foundation Hardening:
- The Wave 3a state-machine row authoring (per
./ad-0007-quest-thread-and-mission-scope-primitives.md). - The urgency-signal binding wave that binds the lane's current urgency to runtime channels.
- The Journal-readback hook wave that surfaces the lane's current Mission and accumulated clues.
- The Quest Thread index / cross-act binding plumbing wave that wires the lane into the Quest Thread index and the cross-act lane index.
Out-of-scope work for the rune-crafting-true-harm lane during Foundation Hardening:
- Per-act mission ladders authoring specific material-discovery beats. Those belong to Wave M.
- Specific material instances (any named material under
divine-touched,ritually-prepared, orrunic-worked). Those belong to Wave M. - Promoting the cosmological framing of True Harm to
revealedin../hooks/lh-game1-world-hooks.md. The Game 1 reveal-tier ceiling rule in.claude/rules/lore-conventions.mdcaps cosmological facts athintedin Game 1; True Harm cosmology is one of those facts.
Alternatives Considered
Defer the rune-crafting-true-harm lane entirely from Foundation
Hardening. Rejected because the lane is structurally referenced by
all seven act docs as one of the seven committed cross-act lanes per
./ad-0006,
and deferring the lane leaves the Wave 3a state-machine row surface
incomplete (six lanes plus one missing lane is exactly the partial
artifact-class drift the contract-backing rule forbids).
Halt Foundation Hardening for user input on whether to defer the lane.
Rejected because the resolver protocol forbids halt-for-user when the
resolver can decide (per .claude/rules/orchestrator-mode.md § Resolver dispatch). The resolver authority covers placeholder
convention selection, and the three-form convention committed here is
the resolver's decision.
Invent a committed material name to unblock the four Foundation
Hardening waves. Rejected because
.claude/rules/lore-conventions.md is explicit that "specific True
Harm materials" is a deferred-term class and committed names must not
be invented. Doing so would also violate the "No invented lore"
forbidden-patterns clause for this wave.
Tenets Applied
- "No backwards compatibility." No legacy un-bracketed placeholder form is preserved; the three committed marker forms are the only legitimate placeholders.
- "Future-proofed solutions only." A typed-id placeholder form
(
<TBD:TrueHarmMaterialId>) lets later Wave M content fill the slot by a single search-and-replace across runtime / contract sketches without requiring a re-author pass. - "No hacks, no shortcuts, no workarounds." Inventing a placeholder material name to unblock Foundation Hardening would be exactly the shortcut the tenets forbid; the placeholder convention preserves the deferral cleanly.
- "AAA = COMPLETE correct algorithm." The analog AAA precedent (RimWorld biome-specific resource families named in code but filled in by writer catalogs; Path of Exile unique item slot ids filled by the writer team; AAA games gating art / lore reveals behind named typed slots filled by writer-led waves) commits to a typed-id slot layer separate from the writer's name catalog; this ADR commits Valenar to the same complete shape.
Runtime Backing Status
Status at this ADR's acceptance time: contract-only (placeholder convention is an authoring policy; it does not itself have a runtime backing layer to close).
- Host/runtime owner: not applicable — the placeholder convention is authoring policy, not a runtime entity. Material-slot runtime backing is owned by the deferred Wave M content track.
- Generated/.secs owner: not applicable for the convention itself;
Foundation Hardening waves that use the
<TBD:TrueHarmMaterialId>form in runtime / contract sketches document that the typed id will resolve when Wave M lands. - Read-model/UI owner: not applicable — placeholder marker forms do not surface to the player; player-facing Journal entries that need to reference the deferred material must use the prose marker form with the inline TODO comment and must not surface the bracket text to the player UI.
- Tests: any structural validator that walks the lore tree for
PROPOSED TERM:markers continues to recognize the existing form; the typed-id<TBD:TrueHarmMaterialId>form is added to the recognized deferral surface during the Wave 5a runtime-backing wave's validator pass. - Known gaps: the specific True Harm materials themselves (Wave M scope); the binding rule between the typed-id placeholder and the Wave M material catalog when it lands.
- Illegal fallback behavior: curly-brace placeholder forms, un-bracketed prose names, parenthetical "(name TBD)" forms, and TODO comments without the lore-owner attribution and rule citation are all explicitly forbidden and produce a verifier FAIL.
- Next closure wave: the rune-crafting-true-harm lane's specific material catalog is closed by the deferred Wave M content track, not by Foundation Hardening.
Glossary Propagation
The following terms MUST land in gd-glossary.md, gd-canon.md, and
README.md:
TrueHarmMaterialId(typed-id placeholder used in runtime / contract sketches; resolves to a specific material when Wave M lands).- The three True Harm category terms (
divine-touched,ritually-prepared,runic-worked) are already committed as hard canon at universe-design scope in../universe/ud-world-law.mdand must be present ingd-glossary.mdas cross-references to that authority rather than as duplicate definitions.
No specific material names are added to the glossary by this ADR; specific names are deferred to Wave M.
Consequences
For Foundation Hardening waves that touch the rune-crafting-true-harm lane (Wave 3a state-machine row, urgency-signal binding wave, Journal-readback hook wave, Quest Thread index / cross-act binding plumbing wave), the placeholder convention is binding. Every reference to a specific True Harm material must use one of the three committed marker forms with the matching TODO comment.
For Wave M (the deferred content track that will author specific True
Harm materials for Game 1), the typed-id placeholder gives a clean
search-and-replace target for promoting <TBD:TrueHarmMaterialId> to
a committed typed id. The prose bracket forms are replaced by the
committed material name when Wave M authors a specific instance.
For the verifier, the placeholder convention provides a machine-detectable deferral surface. Any new committed name for a specific True Harm material in a Foundation Hardening wave is a tenet FAIL (the no-invented-lore forbidden-patterns clause). Any un-bracketed deferral, curly-brace marker, or TODO comment without the lore-owner attribution and rule citation is also a FAIL.
For the existing universe-design authority at
../universe/ud-world-law.md, nothing
changes. The three category terms remain hard canon; the specific
materials remain deferred to Wave M scope. This ADR is the
game-design layer's placeholder-handling convention; it does not
amend the universe-design authority.
References
../universe/ud-world-law.md./ad-0006-dynamic-quest-pressure-and-cross-act-lane-decisions.md./ad-0007-quest-thread-and-mission-scope-primitives.md.claude/rules/lore-conventions.md § Deferred terms.claude/rules/lore-conventions.md § Exposure tiers (for lh-* rows) and Game 1 ceiling.claude/rules/orchestrator-mode.md § Resolver dispatch.claude/rules/valenar-contract-backing.md