Commit Graph
96 Commits
Author SHA1 Message Date
jpmschweitzerandClaude Opus 4.6 61b5ca7178 chore(db): backup after audio merge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 11:21:00 +01:00
jpmschweitzer fdf82a89ff Merge remote-tracking branch 'origin/audio' 2026-02-18 11:20:16 +01:00
jpmschweitzerandClaude Opus 4.6 0adfb15bc9 chore(db): backup after client PR #34 merge
Tickets #495, #496 marked done.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 11:14:22 +01:00
jpmschweitzerandClaude Opus 4.6 20427b9d8b feat(audio): revise Sprint 7 UI audio assets for #453
Re-generate monologue chimes (were oversized placeholders) and
fog_recognition (was silent). Fix sample rate headers on remaining
assets (192kHz→44.1kHz). All 8 UI assets now at 44.1kHz stereo,
LUFS -16 normalized, Vorbis q6, durations within D-038 spec.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 11:01:19 +01:00
jpmschweitzerandClaude Opus 4.6 d8d005169a feat(ci): add golden file targets and checklist schema (#486, #497)
Golden targets: make golden-diff shows color diff if simulation output
changed, make golden-update regenerates and stages for review.

Checklist schema: JSON Schema for 7 condition types evaluable from
ObserverSnapshot. Per-room YAML checklists for 3 Gauntlet rooms plus
cross-room checks. Validation script + make checklist-validate/generate.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 10:44:33 +01:00
jpmschweitzerandClaude Opus 4.6 318a1e8b07 chore(db): snapshot database after Sprint 9 PR merges
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 10:24:25 +01:00
jpmschweitzerandClaude Opus 4.6 3ccac5432b fix(ci): address PR #31 review — harden cross-encoder fixture pipeline
- Fail on encode errors instead of silently writing empty .msgpack files
- Fail test on missing/empty fixture dir instead of silent skip
- Add all missing action variants (MoveSouth, MoveEast, MoveWest,
  Unpause, ToggleStanceDown, WalkAway) to GDScript fixture generator
- Add GDScript fixture staleness check to make pre-pr
- Validate repo root detection before writing outside client/
- Add file.flush() before close in headless mode
- Document fixture failure recovery in DEVOPS.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 09:45:13 +01:00
jpmschweitzerandClaude Opus 4.6 da63aa580e feat(ci): add make fixtures-client target for GDScript->Rust cross-encoder validation (#475)
Closes the bidirectional protocol compatibility loop (D-030 Layer 1):
- GDScript fixture generator (20 fixtures: inputs, boundary ticks, batch)
- Rust decoder test verifying all GDScript-encoded fixtures deserialize
- Makefile target with generation + verification in one step

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 02:20:24 +01:00
jpmschweitzerandClaude Opus 4.6 e3890117d0 chore(db): snapshot database with Sprint 9 ticket assignments
23 tickets assigned to Sprint 9 (Gauntlet) in planning status.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 01:32:31 +01:00
jpmschweitzerandClaude Opus 4.6 85a3e87d36 docs(sprints): add Sprint 9 Gauntlet briefing files
Sprint 9 theme: Gauntlet — test infrastructure backbone with test
client binary, Gauntlet rooms 1-3, golden file suite, and client QA
harness. 23 tickets across server (9), client (6), CI (6), audio (2).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 01:32:28 +01:00
jpmschweitzerandClaude Opus 4.6 053380103a feat(audio): add weapon aim lock and stance change audio assets for #440
Delivers final 2/6 interaction UI audio assets, completing ticket #440:
- sfx_weapon_aim_lock.ogg (0.5s, clinical targeting lock tone)
- sfx_stance_change.ogg (0.35s, soft mechanical stance toggle click)

Both insert-tech aesthetic, UI Sounds bus, non-positional. Generated
via Stable Audio Open, trimmed, LUFS-normalized, converted to ogg.
Updated docs/assets/audio/ui.md with UI-007 and UI-008 entries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 01:26:27 +01:00
jpmschweitzerandClaude Opus 4.6 4af2197c59 fix(ci): address PR review — filter comments, trim whitespace, warn on missing scripts
Address all review comments from Hoshe and Tyre on PR #27:
- Remove 2>/dev/null from pre-pr-fixtures (critical: swallowed errors)
- Remove dead _file_type function
- Check 4: error on districts with no locations declared
- Check 5: print advisory message when skipping
- Check 8: cross-file line ID uniqueness (not just per-file)
- Check 9: document D-034 asymmetric relationships in docstring
- Document regex fallback rationale in _scan_knowledge
- Add D-035 decision trace to schema descriptions
- Use concrete protocol version in DEVOPS.md example
- Amend D-035 with focused (9th mood) and greeting (14th situation)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 00:23:21 +01:00
jpmschweitzerandClaude Opus 4.6 f06c8be313 feat(ci): add make pre-pr target and fixture staleness check
Implements make pre-pr chain: lint -> build -> test -> content
validation -> fixture staleness. Branch-specific variants:
pre-pr-server, pre-pr-client, pre-pr-content.

Fixture staleness is a blocker (exit 1) — stale fixtures cause
false positive client tests. Spec from hoshe-round3.md Section 5.

Tickets: #460, #465

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 22:43:40 +01:00
jpmschweitzerandClaude Opus 4.6 c0f6afa082 chore(db): snapshot database after Sprint 8 PR merges
7 client tickets closed (#435-437, #470, #476-478) after
PR #25 and PR #26 reviews completed and merged.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 18:29:14 +01:00
jpmschweitzerandClaude Opus 4.6 a87c95a6eb docs(workshops): complete QA test architecture workshop
3-round workshop with 7 agents (Tyre, Dudley, Stig, Hoshe,
Justine, Gestalt, Ozzie) plus Qatux documenting. Produced:

- 59-item prioritized test backlog (60 tickets under epic #455)
- Gauntlet test world spec: 7 rooms + hub, 48 entities
- Test client binary spec (tooling/test-client/)
- Determinism fixes (3 patches, ~22 lines)
- Server --test-mode + --port 0 design
- Content cross-reference validation (9 checks)
- make pre-pr pipeline (6-step)
- 38 client tests prioritized
- Anti-tedium features (reset plate, hub teleport, WRONG button)
- Human tester walkthrough
- CI pipeline design (deferred but documented)

Sprint 8 scope: ~17.75 team-days across 26 tickets.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 14:00:15 +01:00
jpmschweitzerandClaude Opus 4.6 21edbfec19 docs(workshops): add test architecture workshop brief
4-track workshop targeting the class of bugs from Sprint 6-7: blocking
I/O, serialization boundaries, state desync, off-by-one encoding.
Participants: Tyre, Hoshe, Dudley, Stig. Covers integration test
architecture, serialization boundary tests, client test infrastructure,
and test gap prioritization. Includes catalogue of 6 real bugs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 23:26:41 +01:00
jpmschweitzerandClaude Opus 4.6 686c89170a chore(db): snapshot database after Sprint 7 completion
Sprint 7: Talk completed (13/13 done).
Sprint 8: React activated (10 tickets, 2 carry-overs).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 01:34:46 +01:00
jpmschweitzerandClaude Opus 4.6 7873b77a5c chore(meta): add Sprint 8 briefings and DB backup
Sprint 8: React — briefings for server, client, audio, and joint teams.
Database snapshot after Sprint 8 ticket assignments.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 01:26:04 +01:00
jpmschweitzer 7edc513632 Merge remote-tracking branch 'origin/audio'
# Conflicts:
#	CHANGELOG.md
2026-02-16 01:25:40 +01:00
jpmschweitzerandClaude Opus 4.6 6035d2049a feat(audio): add 6 interaction UI audio assets for #440
Generated via Stable Audio Open with sonic family prompt prefixes:
- cursor_hover.ogg (insert-tech, digital click)
- weapon_aim.ogg (insert-tech, mechanical latch sketch)
- implant_open.ogg (insert-tech, neural lattice rising tone)
- fog_recognition.ogg (organic, cognitive realization chime)
- sfx_monologue_chime.ogg (insert-tech, placeholder per D-071)
- sfx_monologue_chime_urgent.ogg (insert-tech, placeholder per D-071)

All assets need duration trimming in next audio sprint (#453).
Updated docs/assets/audio/ui.md status to draft.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 01:22:56 +01:00
jpmschweitzerandClaude Opus 4.6 88fc344ed9 docs(sprints): add protocol v7 bump requirement to client briefing
Server PR #23 bumped PROTOCOL_VERSION to 7 (pending_recognitions field).
Client must match before #431 fog entity visualization or joint testing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 01:08:29 +01:00
jpmschweitzer 307124cee6 Merge remote-tracking branch 'origin/server'
# Conflicts:
#	CHANGELOG.md
2026-02-16 01:08:17 +01:00
jpmschweitzerandClaude Opus 4.6 d0d545f44d feat(audio): add dip spec and synthesis tooling for #440
dialogue-ambient-dip.md: full Godot implementation spec for dialogue
(-7dB ambient) and confrontation (-11dB ambient + LP 800Hz, -5dB world
SFX) audio dips with tween code and edge case handling. synth_ui_sounds
.py: FM/noise/impulse synthesis for insert-tech UI sounds (cursor hover,
weapon aim, monologue chimes).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 01:04:44 +01:00
jpmschweitzerandClaude Opus 4.6 d4fdbf426e fix(server): address PR #23 review — 4 critical bugs, 3 warnings, 11 suggestions
Critical fixes:
- Add PendingRecognitionWire serialization roundtrip test
- Check Option return from delay.cancel() before logging
- InputQueue capacity limit (1000) with drop-oldest and warning
- TODO in observation.rs references ticket #450

Warning fixes:
- Hot-reload guards against invalid/empty content root
- Location header mismatch warning in line pool indexing
- walk_yaml() depth limit (100) against symlink loops
- Consecutive reload failure counter (warns after 5+)

Test additions:
- Negative prerequisite filtering test for monologue lines
- Integration test for pending_recognitions in observer snapshot
- Eavesdrop threshold ordering assertion (Careful < default)

Documentation:
- Playtesting expectation comments on delay constants
- is_pending() scalability note for future NPC cognitive delay
- ID format regex validation in line pool spec
- BTreeMap vs sort() ordering clarification in loader
- Multiplayer TODO in relationships.rs references D-010
- ContentSlug ticket #452 filed for entity slug resolution

394 tests, 0 failures.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 01:03:51 +01:00
jpmschweitzerandClaude Opus 4.6 34d0e7211c docs(assets): add asset pipeline documentation system
Category-based asset index for audio, visual, and video pipelines.
Audio pipeline fully populated: palette (sonic identity bible), ambient
loops, SFX, UI sounds with generation specs and mix parameters.
Visual and video are stubs pending their respective workshops.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 01:03:18 +01:00
jpmschweitzerandClaude Opus 4.6 087ff67bfb docs(architecture): add interaction memory KG schema design (#442)
Design doc at docs/architecture/interaction-memory-schema.md extending
FactKnowledge with interaction tracking. FactMetadata enum on existing
BTreeMap, 5-state InteractionState (Active/Completed/WalkedAway/
Confrontation/ConflictAbandoned), monologue prerequisite extension.

Includes entity slug resolution approach, NpcTolerance reconciliation,
and fact decay exemption documentation.

Ref: D-041, D-064, D-063

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 00:41:40 +01:00
jpmschweitzerandClaude Opus 4.6 ea0a3f0b35 docs(architecture): add line pool format specification (#308)
Formal spec at docs/architecture/line-pool-format.md defining YAML
structure for dialogue and monologue content files. Covers tag enums,
4-layer filtering pipeline, prerequisite-to-KG mapping, ID format,
validation rules, and Rust loader interface.

Fixes monologue schema: adds required constraint on relationship
prerequisite target/state fields.

Ref: D-028, D-032, D-035, D-041

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 00:41:18 +01:00
jpmschweitzerandClaude Opus 4.6 b218338223 chore(db): snapshot database after copy merge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 00:36:42 +01:00
jpmschweitzerandClaude Opus 4.6 462f42113f docs(docs): add archetype evidence presentation spec (#443)
Design specification for how evidence is presented differently per
archetype — detective case file (institutional, insert-assisted) vs
smuggler notebook (personal, unassisted). Covers item definitions,
knowledge graph presentation, contradiction markers, THE FRIEND
arc walkthroughs, systems interaction map, and authoring guidelines.

Sprint 7, ticket #443. Authored by Mellanie (copy), Paula (narrative),
Gestalt (systems).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 00:26:13 +01:00
jpmschweitzerandClaude Opus 4.6 8ec875385a docs(sprints): add Sprint 7: Talk briefings
Briefings for server, client, copy, audio, and joint teams.
Sprint goal: complete interaction UI layer and activate basic
dialogue system with NPC conversations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 23:51:57 +01:00
jpmschweitzerandClaude Opus 4.6 d52179c58b docs(meta): add scratchpad for design ideas and notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 23:35:20 +01:00
jpmschweitzerandClaude Opus 4.6 ebf348e838 chore(db): snapshot database after Sprint 6 completion
All 18 tickets marked done, sprint closed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 23:32:01 +01:00
jpmschweitzerandClaude Opus 4.6 f08710fa61 docs(architecture): z-layer gap analysis, fog shader spec, flying taxi analysis
Three architecture documents from Sprint 6 design work:
- z-layer-gap-analysis.md: full three-scope rendering pipeline with
  reserved z-ranges, airborne treatment, cross-floor VFX, liquid depth
- fog-shader-spec.md: 5-layer fog shader architecture (D-059)
- flying-taxi-analysis.md: validates z-layer architecture supports
  flight scenarios with LOD tiers and performance budget

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 23:06:12 +01:00
jpmschweitzerandClaude Opus 4.6 f3550577a9 chore(db): snapshot database after server branch merge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 16:10:13 +01:00
jpmschweitzerandClaude Opus 4.6 651b1d34a6 chore(db): update database backup after server merge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 15:17:23 +01:00
jpmschweitzerandClaude Opus 4.6 f1bd361816 feat(docs): add D-066 dual-scale grid decision and propagate to all docs
0.5m sim tiles for movement/LOS granularity, 1m visual tiles for
proportional art and readable spaces (2x retina factor). All world
geometry constrained to 2x2 sim tile minimum so cover/LOS maps 1:1
with visuals. Entities occupy 1x1 sim tiles for fine positioning.

Updates: D-043, D-044, D-051, D-056, D-059 annotations, workshop
outcomes (art direction + control/interaction), sprint 6 briefings,
decision index, and CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 11:01:05 +01:00
jpmschweitzerandClaude Opus 4.6 6e0ecb4d4a chore(db): update database backup after planning merge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 09:48:30 +01:00
jpmschweitzerandClaude Opus 4.6 9d0077bb80 docs(sprints): Sprint 6 Touch briefings — server, client, copy, joint
18 tickets across 3 teams. Movement stances, fog shader rebuild,
multi-verb interactions, smuggler inventory.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 09:34:55 +01:00
jpmschweitzerandClaude Opus 4.6 5c3c2a527b docs(workshops): Control & Interaction Workshop outputs
Workshop notes (2 rounds), outcomes document (13 decisions, 27 tickets,
v0.1 interaction model), and updated brief with final lead direction.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 09:34:49 +01:00
jpmschweitzerandClaude Opus 4.6 dde270322c docs(briefings): update agent briefings after Sprint 5 pipeline fixes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 19:24:43 +01:00
jpmschweitzerandClaude Opus 4.6 8228ef3c1c chore(db): update database backup after client merge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 18:11:56 +01:00
jpmschweitzer 07d7bf635d Merge remote-tracking branch 'origin/ci'
# Conflicts:
#	CHANGELOG.md
2026-02-13 18:10:27 +01:00
jpmschweitzerandClaude Opus 4.6 e01de6684e feat(content): add character voice speech patterns (#310)
Speech-level execution spec for smuggler and detective: contraction
rules, sentence length, punctuation patterns, stress markers,
vocabulary, verbal tics, and 8-point authoring validation checklist.
Blocks all FRIEND pack and PC-as-NPC content authoring.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 17:51:29 +01:00
jpmschweitzerandClaude Opus 4.6 163de8bf25 fix(ci): address PR review — filter comments, trim whitespace, warn on missing scripts
- Filter YAML comment lines (grep -v '^\s*#') from both extraction
  pipelines to prevent phantom canonical IDs
- Trim trailing whitespace from extracted fact_ids so grep -qxF exact
  match works reliably
- Pre-commit dispatcher now prints explicit warning when a check script
  is missing instead of silently skipping
- Document --no-verify bypass for emergencies in DEVOPS.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 17:42:22 +01:00
jpmschweitzerandClaude Opus 4.6 fe204aa5f4 feat(ci): add pre-commit FactId validation hook (#393)
Grep-based pre-commit check validating fact_id references in content
YAML against canonical knowledge catalogs. Runs in advisory mode when
catalogs are stubs (exit 0), switches to enforcing mode once populated
(exit 1 on unknown fact_ids with file:line output).

- tooling/check-fact-ids: core validation script (<2s runtime)
- .config/hooks/pre-commit: hook dispatcher for modular checks
- Makefile: check-fact-ids + setup-hooks targets, wired into setup
- docs/DEVOPS.md: content validation and pre-commit hooks sections

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 17:17:34 +01:00
jpmschweitzerandClaude Opus 4.6 524aca52eb chore(db): update database backup after client merge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 02:14:01 +01:00
jpmschweitzerandClaude Opus 4.6 03914c6442 docs(briefings): update Hoshe with integration test coverage priorities
Adds directive to focus on client-server integration tests landing
from Sprint 5, push for proper test harnesses, a dedicated test map
for routing/edge cases, and edge case coverage over happy-path volume.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 02:13:57 +01:00
jpmschweitzerandClaude Opus 4.6 2fa609b19c docs(sprints): add Sprint 5 "Live" team briefings
Content-focused sprint: FRIEND packs (Kael Davan, Sera Venn),
NPC authoring style guide, voice patterns, PC-as-NPC content,
UI microcopy, and FactId pre-commit validation. Briefings for
copy (6 tickets), client (2), CI (1), plus joint integration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 01:50:59 +01:00
jpmschweitzerandClaude Opus 4.6 d3b68012d9 docs(architecture): add seed configuration schema design (#394)
Design document defining what the randomizer produces at game-start:
FRIEND selections, pool draws, template assignments, triangle config,
entanglement config, contraband selection, starting knowledge. Includes
ChaCha20 RNG protocol, validation rules, and implementation roadmap.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 01:19:34 +01:00
jpmschweitzerandClaude Opus 4.6 e309f66c99 chore(db): update database backup after copy merge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 01:00:29 +01:00