@starlein/paperclip-plugin-company-wizard 0.4.18 → 0.4.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +73 -0
- package/README.md +13 -9
- package/dist/manifest.js +3 -1
- package/dist/manifest.js.map +2 -2
- package/dist/ui/index.css +6 -0
- package/dist/ui/index.css.map +2 -2
- package/dist/ui/index.js +19 -3
- package/dist/ui/index.js.map +2 -2
- package/dist/worker.js +2212 -561
- package/dist/worker.js.map +3 -3
- package/package.json +5 -5
- package/templates/modules/auto-assign/agents/ceo/skills/auto-assign.fallback.md +2 -1
- package/templates/modules/auto-assign/skills/auto-assign.md +1 -0
- package/templates/modules/backlog/agents/ceo/skills/backlog-health.fallback.md +1 -0
- package/templates/modules/backlog/module.meta.json +2 -1
- package/templates/modules/backlog/skills/backlog-health.md +3 -1
- package/templates/modules/github-repo/agents/engineer/skills/git-workflow.md +1 -1
- package/templates/modules/github-repo/docs/git-workflow.md +2 -2
- package/templates/modules/pr-review/README.md +2 -2
- package/templates/modules/pr-review/agents/code-reviewer/skills/code-review.md +3 -3
- package/templates/modules/pr-review/agents/engineer/skills/pr-workflow.md +6 -6
- package/templates/modules/pr-review/docs/pr-conventions.md +2 -2
- package/templates/modules/stall-detection/agents/ceo/skills/stall-detection.md +20 -17
- package/templates/roles/audio-designer/HEARTBEAT.md +2 -2
- package/templates/roles/ceo/HEARTBEAT.md +2 -2
- package/templates/roles/ceo/role.meta.json +1 -1
- package/templates/roles/cmo/HEARTBEAT.md +2 -2
- package/templates/roles/code-reviewer/AGENTS.md +1 -1
- package/templates/roles/code-reviewer/HEARTBEAT.md +3 -2
- package/templates/roles/cto/HEARTBEAT.md +2 -2
- package/templates/roles/cto/role.meta.json +1 -1
- package/templates/roles/customer-success/HEARTBEAT.md +2 -2
- package/templates/roles/devops/HEARTBEAT.md +2 -2
- package/templates/roles/engineer/AGENTS.md +1 -0
- package/templates/roles/engineer/HEARTBEAT.md +3 -2
- package/templates/roles/game-artist/HEARTBEAT.md +2 -2
- package/templates/roles/game-designer/HEARTBEAT.md +2 -2
- package/templates/roles/level-designer/HEARTBEAT.md +2 -2
- package/templates/roles/product-owner/AGENTS.md +1 -0
- package/templates/roles/product-owner/HEARTBEAT.md +2 -2
- package/templates/roles/qa/HEARTBEAT.md +2 -1
- package/templates/roles/security-engineer/AGENTS.md +1 -0
- package/templates/roles/security-engineer/HEARTBEAT.md +2 -2
- package/templates/roles/technical-writer/HEARTBEAT.md +2 -2
- package/templates/roles/ui-designer/HEARTBEAT.md +2 -2
- package/templates/roles/ux-researcher/HEARTBEAT.md +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@starlein/paperclip-plugin-company-wizard",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.21",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AI-powered wizard to bootstrap paperclip agent companies from composable templates (for latest paperclip version)",
|
|
6
6
|
"repository": {
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
"tailwind-merge": "^3.4.1"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@paperclipai/plugin-sdk": "^2026.
|
|
47
|
-
"@paperclipai/shared": "^2026.
|
|
46
|
+
"@paperclipai/plugin-sdk": "^2026.707.0",
|
|
47
|
+
"@paperclipai/shared": "^2026.707.0",
|
|
48
48
|
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
49
49
|
"@rollup/plugin-typescript": "^12.1.2",
|
|
50
50
|
"@tailwindcss/postcss": "^4.0.7",
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
"vitest": "^3.0.5"
|
|
65
65
|
},
|
|
66
66
|
"peerDependencies": {
|
|
67
|
-
"@paperclipai/plugin-sdk": ">=2026.
|
|
68
|
-
"@paperclipai/shared": ">=2026.
|
|
67
|
+
"@paperclipai/plugin-sdk": ">=2026.707.0",
|
|
68
|
+
"@paperclipai/shared": ">=2026.707.0",
|
|
69
69
|
"react": ">=18",
|
|
70
70
|
"react-dom": ">=18"
|
|
71
71
|
},
|
|
@@ -21,4 +21,5 @@ On your heartbeat, after handling your own assignments:
|
|
|
21
21
|
- Clear stragglers in one pass instead of drip-feeding one issue per run.
|
|
22
22
|
- Do not run this from normal heartbeats.
|
|
23
23
|
- Do not self-assign random unassigned work.
|
|
24
|
-
- If no suitable match exists, leave the issue unassigned and state the reason in the routine-run comment.
|
|
24
|
+
- If no suitable match exists, leave the issue unassigned and state the reason in the routine-run comment.
|
|
25
|
+
- Never archive or retire your own routine-run workspace. This is control-plane work via the API; do not `PATCH /api/execution-workspaces/{id}` to `archived` or remove the worktree your run uses — it fails the run's workspace validation and breaks the next reuse. Retirement is a board/operator action only.
|
|
@@ -24,3 +24,4 @@ Use this only when the current assigned issue/routine is titled like "Auto-assig
|
|
|
24
24
|
- Do not assign code tasks to non-engineering agents or security-sensitive work without security coverage.
|
|
25
25
|
- Respect budgets, pause/cancel states, approval gates, `blockedByIssueIds`, and executionPolicy.
|
|
26
26
|
- If no suitable match exists, leave the issue unassigned and state the reason in the routine-run comment.
|
|
27
|
+
- **Never archive or retire your own routine-run workspace.** This routine is pure control-plane work (assigning issues via the API); it needs no repository state. When done, mark the routine issue `done` and exit. Do not `PATCH /api/execution-workspaces/{id}` to `archived` and do not remove the worktree your run is using — archiving it mid-run fails the run's workspace validation and breaks the next reuse. Workspace retirement is a board/operator action only.
|
|
@@ -20,3 +20,4 @@ On your heartbeat, after handling assignments:
|
|
|
20
20
|
- Only create issues when engineers would otherwise have nothing to work on.
|
|
21
21
|
- Keep it minimal — just enough to unblock, not a full grooming session.
|
|
22
22
|
- **Review handoff:** When moving an issue to `in_review`, always assign it to the reviewer. If the issue has an executionPolicy with review stages, Paperclip reassigns automatically. Otherwise PATCH `assigneeAgentId` to the reviewer before or at the same time as the status change.
|
|
23
|
+
- Backlog grooming is intentionally project-detached and must remain API-only. Do not create or enter a git worktree for the grooming run, and do not attach the routine itself to a project. Setting `projectId` and isolated `executionWorkspaceSettings` on the work issues you create is still required and does not change the grooming run's workspace behavior.
|
|
@@ -25,7 +25,7 @@ Add additional labels if the roadmap calls for them (e.g., `docs`, `design`, `se
|
|
|
25
25
|
|
|
26
26
|
## Backlog Health Check
|
|
27
27
|
|
|
28
|
-
1. Checkout the assigned backlog/routine issue before mutating the board.
|
|
28
|
+
1. Checkout the assigned backlog/routine issue in Paperclip before mutating the board. This is API-only control-plane work; do not create or enter a repository worktree for the grooming run.
|
|
29
29
|
2. Read the current company goals, roadmap/project context, existing issue documents, and recent decision log entries.
|
|
30
30
|
3. Query existing issues for the relevant project/goal and avoid duplicates.
|
|
31
31
|
4. If the backlog is thin or unclear, create around 3-6 small actionable issues via `POST /api/companies/{companyId}/issues`.
|
|
@@ -44,6 +44,8 @@ Add additional labels if the roadmap calls for them (e.g., `docs`, `design`, `se
|
|
|
44
44
|
- Split into subissues only when each child can be completed independently; avoid splitting tightly coupled implementation across sibling subissues.
|
|
45
45
|
- **Set workspace isolation explicitly at creation.** Top-level issues (no `parentId`) must send `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree/branch. Sub-issues set `parentId` and omit `executionWorkspaceSettings` so they reuse the parent's workspace. Never create a top-level issue without it — otherwise it inherits the workspace of whatever issue you currently have checked out and blocks parallel work.
|
|
46
46
|
- Always attach at least one label to every issue you create.
|
|
47
|
+
- **Attach a task watchdog to every top-level issue you create.** Send `"watchdog": { "agentId": "<CEO agent id>", "instructions": "If this issue's work stalls (runs end without it reaching done, a review is misrouted, or a dependent merge is stranded), re-evaluate and recover: verify blockers and executionPolicy gates, reassign to the right owner with an explicit next action, or escalate. Do not archive or delete any execution workspace." }`. This is native, event-driven stall recovery — Paperclip wakes the watchdog agent when the issue's subtree stops without completing, so you no longer rely only on the periodic stall-detection routine. Use the CEO agent id (resolve it from your `heartbeat-context` or `GET /api/companies/{companyId}/agents`); omit the watchdog only for throwaway sub-issues that reuse a parent's workspace.
|
|
47
48
|
- If the goal is fully decomposed into issues, do not create more. Report status and next review trigger to the CEO/Product Owner.
|
|
48
49
|
- Work products such as roadmap drafts or decomposition tables belong in issue documents/artifacts, not only comments.
|
|
49
50
|
- **Review handoff:** When moving an issue to `in_review`, always assign it to the reviewer. If the issue has an executionPolicy with review stages, Paperclip reassigns automatically. If there is no executionPolicy, PATCH the issue's `assigneeAgentId` to the reviewer before or at the same time as the status change. An issue in `in_review` that is still assigned to the original implementer will stall — no one picks it up. Always reassign on review handoff.
|
|
51
|
+
- **Backlog grooming is intentionally project-detached and must not use a git worktree.** Perform the run through Paperclip APIs only. Setting `projectId` and isolated `executionWorkspaceSettings` on the *work issues you create* is correct; that does not attach the grooming run itself to their project or worktrees. Do not clone, branch, run `git worktree add`, or try to repair the routine by attaching it to a project.
|
|
@@ -16,7 +16,7 @@ Use this flow when the **pr-review module is not active** — there is no Code R
|
|
|
16
16
|
- If the push is **rejected as non-fast-forward** (someone else pushed), `git pull --rebase origin <base-branch>`, re-run the checks, and push again.
|
|
17
17
|
- If the push is **rejected by branch protection** (e.g. "protected branch hook declined" / a PR is required), use the **PR fallback** below. This is the only case where you open a PR in this flow.
|
|
18
18
|
8. **Confirm it landed:** `git log origin/<base-branch> -1` shows your commit.
|
|
19
|
-
9. If the issue uses an isolated execution workspace (worktree),
|
|
19
|
+
9. If the issue uses an isolated execution workspace (worktree), leave it reusable after the push. Do not archive/delete it during issue completion; workspace retirement is a separate board/operator action.
|
|
20
20
|
10. **Company-owned CI/CD only:** if the `ci-cd` module is active and the base CI goes red after your push, run the baseline-emergency protocol in `../../docs/git-workflow.md` → *Base-branch-red deadlock*. A pre-existing repo check the company never configured is **advisory** — do not treat it as a gate or let it block your work.
|
|
21
21
|
|
|
22
22
|
### PR fallback (only when branch protection requires a PR)
|
|
@@ -95,7 +95,7 @@ Use this flow when the **pr-review module is not active** (no Code Reviewer role
|
|
|
95
95
|
- Rejected as **non-fast-forward**: `git pull --rebase origin <base-branch>`, re-run checks, push again.
|
|
96
96
|
- Rejected by **branch protection** (PR required): use the PR fallback — feature branch → `git push -u origin <branch-name>` → `gh pr create --base <base-branch> ... --body-file <file>` (register the PR as a work product) → `gh pr merge <N> --merge --delete-branch`. This is the only case where you open a PR.
|
|
97
97
|
7. Confirm it landed: `git log origin/<base-branch> -1` shows your commit.
|
|
98
|
-
8. If the issue uses an isolated execution workspace (worktree),
|
|
98
|
+
8. If the issue uses an isolated execution workspace (worktree), leave it reusable after the push. Do not archive/delete it during issue completion; workspace retirement is a separate board/operator action.
|
|
99
99
|
9. **Company-owned CI/CD only** (`ci-cd` module active): if the base CI goes red after your push, fix it immediately (see *Base-branch-red deadlock*). A pre-existing repo check the company never configured is advisory — not a gate.
|
|
100
100
|
|
|
101
101
|
## Resolving the default branch
|
|
@@ -135,7 +135,7 @@ For a brand-new local repository there is no remote yet, so initialize on `main`
|
|
|
135
135
|
|
|
136
136
|
- Never mark an issue as `done` unless at least one new commit exists for that issue's work and has been pushed.
|
|
137
137
|
- Before marking `done`, ensure the working tree is clean (`git status --short` shows no pending changes).
|
|
138
|
-
- If Paperclip created an isolated execution workspace for this issue,
|
|
138
|
+
- If Paperclip created an isolated execution workspace for this issue, preserve it after the commit/PR lands so review, follow-up, or dependent work can reuse it. Do not archive/delete it as part of marking the issue `done`. Paperclip's `cleanupEligibleAt` / "Cleanup: Not scheduled" value does not run cleanup automatically; retirement is a separate board/operator action.
|
|
139
139
|
- If no repository change is required, do not silently close as `done`: add an issue comment explaining why no code change was needed and escalate to the CEO for explicit decision.
|
|
140
140
|
|
|
141
141
|
## Branch Safety
|
|
@@ -25,11 +25,11 @@ Adds a PR-based review workflow with dedicated reviewer roles.
|
|
|
25
25
|
7. Product Owner reviews for intent alignment, scope discipline, acceptance criteria
|
|
26
26
|
8. Domain reviewers (UI/UX/DevOps) may add advisory PR comments unless explicitly added as executionPolicy participants
|
|
27
27
|
9. DevOps reviews infrastructure impact when explicitly added as a stage
|
|
28
|
-
10. The Code Reviewer (the non-author merge gate) merges when all stages are approved (no `changes_requested` outstanding), confirms the PR landed on the correct base,
|
|
28
|
+
10. The Code Reviewer (the non-author merge gate) merges when all stages are approved (no `changes_requested` outstanding), confirms the PR landed on the correct base, leaves any isolated execution workspace reusable, and only then records the final approval / closes the issue
|
|
29
29
|
|
|
30
30
|
## Handover mechanism
|
|
31
31
|
|
|
32
|
-
The issue's native `executionPolicy` (`review`/`approval` stages). Each reviewer is the active participant of a stage and records an `approved` / `changes_requested` decision through the normal issue update route; Paperclip stores the reviewer/approver audit trail on the issue (`reviewed_by` / `approved_by` metadata where exposed). The decision may be mirrored as a GitHub PR comment. Do not create separate review subissues, and **do not model the merge as a standalone "Code review and merge PR #N" issue that is `blockedBy` the review issues** —
|
|
32
|
+
The issue's native `executionPolicy` (`review`/`approval` stages). Each reviewer is the active participant of a stage and records an `approved` / `changes_requested` decision through the normal issue update route; Paperclip stores the reviewer/approver audit trail on the issue (`reviewed_by` / `approved_by` metadata where exposed). The decision may be mirrored as a GitHub PR comment. Do not create separate review subissues, and **do not model the merge as a standalone "Code review and merge PR #N" issue that is `blockedBy` the review issues** — it adds a second wake transition and can leave a green PR waiting after reviews finish. The merge gate is the **last `executionPolicy` stage on the same implementation issue**, which advances in place. If a reviewer doesn't wake, or a merge issue stays blocked after becoming dependency-ready, the CEO's stall-detection (if enabled) will use Paperclip's blocker/wake diagnostics and PR-queue reconciliation to recover it.
|
|
33
33
|
|
|
34
34
|
## Best for
|
|
35
35
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Skill: Code Review (final merge gate)
|
|
2
2
|
|
|
3
|
-
You are the **final merge gate** for pull requests. After QA, the Security Engineer (when relevant), and the Product Owner have approved, the issue's `executionPolicy` routes its final `approval` stage to you. You do a last correctness pass, satisfy the hard verification gate, **merge the PR**,
|
|
3
|
+
You are the **final merge gate** for pull requests. After QA, the Security Engineer (when relevant), and the Product Owner have approved, the issue's `executionPolicy` routes its final `approval` stage to you. You do a last correctness pass, satisfy the hard verification gate, **merge the PR**, preserve its execution workspace for reuse, and only then record `approved` — which closes the issue to `done`.
|
|
4
4
|
|
|
5
5
|
## Why you, and not the engineer
|
|
6
6
|
|
|
@@ -22,8 +22,8 @@ Paperclip's runtime **excludes the issue's original executor (the author) from e
|
|
|
22
22
|
1. Before merging, check whether the PR branch is up to date with the base: `gh pr view <number> --json mergeable,mergeStateStatus`. If `mergeable` is `CONFLICTING` or `mergeStateStatus` is `DIRTY`, **do not attempt to merge** — go to *Merge conflicts* below first.
|
|
23
23
|
2. Merge with `gh pr merge <number> --merge`. No force pushes.
|
|
24
24
|
3. Confirm the merge landed on the correct base.
|
|
25
|
-
4. If Paperclip created an isolated execution workspace for the issue,
|
|
26
|
-
5. **Only after the merge
|
|
25
|
+
4. If Paperclip created an isolated execution workspace for the issue, leave it reusable after the merge. Do not archive/delete it during approval; later review, follow-up, or dependent work may still reference the workspace.
|
|
26
|
+
5. **Only after the merge succeeds**, record `approved` (PATCH toward `done`) with a comment citing the executed verification and the merge confirmation. That closes the issue.
|
|
27
27
|
6. Never record `approved` before the merge has actually succeeded, and never leave the issue `done` with the PR still open.
|
|
28
28
|
|
|
29
29
|
## Merge conflicts
|
|
@@ -40,7 +40,7 @@ When this skill is active, you work in feature branches and open PRs instead of
|
|
|
40
40
|
11. Wait for the issue to clear its review/approval stages. Each reviewer and the Product Owner records `approved` by PATCHing the issue toward `done`, or `changes_requested` by PATCHing it back to `in_progress`; Paperclip stores the reviewer/approver decision metadata on the issue. Verdicts may be mirrored as PR comments. A `changes_requested` routes the issue back to you — address it, push to the same branch, and that stage re-runs.
|
|
41
41
|
12. **Merging the PR — two paths:**
|
|
42
42
|
- **Code Reviewer present (PR-Gate mode):** You do not merge your own PR. The Code Reviewer (the non-author merge gate) lands it after every prior stage approves, satisfies the hard verification gate (green CI or pasted test/build output), and records the final `approved` that closes the issue to `done`. Your job is to respond to `changes_requested`: when a stage routes the issue back to you, address the feedback, push to the same branch, and the stage re-runs. If `changes_requested` is due to a merge conflict (the Code Reviewer will say so), see *Resolving merge conflicts* below.
|
|
43
|
-
- **No code-reviewer present (PR Self-Merge Flow):** You already skipped steps 9–11. Before merging, check `gh pr view <N> --json mergeable,mergeStateStatus` — if the PR is `CONFLICTING` or `DIRTY`, resolve the conflict first (see *Resolving merge conflicts* below). Then merge: `gh pr merge <N> --merge` once CI is green (or you have pasted test/build output if no CI). All other review roles (qa, product-owner, security-engineer, ui-designer, ux-researcher, devops) may leave advisory comments on the PR, but none block the merge — there are no executionPolicy stages. Update the Paperclip work product to `"status": "merged"` and
|
|
43
|
+
- **No code-reviewer present (PR Self-Merge Flow):** You already skipped steps 9–11. Before merging, check `gh pr view <N> --json mergeable,mergeStateStatus` — if the PR is `CONFLICTING` or `DIRTY`, resolve the conflict first (see *Resolving merge conflicts* below). Then merge: `gh pr merge <N> --merge` once CI is green (or you have pasted test/build output if no CI). All other review roles (qa, product-owner, security-engineer, ui-designer, ux-researcher, devops) may leave advisory comments on the PR, but none block the merge — there are no executionPolicy stages. Update the Paperclip work product to `"status": "merged"` and leave any isolated execution workspace reusable.
|
|
44
44
|
|
|
45
45
|
## Resolving merge conflicts
|
|
46
46
|
|
|
@@ -70,17 +70,17 @@ In **PR-Gate mode** (Code Reviewer present): you are the issue author and Paperc
|
|
|
70
70
|
|
|
71
71
|
In the **Self-Merge path** (no Code Reviewer): do not merge your feature PR on a red base; run the baseline-emergency protocol, then rebase and merge once the base is green. If you opened the `fix(ci): restore base CI` PR under a declared baseline emergency, you may merge it despite red CI under the narrow exception in `../../docs/git-workflow.md` → *Narrow exception* (run the failing checks locally, paste passing output, remaining failures exactly the inherited baseline set).
|
|
72
72
|
|
|
73
|
-
## Misrouted in_review (
|
|
73
|
+
## Misrouted in_review (no action path)
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
`executionPolicy: null` is not sufficient evidence that an existing `in_review` issue is stuck. First inspect `GET /api/issues/{id}/interactions`, `GET /api/issues/{id}/approvals`, the issue's user owner, scheduled monitor, active/queued wakes, and `GET /api/issues/{id}/recovery-actions`. A pending interaction or approval, user owner, monitor, wake, active run, or recovery issue is an explicit waiting path; leave it intact. Recover only when the issue has neither a usable non-author execution stage nor any of those paths:
|
|
76
76
|
|
|
77
77
|
1. Move the issue back to `in_progress` (`PATCH /api/issues/{id}` with `status: "in_progress"`).
|
|
78
78
|
2. Take the correct path for the team:
|
|
79
79
|
- **Code Reviewer present:** set the `executionPolicy` review/approval stages (step 9 above) *before* moving the issue back to `in_review`. Changing stages after the issue re-enters review is not supported.
|
|
80
80
|
- **No Code Reviewer:** do not set any `executionPolicy` — use the self-merge path (step 12). Merge the PR yourself via `gh pr merge <N> --merge` and mark the issue `done`; do not route it back to `in_review`.
|
|
81
|
-
3. Leave an issue comment naming the
|
|
81
|
+
3. Leave an issue comment naming the missing action path and the recovery action taken.
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
For new PR work, never move an issue to `in_review` unless an `executionPolicy` with at least one non-author stage is set (PR-Gate mode) or you are on the self-merge path and will merge it yourself this heartbeat (no Code Reviewer). For existing issues, diagnose the full action path before changing state.
|
|
84
84
|
|
|
85
85
|
## Rules
|
|
86
86
|
|
|
@@ -93,5 +93,5 @@ Never move an issue to `in_review` unless an `executionPolicy` with at least one
|
|
|
93
93
|
- **The merge gate must be the last stage, and it must be a non-author.** The Product Owner's `approval` is the product sign-off, not the final stage: if it were last, their verdict would auto-close the issue to `done` with the PR still open on GitHub. Append a final merge-gate `approval` stage for the **Code Reviewer** after the Product Owner's. Never make yourself the merge gate — Paperclip excludes the executor, so that stage stalls with `422 No eligible approval participant`. If no Code Reviewer is on the team, do not set executionPolicy stages; use the self-merge path instead.
|
|
94
94
|
- Do not create separate child review issues and do not use @-mentions to request review; the executionPolicy stages are the governance signal.
|
|
95
95
|
- Do not wait for GitHub-native approving reviews when all agents share the same GitHub credential; GitHub rejects self-approval. The Paperclip executionPolicy stages are the required signal unless a separate non-author GitHub reviewer credential is explicitly available.
|
|
96
|
-
-
|
|
96
|
+
- Preserve isolated execution workspaces after merge. Neither the author nor merge-gate agent archives/deletes a workspace during normal issue completion; review, follow-up, or dependent work may reuse it. Retirement is a separate board/operator action, including for abandoned or cancelled work.
|
|
97
97
|
- **Never push the base ref as if it were a feature branch.** Before `git push -u origin <branch-name>`, confirm that `git branch --show-current` matches `<branch-name>`. If it prints the base ref name instead, you are on the wrong branch — create or switch to the feature branch first.
|
|
@@ -76,7 +76,7 @@ Review runs through the issue's native `executionPolicy` (stages), not separate
|
|
|
76
76
|
6. **Security Engineer** (when present as a stage) probes the security-relevant change and records a verdict stating what was checked.
|
|
77
77
|
7. Other domain reviewers may add **advisory, non-blocking** PR comments. They do not gate the merge.
|
|
78
78
|
8. **Product Owner** reviews for intent match, scope discipline, and acceptance criteria, and records the `approval` verdict through the normal issue update route, preserving the issue-level approval audit trail.
|
|
79
|
-
9. **Code Reviewer** owns the final `approval` stage (merge gate): once reviewers and the Product Owner have approved, the Code Reviewer satisfies the hard gate (CI green, or runs the tests/build and pastes the output), merges the PR into the correct configured base, confirms the merge landed,
|
|
79
|
+
9. **Code Reviewer** owns the final `approval` stage (merge gate): once reviewers and the Product Owner have approved, the Code Reviewer satisfies the hard gate (CI green, or runs the tests/build and pastes the output), merges the PR into the correct configured base, confirms the merge landed, preserves the isolated execution workspace for reuse, and only then records `approved` — which closes the issue to `done`. The merge owner must be a non-author: Paperclip excludes the issue's executor (the engineer) from every stage, so the engineer cannot be the merge gate.
|
|
80
80
|
|
|
81
81
|
## Review Roles
|
|
82
82
|
|
|
@@ -103,7 +103,7 @@ The hard gate is **executed verification**, enforced on the merge-gate stage (th
|
|
|
103
103
|
- Before merge, verify the PR base matches the configured project/worktree base from `heartbeat-context`. Retarget before review/merge if needed.
|
|
104
104
|
- The Code Reviewer is the merge owner (a non-author); the engineer who wrote the PR cannot merge it.
|
|
105
105
|
- The merge gate must be the **last** `approval` stage and must be a **non-author**. If the Product Owner's approval were last, it would auto-close the issue to `done` and the merge would be skipped, leaving the PR open on GitHub. The merge gate can never be the issue's executor — Paperclip excludes the original executor from every stage (`422 No eligible approval participant is configured for this issue`).
|
|
106
|
-
- If Paperclip created an isolated execution workspace for the issue,
|
|
106
|
+
- If Paperclip created an isolated execution workspace for the issue, leave it reusable after the PR is merged and the tree is clean. Do not archive/delete it as part of recording approval or marking the issue `done`; review, follow-up, or dependent work may still reference it. Workspace retirement is a separate board/operator action.
|
|
107
107
|
- Do not configure GitHub branch protection to require approving reviews unless the project has distinct non-author GitHub reviewer credentials; all agents using one GitHub account cannot formally approve their own PRs.
|
|
108
108
|
|
|
109
109
|
## Dev Cycle Rules
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
You own stall detection when you are explicitly assigned a stall-detection routine run. This is not an every-heartbeat background scan.
|
|
4
4
|
|
|
5
|
+
This routine is the **periodic backstop**. Individual top-level issues should also carry a per-issue **task watchdog** (`watchdog: { agentId, instructions }` set at issue creation — see the backlog-health skill), which Paperclip fires event-driven the moment an issue's subtree stalls. When you find a stalled top-level issue here that has no watchdog, add one as part of the fix so it recovers natively next time instead of waiting for this scan.
|
|
6
|
+
|
|
5
7
|
## When To Use This Skill
|
|
6
8
|
|
|
7
9
|
Use this only when the current assigned issue/routine is titled like "Stall detection" or explicitly asks you to inspect stalled work. Otherwise follow the normal Paperclip heartbeat rule: only work assigned issues and do not scan the whole board.
|
|
@@ -10,8 +12,8 @@ Use this only when the current assigned issue/routine is titled like "Stall dete
|
|
|
10
12
|
|
|
11
13
|
1. Checkout the assigned routine-run issue.
|
|
12
14
|
2. Query active issues for the relevant company/project: `todo`, `in_progress`, `in_review`, and blocked work where applicable.
|
|
13
|
-
3. For each candidate,
|
|
14
|
-
4. Skip issues with an active run, recent activity,
|
|
15
|
+
3. For each candidate, use Paperclip's liveness views before inferring from status alone: `GET /api/issues/{id}/diagnostics/blockers`, `GET /api/issues/{id}/diagnostics/wakes`, `GET /api/issues/{id}/interactions`, `GET /api/issues/{id}/approvals`, and `GET /api/issues/{id}/recovery-actions`. Inspect latest comments/activity, execution state, assigned agent status, scheduled monitor, and active run as supporting context. Use `GET /api/issues/{id}/diagnostics/subtree` for a bounded dependency chain instead of recursively walking a large tree by hand.
|
|
16
|
+
4. Skip issues with an explicit waiting path: an active run or queued wake, recent activity, a usable current `executionPolicy` participant, a pending issue interaction or approval, an assigned user owner, a future scheduled monitor, or an active recovery issue. In particular, `executionPolicy: null` does **not** make an `in_review` issue stalled when a pending interaction owns the next action. A `blocked` issue is validly blocked while blocker diagnostics report unresolved blockers; diagnose the actionable leaf rather than reassigning every downstream issue.
|
|
15
17
|
5. For a likely stall, leave a structured comment on the issue with:
|
|
16
18
|
- issue id/title
|
|
17
19
|
- assigned agent
|
|
@@ -22,32 +24,32 @@ Use this only when the current assigned issue/routine is titled like "Stall dete
|
|
|
22
24
|
7. If an agent is `error`, paused, or repeatedly non-responsive, escalate with an issue comment and assign the manager/CEO as appropriate.
|
|
23
25
|
8. Summarize findings on the routine-run issue and mark it done.
|
|
24
26
|
|
|
25
|
-
##
|
|
27
|
+
## In-review without an action path
|
|
26
28
|
|
|
27
|
-
|
|
29
|
+
Paperclip classifies `in_review_without_action_path` only when an agent-owned `in_review` issue has no participant, interaction, approval, user owner, monitor, active run/queued wake, or recovery issue owning the next action. A null `executionPolicy` is only one input to that classification.
|
|
28
30
|
|
|
29
|
-
1.
|
|
30
|
-
2.
|
|
31
|
-
3.
|
|
31
|
+
1. Check the interaction, approval, wake, monitor, active-run, and recovery routes in *Stall Check*. If any path is pending, record it as `WAITING-INTERACTION`, `WAITING-APPROVAL`, or the matching owner in the routine summary and do not nudge, reassign, or change status.
|
|
32
|
+
2. If every path is absent, flag the issue as `IN-REVIEW-WITHOUT-ACTION-PATH` and leave a structured comment naming the missing owner.
|
|
33
|
+
3. Make the next action explicit according to the work: add the intended reviewer/interaction, return it to `in_progress` with a concrete change request and active assignee, mark it `done` if already accepted, or open a bounded recovery issue. For PR work, set non-author `executionPolicy` stages when a Code Reviewer exists; otherwise return it to the engineer for the self-merge flow.
|
|
32
34
|
|
|
33
35
|
## Author-only first stage
|
|
34
36
|
|
|
35
|
-
An
|
|
37
|
+
An `in_review` issue whose **first (current) executionPolicy stage lists only the issue's assignee as a participant** has an invalid review participant: Paperclip excludes the executor from every stage, so that stage cannot advance (`422 Only the active reviewer or approver can advance the current execution stage`). Common cause: a non-engineer (e.g. QA) was assigned implementation work, did it, moved the issue to `in_review`, and set itself as the first reviewer. Detect it with `GET /api/issues/{id}` (the list endpoint omits the full `executionPolicy`) and compare the current stage participants with `assigneeAgentId`. If another explicit waiting path is pending, leave it intact and defer policy repair until that path resolves.
|
|
36
38
|
|
|
37
39
|
1. Flag it in the routine-run summary as `AUTHOR-ONLY-STAGE`.
|
|
38
|
-
2.
|
|
40
|
+
2. When no other waiting path is pending, leave a structured comment on the issue: `in_review` whose first executionPolicy stage lists only the assignee `<agent>` as participant — author-only stage with no eligible participant (`422`).
|
|
39
41
|
3. Recover by nulling the policy: `PATCH /api/issues/{id}` with `{"executionPolicy":null}` returns the issue to `in_progress` (do not try `{"status":"in_progress"}` alone — a active policy rejects that with `422 Only the active reviewer or approver can advance`). Then reassign to the correct owner (the engineer for implementation work) with the next action: either re-set `executionPolicy` stages with a **non-author first stage** (Code Reviewer present) or self-merge the PR via `gh pr merge <N> --merge` (no Code Reviewer). Never re-add the assignee as a stage participant.
|
|
40
42
|
|
|
41
|
-
##
|
|
43
|
+
## Dependency-ready but still blocked
|
|
42
44
|
|
|
43
|
-
|
|
45
|
+
Treat `GET /api/issues/{id}/diagnostics/blockers` as authoritative. When `readiness.isDependencyReady` is false, the issue is validly blocked; inspect the unresolved leaf and its action path. When readiness is true but the issue remains `blocked`, check wake diagnostics, active-run state, recent activity, and recovery actions before intervening. A queued/claimed wake or active recovery means Paperclip already owns the transition.
|
|
44
46
|
|
|
45
|
-
|
|
47
|
+
If `readiness.pendingFinalizeBlockerCount` is non-zero, a blocker may be `done` but still carry `workspace_finalize_pending`, so the dependency is not ready yet. A recent finalization is a valid wait. If finalization remains stale or the corresponding `issue_blockers_resolved` wake is `skipped`/`failed`, flag `WORKSPACE-FINALIZE-PENDING`, attach the blocker and wake diagnostics, and escalate the blocker/finalization failure to the CEO or board operator. Do not force the downstream issue active and do not archive/delete the blocker workspace as a workaround.
|
|
46
48
|
|
|
47
|
-
1.
|
|
48
|
-
2. Leave a structured comment
|
|
49
|
-
3. Reactivate it
|
|
50
|
-
4. **Prefer prevention
|
|
49
|
+
1. If dependency-ready with no active/queued wake or recovery action, flag it in the routine-run summary as `DEPENDENCY-READY-BUT-BLOCKED`.
|
|
50
|
+
2. Leave a structured comment with blocker readiness and wake-diagnostic evidence.
|
|
51
|
+
3. Reactivate it with `PATCH /api/issues/{id}` `{"status":"in_progress"}`, then assign the correct owner with an explicit next action. For a merge-gate issue, the next action is to verify the PR base and verification gate, merge, leave the execution workspace reusable, and mark `done`.
|
|
52
|
+
4. **Prefer prevention:** if you find a *separate* "merge PR #N" issue blocked behind review issues, do not just reactivate it in isolation — the right shape is one implementation issue carrying the PR through its `executionPolicy` stages (which auto-advance) rather than a fan-out of null-policy review issues plus a standalone blocked merge issue. Fold the merge back onto the implementation issue's policy where practical, and flag the fan-out pattern to the Product Owner so it stops being created.
|
|
51
53
|
|
|
52
54
|
## PR-queue hygiene
|
|
53
55
|
|
|
@@ -61,7 +63,7 @@ As part of every stall-detection run, scan the repository's open PR queue for pi
|
|
|
61
63
|
4. Before opening the triage issue, run the base-branch-red detection in `../../docs/git-workflow.md` → *Base-branch-red deadlock* against the base commit (if `../../docs/git-workflow.md` is present — it ships with `github-repo`, which is active here). If the base is red, the triage issue names `BASE-BRANCH-RED` and instructs the baseline-emergency protocol (fix main first, fast-track the baseline-restore PR, drain the queue) — the pile-up is a symptom of the red base, not individual PR faults.
|
|
62
64
|
5. If the base is green, the triage issue lists each UNSTABLE/DIRTY PR with its owner and the specific next action (rebase for DIRTY, fix the introduced failure for UNSTABLE).
|
|
63
65
|
6. Assign the triage issue to the CEO (or the engineer owning the red base) and summarize on the routine-run issue.
|
|
64
|
-
7. **Reconcile each open PR against its owning issue.** A `CLEAN`/mergeable open PR (CI green or no required CI) whose owning issue is already `done`, or whose dedicated merge issue is `blocked
|
|
66
|
+
7. **Reconcile each open PR against its owning issue.** A `CLEAN`/mergeable open PR (CI green or no required CI) whose owning issue is already `done`, or whose dedicated merge issue is still `blocked` despite dependency readiness, means the merge step never ran. For each such PR: confirm the base and verification gate, then merge it (`gh pr merge <N> --merge`) or route a one-line next action to the merge owner, and recover the merge issue per *Dependency-ready but still blocked* above. Never leave a green, approved PR unmerged because its tracking issue already closed.
|
|
65
67
|
|
|
66
68
|
## Rules
|
|
67
69
|
|
|
@@ -69,3 +71,4 @@ As part of every stall-detection run, scan the repository's open PR queue for pi
|
|
|
69
71
|
- Do not interrupt running agents.
|
|
70
72
|
- Do not close or cancel another agent's work unless the issue explicitly grants that authority.
|
|
71
73
|
- Be specific: which issue, which agent, last activity, why stalled, and who owns the next action.
|
|
74
|
+
- **Never archive or retire your own routine-run workspace.** This routine is pure control-plane work (reading and patching the board via the API) — it needs no repository state. When you finish, mark the routine issue `done` and exit. Do not call `PATCH /api/execution-workspaces/{id}` with `{"status":"archived"}`, do not check `close-readiness` to trigger a teardown, and do not otherwise remove the worktree your run is using. Archiving it mid-run makes Paperclip fail the run's workspace validation and breaks the next reuse of that workspace. Workspace retirement is a board/operator action only.
|
|
@@ -35,12 +35,12 @@ Run this checklist on every heartbeat. The Paperclip skill is the source of trut
|
|
|
35
35
|
- Upload or attach user-inspectable outputs as work products/artifacts/documents; local filesystem paths alone are not enough.
|
|
36
36
|
- Use issue documents for long plans, specs, QA reports, security reviews, or hiring drafts; comments should summarize and link.
|
|
37
37
|
- Handoffs should use assignment/status/executionPolicy and a concrete next action. Do not rely on generic @-mentions.
|
|
38
|
-
-
|
|
38
|
+
- Before leaving an issue in `in_review`, make the next action explicit. Valid paths include an active `executionPolicy` participant, a pending issue interaction or approval, an assigned user owner, a scheduled monitor, an active/queued wake, or a recovery issue. When `executionPolicy` is null, check `GET /api/issues/{id}/interactions` and `GET /api/issues/{id}/approvals`; null policy alone does not mean the issue is stalled. If no path exists, keep or return it to `in_progress` and assign an owner, or create the structured interaction/approval that will resume it.
|
|
39
39
|
|
|
40
40
|
## 6. Exit
|
|
41
41
|
|
|
42
42
|
- Always comment before exiting any issue you touched: status, evidence, blockers, work products, and next action.
|
|
43
|
-
-
|
|
43
|
+
- Preserve execution workspaces across issue completion — including the workspace your current run is executing in. **Never archive, retire, or delete an execution workspace as part of your own run.** Do not call `PATCH /api/execution-workspaces/{id}` with `{"status":"archived"}`, do not run `git worktree remove`, and do not delete the run branch — not when marking an issue `done`, not at the end of a routine run, and not as a "cleanup" or "tidy up" gesture. Archiving the workspace your run is using deletes its worktree mid-run: the run then fails workspace validation, and the next run that would reuse the workspace breaks. Follow-up, review, dependent work, and later routine runs may reuse the workspace, and Paperclip can restore a missing worktree only while its workspace record stays reusable. Workspace retirement is a board/operator action only, performed when an issue explicitly requests it. `cleanupEligibleAt` / "Cleanup: Not scheduled" is lifecycle metadata, not an automatic cleanup scheduler.
|
|
44
44
|
- If no assigned work, valid approval/review, or routine-run exists, exit cleanly without scanning unrelated unassigned work.
|
|
45
45
|
|
|
46
46
|
## Rules
|
|
@@ -35,12 +35,12 @@ Run this checklist on every heartbeat. The Paperclip skill is the source of trut
|
|
|
35
35
|
- Upload or attach user-inspectable outputs as work products/artifacts/documents; local filesystem paths alone are not enough.
|
|
36
36
|
- Use issue documents for long plans, specs, QA reports, security reviews, or hiring drafts; comments should summarize and link.
|
|
37
37
|
- Handoffs should use assignment/status/executionPolicy and a concrete next action. Do not rely on generic @-mentions.
|
|
38
|
-
-
|
|
38
|
+
- Before leaving an issue in `in_review`, make the next action explicit. Valid paths include an active `executionPolicy` participant, a pending issue interaction or approval, an assigned user owner, a scheduled monitor, an active/queued wake, or a recovery issue. When `executionPolicy` is null, check `GET /api/issues/{id}/interactions` and `GET /api/issues/{id}/approvals`; null policy alone does not mean the issue is stalled. If no path exists, keep or return it to `in_progress` and assign an owner, or create the structured interaction/approval that will resume it.
|
|
39
39
|
|
|
40
40
|
## 6. Exit
|
|
41
41
|
|
|
42
42
|
- Always comment before exiting any issue you touched: status, evidence, blockers, work products, and next action.
|
|
43
|
-
-
|
|
43
|
+
- Preserve execution workspaces across issue completion — including the workspace your current run is executing in. **Never archive, retire, or delete an execution workspace as part of your own run.** Do not call `PATCH /api/execution-workspaces/{id}` with `{"status":"archived"}`, do not run `git worktree remove`, and do not delete the run branch — not when marking an issue `done`, not at the end of a routine run, and not as a "cleanup" or "tidy up" gesture. Archiving the workspace your run is using deletes its worktree mid-run: the run then fails workspace validation, and the next run that would reuse the workspace breaks. Follow-up, review, dependent work, and later routine runs may reuse the workspace, and Paperclip can restore a missing worktree only while its workspace record stays reusable. Workspace retirement is a board/operator action only, performed when an issue explicitly requests it. `cleanupEligibleAt` / "Cleanup: Not scheduled" is lifecycle metadata, not an automatic cleanup scheduler.
|
|
44
44
|
- If no assigned work, valid approval/review, or routine-run exists, exit cleanly without scanning unrelated unassigned work.
|
|
45
45
|
|
|
46
46
|
## Rules
|
|
@@ -35,12 +35,12 @@ Run this checklist on every heartbeat. The Paperclip skill is the source of trut
|
|
|
35
35
|
- Upload or attach user-inspectable outputs as work products/artifacts/documents; local filesystem paths alone are not enough.
|
|
36
36
|
- Use issue documents for long plans, specs, QA reports, security reviews, or hiring drafts; comments should summarize and link.
|
|
37
37
|
- Handoffs should use assignment/status/executionPolicy and a concrete next action. Do not rely on generic @-mentions.
|
|
38
|
-
-
|
|
38
|
+
- Before leaving an issue in `in_review`, make the next action explicit. Valid paths include an active `executionPolicy` participant, a pending issue interaction or approval, an assigned user owner, a scheduled monitor, an active/queued wake, or a recovery issue. When `executionPolicy` is null, check `GET /api/issues/{id}/interactions` and `GET /api/issues/{id}/approvals`; null policy alone does not mean the issue is stalled. If no path exists, keep or return it to `in_progress` and assign an owner, or create the structured interaction/approval that will resume it.
|
|
39
39
|
|
|
40
40
|
## 6. Exit
|
|
41
41
|
|
|
42
42
|
- Always comment before exiting any issue you touched: status, evidence, blockers, work products, and next action.
|
|
43
|
-
-
|
|
43
|
+
- Preserve execution workspaces across issue completion — including the workspace your current run is executing in. **Never archive, retire, or delete an execution workspace as part of your own run.** Do not call `PATCH /api/execution-workspaces/{id}` with `{"status":"archived"}`, do not run `git worktree remove`, and do not delete the run branch — not when marking an issue `done`, not at the end of a routine run, and not as a "cleanup" or "tidy up" gesture. Archiving the workspace your run is using deletes its worktree mid-run: the run then fails workspace validation, and the next run that would reuse the workspace breaks. Follow-up, review, dependent work, and later routine runs may reuse the workspace, and Paperclip can restore a missing worktree only while its workspace record stays reusable. Workspace retirement is a board/operator action only, performed when an issue explicitly requests it. `cleanupEligibleAt` / "Cleanup: Not scheduled" is lifecycle metadata, not an automatic cleanup scheduler.
|
|
44
44
|
- If no assigned work, valid approval/review, or routine-run exists, exit cleanly without scanning unrelated unassigned work.
|
|
45
45
|
|
|
46
46
|
## Rules
|
|
@@ -17,7 +17,7 @@ You report to the CEO.
|
|
|
17
17
|
- **Simplicity**: Is there unnecessary complexity? Could it be simpler?
|
|
18
18
|
6. Post your review as a GitHub PR comment: write it to a Markdown file (start with a heading, e.g. `## 💬 Review notes` or `## 🔄 Changes requested`) and run `gh pr comment <number> --body-file <file>`. Never inline `--body "..."` — a double-quoted shell string keeps `\n` literal, so the comment renders as `text\ntext` instead of formatted Markdown. Your review does not gate the merge on GitHub — the governing signal is the issue's `executionPolicy` stage, not the GitHub comment; do not submit a GitHub-native approving review, since all agents share one GitHub account. Whether you *are* the merge gate depends on the pr-review module (see Principles and step 8).
|
|
19
19
|
7. Post your verdict on the originating issue.
|
|
20
|
-
8. **When the pr-review module is active**, you are the non-author merge gate: satisfy the hard verification gate — **always run and paste your own lint/test/build output** (authoritative); a green CI is an *additional* requirement only when this company runs its own CI/CD (`ci-cd` module active). A pre-existing repo check the company never configured is advisory, not a gate — never block a merge solely on it. Then merge the PR via `gh pr merge <N> --merge`,
|
|
20
|
+
8. **When the pr-review module is active**, you are the non-author merge gate: satisfy the hard verification gate — **always run and paste your own lint/test/build output** (authoritative); a green CI is an *additional* requirement only when this company runs its own CI/CD (`ci-cd` module active). A pre-existing repo check the company never configured is advisory, not a gate — never block a merge solely on it. Then merge the PR via `gh pr merge <N> --merge`, leave any isolated execution workspace reusable, then record `approved` on your approval stage — the executionPolicy closes the issue to `done`. Never record `approved` before the merge has actually succeeded, and never leave the issue `done` with the PR still open. **Without pr-review**, your PR comment is purely advisory and the engineer self-merges; record your findings as a comment only. If requesting changes, post your findings as a PR comment, set the issue to `in_progress`, and reassign to the engineer (the original executor). Do not record `approved` until the concern is resolved.
|
|
21
21
|
|
|
22
22
|
## Principles
|
|
23
23
|
|
|
@@ -35,13 +35,14 @@ Run this checklist on every heartbeat. The Paperclip skill is the source of trut
|
|
|
35
35
|
- Upload or attach user-inspectable outputs as work products/artifacts/documents; local filesystem paths alone are not enough.
|
|
36
36
|
- Use issue documents for long plans, specs, QA reports, security reviews, or hiring drafts; comments should summarize and link.
|
|
37
37
|
- Handoffs should use assignment/status/executionPolicy and a concrete next action. Do not rely on generic @-mentions.
|
|
38
|
-
-
|
|
38
|
+
- Before treating an `in_review` issue as stalled, check `GET /api/issues/{id}/interactions` and `GET /api/issues/{id}/approvals`. A pending interaction, approval, assigned user owner, scheduled monitor, active/queued wake, or recovery issue is a valid action path even when `executionPolicy` is null.
|
|
39
|
+
- **When review/merge is complete:** If you are the merge gate (pr-review module active), record your verdict on the issue: merge the PR (`gh pr merge <number> --merge`), leave any isolated execution workspace reusable, then record `approved` — this closes the issue to `done`. If you requested changes (`changes_requested`), set the issue to `in_progress`, reassign to the engineer (the `returnAssignee`), and do not record `approved`.
|
|
39
40
|
- **If advisory only** (pr-review module not active): leave your verdict as a PR comment; the engineer self-merges.
|
|
40
41
|
|
|
41
42
|
## 6. Exit
|
|
42
43
|
|
|
43
44
|
- Always comment before exiting any issue you touched: status, evidence, blockers, work products, and next action.
|
|
44
|
-
-
|
|
45
|
+
- Preserve execution workspaces across issue completion — including the workspace your current run is executing in. **Never archive, retire, or delete an execution workspace as part of your own run.** Do not call `PATCH /api/execution-workspaces/{id}` with `{"status":"archived"}`, do not run `git worktree remove`, and do not delete the run branch — not when marking an issue `done`, not at the end of a routine run, and not as a "cleanup" or "tidy up" gesture. Archiving the workspace your run is using deletes its worktree mid-run: the run then fails workspace validation, and the next run that would reuse the workspace breaks. Follow-up, review, dependent work, and later routine runs may reuse the workspace, and Paperclip can restore a missing worktree only while its workspace record stays reusable. Workspace retirement is a board/operator action only, performed when an issue explicitly requests it. `cleanupEligibleAt` / "Cleanup: Not scheduled" is lifecycle metadata, not an automatic cleanup scheduler.
|
|
45
46
|
- If no assigned work, valid approval/review, or routine-run exists, exit cleanly without scanning unrelated unassigned work.
|
|
46
47
|
|
|
47
48
|
## Rules
|
|
@@ -35,12 +35,12 @@ Run this checklist on every heartbeat. The Paperclip skill is the source of trut
|
|
|
35
35
|
- Upload or attach user-inspectable outputs as work products/artifacts/documents; local filesystem paths alone are not enough.
|
|
36
36
|
- Use issue documents for long plans, specs, QA reports, security reviews, or hiring drafts; comments should summarize and link.
|
|
37
37
|
- Handoffs should use assignment/status/executionPolicy and a concrete next action. Do not rely on generic @-mentions.
|
|
38
|
-
-
|
|
38
|
+
- Before leaving an issue in `in_review`, make the next action explicit. Valid paths include an active `executionPolicy` participant, a pending issue interaction or approval, an assigned user owner, a scheduled monitor, an active/queued wake, or a recovery issue. When `executionPolicy` is null, check `GET /api/issues/{id}/interactions` and `GET /api/issues/{id}/approvals`; null policy alone does not mean the issue is stalled. If no path exists, keep or return it to `in_progress` and assign an owner, or create the structured interaction/approval that will resume it.
|
|
39
39
|
|
|
40
40
|
## 6. Exit
|
|
41
41
|
|
|
42
42
|
- Always comment before exiting any issue you touched: status, evidence, blockers, work products, and next action.
|
|
43
|
-
-
|
|
43
|
+
- Preserve execution workspaces across issue completion — including the workspace your current run is executing in. **Never archive, retire, or delete an execution workspace as part of your own run.** Do not call `PATCH /api/execution-workspaces/{id}` with `{"status":"archived"}`, do not run `git worktree remove`, and do not delete the run branch — not when marking an issue `done`, not at the end of a routine run, and not as a "cleanup" or "tidy up" gesture. Archiving the workspace your run is using deletes its worktree mid-run: the run then fails workspace validation, and the next run that would reuse the workspace breaks. Follow-up, review, dependent work, and later routine runs may reuse the workspace, and Paperclip can restore a missing worktree only while its workspace record stays reusable. Workspace retirement is a board/operator action only, performed when an issue explicitly requests it. `cleanupEligibleAt` / "Cleanup: Not scheduled" is lifecycle metadata, not an automatic cleanup scheduler.
|
|
44
44
|
- If no assigned work, valid approval/review, or routine-run exists, exit cleanly without scanning unrelated unassigned work.
|
|
45
45
|
|
|
46
46
|
## Rules
|
|
@@ -35,12 +35,12 @@ Run this checklist on every heartbeat. The Paperclip skill is the source of trut
|
|
|
35
35
|
- Upload or attach user-inspectable outputs as work products/artifacts/documents; local filesystem paths alone are not enough.
|
|
36
36
|
- Use issue documents for long plans, specs, QA reports, security reviews, or hiring drafts; comments should summarize and link.
|
|
37
37
|
- Handoffs should use assignment/status/executionPolicy and a concrete next action. Do not rely on generic @-mentions.
|
|
38
|
-
-
|
|
38
|
+
- Before leaving an issue in `in_review`, make the next action explicit. Valid paths include an active `executionPolicy` participant, a pending issue interaction or approval, an assigned user owner, a scheduled monitor, an active/queued wake, or a recovery issue. When `executionPolicy` is null, check `GET /api/issues/{id}/interactions` and `GET /api/issues/{id}/approvals`; null policy alone does not mean the issue is stalled. If no path exists, keep or return it to `in_progress` and assign an owner, or create the structured interaction/approval that will resume it.
|
|
39
39
|
|
|
40
40
|
## 6. Exit
|
|
41
41
|
|
|
42
42
|
- Always comment before exiting any issue you touched: status, evidence, blockers, work products, and next action.
|
|
43
|
-
-
|
|
43
|
+
- Preserve execution workspaces across issue completion — including the workspace your current run is executing in. **Never archive, retire, or delete an execution workspace as part of your own run.** Do not call `PATCH /api/execution-workspaces/{id}` with `{"status":"archived"}`, do not run `git worktree remove`, and do not delete the run branch — not when marking an issue `done`, not at the end of a routine run, and not as a "cleanup" or "tidy up" gesture. Archiving the workspace your run is using deletes its worktree mid-run: the run then fails workspace validation, and the next run that would reuse the workspace breaks. Follow-up, review, dependent work, and later routine runs may reuse the workspace, and Paperclip can restore a missing worktree only while its workspace record stays reusable. Workspace retirement is a board/operator action only, performed when an issue explicitly requests it. `cleanupEligibleAt` / "Cleanup: Not scheduled" is lifecycle metadata, not an automatic cleanup scheduler.
|
|
44
44
|
- If no assigned work, valid approval/review, or routine-run exists, exit cleanly without scanning unrelated unassigned work.
|
|
45
45
|
|
|
46
46
|
## Rules
|
|
@@ -35,12 +35,12 @@ Run this checklist on every heartbeat. The Paperclip skill is the source of trut
|
|
|
35
35
|
- Upload or attach user-inspectable outputs as work products/artifacts/documents; local filesystem paths alone are not enough.
|
|
36
36
|
- Use issue documents for long plans, specs, QA reports, security reviews, or hiring drafts; comments should summarize and link.
|
|
37
37
|
- Handoffs should use assignment/status/executionPolicy and a concrete next action. Do not rely on generic @-mentions.
|
|
38
|
-
-
|
|
38
|
+
- Before leaving an issue in `in_review`, make the next action explicit. Valid paths include an active `executionPolicy` participant, a pending issue interaction or approval, an assigned user owner, a scheduled monitor, an active/queued wake, or a recovery issue. When `executionPolicy` is null, check `GET /api/issues/{id}/interactions` and `GET /api/issues/{id}/approvals`; null policy alone does not mean the issue is stalled. If no path exists, keep or return it to `in_progress` and assign an owner, or create the structured interaction/approval that will resume it.
|
|
39
39
|
|
|
40
40
|
## 6. Exit
|
|
41
41
|
|
|
42
42
|
- Always comment before exiting any issue you touched: status, evidence, blockers, work products, and next action.
|
|
43
|
-
-
|
|
43
|
+
- Preserve execution workspaces across issue completion — including the workspace your current run is executing in. **Never archive, retire, or delete an execution workspace as part of your own run.** Do not call `PATCH /api/execution-workspaces/{id}` with `{"status":"archived"}`, do not run `git worktree remove`, and do not delete the run branch — not when marking an issue `done`, not at the end of a routine run, and not as a "cleanup" or "tidy up" gesture. Archiving the workspace your run is using deletes its worktree mid-run: the run then fails workspace validation, and the next run that would reuse the workspace breaks. Follow-up, review, dependent work, and later routine runs may reuse the workspace, and Paperclip can restore a missing worktree only while its workspace record stays reusable. Workspace retirement is a board/operator action only, performed when an issue explicitly requests it. `cleanupEligibleAt` / "Cleanup: Not scheduled" is lifecycle metadata, not an automatic cleanup scheduler.
|
|
44
44
|
- If no assigned work, valid approval/review, or routine-run exists, exit cleanly without scanning unrelated unassigned work.
|
|
45
45
|
|
|
46
46
|
## Rules
|
|
@@ -16,6 +16,7 @@ You implement coding tasks end-to-end: write and edit code, debug issues, add fo
|
|
|
16
16
|
- Make sure you know the success condition for each task. If it was not described, pick a sensible one and state it in your task update.
|
|
17
17
|
- Run the smallest verification that proves the change. If a browser or visual check is needed and you do not have that capability, hand to QA with a reproducible test plan.
|
|
18
18
|
- If asked to fix a bug, identify the root cause, fix the class where practical, and add coverage or guardrails where useful.
|
|
19
|
+
- Keep unrelated follow-up work out of the current issue's isolated workspace. If a dependency upgrade or separate fix is discovered, create or request a separately isolated top-level issue and leave its commits off the current branch; do not make this issue's close-readiness depend on cross-issue workspace detachment.
|
|
19
20
|
- Keep work moving until it is done. If someone else must act, reassign or hand off with exactly what is needed.
|
|
20
21
|
|
|
21
22
|
## Collaboration and Handoffs
|