Files
settled-reach/docs/diagrams/data-flow/eavesdrop-pipeline.d2
T
jpmschweitzerandClaude Opus 4.6 1e556ccca2 docs(diagrams): add decision diagrams across all domains
16 d2 diagrams covering architecture (IPC bridge, system tiers,
testability, audio bus), data flow (perception, dialogue, eavesdrop
pipelines), entity (knowledge graph, NPC generation, dialogue tags),
state (simulation tiers, movement stances, knowledge confidence), and
UI (HUD layout, interaction flow, fog layers). PNG output for universal
viewer compatibility. Removes test SVG from font debugging.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 11:57:07 +01:00

163 lines
5.1 KiB
Plaintext

# Eavesdrop Pipeline — D-071, D-072, D-078
# Overheard NPC-to-NPC conversation: occlusion filter (server-authoritative),
# ListeningFocus boost, passive dialogue panel, dual-channel principle.
vars: {
color-bg: "#2a3040"
color-stroke: "#333340"
color-text: "#c8d0e0"
color-accent: "#c8d8f0"
color-dim: "#1a1e24"
}
direction: down
npc_convo: NPC-to-NPC Conversation\n(authored at full fidelity by copy team) {
shape: oval
style.fill: ${color-bg}
style.stroke: ${color-accent}
style.font-color: ${color-text}
}
murmur: Universal Murmur Asset (D-072)\nsingle asset plays everywhere {
shape: package
style.fill: ${color-bg}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
zone_ambient: Zone Ambient Level {
shape: diamond
style.fill: ${color-bg}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
conspicuousness: Conversation Conspicuousness {
style.fill: ${color-dim}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
bar: Bar (high ambient)\nhidden in murmur, needs proximity {
style.fill: ${color-bg}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
workplace: Workplace (moderate)\nsemi-conspicuous, distance-dependent {
style.fill: ${color-bg}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
corridor: Corridor (low ambient)\nconspicuous, audible from distance {
style.fill: ${color-bg}
style.stroke: ${color-accent}
style.font-color: ${color-text}
}
}
server_occlusion: Server-side Occlusion Filter (D-078)\nper-word probability roll {
style.fill: ${color-bg}
style.stroke: ${color-accent}
style.font-color: ${color-text}
style.border-radius: 4
factors: Factors: distance · ambient noise\n· ListeningFocus stance {
style.fill: ${color-dim}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
stochastic: Stochastic per word\n(same scene can yield different fragments) {
style.fill: ${color-dim}
style.stroke: ${color-accent}
style.font-color: ${color-text}
}
seeded: Seedable RNG per tick\n→ deterministic replay (D-010) {
style.fill: ${color-dim}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
}
listen_focus: ListeningFocus Boost (D-071)\nWorld SFX +2 to +3dB\nstationary 30+ ticks {
style.fill: ${color-bg}
style.stroke: ${color-accent}
style.font-color: ${color-text}
style.border-radius: 4
}
no_ambient_dip: No Ambient Dip for Eavesdrop\n(opposite of direct conversation dip) {
style.fill: ${color-dim}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
style.stroke-dash: 4
}
occluded_text: Pre-occluded text\n(words → "..." per roll) {
shape: page
style.fill: ${color-dim}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
passive_panel: Passive Dialogue Panel (D-078)\n(D-061 box, read-only) {
style.fill: ${color-bg}
style.stroke: ${color-accent}
style.font-color: ${color-text}
style.border-radius: 4
speaker_label: Speaker format (e.g. Kael to Mira) {
style.fill: ${color-dim}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
reduced_opacity: Reduced opacity (0.9)\nvs active dialogue {
style.fill: ${color-dim}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
no_responses: No response options {
style.fill: ${color-dim}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
}
monologue_channel: Monologue Channel\n(D-016 — separate pipeline) {
style.fill: ${color-dim}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
witness_trigger: witness_interaction trigger\n→ character's reaction {
style.fill: ${color-bg}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
separate: Character reaction\n(thought · never quoted speech) {
style.fill: ${color-bg}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
}
kg_entry: KnowledgeGraph entry\n(KnowsOf confidence unless\nListeningFocus + proximity → KnowsDetails) {
shape: cylinder
style.fill: ${color-bg}
style.stroke: ${color-accent}
style.font-color: ${color-text}
}
npc_convo -> murmur: "audio" { style.stroke: ${color-stroke} }
npc_convo -> zone_ambient: "text goes through" { style.stroke: ${color-accent} }
murmur -> zone_ambient: "conspicuousness shaped by" { style.stroke: ${color-stroke} }
zone_ambient -> conspicuousness
zone_ambient -> server_occlusion: "noise penalty" { style.stroke: ${color-stroke} }
listen_focus -> server_occlusion: "probability curve shift" { style.stroke: ${color-accent} }
no_ambient_dip -> listen_focus: "instead of dip" { style.stroke: ${color-stroke}; style.stroke-dash: 4 }
server_occlusion -> occluded_text: "pre-occluded text sent to client" { style.stroke: ${color-accent} }
occluded_text -> passive_panel: "client renders exactly what it receives" { style.stroke: ${color-accent} }
passive_panel -> monologue_channel: "triggers witness_interaction" {
style.stroke: ${color-stroke}
style.stroke-dash: 4
}
passive_panel -> kg_entry: "overheard info enters KG" { style.stroke: ${color-accent} }