Replace HashSet with BTreeSet for visible_ids, sort visible_tiles by
coordinates, sort visible entities in snapshot by entity_id, and sort
movers by Entity bits in validate_movement. Required by D-010 principle 4
(deterministic simulation). Fixes#456, #457, #458.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add CLI argument parsing for test infrastructure: --test-mode enables
deterministic seed (42) and warn-level tracing to stderr, --port allows
OS-assigned ports (--port 0), --seed overrides RNG seed. Prints
LISTENING:{port} to stdout after bind for test harness discovery.
Extracts setup_proof_room() for reuse. Fixes#459.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add AnomalyMarker component and detect_anomalies() system that flags
entities with KG relationship PersonOfInterest or Contradicted state
for urgent cognitive delay (0.3s vs 0.6s normal). Add
trigger_recognition_monologue() that fires monologue at delay START
(when grey blob appears), not at completion — the monologue IS the
recognition process per D-060. Includes v0.1 fallback recognition
lines and cooldown tracking. Fixes#450, #451.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implement full dialogue selection pipeline (D-028): 4-layer filtering
engine with access tier, situation derivation, trust tier, and weighted
topic+mood scoring via SimRng. Add ContentSlug component for stable
content identity across save/load. Add walk-away KG recording with
IncompleteInteraction events per D-064 three-phase consequences. Bump
protocol to v8 with DialogueResponseEvent. Fixes#305, #427, #452.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update existing snapshot fixtures for protocol v8 (dialogue_response
field). Add 14 raw boundary value fixtures and 5 snapshot boundary
tick fixtures for encoding edge case coverage.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Sprint 8 server delivery: activate the dialogue pipeline end-to-end — player talks to NPCs, NPCs respond, the world reacts.
Features (5 tickets)
Fixes (4 determinism fixes)
Infrastructure
Tests (50+ new tests, 467 total, 0 failures)
Protocol
#[serde(default)]for backward compat)Test plan
cargo test— 467 tests pass, 0 failures🤖 Generated with Claude Code
Add CLI argument parsing for test infrastructure: --test-mode enables deterministic seed (42) and warn-level tracing to stderr, --port allows OS-assigned ports (--port 0), --seed overrides RNG seed. Prints LISTENING:{port} to stdout after bind for test harness discovery. Extracts setup_proof_room() for reuse. Fixes #459. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>Review: server → main (type: code)
Hoshe (Code Quality): REQUEST_CHANGES
Solid, well-structured PR with good test density. Three warnings need addressing.
WalkAwayvariant missing from exhaustiveall_player_action_variants_roundtrip— D-030 wire contract gapspeaker_entity_id: 0silent fallback when target not in registry — client gets wrong speakershown_ids: Vec<String>grows unbounded, O(n) scan per tick — use HashSet or caphandle_talkno server-side range check before TalkRequestprocess_talk_interactionmay overwrite active ActiveDialogue without IncompleteInteractiondifferent_seed_produces_different_replayuntestable — add Talk to exercise SimRngpanic!on unknown fixture — use assert for cleaner failureTyre (Architecture): REQUEST_CHANGES
Substantial and well-architected. D-028 four-layer pipeline clean, determinism fixes correct, --test-mode handshake elegant. One warning-level ordering gap.
trigger_recognition_monologuereadsAnomalyMarkerbut no cross-plugin ordering withdetect_anomalies— latent determinism bugSecrettrust tier permanently unreachable — ignores KG confidence. Add TODO minimumDialogueCooldownTracker.usedVec → BTreeMap (D-041 mandate, O(log n))process_walk_awayandprocess_talk_interactionhave no ordering — add.after(process_talk_interaction)setup_proof_room. Collapse until Gauntlet loaderVerdict: CHANGES REQUESTED
Key issues:
trigger_recognition_monologue.after(detect_anomalies)neededWalkAwaymissing from wire roundtrip test (D-030 gap)speaker_entity_id: 0silent fallback — skip or warnshown_idsunbounded growth — Vec → HashSet/BTreeSetSecrettrust tier unreachable — needs TODO commentRe-Review: server → main (type: code) — Round 2
Hoshe (Code Quality): APPROVE
All 8 original items + 5 Tyre fixes verified. 468 tests pass. No regressions.
Tyre (Architecture): APPROVE
All 13 items correctly addressed. System ordering fixes sound per D-010/D-030. Cross-plugin constraints acyclic. Ordering graph complete.
Verdict: APPROVED ✓
Pull request closed