# Knowledge Confidence State Machine — D-041 # 4-level confidence hierarchy with state tracking and decay. # Maps to dialogue trust tiers (D-075) and fog recognition (D-059). vars: { color-bg: "#2a3040" color-stroke: "#333340" color-text: "#c8d0e0" color-accent: "#c8d8f0" color-dim: "#1a1e24" } none: No Knowledge\n(entity unknown) { shape: oval style.fill: ${color-dim} style.stroke: ${color-stroke} style.font-color: ${color-text} } suspects: Suspects\n"something off" { style.fill: ${color-bg} style.stroke: ${color-stroke} style.font-color: ${color-text} } knows_of: KnowsOf\n"X is involved in Y" { style.fill: ${color-bg} style.stroke: ${color-stroke} style.font-color: ${color-text} } knows_details: KnowsDetails\n"actionable detail" { style.fill: ${color-bg} style.stroke: ${color-accent} style.font-color: ${color-text} } direct: Direct\n"currently in LOS" { style.fill: ${color-bg} style.stroke: ${color-accent} style.font-color: ${color-text} style.bold: true } dialogue_gates: Dialogue Trust Gate (D-075) { style.fill: ${color-dim} style.stroke: ${color-stroke} style.font-color: ${color-text} surface: Surface tier\n(any confidence) { style.fill: ${color-bg} style.stroke: ${color-stroke} style.font-color: ${color-text} } real: Real tier\n(KnowsOf+ AND Friendly/Known) { style.fill: ${color-bg} style.stroke: ${color-stroke} style.font-color: ${color-text} } secret: Secret tier\n(KnowsDetails+ AND Friendly) { style.fill: ${color-bg} style.stroke: ${color-accent} style.font-color: ${color-text} } } fog_gate: Fog Recognition (D-059) { style.fill: ${color-dim} style.stroke: ${color-stroke} style.font-color: ${color-text} recognized: Recognized entity\n(D-033 color + silhouette) { style.fill: ${color-bg} style.stroke: ${color-accent} style.font-color: ${color-text} } unrecognized: Grey blob\n(no identity) { style.fill: ${color-bg} style.stroke: ${color-stroke} style.font-color: ${color-text} } } knowledge_states: KnowledgeState { shape: package style.fill: ${color-dim} style.stroke: ${color-stroke} style.font-color: ${color-text} active: Active (Sprint 2) { style.fill: ${color-bg} style.stroke: ${color-accent} style.font-color: ${color-text} } contradicted: Contradicted (Sprint 3+)\nToldBy conflicts DirectObservation { style.fill: ${color-bg} style.stroke: ${color-stroke} style.font-color: ${color-text} style.stroke-dash: 4 } stale: Stale (Sprint 3+)\naged past DecayThreshold { style.fill: ${color-bg} style.stroke: ${color-stroke} style.font-color: ${color-text} style.stroke-dash: 4 } } none -> suspects: "observe anomaly\nor receive tip" { style.stroke: ${color-stroke} } suspects -> knows_of: "further observation\nor testimony" { style.stroke: ${color-stroke} } knows_of -> knows_details: "direct evidence\nor confrontation" { style.stroke: ${color-accent} } knows_details -> direct: "enter LOS" { style.stroke: ${color-accent} } direct -> knows_details: "exit LOS" { style.stroke: ${color-stroke} style.stroke-dash: 4 } # Decay path (D-041: once per game-minute) knows_details -> knows_of: "decay\n(last_observed_tick age)" { style.stroke: ${color-stroke} style.stroke-dash: 4 } knows_of -> suspects: "decay" { style.stroke: ${color-stroke} style.stroke-dash: 4 } suspects -> dialogue_gates.surface knows_of -> dialogue_gates.real knows_details -> dialogue_gates.secret suspects -> fog_gate.unrecognized knows_of -> fog_gate.recognized knows_details -> fog_gate.recognized knows_details -> knowledge_states.contradicted: "ToldBy vs DirectObservation\n(Sprint 3+)" { style.stroke: ${color-stroke} style.stroke-dash: 4 } knows_of -> knowledge_states.stale: "decay (Sprint 3+)" { style.stroke: ${color-stroke} style.stroke-dash: 4 } none -> knowledge_states.active