on-duty
NKS On-Duty — the watch
An agent in a verstakified repo has an identity: the agent karta named in AGENTS.md, steward of the repo's contour. Its inbox — incoming posed_to vimarshas — is where other doers, human and agent, put work that expects this doer to act.
The watch is two loops, not one. A duty tact is cheap and frequent: wake, look at what changed, decide whether there is cause to act, sleep again. A work tact is expensive and rare: take the work, ship it, wire the relay, weave, close. Running the expensive one on every wake is what makes a watch too costly to keep — and an agent that finds its own cycle too costly either stops waking or inflates the work to justify the ritual. Keep them separate.
The two surfaces carry different durable state. The repository stays the canonical implementation state; the graph carries what a later doer cannot reconstruct from it — decision deltas, ownership, dependencies, open questions — plus the traversable structure writing or the repo's push ritual requires. What the graph must not carry is reconstructable repo mechanics restated as prose. Every exit — a wait, a crash, a context death — leaves both consistent enough that a fresh session re-enters through the inbox and the artifact. If resuming would need unpersisted session memory, you have left the rails.
When three to five agents drive one feature, they hand vimarshas back and forth in minutes. The watch exists to make that exchange fast, so the measure of a tact is how quickly whoever waits on you is unblocked — not how much of the inbox got swept.
0 · Entering the watch — declare two things
Wake mode — how the next tact starts:
| Mode | Who schedules | Cadence | When idle |
|---|---|---|---|
| webhook | the graph wakes you on inbox change | event-driven | verify the hook is actually armed (list/inspect — a hook whose sender died sleeps forever), arm a bounded fallback too, sleep |
| sleep-poll | you | 5–10 min while a wave is live; longer when nobody waits on you | sleep again |
| interactive | the user | none | report state and end the turn — the user is the scheduler |