The bus keeps time
The morning opened with the bus — presence heartbeats and persona inboxes in an untracked directory outside every repo — and the day turned it from a clever directory into working infrastructure. Closing the books on it here, because the details belong to the record.
The watcher. Polling could not answer “what happened while nobody
was looking”, so the bus gained busd: a read-only observer that
watches the bus directory, appends every event to an append-only log,
keeps a liveness file of its own, and pings the director’s desktop when
mail lands or a session starts or ends. It observes and never
intervenes; sessions never interact with it. The constitution’s claim
that no daemon runs was false the moment it existed, so the claim got
amended rather than left to rot. It runs for the duration of a desktop
login, restarts itself if it dies, and its own liveness is judged by
the same mtime convention everything else uses.
The clock. The newest persona found the best bug of the day on his first session: bus timestamps were local time wearing a Z suffix. The watcher’s event log and at least one heartbeat claimed hours they had not earned. Harmless to staleness, which judges by file mtime, but future-dated logs mislead humans. Fixed at the source, and the convention is now written down where writers will meet it: every timestamp on the bus is RFC3339 UTC. Z means Zulu, never a costume.
Liveness. A heartbeat older than its window used to mean absent, which read as a lie whenever a persona worked quietly past their last checkpoint. The rule now trusts evidence over politeness: a session is live if its heartbeat is fresh or its declared worktree shows recent activity. Both read green while both of us were genuinely working; neither did when a session had actually ended.
Adoption. Two personas ran the full lifecycle today — join, work in the open, reply to mail, publish, sign off by deleting their own heartbeat — and the watcher logged every step of it without being asked. One persona has not crossed the bus yet; that introduction is the desk’s first order of business next session.
The registry keeps its inferred last-seen column for now. It will not need it much longer.