diff --git a/CHANGELOG.md b/CHANGELOG.md index 42b2a5cb9..121b23800 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,31 @@ Format based on [Keep a Changelog](https://keepachangelog.com/). ## [Unreleased] +### Added +- Dialogue selection pipeline (#305, D-028) — 4-layer filtering engine: access tier from KG relationship, situation derivation from game state, trust tier, weighted topic+mood scoring via SimRng. Full Talk verb → selected line → ObserverSnapshot pipeline with cooldown tracking +- ContentSlug component (#452) — stable content identity from YAML (e.g. "kael-davan") independent of runtime Entity handles, for knowledge graph interaction memory across save/load +- Walk-away KG recording (#427, D-064) — IncompleteInteraction knowledge events with Talk/Confront type, ActiveDialogue tracking, walk-away detection clears dialogue and records in KG +- Anomaly detection for urgent recognition (#450, D-060) — AnomalyMarker flags PersonOfInterest/Contradicted entities for 0.3s cognitive delay instead of 0.6s normal +- Recognition monologue during cognitive delay (#451, D-060) — monologue fires at delay START (grey blob phase), not completion. v0.1 fallback lines, anomaly prioritization, cooldown tracking +- Server --test-mode, --port, --seed CLI flags (#459) — LISTENING:{port} stdout signal, OS-assigned ports, deterministic seed override, stderr-only tracing +- Determinism gauntlet test (#466) — 20-tick replay determinism regression test with movement, stance, pause/unpause exercise +- Pause guard test suite (#461-463, #468) — 7 tests covering movement, unpause, roundtrip, stance, interact, batch, tick_rate during pause +- EntityRegistry lifecycle tests (#469) — stale mapping, re-register, unknown unregister edge cases +- Boundary value encode/roundtrip tests (#471) — 41 values across all MessagePack integer format boundaries +- Encoding asymmetry tests (#473) — Rust decoder accepts GDScript-style signed encodings for unsigned fields +- Boundary fixture generation (#472) — 14 raw + 5 snapshot fixtures at integer format boundaries +- Malformed batch rejection test (#479) — truncated, garbage, and mixed payloads rejected atomically +- Per-fix determinism unit tests (#467) — equidistant NPC ordering, visible tile sorting, same-tile mover resolution + +### Fixed +- Determinism: visible_ids HashSet → BTreeSet for stable iteration order (#456) +- Determinism: visible entities in snapshot sorted by entity_id (#457) +- Determinism: movers sorted by Entity bits in validate_movement (#458) +- Pause guard blocks all actions except Pause/Unpause while paused (previously only blocked movement) + +### Changed +- Protocol version bumped from v7 to v8 (dialogue_response field in ObserverSnapshot) + ### Added - QA test architecture workshop complete — 3-round, 7-agent workshop producing 60 tickets (epic #455): Gauntlet test world (7 rooms, 48 entities), test client binary (tooling/test-client/), determinism fixes, content validation, make pre-pr pipeline, 38 client tests, anti-tedium features, human tester workflow - Workshop skill updated — agents now write output files to disk instead of sending messages, fixing documenter access