Interaction model

Idle by default — and definitely also a chatbot

Two coexisting truths (ruling 5):

Proactivity is active ambition (aspiration): the boxholder wants more of the box initiating — noticing, suggesting, following up — than exists today. The idle engine is the substrate for that, not an argument against it.

Connectors are the boundary — for external services

Connectors are the abstraction for touching the outside world: each pulls external state into the box as cards, transforms formats, and pushes outbound cards back out (flushed by bbx finalize). See ../connectors.md; calendar, a prime early integration, is ../calendar.md.

The old claim that "nothing else is particularly privileged — not voice, not web, not any particular UI" no longer holds: the web has become privileged, or at least the richest surface and the main focus (ruling 6). Chat has dedicated machinery (its own reactor path, session pool, history); Telegram and other channels are additional connectors, not peers of the web UI.

Sync is an event, not just data transfer

When a connector pulls, the point is not only the new state — it's the opportunity to react. A sync that finds something creates a job card describing it (box/jobs/), and the reactor hands that to an agent with the referenced material inlined. Pull → describe what arrived → agents get the chance to do something about it. This early principle survived intact as the connector → job → reactor pattern.