Why catching up is fast
Series · Part 3 — “Building task management for AI agents.” The previous part was the overall shape; this part is how that graph is read.
Part 1 measured search running about twice as light, and Part 2 showed that the store is a graph. This part is about the reading of it — why it comes out light.
Just follow the edges
When catching up on a task, Amenbo (https://amenbo.work/) reads the task itself and only the few connected records: the decision it was premised on, the blocker holding it up right now, the comments. Each of those is reached from the task’s number in one index hit.
The whole store is never swept. So however large the store grows — thousands of records, tens of thousands — the cost to catch up on a single item does not change: it stays the handful of connected records. The “about twice as light” measured in Part 1 comes from this way of reading.
State is derived, not stored
“Is this task startable (ready)?” “Is this decision still current?” — Amenbo does not store such state in a column. Every read derives it on the spot from the edges.
- Startable = no blocker remains, and the premise decision is still current.
- A decision is current = no newer decision that supersedes it exists yet.
The reason for not storing it is to avoid disagreement. If “startable” were stored, then every time a dependency or a decision changed you would have to go and update the list, the card, and the start guard — all of them. Derived, the judgment lives in one place. Everyone uses the same judgment, so “looks startable in the list but blocked once you actually start it” does not happen.
Next
Part 4: Partitioning the AI’s reach by structure. Not a plea in the prompt, but a boundary at .amenbo that makes “can’t read, can’t write” a mechanism.