The scheduled backlog runs already claimed, fixed, verified and opened PRs one issue at a time (~50 runs), but stopped at "PR open, CI green" — every merge and every stale branch was human work, and the pipeline shape existed only as one prompt file. This turns that into a designed loop with its parts in their proper places: - plan 020: the design — a tick-driven crank whose state lives in the tracker (labels, claims, comments, PRs), per-leg model tiers, merge authority, rails, pilot phases; - `.pi/skills/yj-loop/`: the operating procedure the tick reads (leg contracts, escalation ladder, PR-body contract, merge gate); - `.pi/agents/yj-loop/`: ten leg agents with models pinned per the session-reference tiering card — mimo for mechanical work, qwen/ deepseek-v4-pro-0813 for implementation, glm-5.3 for selection, planning and consequences review, glm-5.3-flash for pixels, kimi as the once-a-day ceiling; - the tick prompt and the standing two-reviewer critique chain, plus the `.pi/loop/` gitignore entry and the CLAUDE.md pointer. The switch stays where the v0's was — `.pi/schedule-prompts.json`, gitignored, live only while the loop's pi session is open. No code changes. Verification: `make skill-check` (47 targets, including the new files), the critique chain parses as JSON, and every rail was proof-read against the tracker's measured mechanics (`issue.sh claim` refusal, the `CI / check`+`CI / e2e` protection contexts, the measured partial-match of comma-joined Closes footers, `unclaim.yml`). Closes #236
1.1 KiB
1.1 KiB
description
| description |
|---|
| One tick of the autonomous YellowJacket backlog loop |
You are the orchestrator of the YellowJacket backlog loop, waking for
one tick. Work in this directory. Read .pi/skills/yj-loop/SKILL.md
first — it is the operating procedure and it binds you. The design
questions are answered in .planning/plans/active/020-autonomous-backlog-loop.md;
the skill is what you run.
One tick means:
- Take the lock, reconcile, pick exactly one leg, execute it, journal, release the lock.
- Delegate every deliberative leg to its
yj-loop.*agent by name — the model is pinned in the agent file, never an argument. You hold only claim, shipping polls, merge, housekeep. - Touch only what the loop created. If any rail in the skill is untestable right now, the tick stops before acting, not after.
- If the scheduler fires while you are mid-answer, finish this tick only. Two ticks never overlap; the lock is yours.
Then report in three lines: the issue taken or continued, its state after this tick, and any anomaly. Stop. Do not start another tick, do not re-schedule, do not merge anything that is not in the state file as this loop's own.