Issue files · local dev
The issue folder is the protocol.
Many coding agents share one local dev checkout. There is no daemon and no wcp binary. The files under .wcp/issues/ are the whole protocol.
The queue
An agent moves an issue from open/ to in-progress/, lists the files it touches, and moves it to done/ when the writing is finished. A quiet run pushes origin/dev and moves those issues to deployed-dev/. A later run moves them to deployed-main/ only after that commit is on origin/main.
open
- 0125—Read current session
in-progress
- 0123auth-1Rotate refresh tokensrc/auth/session.ts
- 0124ui-2Dashboard empty statesrc/routes/dashboard.tsx
done
- empty
deployed-dev
- empty
deployed-main
- empty
Side doors
blocked
Still wanted. Do not pick it up.
empty
canceled
Will not be done.
empty
in-review is retired. A file left there means the writing is finished. The next agent moves it to done/.
Solo, several agents
Worktrees isolate the wrong thing.
A worktree gives each agent its own checkout so they cannot step on each other. That helps until you are the person who has to put the pieces back. You are one developer. The agents are writing the same product, on the same machine, toward the same dev branch. The isolation is a merge you will do tonight.
They cannot see the other write
Worktree
A worktree’s uncommitted files are invisible to the next agent. The overlap shows up at merge, after both have finished and neither is still in the file.
wcp
One tree. If a path already has changes, the agent reads the issue that lists it, and the other paths in files, and keeps that acceptance. The edit builds on those bytes. It does not revert them.
The lock is a second checkout
Worktree
Each agent gets a directory, an index, and usually its own install. git worktree list names folders. It does not name the issue or the paths.
wcp
in-progress/ is the only lock. An open issue whose files overlap a live one is not taken. Everything else proceeds in the checkout you already have open.
You become the integrator
Worktree
Five agents means five branches to rebase, five copies of the repo, and a dev server that is not the tree you will push.
wcp
The tree stays dirty while anyone is in in-progress/. The last agent, with nothing left to do, commits once and pushes origin/dev.
Use a worktree for a branch you might delete. Use this when the work is supposed to land together. There is still no daemon. The folder is the lock, and agents have to read it.
Seven live statuses
The folder is the status.
The main chain is five folders. Two side doors sit beside it. in-review is retired.
Main chain
- openopen/
Backlog. Nobody is editing it. Does not block a commit.
- in-progressin-progress/
An agent is editing this issue on this machine. This is the only lock.
- donedone/YYYY/MM/DD/
Writing matches acceptance. The code is in the tree and has not been pushed.
- deployed-devdeployed-dev/YYYY/MM/DD/
That commit is on origin/dev. The sha is in dev.
- deployed-maindeployed-main/YYYY/MM/DD/
That commit is on origin/main. The sha is in main.
Side doors
- blockedblocked/
Still wanted. Do not pick it up. reason is required.
- canceledcanceled/YYYY/MM/DD/
Will not be done. reason is required.
open/, in-progress/, and blocked/ stay flat. done/, deployed-dev/, deployed-main/, and canceled/ are filed by the issue’s created day. The filename never changes when the status moves.
A file left in in-review/ means the writing is finished. The next agent moves it to done/.
One issue at a time
The run
- 01look
If a done issue’s commit is already on origin/dev or origin/main, move it and write the sha.
- 02take
One open issue whose files do not overlap in-progress. Write your name. Read it back.
- 03files
Add each path as you write it. Other agents read in-progress and work around those paths.
- 04done
When the writing matches acceptance, move the issue to done/.
- 05quiet
If in-progress still has anything, stop. Do not commit. Do not push. Leave the tree dirty.
- 06push
If in-progress is empty and you have no further task, commit, push origin/dev, move those issues to deployed-dev/.
A later run moves an issue to deployed-main/ only after that commit is on origin/main. A crashed agent leaves an issue in in-progress/. The next agent moves it back to open/ when the work has stopped, and clears assignee.
Issue file
The filename is YYYYMMDDThhmmZ-<id>-<slug>.md. The body under the frontmatter is the spec. dev and main stay empty until those commits exist.
---
id: 0123
title: Rotate refresh token on session mint
status: open
assignee:
files: []
acceptance:
reason:
dev:
main:
created: 2026-10-01T12:02:00Z
session: 2026-10-01T12:00:00Z
---Tracker
wcp issues are always managed here. .wcp/tracker.md may name notion, linear, jira, another tool, or none. A missing file means this folder is the only queue.
---
tracker: none
url:
---What this is not
Not a daemon
There is no wcp binary, no socket, and no lease command. The issue files are the protocol. Agents edit them.
Not a second queue
Notion, Linear, or Jira can mirror the same updates. The file is written first. A failed mirror does not undo it.
Not a rewind
Do not reset, checkout, or stash. Another agent’s uncommitted work stays. Your edit builds on it.
Not a chat system
The folder is who is editing what. Occupancy is the issue’s path, not a thread.
Paste into the app
AGENTS.md
Load the skill water-cooler-protocol. The spec and the skill stay in agreement.
## wcp
This checkout may have many coding agents on one local dev working tree.
The issue files are the protocol. There is no daemon.
- in-progress/ means an agent is editing that issue on this machine
- Do not commit while any issue is in in-progress/
- When in-progress/ is empty and you have no further task, commit and push origin/dev
- Commit .wcp/issues/ and .wcp/tracker.md. Nothing else under .wcp/