The Core Loop
The core loop is idea → Issues → code → Pull Request. You decide how an idea enters the loop. Zozo then prepares an isolated checkout, runs the coding agent, verifies the project, and turns the committed result into a Pull Request.
Idea → Issues → Code → Pull Request
- Bring an idea. Start with a feature in plain terms. It can be an early idea or a fully specified GitHub Issue.
- Make the work ready. Use an Intake Session to refine an early idea into an Issue Plan, then confirm it so the Dispatcher can Publish the plan as GitHub Issues. For an existing, complete Issue, add the
ready-for-agentlabel yourself. Either route places ready work on the Frontier. - Select an Issue. Auto-dispatch watches your active Projects, applies eligibility and pacing rules, and selects an Issue when capacity is available. You can also start a targeted Dispatch for one named Issue.
- Implement the change. The Dispatcher creates a Managed Worktree, an isolated checkout and branch for the attempt. It opens a Thread and starts a Run. The Provider launches its Runtime in that worktree. The selected Credential supplies the billing identity, model, and effort for that new Thread. The coding agent reads the Issue and repository, edits the files, runs the project's build and tests, and commits the completed implementation.
- Open the Pull Request. After the Run completes with committed changes, the Dispatcher pushes the branch and opens a Pull Request that closes the Issue. The Runtime handles the code; the Dispatcher owns the GitHub branch, Pull Request, and label changes.
- Review or land it. With
open-PR-only, the Pull Request waits for your review. Withauto-merge, it enters Landing, which verifies the tested commit against the Pull Request's target branch before merging it. See Watch a Project for both merge policies.
An Issue can enter Clarification during implementation when a load-bearing decision is missing. The same Thread continues after you answer.
Stage a Batch Before Main
Confirm CI runs against the staging branch first
Many repositories run Pull Request workflows only when the target is the default branch, or configure required checks only there. A Pull Request that targets staging may report no checks at all. Every Landing then waits for the full checks window and blocks. Zozo can't distinguish checks that never report from checks that are merely slow, so confirm that CI runs on Pull Requests targeting staging before changing the Project's Base Branch.
After CI is ready, create a staging branch from main. Open Projects in the Dashboard, enter staging in that Project's Base Branch field, and leave auto-merge enabled. New Managed Worktrees start from staging, their Pull Requests target staging, and Landing merges each verified change into staging.
Zozo closes each Issue itself when its Landing succeeds and leaves a comment naming the branch it landed on. GitHub only closes an Issue when a Pull Request merges into the default branch, so on staging Zozo's close is what lets the Issues blocked on it move to ready-for-agent.
Verify the completed batch on staging, then merge staging into main by hand. Changing the Base Branch affects future attempts only. An open Pull Request keeps the target it already records, so a settings change can't retarget work that's waiting in the Landing Queue.
A newly added Project stores GitHub's current default branch as a concrete Base Branch. A Project saved by an older Zozo version keeps its legacy main fallback until you select Resolve from GitHub or enter and save a branch yourself. Zozo verifies that a saved branch exists on GitHub and refuses the save when GitHub can't be reached.
Two Ways In
There are two ways to place work on the Frontier. Intake is the recommended path for an idea that still needs refinement. Manual labelling is the direct path for an Issue that's already complete.
Intake: The Recommended On-Ramp
An Intake Session is a read-only, human-driven conversation in the Dashboard. You describe the idea, then choose an Intake Mode that determines whether the Agent makes the decisions, grills you for them, or organizes them in a Wayfinder Map. You review the resulting Issue Plan containing the proposed Issues, labels, and dependencies before anything is Published.
When you confirm the plan, the Dispatcher Publishes it to the Project. It creates the GitHub Issues in dependency order and places the ready ones on the Frontier. The Intake Session can read your Project, but it doesn't modify the repository or generate implementation code.
Use Intake when the idea still has open questions. You can answer in real time or resume later from the Dashboard's Needs Attention page. Resolving missing requirements before Dispatch reduces avoidable rework during implementation. See Choose an Intake Mode to compare Small, Medium, Large, and the two Grilling Styles before you start.
The Intake interview format is adapted from Matt Pocock's MIT-licensed grill-with-docs skill.
Label It Yourself: Direct Entry
If you already know exactly what you want, write the GitHub Issue and add the ready-for-agent label. This places it on the Frontier, where the Dispatcher can select it during the next eligible Dispatch.
Use this route for Issues that already contain the requirements and acceptance criteria the coding agent needs. Start with Intake when the idea still needs refinement.
See Watch a Project for the labelling steps and Label Reference for the labels read by the Dispatcher and Dashboard.
Clarification: It Asks Instead of Guessing
Sometimes an Issue that looked ready is missing a load-bearing decision. If the answer isn't available in the Issue, documentation, or codebase, the implementation attempt enters Clarification and asks you for the missing information.
Clarification stays on the same Thread and preserves the work already completed in its Managed Worktree. The agent asks one question at a time until you confirm a shared understanding, then the same attempt continues into implementation with your answers and its existing context.
While Clarification waits, the Issue appears on the Dashboard's Needs Attention page. It waits until you answer, with no timeout forcing a decision before you're ready.
Related
- How Dispatch Decides: learn the three Auto-dispatch triggers, selection order, admission priority, and stop conditions.
- Choose an Intake Mode: choose Small, Medium, or Large and set the Grilling Style for a conversation.
- Work Model: follow the code-to-Pull Request path and understand how concurrent work is bounded.
- Watch a Project: add a Project, label an Issue, choose a merge policy, and configure its Base Branch.
- Label Reference: look up the label vocabulary, promotion vetoes, and meaning of
blocked. - Core Concepts: review the Provider, Runtime, Thread, Run, and Event vocabulary.