Execution Model
Junior stores work before processing it. This lets a turn continue after a timeout, authorization prompt, or worker restart.
How work moves through Junior
Section titled “How work moves through Junior”- A Slack message, task, or plugin event arrives.
- Junior validates and stores the work.
- A worker starts or resumes the conversation’s active turn.
- The turn uses tools, skills, and sandbox commands as needed.
- Completed replies return to the original destination.
- Paused work resumes from its latest safe checkpoint.
Queue messages only wake a worker. Stored conversation state remains the source of truth.
Turns and Ordering
Section titled “Turns and Ordering”A turn covers one request through its final outcome. It may span several bounded attempts while keeping the same conversation and turn identity.
Only one worker owns a conversation at a time. New mentions can steer active work at a safe point. Other messages wait for the current turn to finish.
Progress updates are status, not final replies. Text produced while calling tools stays internal until Junior produces a reply.
Recovery
Section titled “Recovery”Junior saves completed tool work. It resumes from the latest saved state when:
- OAuth pauses a turn
- work exceeds one execution window
- a worker stops unexpectedly
- delivery fails and can be retried
Sandbox files are temporary. They may disappear between attempts.
Delivery Guarantees
Section titled “Delivery Guarantees”- Accepted work survives process loss.
- Retries are bounded.
- Duplicate inbound events should resolve to the same work.
- Junior does not intentionally repeat an accepted reply.
- An ambiguous Slack delivery failure may still produce a duplicate reply on retry.
Next Step
Section titled “Next Step”Read Conversations for thread behavior or Security & Authority for action controls.