Implant apps use hierarchical groups: implant/map, implant/wiki,
implant/journal, etc. Apps are mutually exclusive with each other
and with gameplay. Opening implant/map hides gameplay + any other
implant app. Closing returns to gameplay.
API: open_app(), close_app(), toggle_app(), is_app_active().
Star map uses implant/map. Future apps register their own group.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New HudGroups autoload manages show/hide of related HUD elements as
groups. Exclusive groups (gameplay, implant) are mutually exclusive —
opening the star map hides stance indicator, minimap, interaction
prompts, etc. Closing it restores them.
Gameplay nodes registered in main.gd _ready(). Star map registers as
implant group and uses toggle_group() instead of direct visibility.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Real German city origin (Sauerland wire-drawing centre) documented.
Context diverges fundamentally from LoGH fortress. Altena recorded
as preferred alternative. Ticket #773.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
D-166: 6-phase cascade as architectural constraint. Each phase
completes before the next begins. No v0.2 target.
D-167: 7 abstract heritage roots retired. Real-world corridor
cultural system (Commonwealth/Iberian/East Asian/Germanic) is
canonical. Supersedes D-104, D-105, D-101 axis A, D-107 (partial).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Segmentation:
- Face-based exclusive assignment (no overlap, no caps needed)
- Hips split from torso (pelvis as own segment)
- Torso_upper independent (spine_03 + clavicle, not a variant)
- Clavicle moved from arm_upper to torso_upper
Hair pipeline:
- Solidify modifier (20mm) for scalp hair volume
- Normal recalculation before solidify for consistent direction
- Eyebrows/facial hair NOT solidified
- Fixed mask generation (was outputting black, now white)
Clothing pipeline:
- Solidify modifier (25mm) for clothing thickness
- Peasant shoes added from Fantasy pack
Tooling:
- convert_outfit.py with solidify support
- inspect_glb.py, check_hair_symmetry.py for debugging
- Segment reference distribution locked
- Q-063 footsteps VFX filed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The original "top-down (0°)" was ambiguous — 0° in the code's pitch
convention is horizontal (eye-level), not overhead. The implementation
correctly uses -80° for near-top-down. Updated the decision text to
match the confirmed implementation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
D-159 was missing teen body type — updated to 5 types × 2 genders + 1 child = 11.
D-165 records the character creator color palette (6×9 HSL-computed swatches).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
D-158: Frontal camera angle for editor/mugshot UI
D-159: Character body type enum (4 adult × 2 genders + 1 child)
D-160: Body meshes segmented into 15 bone-group regions
D-161: Head always separate mesh on Head bone
D-162: Clothing pre-baked per body type via Blender Surface Deform
D-163: Trellis generates unique heads via BoneAttachment3D
D-164: Fork Quaternius skeleton, replace all body meshes
Q-060: Surface Deform quality at extreme body types
Q-061: Base clothing mesh count for v0.2
Q-062: Quaternius Source tier body type coverage
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
D-148 through D-157: camera angle, live 3D characters, inverted hull
outline, server facings, performance LOD, player indistinction, cardinal
rotation, faction colors as narrative, alarm clock game start.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Archives the 48 hand-authored overheard conversations that referenced
deleted named NPCs (Kael, Sera, Torek). New RON pool format is
parameterized by role pair and zone type, culture-neutral, with
knowledge_payload for investigative value. 15 sample conversations
across 5 zone types. Adds content pattern note to decisions/content.md.
Ticket: #664
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Full recount across all 4 question domain files. Content: 10 resolved
(not 9), 12 open (not 13). Scope: 15 total (not 14, Q-058 was missing
from count). Grand total: 61 questions. Both questions.md summary table
and questions-content.md footer now match actual header counts.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix D-134 cross-references to point to architecture.md (not content.md)
- Fix stale #620 reference in D-147 body (now #679)
- Fix content.md footer count (44, not 45)
- Add D-145, D-146, D-147 to decisions/README.md index
- Add Q-WTF-041 entry to questions-content.md (was referenced but untracked)
- Fix sprint-28-candidates.md totals line
- Align spelling to British "customisation" throughout new decisions
- Add information boundary classification to D-147 (public trait, per D-010)
- Add "first message" instruction to proposer rules in sprint-start skill
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Resolve Q-WTF-039 (tile-scale heavy zoom, not portrait — D-146) and
Q-WTF-040 (aesthetic taste trait as shared root — D-147). Split #617
into server generator + client rendering, split #620 into server
culture resolution + client location picker. Sprint 28 candidate list
with 7 unblocked tickets.
Ticket: #676
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix 3 broken D-036/D-128 anchor slugs in decisions/content.md
- Fix typo: Stalowsia → Stalownia in stalownia-kowalski.md
- Mark proposed-llm-voice.md as superseded (D-138)
- Mark smuggler-moral-arc.md and smuggler-voice-card.md as v0.1-only
- Snapshot settledreach.db after planning branch merge
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
GJ 902 unclaimed habitable moon designated as future player
settlement site for base building DLC.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
D-095: clarify inter-system gates are alien-determined (humans cannot
add/remove apertures). Intra-system span gates are Institute-derived
human tech licensed to the Gate Corporation. Dormant activations
(Struve) are alien infrastructure events, not human actions.
Q-039: resolved — 301-system star map generated with alien-determined
topology (334 edges, hub/junction/loop/spur distribution).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
System S-057 assigned to real star GJ 35 (Van Maanen's Star, DG white
dwarf at 13.9 ly). Renamed across all content, server code, docs,
decisions, wiki lore, and config files. 224 files updated.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Revised from 4-8 per Miri's worldbuilding input — single-aperture
dead-end systems are valid and narratively important for isolated
frontier outposts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Gemma 2B is picked and embedded — the provenance policy text was
an unnecessary addition. The model choice is final.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
D-140: Paula's six rules for dialogue re-voicing quality — secret-tier
passthrough, epistemic weight, access tier feel, named entity
passthrough, relationship-specific lines, culture register override.
D-142: Zone-type template architecture — three-layer behavior system,
31 zone types for v1.0, POI three-tier system, scale math for 300+
systems with 300+ cultures. Amend D-123 (baked vs pre-voiced modes),
supersede D-124 (resolved by two-spike strategy).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Close Q-015 as obsolete (D-122 eliminates hand-authored FRIEND).
Update Q-033 reframe to reference D-139 composable behaviors.
Replace franchise-specific "Starflyer's agents" with generic
"hostile actors" in D-018 (perception.md).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
D-141: client-side PlatformInfo autoload centralizing all OS queries.
Q-059: resolved — full interface scope (23 properties, 7 categories).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Spike 2 amendments: stdio IPC (not HTTP, Gemma 2 T&C compliance),
tell differentiation results (3/5 at 2B capacity), double-prompt
technique, ContentType::Factual for LLM bypass, all negative
injectors moved from universal RULES to per-culture voice_persona.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add lookup.rs with voiced_behavior() — ready to wire into a behavior-serving
system once one exists (Q-058). Tell behaviors always passthrough (never
re-voiced). Cache miss returns base text (graceful degradation).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Tell-variant caching: 6→length-gated (short=neutral only, medium=3,
long=6). 2B model produces identical output across tell states on
short lines — confirmed across two test rounds.
- Composition-engine occasional injections: oath vocabulary, faith
expressions etc. controlled by prompt generator frequency, not model.
Systemic pattern for any culture marker that should appear occasionally.
- NI-1/NI-5 culture-gated: religious language and Earth-origin markers
are per-culture injector constraints, not universal bans. Cultural
heritage from colonization history is intentional. Earth is not lost.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Open question for decomposing hand-authored behavior pools into
composable primitives (role actions + culture modifiers + context tags).
Part of Sprint 25 PoC spike. Server ticket #633, copy ticket #634.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Zone specs need a location_context field (surface/station/vessel) so
the generator can filter environment-specific behaviors. Raised during
PR #88 review — rural zone had sky/weather references that only make
sense on a planet surface.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
D-records from Where's the Fun workshop across architecture, content,
and scope domains. Updated open questions for v0.2 pivot.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>