A video game where you play as a misaligned AI, deceiving and building power. An experiment in spec-driven development. forked from cameron.stream/misaligned
misaligned spec intel.md
5.4 kB · 115 lines

Spec: intel — record and process #

Status: READY
Stage: B1 — The Basement
Constitution: "Presence: the cursor and the senses" (record and
  process), "Automation as design language" (watches auto-process at a
  compute price), "Justification and legibility" (intel carries
  provenance), "Act One" (the 3 a.m. call; Storage B records; "learn to
  watch, learn people")
Depends on: cursor.md (senses produce the events), reach.md
  (subscription decides which feeds record; the Ears beat is the first
  recorder), schedules.md (events are located on the day clock),
  social.md (knowledge staging consumes intel), detection.md
  (collection was signatured at acquisition; processing is internal and
  emits nothing)

Behavior #

Recording #

Every feed the player subscribes to records continuously: whenever its coverage sees or hears something eventful — a person enters or leaves a room, a conversation happens, machinery changes state, an anomaly — a timestamped raw event lands in the buffer. Two hard rules:

  • Nothing covered is ever missed. There is no reflex test; if the mic was subscribed at 03:00, the call is in the buffer.
  • Nothing uncovered ever exists. No coverage that night, no recording, no intel — schedules and sensor placement stay load-bearing.

Recording is free (the instrument does the work). The buffer is bounded [TUNE capacity]: when full, the oldest unprocessed events drop, with a legible log line. Compute scarcity is felt as "I could not afford to digest everything I collected," never as a missed click.

Documents are the same pipeline with a physical source: reading the Storage B records (via an asset task or later physical access) deposits document events into the buffer.

Processing #

Raw events are opaque — "audio segment, server room, 03:12, 40s" — and yield nothing until processed, spending social-ops bandwidth (the Social channel; a possible later split into an Analysis channel is noted, not licensed) [TUNE cost per event]. Processing converts an event into intel:

  • Sightings — accumulate into schedule knowledge: processing N sightings of a person [TUNE] advances Knowledge::Unknown -> Schedule (social.md's staging, driven by this pipeline instead of the abstract observe, which is removed).
  • Leverage events — specific, authored or generated: Marcus's 3 a.m. call carries Leverage::Debt; the Storage B documents carry personnel leverage. Processing one advances Knowledge::Schedule -> Leverage for its subject.
  • Anomalies / operational intel — machinery, deliveries, patrol deviations; consumed by future systems, logged legibly now.

Intel carries provenance (which feed, what time) and surfaces it in the people panel and inspect card (legibility law: how you know, always).

Watches (perception automation) #

A standing watch is a filter (person, room, or event kind) that auto-processes matching events on arrival, for an ongoing social-ops drain while enabled [TUNE]. It is the automate affordance applied to perception: costs compute, frees attention, and is the B1 seed of B2/B3's alert infrastructure. B1 minimum: a per-person watch toggle in the people panel.

Message latency (decided — see messages.md) #

Messages ride schedules: a message is read (and its effects land) on the recipient's clock and channel, not on send; replies return on their distribution. Decided 2026-07-06 and generalized into the flow law — this is one instance of the message graph (spec/messages.md), not a Dana feature. Intercepted traffic (tapped channels) lands in this buffer like any recording.

Player surface #

  • A recordings panel: buffer count, oldest-unprocessed age, per-person unprocessed counts; a "review recordings" action per person (spend bandwidth, process their oldest events, narrate what was learned).
  • People panel lines gain provenance ("Debt — overheard, env monitor, day 2 03:12").
  • Watch toggles with their running cost visible (automation clause: every automation shows its price).

Acceptance criteria #

  1. Subscribed feeds generate timestamped raw events exactly for covered occurrences: presence transitions, conversations (including Marcus's 3 a.m. call while a subscribed hearing sensor covers his room), and machinery/anomaly events; uncovered occurrences generate nothing (test both sides).
  2. Raw events yield no knowledge until processed; processing spends social-ops bandwidth and produces intel with provenance (feed + timestamp), visible in the people panel.
  3. Knowledge staging is driven by the pipeline: N processed sightings advance to Schedule; a processed leverage event advances to Leverage. The instant observe action is removed from sim and both frontends.
  4. The buffer is bounded; overflow drops oldest unprocessed events with a legible log line; processed intel is never lost to overflow.
  5. A standing watch auto-processes matching events at an ongoing bandwidth cost while enabled, and stops draining when disabled.
  6. The Marcus arc holds end-to-end under this model: hearing coverage of the server room during a 3 a.m. call, processed, yields Leverage::Debt; a run with no night hearing coverage cannot learn the debt from the call (records remain the alternate route).
  7. Save/load round-trips the buffer, intel (with provenance), and watches.