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>
This commit is contained in:
@@ -19,10 +19,22 @@ use crate::simulation::time::SimulationTime;
|
||||
|
||||
/// Base cognitive delay: 0.6 seconds = 6 ticks at 10 tps (D-031, D-060).
|
||||
/// Tunable: expect playtesting adjustments.
|
||||
///
|
||||
/// Playtesting expectation: 0.6s should feel like a brief "processing" beat —
|
||||
/// noticeable enough that new entities register as grey blobs before resolving,
|
||||
/// but short enough to not feel sluggish. If playtesters report recognition
|
||||
/// feels instant (reduce to test), or laggy (current value may be too high for
|
||||
/// fast-paced encounters), adjust in 2-tick increments. The 2:1 ratio with
|
||||
/// URGENT_DELAY_TICKS should be preserved.
|
||||
pub const NORMAL_DELAY_TICKS: u64 = 6;
|
||||
|
||||
/// Urgent cognitive delay: 0.3 seconds = 3 ticks at 10 tps (D-031, D-060).
|
||||
/// Triggered when observe_anomaly context is active.
|
||||
///
|
||||
/// Playtesting expectation: 0.3s should feel nearly instant but still register
|
||||
/// visually as a "snap to attention" moment. If playtesters don't notice the
|
||||
/// delay at all, consider whether the grey blob phase is too brief to read.
|
||||
/// Must remain strictly less than NORMAL_DELAY_TICKS.
|
||||
pub const URGENT_DELAY_TICKS: u64 = 3;
|
||||
|
||||
/// How the recognition was triggered, determines delay duration.
|
||||
@@ -76,6 +88,8 @@ impl CognitiveDelay {
|
||||
}
|
||||
|
||||
/// Check if an entity is already pending recognition.
|
||||
// Note: O(n) scan over pending vec. Fine for v0.1 (typically <10 pending).
|
||||
// If NPC cognitive delay is added, consider HashSet<StableId> index.
|
||||
pub fn is_pending(&self, stable_id: &StableId) -> bool {
|
||||
self.pending.iter().any(|p| p.stable_id == *stable_id)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user