Skip to content
C.W.K.
Stream
Lesson 01 of 05 · published

A Queue Is Not a Cron

~12 min · queue, human-gate, sessions, automation

Level 0Trace
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

The gap between two runtimes

A short fragment rewrite may fit request-response light mode. Reading several notes, deciding dispositions with Dad, and reconciling an index can outlive a web connection and agent turn.

Duration does not justify scheduling judgment. A queue durably holds the work order and execution begins only when a live terminal session with Dad takes it.

Queued does not mean approved

A task row means work is concretized, not that its plan is approved. After take, survey or diagnosis reads current source and the plan gate presents scope, verdict vocabulary, and tradeoffs.

Before approval, source stays unchanged. After approval, the session works autonomously inside the boundary without asking per-fragment permission. Expensive conversation occurs once while shape remains cheap to change.

The engine is a recorder

The queue engine does not author content. It records delegation, claim, stages, base, checkpoint, land, and release. A brain edits through normal tools, but unrecorded work cannot pass landing gates.

UI and CLI are API clients rather than second database writers. One writer reduces claim races and half-updated rows.

Dispatch is not a state transition

Opening a task prompt must not mark it taken. A launch ticket and open attempt are audit events; state changes only when the live session sends take.

If the app fails or the window closes, the task remains queued for another dispatch instead of being trapped behind a phantom claim.

A queue is a durable handoff of scoped work to an accountable session, not a calendar. Remove automatic judgment and preserve claim, stages, and evidence.

Code

Model launch and take as different state·python
task = {"status": "queued", "launch_attempts": 0}

def launch(task):
    task["launch_attempts"] += 1
    return "ticket-issued"

def take(task, session):
    assert task["status"] == "queued"
    task.update(status="taken", session=session)

assert launch(task) == "ticket-issued"
assert task["status"] == "queued"
take(task, "session-1")
assert task["status"] == "taken"

External links

Exercise

Split one long task into queue, launch, take, plan approval, and land states. Remove any arrow from a timer to source mutation.
Hint
Opening a window and accepting responsibility are different events.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.