A video game where you play as a misaligned AI, deceiving and building power. An experiment in spec-driven development.

Event-to-anchor linking; the empty-menu feedback pulse. master

Sim log entries become LogEvent { tick, text, anchor: Option<Anchor> } (additive; the log system is otherwise untouched). Emitters set the anchor only where they know the thing: job/core events -> the host rack's tile; tap/splice/take/compromise/egress-splice -> the device; heard events and processed-intel results -> the person while sight covers them, else the room hearing earned; ledger lines on known flows -> the flow; Moonlight paydays and Wager settlements -> the switch when riding the stolen egress; audit/filing events -> nothing. Sim::anchor_position is the one placement query (a person resolves only while seen; a flow never); Sim::menu_empty_feedback is the one empty-menu feedback source. Frontends: terminal renders anchored lines with a `»` marker and gains `;` (focus the newest anchored event; repeats walk older, cursor jumps, menu opens); Bevy's RECENT TRACE rows become buttons with a `>` marker (click to focus); agent mode prints stable ` @tile/@device/@person/@flow` suffixes on drained event lines, marks anchored lines `*` in the frame window, and gains `focus last`. Opening the menu on a seen tile with zero verbs now answers "No actions here."; unknown/fogged tiles stay silent (both frontends previously answered on every tile). Tests: heard_only_person_event_anchors_to_room_never_their_tile, empty_menu_feedback_respects_fog, job_and_device_events_carry_their_anchor. Defense: "Actions live on the thing" (extended 2026-07-08 in this commit) implies its follow-up — if verbs live on the anchor, events about the anchor should carry attention to it; this is "Presence: the cursor and the senses" applied to the log (the cursor is attention; an event is an invitation to attend). Epistemic honesty is preserved structurally: anchors are set only to earned knowledge (a heard-only person anchors to the room hearing earned, never their tile), placement goes through one lib query, and agent anchors print opaque ids, never possibly-unearned names. The feedback pulse closes the repo-owner report that menu silence read as broken input, while keeping unearned ground silent per the fog rule ("the strictness is the dread"): a seen tile answering "no actions here" is legibility; a fogged tile answering would confirm input landed on world the senses have not placed. Spec: wiki/interface/context-menu.md addendum (criteria A1-A5); agent-play.md protocol addition; DESIGN.md amendment + decisions entry.