Bellows and the hooks write one JSON line per event: a run started, a run ended, a tool call, an edit, a gate, a state change, a deploy, a lesson. This page folds those lines into three questions. How much time did each agent work? What work did it do? How did it keep learning?
Minutes come from the start and end events of every run. A run is one agent, one prompt, one issue. Weekends are shaded. Hover a day for the split.
Mon 3 Aug to Mon 21 Sep 2026. One colour per agent, the crew's own colours.
Who did the hours, and the model each agent runs on.
The roster shows each agent's daily rhythm and what it is doing right now. The table counts the artifacts: pull requests, reviews, tests, defects, tickets, notes and wiki pages.
Every time an agent stopped and asked Priya. The rules are in kit/.claude/gates.json.
Not busier. Better. Each step on this line is a file that changed because something went wrong.
A dot per entry, coloured by the agent that learned. Hover a dot for the lesson.
An entry is written when an agent file, a hook, a prompt or a test approach changed because something went wrong. The on-stop hook (kit/.claude/hooks/on-stop.mjs) flags any change under .claude/, AGENTS.md, CLAUDE.md or kit/ at the end of a run. Quill turns the flag into a learning-log entry: the lesson as the title, the issue it came from, and what changed. Nothing is counted for reading, thinking or talking. Only a changed file counts.
The tail of telemetry/events.jsonl, one line a second as it would have arrived. Times are Pacific.
How the telemetry is produced: the hooks that log every tool call, the dispatcher that records every run, and the script that folds the log into this page.
Read the chapter → ◎The lifecycleThe loop these events describe: six stages, a board that plays the six weeks, and ALD-42 traced end to end.
Open the visualiser →