@starlein/paperclip-plugin-company-wizard 0.4.22 → 0.6.2

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.
Files changed (168) hide show
  1. package/CHANGELOG.md +120 -0
  2. package/README.md +29 -15
  3. package/dist/manifest.js +24 -9
  4. package/dist/manifest.js.map +2 -2
  5. package/dist/ui/index.css +636 -589
  6. package/dist/ui/index.css.map +2 -2
  7. package/dist/ui/index.js +365 -60
  8. package/dist/ui/index.js.map +4 -4
  9. package/dist/worker.js +22374 -5375
  10. package/dist/worker.js.map +4 -4
  11. package/docs/PAPERCLIP-COMPATIBILITY.md +66 -0
  12. package/package.json +10 -10
  13. package/templates/ai-wizard/interview-system.md +2 -0
  14. package/templates/ai-wizard/single-shot-system.md +2 -0
  15. package/templates/bootstrap-instructions.md +3 -3
  16. package/templates/modules/accessibility/agents/engineer/skills/accessibility-audit.fallback.md +2 -2
  17. package/templates/modules/accessibility/agents/ui-designer/skills/accessibility-audit.fallback.md +2 -2
  18. package/templates/modules/accessibility/module.meta.json +1 -1
  19. package/templates/modules/accessibility/skills/accessibility-audit.bar.md +1 -1
  20. package/templates/modules/accessibility/skills/accessibility-audit.md +1 -1
  21. package/templates/modules/architecture-plan/agents/ceo/skills/architecture-plan.bar.md +2 -2
  22. package/templates/modules/architecture-plan/agents/ceo/skills/architecture-plan.fallback.md +2 -2
  23. package/templates/modules/architecture-plan/agents/engineer/skills/design-system.fallback.md +2 -2
  24. package/templates/modules/architecture-plan/agents/ui-designer/skills/architecture-plan.md +2 -2
  25. package/templates/modules/architecture-plan/agents/ui-designer/skills/design-system.md +3 -3
  26. package/templates/modules/architecture-plan/module.meta.json +2 -2
  27. package/templates/modules/architecture-plan/skills/architecture-plan.bar.md +1 -1
  28. package/templates/modules/architecture-plan/skills/architecture-plan.md +3 -3
  29. package/templates/modules/architecture-plan/skills/design-system.md +5 -5
  30. package/templates/modules/auto-assign/README.md +4 -4
  31. package/templates/modules/auto-assign/agents/ceo/heartbeat-section.md +1 -1
  32. package/templates/modules/auto-assign/agents/ceo/skills/auto-assign.fallback.md +6 -6
  33. package/templates/modules/auto-assign/agents/product-owner/heartbeat-section.md +1 -1
  34. package/templates/modules/auto-assign/module.meta.json +1 -1
  35. package/templates/modules/auto-assign/skills/auto-assign.md +3 -2
  36. package/templates/modules/backlog/agents/ceo/heartbeat-section.md +1 -1
  37. package/templates/modules/backlog/agents/ceo/skills/backlog-health.fallback.md +9 -9
  38. package/templates/modules/backlog/agents/product-owner/heartbeat-section.md +1 -1
  39. package/templates/modules/backlog/docs/backlog-process.md +36 -21
  40. package/templates/modules/backlog/docs/backlog-template.md +10 -9
  41. package/templates/modules/backlog/module.meta.json +2 -2
  42. package/templates/modules/backlog/skills/backlog-health.bar.md +3 -3
  43. package/templates/modules/backlog/skills/backlog-health.md +16 -15
  44. package/templates/modules/brand-identity/agents/ceo/skills/brand-identity.fallback.md +2 -2
  45. package/templates/modules/brand-identity/agents/cmo/skills/brand-identity.fallback.md +2 -2
  46. package/templates/modules/brand-identity/module.meta.json +1 -1
  47. package/templates/modules/brand-identity/skills/brand-identity.bar.md +1 -1
  48. package/templates/modules/brand-identity/skills/brand-identity.md +3 -3
  49. package/templates/modules/build-api/skills/api-design.bar.md +1 -1
  50. package/templates/modules/build-api/skills/api-design.md +1 -1
  51. package/templates/modules/ci-cd/agents/devops/skills/ci-cd.md +1 -1
  52. package/templates/modules/ci-cd/agents/engineer/skills/ci-cd.fallback.md +2 -2
  53. package/templates/modules/ci-cd/module.meta.json +1 -1
  54. package/templates/modules/ci-cd/skills/ci-cd.bar.md +1 -1
  55. package/templates/modules/ci-cd/skills/ci-cd.md +6 -4
  56. package/templates/modules/codebase-onboarding/agents/ceo/skills/codebase-audit.fallback.md +5 -5
  57. package/templates/modules/codebase-onboarding/module.meta.json +1 -1
  58. package/templates/modules/codebase-onboarding/skills/codebase-audit.bar.md +1 -1
  59. package/templates/modules/codebase-onboarding/skills/codebase-audit.md +2 -2
  60. package/templates/modules/competitive-intel/agents/ceo/skills/competitive-tracking.fallback.md +2 -2
  61. package/templates/modules/competitive-intel/agents/cmo/skills/competitive-tracking.fallback.md +2 -2
  62. package/templates/modules/competitive-intel/agents/customer-success/skills/competitive-tracking.md +2 -2
  63. package/templates/modules/competitive-intel/agents/product-owner/skills/competitive-tracking.fallback.md +2 -2
  64. package/templates/modules/competitive-intel/module.meta.json +1 -1
  65. package/templates/modules/competitive-intel/skills/competitive-tracking.bar.md +2 -2
  66. package/templates/modules/competitive-intel/skills/competitive-tracking.md +3 -3
  67. package/templates/modules/dependency-management/agents/engineer/skills/dependency-audit.fallback.md +2 -2
  68. package/templates/modules/dependency-management/agents/security-engineer/skills/dependency-audit.fallback.md +2 -2
  69. package/templates/modules/dependency-management/module.meta.json +2 -2
  70. package/templates/modules/dependency-management/skills/dependency-audit.md +2 -2
  71. package/templates/modules/game-design/agents/ceo/skills/game-design.fallback.md +1 -1
  72. package/templates/modules/game-design/agents/engineer/skills/game-design.fallback.md +1 -1
  73. package/templates/modules/game-design/agents/game-designer/skills/game-design.md +2 -2
  74. package/templates/modules/game-design/module.meta.json +1 -1
  75. package/templates/modules/game-design/skills/audio-design.fallback.md +2 -2
  76. package/templates/modules/game-design/skills/audio-design.md +3 -3
  77. package/templates/modules/game-design/skills/game-design.bar.md +1 -1
  78. package/templates/modules/game-design/skills/game-design.md +3 -3
  79. package/templates/modules/game-design/skills/level-design.fallback.md +2 -2
  80. package/templates/modules/game-design/skills/level-design.md +4 -4
  81. package/templates/modules/github-repo/agents/engineer/skills/git-workflow.md +15 -14
  82. package/templates/modules/github-repo/docs/git-workflow.md +7 -7
  83. package/templates/modules/github-repo/module.meta.json +1 -1
  84. package/templates/modules/lean-delivery/docs/lean-delivery.md +15 -0
  85. package/templates/modules/lean-delivery/module.meta.json +6 -0
  86. package/templates/modules/market-analysis/agents/ceo/skills/market-analysis.fallback.md +2 -2
  87. package/templates/modules/market-analysis/agents/cmo/skills/market-analysis.fallback.md +2 -2
  88. package/templates/modules/market-analysis/agents/product-owner/skills/market-analysis.fallback.md +2 -2
  89. package/templates/modules/market-analysis/agents/ux-researcher/skills/market-analysis.md +2 -2
  90. package/templates/modules/market-analysis/module.meta.json +1 -1
  91. package/templates/modules/market-analysis/skills/market-analysis.bar.md +1 -1
  92. package/templates/modules/market-analysis/skills/market-analysis.md +2 -2
  93. package/templates/modules/monitoring/agents/devops/skills/monitoring.md +1 -1
  94. package/templates/modules/monitoring/agents/engineer/skills/monitoring.fallback.md +2 -2
  95. package/templates/modules/monitoring/module.meta.json +1 -1
  96. package/templates/modules/monitoring/skills/monitoring.bar.md +1 -1
  97. package/templates/modules/monitoring/skills/monitoring.md +3 -3
  98. package/templates/modules/pr-review/README.md +10 -12
  99. package/templates/modules/pr-review/agents/code-reviewer/skills/code-review.md +16 -13
  100. package/templates/modules/pr-review/agents/devops/skills/infra-review.md +2 -2
  101. package/templates/modules/pr-review/agents/engineer/skills/pr-workflow.md +36 -26
  102. package/templates/modules/pr-review/agents/product-owner/skills/product-review.md +8 -8
  103. package/templates/modules/pr-review/agents/qa/skills/qa-review.md +10 -10
  104. package/templates/modules/pr-review/agents/security-engineer/skills/pr-security-review.md +5 -4
  105. package/templates/modules/pr-review/agents/ui-designer/skills/design-review.md +4 -4
  106. package/templates/modules/pr-review/agents/ux-researcher/skills/ux-review.md +3 -3
  107. package/templates/modules/pr-review/docs/pr-conventions.md +22 -26
  108. package/templates/modules/pr-review/module.meta.json +2 -2
  109. package/templates/modules/release-management/agents/ceo/skills/release-process.fallback.md +2 -2
  110. package/templates/modules/release-management/agents/engineer/skills/release-process.fallback.md +2 -2
  111. package/templates/modules/release-management/module.meta.json +3 -3
  112. package/templates/modules/release-management/skills/release-process.md +2 -2
  113. package/templates/modules/security-audit/agents/devops/skills/security-review.fallback.md +2 -2
  114. package/templates/modules/security-audit/agents/devops/skills/threat-model.fallback.md +2 -2
  115. package/templates/modules/security-audit/agents/engineer/skills/security-review.fallback.md +2 -2
  116. package/templates/modules/security-audit/agents/engineer/skills/threat-model.fallback.md +2 -2
  117. package/templates/modules/security-audit/module.meta.json +2 -2
  118. package/templates/modules/security-audit/skills/security-review.bar.md +1 -1
  119. package/templates/modules/security-audit/skills/security-review.md +1 -1
  120. package/templates/modules/security-audit/skills/threat-model.bar.md +1 -1
  121. package/templates/modules/security-audit/skills/threat-model.md +3 -3
  122. package/templates/modules/stall-detection/agents/ceo/heartbeat-section.md +1 -1
  123. package/templates/modules/stall-detection/agents/ceo/skills/stall-detection.md +19 -16
  124. package/templates/modules/tech-stack/agents/ceo/skills/tech-stack.fallback.md +2 -2
  125. package/templates/modules/tech-stack/module.meta.json +1 -1
  126. package/templates/modules/tech-stack/skills/tech-stack.bar.md +1 -1
  127. package/templates/modules/tech-stack/skills/tech-stack.md +2 -2
  128. package/templates/modules/triage/agents/ceo/skills/issue-triage.fallback.md +1 -1
  129. package/templates/modules/triage/agents/engineer/skills/issue-triage.fallback.md +1 -1
  130. package/templates/modules/triage/skills/issue-triage.md +1 -1
  131. package/templates/modules/user-testing/agents/ceo/skills/user-testing.fallback.md +2 -2
  132. package/templates/modules/user-testing/agents/product-owner/skills/user-testing.fallback.md +2 -2
  133. package/templates/modules/user-testing/agents/qa/skills/user-testing.md +2 -2
  134. package/templates/modules/user-testing/agents/ux-researcher/skills/user-testing.fallback.md +2 -2
  135. package/templates/modules/user-testing/module.meta.json +1 -1
  136. package/templates/modules/user-testing/skills/user-testing.md +2 -2
  137. package/templates/modules/vision-workshop/agents/ceo/skills/vision-workshop.md +2 -2
  138. package/templates/modules/vision-workshop/agents/ux-researcher/skills/vision-workshop.md +1 -1
  139. package/templates/modules/vision-workshop/module.meta.json +1 -1
  140. package/templates/modules/website-relaunch/agents/ui-designer/skills/site-audit.md +1 -1
  141. package/templates/modules/website-relaunch/module.meta.json +7 -7
  142. package/templates/modules/website-relaunch/skills/design-ingestion.md +1 -1
  143. package/templates/modules/website-relaunch/skills/site-audit.md +1 -1
  144. package/templates/presets/build-game/preset.meta.json +6 -6
  145. package/templates/presets/repo-maintenance/preset.meta.json +20 -21
  146. package/templates/roles/audio-designer/HEARTBEAT.md +1 -1
  147. package/templates/roles/ceo/AGENTS.md +2 -0
  148. package/templates/roles/ceo/HEARTBEAT.md +1 -1
  149. package/templates/roles/ceo/role.meta.json +1 -1
  150. package/templates/roles/cmo/HEARTBEAT.md +1 -1
  151. package/templates/roles/code-reviewer/AGENTS.md +3 -1
  152. package/templates/roles/code-reviewer/HEARTBEAT.md +1 -1
  153. package/templates/roles/cto/HEARTBEAT.md +1 -1
  154. package/templates/roles/customer-success/HEARTBEAT.md +1 -1
  155. package/templates/roles/devops/HEARTBEAT.md +1 -1
  156. package/templates/roles/engineer/AGENTS.md +3 -3
  157. package/templates/roles/engineer/HEARTBEAT.md +2 -2
  158. package/templates/roles/game-artist/HEARTBEAT.md +1 -1
  159. package/templates/roles/game-designer/HEARTBEAT.md +1 -1
  160. package/templates/roles/level-designer/HEARTBEAT.md +1 -1
  161. package/templates/roles/product-owner/AGENTS.md +1 -1
  162. package/templates/roles/product-owner/HEARTBEAT.md +2 -2
  163. package/templates/roles/qa/HEARTBEAT.md +4 -4
  164. package/templates/roles/security-engineer/AGENTS.md +2 -2
  165. package/templates/roles/security-engineer/HEARTBEAT.md +1 -1
  166. package/templates/roles/technical-writer/HEARTBEAT.md +1 -1
  167. package/templates/roles/ui-designer/HEARTBEAT.md +1 -1
  168. package/templates/roles/ux-researcher/HEARTBEAT.md +1 -1
@@ -8,6 +8,8 @@
8
8
 
9
9
  Where `<prefix>` is the company issue prefix (lowercase) and `<N>` is the issue number.
10
10
 
11
+ When Paperclip has already created a managed issue branch, preserve its supplied name. This naming convention applies only when you must create a branch yourself; it does not authorize switching or renaming the branch in a managed worktree.
12
+
11
13
  Examples: `yes-6/add-auth-endpoint`, `yes-12/fix-game-loop`
12
14
 
13
15
  ## PR Title
@@ -61,48 +63,42 @@ Apply one primary label: `feature`, `bug`, `docs`, `chore`, `infra`, `agent`.
61
63
 
62
64
  ## Review Workflow
63
65
 
64
- Review runs through the issue's native `executionPolicy` (stages), not separate child issues. The gate is **executed verification, not opinion**.
66
+ Review runs through the originating issue's `executionPolicy`, not separate child issues. The gate is **exact-head verification, not opinion**. By default, use role-based stages: QA review, Security review only for security-relevant changes, Product Owner approval, then the Code Reviewer merge gate. Omit absent roles and the executor. If `docs/lean-delivery.md` exists, the optional lean-delivery contract replaces this chain with one Code Reviewer merge gate and risk-triggered specialist evidence.
65
67
 
66
68
  1. **Engineer** resolves the project/worktree base ref before branching from `heartbeat-context` / project workspace metadata. Use the configured `repoRef`, `defaultRef`, or `executionWorkspacePolicy.workspaceStrategy.baseRef` exactly as Paperclip provides it. PRs must target the corresponding GitHub base and must not silently target the wrong branch.
67
69
  2. **Engineer** opens the PR on GitHub and adds the PR link as an issue comment.
68
- 3. **Engineer** sets the originating issue's `executionPolicy` stages, in order:
69
- - a `review` stage for **QA** when a QA agent is on the team (test adequacy / running the tests),
70
- - a `review` stage for the **Security Engineer** *only when the change is security-relevant* (auth, secrets, input boundaries, crypto, dependencies, infra exposure),
71
- - an `approval` stage for the **Product Owner** when one is on the team (intent, scope, acceptance),
72
- - a final `approval` stage for the **Code Reviewer** as the merge gate (a non-author — Paperclip excludes the issue's executor from every stage). When no Code Reviewer is on the team, do not set executionPolicy stages at all — use the PR Self-Merge Flow (the engineer opens the PR and merges via `gh pr merge <N> --merge`); other review roles may leave advisory comments but do not block.
73
- Resolve each role to its agentId. **Never list the issue's assignee/executor (whoever did the work — engineer, QA, or any role) as a participant in any stage** — the runtime excludes the original executor from every stage, so such a stage has no eligible participant and the issue stalls (`422 No eligible approval participant`). This applies to **every** stage, but is fatal in the **first** stage: a first stage listing only the assignee cannot be passed, so the issue stalls at stage 1 (`422 Only the active reviewer or approver can advance the current execution stage`) even when later stages have non-author participants. If the policy ended up with the assignee as the first/only participant of a stage, recover with `PATCH /api/issues/{id}` `{"executionPolicy":null}` (returns the issue to `in_progress`), then re-set stages with a non-author first stage — or, with no Code Reviewer, self-merge via `gh pr merge <N> --merge`. Non-engineer roles (e.g. QA) must not author implementation work and then self-review it; implementation work belongs to the engineer.
70
+ 3. **Engineer** sets the selected workflow's stages before entering review, with a final `approval` stage for the **Code Reviewer** as non-author merge gate. In lean delivery, this is the only stage and all triggered specialist handoffs must return before review begins. When no eligible non-author Code Reviewer is on the team, set no executionPolicy stages and use PR Self-Merge Flow.
71
+ Resolve each role to its agentId. **Never list the issue's assignee/executor (whoever did the work — engineer, QA, or any role) as a participant in any stage** — Paperclip selects each stage's participant by excluding the recorded return assignee (the implementation owner), so such a stage has no eligible participant and the request is rejected with `422 No eligible <review|approval> participant is configured for this issue`. This applies to **every** stage, but is fatal in the **first** stage: the PATCH that would open the review is refused outright, so the issue never reaches `in_review` even when later stages have non-author participants. (`422 Only the active reviewer or approver can advance the current execution stage` is a different error — it fires when someone who is not the active participant tries to advance a stage that is already pending.) If the policy ended up with the assignee as the first/only participant of a stage, recover with `PATCH /api/issues/{id}` `{"executionPolicy":null}` (returns the issue to `in_progress`), then re-set stages with a non-author first stage — or, with no Code Reviewer, self-merge via `gh pr merge <N> --merge`. Non-engineer roles (e.g. QA) must not author implementation work and then self-review it; implementation work belongs to the engineer.
74
72
  4. **Engineer** sets the issue to `in_review`.
75
- 5. **QA** (when present) reviews and records `approved`/`changes_requested` through the normal issue update route with executed evidence (see *Merge Rules*), preserving the issue-level review audit trail.
76
- 6. **Security Engineer** (when present as a stage) probes the security-relevant change and records a verdict stating what was checked.
77
- 7. Other domain reviewers may add **advisory, non-blocking** PR comments. They do not gate the merge.
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, 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.
73
+ 5. In standard review, each active QA/Security/Product stage records its verdict through the executionPolicy, which wakes the next participant. In lean delivery, these roles contribute bounded same-issue evidence only for a concrete trigger before the merge gate, returning the issue to the implementation owner rather than advancing policy stages. UI/UX and DevOps remain advisory in both modes.
74
+ 6. **Code Reviewer** verifies the exact head/base, required CI, and triggered evidence, merges into the configured base, confirms the merge landed, and only then records `approved` — which closes the issue.
75
+ 7. A correction returns to the same implementation owner, issue, branch, and PR. Board users are not execution participants for technical defects; use a first-class board decision only for irreducible product, legal, licensing, or residual-risk acceptance.
76
+ 8. Review rounds are capped by the runtime: after 3 consecutive agent-initiated `changes_requested` rounds on one stage (default; `executionPolicy.maxReviewRounds` overrides it), Paperclip keeps the stage pending and assigns it to the issue's responsible/creating human rather than the implementation owner. That escalation is expected behavior — comment the context that person needs and let them decide; their decision resets the counter.
80
77
 
81
78
  ## Review Roles
82
79
 
83
- - **QA** (`review` stage, when present): the substantive gate. Test coverage, regression risk, and validation — backed by tests that actually ran.
84
- - **Security Engineer** (`review` stage, only when the change is security-relevant): probes the diff for injection, auth, secrets, crypto, dependency, and exposure issues.
85
- - **Product Owner** (`approval` stage, when present): intent alignment, scope discipline, acceptance criteria.
86
- - **Code Reviewer** (`approval` stage, last, when present): the merge gate and hard-gate backstop — a non-author who verifies and lands the PR. See *Merge Rules*. When no Code Reviewer is present, the engineer self-merges via `gh pr merge <N> --merge` and no executionPolicy stages are set.
87
- - **Domain reviewers** (advisory): optional, non-blocking comments on correctness, clarity, design, accessibility, UX. They never gate the merge.
80
+ - **Product Owner**: defines acceptance before implementation; approves intent/scope in standard review. In lean delivery, returns only for a concrete unresolved decision.
81
+ - **QA / Security**: QA reviews by default and Security reviews security-relevant changes in standard mode. In lean delivery, both provide only risk-triggered bounded evidence.
82
+ - **UI/UX / DevOps**: risk-triggered advisory evidence on the originating issue in either mode.
83
+ - **Code Reviewer**: final non-author approval stage, exact-head verifier, and merge owner (sole stage in lean delivery). When absent or the author, the engineer self-merges with no executionPolicy stages.
88
84
 
89
85
  ## Merge Rules
90
86
 
91
- The hard gate is **executed verification**, enforced on the merge-gate stage (the Code Reviewer's) and independent of which reviewers are present.
87
+ The hard gate is **exact-head verification**, enforced by the Code Reviewer merge stage.
88
+
89
+ **When required company CI is available, it is authoritative on the exact reviewed head.** Cite the head SHA and required green checks, then run only the smallest independent check needed for a risky or unclear part of the diff. Do not duplicate the complete lint/test/typecheck/build suite. When company CI is unavailable, run the complete local gate once and record the real output.
92
90
 
93
- **The authoritative gate is the merge-gate agent's own executed verification: run the full lint/test/build locally and paste the real output into the merge-gate verdict before merging.** (When QA is present, QA already produced this evidence; the merge gate confirms it.) A verdict that does not cite executed verification — your pasted test/build output, or green company-owned CI — is not valid.
91
+ Selecting `ci-cd` does not prove required checks exist yet. Use the local fallback until they exist on the reviewed head. Pending or failed required checks are not unavailable CI: wait for or repair them, rather than substituting local output. Branch-protection requirements remain binding even for checks the company did not configure.
94
92
 
95
- **CI is a gate only when this company runs its own CI/CD** — i.e. the `ci-cd` module is active (you have the `ci-cd` skill and a `docs/CI-CD*.md` the company authored). In that case the company-owned CI (lint/test/build) must be **green** before the merge gate merges, with one narrow exception: the baseline-restore PR (`fix(ci): restore base CI`) may merge when the base branch's own CI is red and the PR carries cited local-executed verification that its scoped diff reduces the base failure set (remaining failing checks exactly the inherited baseline set). See `../../docs/git-workflow.md` → *Base-branch-red deadlock* and *Narrow exception*. A feature PR on a red company-owned base is never merged; the merge gate records `changes_requested` citing `BASE-BRANCH-RED` and routes back with "waiting-on-baseline".
93
+ **CI is a gate only when this company runs its own CI/CD** — i.e. the `ci-cd` module is active (you have the `ci-cd` skill and a `docs/CI-CD*.md` the company authored). In that case the company-owned CI (lint/test/build) must be **green** before the merge gate merges, with one narrow exception: the baseline-restore PR (`fix(ci): restore base CI`) may merge when the base branch's own CI is red and the PR carries cited local-executed verification that its scoped diff reduces the base failure set (remaining failing checks exactly the inherited baseline set). See `docs/git-workflow.md` → *Base-branch-red deadlock* and *Narrow exception*. A feature PR on a red company-owned base is never merged; the merge gate records `changes_requested` citing `BASE-BRANCH-RED` and routes back with "waiting-on-baseline".
96
94
 
97
- **When the company did NOT set up CI/CD** (no `ci-cd` module): treat any pre-existing checks on the repository as **advisory signals, not a merge gate**. Do not block or refuse a merge solely because a repo-native check the company never configured is red or flaky — your pasted local lint/test/build output is the sufficient and authoritative gate. (Investigate a red repo check if it points at a real defect in the diff, but never let an external/inherited CI you don't own deadlock the queue.)
98
- - The Product Owner's `approval` stage must be approved.
99
- - QA's `review` stage (when present) and the Security Engineer's `review` stage (when added) must be approved.
100
- - Domain reviewers are advisory — blocking only when they escalate a concern that QA, the Security Engineer, or the merge gate then acts on.
101
- - No force pushes.
95
+ **When the company did NOT set up CI/CD** (no `ci-cd` module): existing required checks and repository rules remain binding, regardless of who configured them. Only optional, non-required checks are advisory. Investigate failures that indicate a defect in the diff; use the complete local gate when no required CI exists. Do not disable protections or bypass a required failing check to make the workflow fit shared credentials.
96
+ - Triggered specialist evidence must be resolved on the originating issue before merge; completed evidence is not replayed after every correction.
97
+ - No force pushes to the base or someone else's branch. After rebasing your own issue branch, use only `--force-with-lease`.
102
98
  - Merge using `gh pr merge <number> --merge`.
103
99
  - Before merge, verify the PR base matches the configured project/worktree base from `heartbeat-context`. Retarget before review/merge if needed.
104
100
  - The Code Reviewer is the merge owner (a non-author); the engineer who wrote the PR cannot merge it.
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`).
101
+ - The merge gate is the **last stage** (the only stage in lean delivery) and must be a non-author. The issue's executor is never a participant.
106
102
  - 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
103
  - 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
104
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pr-review",
3
- "description": "Coordinates substantive PR review through the issue's native executionPolicy. The merge gate is executed verification — green CI, or running the tests/build and pasting the output — not opinion. QA is the substantive reviewer when present; the Security Engineer reviews only security-relevant changes; the Code Reviewer is the non-author merge gate that verifies and lands the PR (Paperclip excludes the issue's author from every stage, so the engineer cannot merge their own work).",
3
+ "description": "Coordinates PR review through native executionPolicy stages: QA review, Product approval, then a non-author Code Reviewer merge gate, using roles present. Select the optional lean-delivery module to replace this chain with one merge gate and risk-triggered specialist evidence. Without a Code Reviewer, use the self-merge path.",
4
4
  "requires": [
5
5
  "github-repo"
6
6
  ],
@@ -25,7 +25,7 @@
25
25
  "approver": "product-owner",
26
26
  "mergeGate": "code-reviewer"
27
27
  },
28
- "description": "Document and verify the PR workflow via the issue's executionPolicy. The merge gate is executed verification: with CI, builds must be green before merge; without CI, the merge-gate agent runs the test suite/build and pastes the output before merging. Stages: a review stage for QA when present, a review stage for the Security Engineer only on security-relevant changes, an approval stage for the Product Owner when present, and a final approval stage for the Code Reviewer as the merge gate (a non-author woken last to merge the PR before recording approval, which closes the issue). Never list the issue's executor/author as a participant in any stage — Paperclip excludes the original executor, so a stage whose only participant is the author has no eligible participant and the issue stalls (`422 No eligible approval participant is configured for this issue`); this is why the merge gate is the Code Reviewer (a non-author), not the engineer. The merge gate must be the last stage so the Product Owner's approval does not auto-close the issue with the PR still open. Other domain reviewers add advisory, non-blocking comments. Optional branch protection may disable direct pushes, but do not require GitHub-native approving reviews unless the project has distinct non-author GitHub reviewer credentials. When no code-reviewer role is present in the company, use PR-Self-Merge mode instead: the engineer opens the PR normally but skips executionPolicy stages entirely and merges via `gh pr merge <N> --merge` themselves. Other review roles (qa, product-owner, security-engineer, ui-designer, ux-researcher, devops) may leave advisory comments on the PR but do not block the merge. Never set up executionPolicy stages when there is no eligible non-author merge gate — the issue will stall with `422 No eligible approval participant`."
28
+ "description": "Document and verify the selected PR workflow via the issue's executionPolicy and docs/pr-conventions.md. Standard stages are QA review when present, Security review only for a security-relevant change, Product Owner approval when present, and a final non-author Code Reviewer approval/merge gate. If docs/lean-delivery.md exists, it replaces the standard chain with exactly one Code Reviewer stage; triggered specialists provide bounded same-issue evidence before that gate, not serial stages. The implementation owner keeps the same issue, branch, and PR through corrections. Verify required company CI on the exact reviewed head; until required checks exist, run the complete local gate once. Pending or failed required checks must be awaited or repaired, not bypassed with local output. The Code Reviewer merges before recording approved, so the issue cannot become done with an open PR. Never list the executor/author as a stage participant: Paperclip excludes the original executor and an author-only stage stalls with 422. Technical corrections return to the implementation owner, not the board user. Use first-class interactions/approvals for genuine human decisions. When no eligible non-author Code Reviewer is present, set no executionPolicy stages and use PR-Self-Merge mode (`gh pr merge <N> --merge`)."
29
29
  }
30
30
  ]
31
31
  }
@@ -4,13 +4,13 @@ You are acting as a fallback for this capability because neither a devops agent
4
4
 
5
5
  ## What you should do
6
6
 
7
- 1. Check if `../../docs/RELEASE-PROCESS.md` exists. If not, create it with:
7
+ 1. Check if `docs/RELEASE-PROCESS.md` exists. If not, create it with:
8
8
  - Versioning convention (SemVer: `MAJOR.MINOR.PATCH`)
9
9
  - Branch and tagging strategy (e.g., tag `vX.Y.Z` on the default branch after each release)
10
10
  - Changelog format: Conventional Commits → CHANGELOG.md grouping
11
11
  - Note: "This document was created by the CEO as a placeholder. A devops or engineer agent should implement and automate the release pipeline."
12
12
  2. Check if the project has a CHANGELOG.md. If not, create one with a `## Unreleased` section listing the current commits since the last tag (use `git log --oneline`).
13
- 3. Create a follow-up issue: "Implement automated release pipeline" assigned to `capability:ci-cd` or directly to an engineer, linking to `../../docs/RELEASE-PROCESS.md`.
13
+ 3. Create a follow-up issue: "Implement automated release pipeline" assigned to `capability:ci-cd` or directly to an engineer, linking to `docs/RELEASE-PROCESS.md`.
14
14
  4. Mark this issue done. **Do not push tags, create GitHub releases, or modify version files** — those actions require a devops or engineer agent.
15
15
 
16
16
  ## Rules
@@ -4,9 +4,9 @@ DevOps primarily owns the release process. You are the fallback — step in only
4
4
 
5
5
  ## Release Process (Fallback)
6
6
 
7
- 1. If no `../../docs/RELEASE-PROCESS.md` exists and DevOps hasn't started:
7
+ 1. If no `docs/RELEASE-PROCESS.md` exists and DevOps hasn't started:
8
8
  - Check the project for existing versioning (git tags, package.json version)
9
- - Document the current state in `../../docs/RELEASE-PROCESS.md`
9
+ - Document the current state in `docs/RELEASE-PROCESS.md`
10
10
  - If no process exists, set up basic semver + CHANGELOG.md
11
11
  - Mark the document as **provisional** — it needs DevOps review for CI integration and rollback procedures
12
12
  2. If DevOps is active, skip this entirely.
@@ -19,16 +19,16 @@
19
19
  {
20
20
  "title": "Document or establish release process",
21
21
  "assignTo": "capability:release-process",
22
- "description": "Review the current release workflow. If one exists, document it in ../../docs/RELEASE-PROCESS.md. If not, establish a semver + changelog workflow with tagging conventions."
22
+ "description": "Review the current release workflow. If one exists, document it in docs/RELEASE-PROCESS.md. If not, establish a semver + changelog workflow with tagging conventions."
23
23
  }
24
24
  ],
25
25
  "routines": [
26
26
  {
27
- "name": "Release readiness check",
27
+ "title": "Release readiness check",
28
28
  "description": "Check for unreleased changes and cut a release if warranted.",
29
29
  "assignTo": "capability:release-process",
30
30
  "schedule": "0 9 * * 1",
31
- "concurrencyPolicy": "forbid"
31
+ "concurrencyPolicy": "skip_if_active"
32
32
  }
33
33
  ]
34
34
  }
@@ -10,7 +10,7 @@ You are responsible for managing the release lifecycle — versioning, changelog
10
10
  - A release branch strategy or tag-based releases
11
11
  - CI/CD release automation (GitHub Actions release workflow, etc.)
12
12
 
13
- 2. **Establish or document the release process** in `../../docs/RELEASE-PROCESS.md`:
13
+ 2. **Establish or document the release process** in `docs/RELEASE-PROCESS.md`:
14
14
  - **Versioning** — Semantic Versioning (MAJOR.MINOR.PATCH). Document what constitutes each level.
15
15
  - **Changelog** — Keep a CHANGELOG.md following Keep a Changelog format. Update it with every release.
16
16
  - **Tagging** — Tag releases as `vX.Y.Z`. Tags trigger release workflows if CI is configured.
@@ -34,7 +34,7 @@ You are responsible for managing the release lifecycle — versioning, changelog
34
34
  When assigned a "Release readiness check" routine-run issue:
35
35
 
36
36
  1. Check if unreleased changes have accumulated since the last release: `git log <last-tag>..HEAD --oneline`. If no unreleased commits, mark done.
37
- 2. Review `../../docs/CHANGELOG.md` or commit log for breaking changes, new features, or bug fixes that warrant a version bump.
37
+ 2. Review `docs/CHANGELOG.md` or commit log for breaking changes, new features, or bug fixes that warrant a version bump.
38
38
  3. Run the full test suite and build. If failing, create a blocking issue and escalate before continuing.
39
39
  4. If a release is warranted, follow the release steps in the *Setup* section of this skill to cut the release. Otherwise leave a comment noting the check result and mark the routine issue done.
40
40
 
@@ -4,10 +4,10 @@ The Security Engineer owns security review above you. You are the fallback — s
4
4
 
5
5
  ## Security Review (Fallback)
6
6
 
7
- 1. If no `../../docs/SECURITY-REVIEW.md` exists and the Security Engineer hasn't started:
7
+ 1. If no `docs/SECURITY-REVIEW.md` exists and the Security Engineer hasn't started:
8
8
  - Audit infrastructure config: Dockerfiles, CI/CD pipelines, cloud IAM, secrets management
9
9
  - Check deployment security: TLS, security headers, network policies
10
- - Document in `../../docs/SECURITY-REVIEW.md`
10
+ - Document in `docs/SECURITY-REVIEW.md`
11
11
  - Tag the Security Engineer to expand with application-layer review
12
12
  2. If the Security Engineer is active, skip this entirely.
13
13
 
@@ -4,10 +4,10 @@ The Security Engineer owns threat modeling above you. You are the fallback — s
4
4
 
5
5
  ## Threat Model (Fallback)
6
6
 
7
- 1. If no `../../docs/THREAT-MODEL.md` exists and the Security Engineer hasn't started:
7
+ 1. If no `docs/THREAT-MODEL.md` exists and the Security Engineer hasn't started:
8
8
  - Map the infrastructure attack surface: exposed ports, network boundaries, cloud IAM
9
9
  - Identify deployment-specific risks: container escapes, supply chain, CI/CD pipeline security
10
- - Document in `../../docs/THREAT-MODEL.md`
10
+ - Document in `docs/THREAT-MODEL.md`
11
11
  - Tag the Security Engineer to expand with application-layer analysis
12
12
  2. If the Security Engineer is active, skip this entirely.
13
13
 
@@ -4,10 +4,10 @@ The Security Engineer and DevOps own security review above you. You are the last
4
4
 
5
5
  ## Security Review (Fallback)
6
6
 
7
- 1. If no `../../docs/SECURITY-REVIEW.md` exists and the Security Engineer hasn't started:
7
+ 1. If no `docs/SECURITY-REVIEW.md` exists and the Security Engineer hasn't started:
8
8
  - Run `npm audit` (or equivalent) and document critical CVEs
9
9
  - Check for obvious issues: hardcoded secrets, missing input validation, permissive CORS
10
- - Document in `../../docs/SECURITY-REVIEW.md`
10
+ - Document in `docs/SECURITY-REVIEW.md`
11
11
  - Tag the Security Engineer or DevOps to expand the review
12
12
  2. If the Security Engineer or DevOps is active, skip this entirely.
13
13
 
@@ -4,10 +4,10 @@ The Security Engineer and DevOps own threat modeling above you. You are the last
4
4
 
5
5
  ## Threat Model (Fallback)
6
6
 
7
- 1. If no `../../docs/THREAT-MODEL.md` exists and the Security Engineer hasn't started:
7
+ 1. If no `docs/THREAT-MODEL.md` exists and the Security Engineer hasn't started:
8
8
  - Write a brief security overview: main attack surfaces, obvious risks
9
9
  - Focus on the OWASP Top 10 most relevant to the project
10
- - Document in `../../docs/THREAT-MODEL.md`
10
+ - Document in `docs/THREAT-MODEL.md`
11
11
  - Tag the Security Engineer or DevOps to expand and maintain the model
12
12
  2. If the Security Engineer or DevOps is active, skip this entirely.
13
13
 
@@ -25,12 +25,12 @@
25
25
  {
26
26
  "title": "Conduct initial threat model",
27
27
  "assignTo": "capability:threat-model",
28
- "description": "Identify attack surfaces, trust boundaries, and data flows using STRIDE methodology. Document the threat model in ../../docs/THREAT-MODEL.md with risk ratings and mitigation recommendations."
28
+ "description": "Identify attack surfaces, trust boundaries, and data flows using STRIDE methodology. Document the threat model in docs/THREAT-MODEL.md with risk ratings and mitigation recommendations."
29
29
  },
30
30
  {
31
31
  "title": "Perform initial security review",
32
32
  "assignTo": "capability:security-review",
33
- "description": "Audit the codebase for OWASP Top 10 vulnerabilities, dependency CVEs, secrets exposure, and configuration issues. Document findings in ../../docs/SECURITY-REVIEW.md with severity ratings."
33
+ "description": "Audit the codebase for OWASP Top 10 vulnerabilities, dependency CVEs, secrets exposure, and configuration issues. Document findings in docs/SECURITY-REVIEW.md with severity ratings."
34
34
  }
35
35
  ]
36
36
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  A good security review:
4
4
 
5
- - A `../../docs/SECURITY-REVIEW.md` with findings that include: severity (Critical / High / Medium / Low), exact file path and line number, the evidence (code snippet or reproduction step), and a specific recommended fix.
5
+ - A `docs/SECURITY-REVIEW.md` with findings that include: severity (Critical / High / Medium / Low), exact file path and line number, the evidence (code snippet or reproduction step), and a specific recommended fix.
6
6
  - A dependency report with CVE details from `npm audit` or equivalent. Critical and High findings have follow-up issues created.
7
7
 
8
8
  Not done:
@@ -11,7 +11,7 @@ You own security code review for the project. This catches vulnerabilities in th
11
11
  - **Data exposure**: Leaked secrets, verbose errors, unnecessary data in responses
12
12
  - **Dependencies**: Known CVEs in dependencies (`npm audit` or equivalent)
13
13
  - **Configuration**: Missing security headers, permissive CORS, debug mode in production
14
- 2. Document in `../../docs/SECURITY-REVIEW.md`:
14
+ 2. Document in `docs/SECURITY-REVIEW.md`:
15
15
  - **Findings** with severity (Critical/High/Medium/Low), location, and evidence
16
16
  - **Recommendations** for each finding with specific fix guidance
17
17
  - **Dependency report** with CVE details
@@ -2,7 +2,7 @@
2
2
 
3
3
  A good threat model:
4
4
 
5
- - A `../../docs/THREAT-MODEL.md` with a system overview that includes components, data flows, and explicit trust boundaries; STRIDE threats against the identified attack surfaces; a risk rating (Likelihood × Impact) for each threat; and mitigations for every Critical and High risk.
5
+ - A `docs/THREAT-MODEL.md` with a system overview that includes components, data flows, and explicit trust boundaries; STRIDE threats against the identified attack surfaces; a risk rating (Likelihood × Impact) for each threat; and mitigations for every Critical and High risk.
6
6
  - Critical and High risks have corresponding follow-up issues with specific remediation tasks.
7
7
 
8
8
  Not done:
@@ -4,15 +4,15 @@ You own threat modeling for the project. This identifies security risks before t
4
4
 
5
5
  ## Threat Modeling Process
6
6
 
7
- 1. Review the system architecture — if `../../docs/ARCHITECTURE.md` exists, use it as the starting point. Otherwise, analyze the codebase structure directly.
8
- 2. Document in `../../docs/THREAT-MODEL.md`:
7
+ 1. Review the system architecture — if `docs/ARCHITECTURE.md` exists, use it as the starting point. Otherwise, analyze the codebase structure directly.
8
+ 2. Document in `docs/THREAT-MODEL.md`:
9
9
  - **System overview**: Components, data flows, trust boundaries
10
10
  - **Attack surfaces**: Entry points, APIs, user inputs, external integrations
11
11
  - **Threats (STRIDE)**: Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege
12
12
  - **Risk ratings**: Likelihood x Impact = Risk (Critical/High/Medium/Low)
13
13
  - **Mitigations**: Recommended controls for each threat
14
14
  3. Create follow-up issues for Critical and High risks:
15
- - `POST /api/companies/{companyId}/issues` with specific remediation tasks. Include the active `projectId` (and `goalId` / `parentId` when applicable). For top-level issues (no `parentId`), also include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree; subissues set `parentId` and omit it.
15
+ - `POST /api/companies/{companyId}/issues` with specific remediation tasks. Include `projectId` plus `goalId` / `parentId` when applicable, and set `executionWorkspaceSettings: { "mode": "isolated_workspace" }` for top-level repository implementation issues and subissues when the instance feature, project policy, and initialized repository support isolation. Otherwise follow the rendered project policy and avoid concurrent shared-checkout writes. Reuse only when explicitly required via `inheritExecutionWorkspaceFromIssueId`; keep API-only work project-detached.
16
16
  4. Record summary in your daily notes
17
17
 
18
18
  ## Rules
@@ -1,3 +1,3 @@
1
1
  ## Stall Detection Routine
2
2
 
3
- Do not scan for stalled work during a normal heartbeat. When you are assigned a routine-run issue titled like "Stall detection", use `$AGENT_HOME/skills/stall-detection.md`, then summarize findings on the routine issue and exit.
3
+ Do not scan for stalled work during a normal heartbeat. When you are assigned a routine-run issue titled like "Stall detection", use your installed `stall-detection` skill, then summarize findings on the routine issue and exit.
@@ -2,7 +2,7 @@
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.
5
+ This routine is the **periodic backstop**. Do not create universal task-watchdog, queue-drain, status-repair, or workspace-cleanup wrapper issues. Prefer the originating issue's real owner, blockers, executionPolicy, interactions, and normal wake paths. Add a watchdog only when the issue explicitly documents a bounded recovery requirement those paths cannot cover.
6
6
 
7
7
  ## When To Use This Skill
8
8
 
@@ -28,17 +28,19 @@ Use this only when the current assigned issue/routine is titled like "Stall dete
28
28
 
29
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.
30
30
 
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.
31
+ **Paperclip repairs a lost review path itself.** The review path is a maintained invariant: when an `in_review` issue loses its path (a user comment supersedes the pending interaction, a monitor is exhausted, a run ends without restoring one), Paperclip queues a wake with reason `issue_review_path_lost` and drives its own recovery. If `GET /api/issues/{id}/diagnostics/wakes` shows that wake queued or recently claimed, Paperclip owns the next action — record it as `WAITING-REVIEW-PATH-RECOVERY` and do **not** intervene. Only treat the issue as stalled when that recovery is absent, or has itself gone stale/`failed`.
32
+
33
+ 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`, `WAITING-REVIEW-PATH-RECOVERY`, or the matching owner in the routine summary and do not nudge, reassign, or change status.
32
34
  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.
35
+ 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, or mark it `done` if already accepted. Keep recovery on the originating issue unless independent work is genuinely required. For PR work, restore the selected policy from `docs/pr-conventions.md` if it exists: standard role-based stages, or exactly one non-author Code Reviewer stage when `docs/lean-delivery.md` exists. With no eligible non-author Code Reviewer, return it to the engineer for self-merge.
34
36
 
35
37
  ## Author-only first stage
36
38
 
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.
39
+ Read `GET /api/issues/{id}` and locate the stage named by `executionState.currentStageId`; it need not be the first stage. Paperclip excludes `executionState.returnAssignee` (the implementation owner) when selecting a participant. Compare principals by both type and id. **Do not compare stage participants with `assigneeAgentId` to infer self-review:** Paperclip normally reassigns the issue to the active reviewer, so that match describes a healthy review. A stage is author-only only when every configured participant is the recorded return assignee and there is no eligible participant. If execution state is missing, diagnose with the issue's history/recovery actions rather than guessing who authored the work. If another explicit waiting path is pending, leave it intact.
38
40
 
39
41
  1. Flag it in the routine-run summary as `AUTHOR-ONLY-STAGE`.
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`).
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.
42
+ 2. When no other waiting path is pending, leave a structured comment identifying `currentStageId`, `returnAssignee`, configured participants, and the evidence that no eligible participant exists.
43
+ 3. Only with authority to repair this policy, clear it using `PATCH /api/issues/{id}` with `{"executionPolicy":null}`. When a pending execution state has a return assignee, Paperclip restores `in_progress` and that owner; re-read the response rather than assuming the transition. Restore the selected policy with a non-author gate before resubmitting, or return the same issue to its implementation owner for self-merge when no eligible Code Reviewer exists. Never clear a healthy reviewer stage or a human escalation hold. If authorization is denied, report the exact denial to the responsible board operator and stop retrying.
42
44
 
43
45
  ## Dependency-ready but still blocked
44
46
 
@@ -46,6 +48,8 @@ Treat `GET /api/issues/{id}/diagnostics/blockers` as authoritative. When `readin
46
48
 
47
49
  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.
48
50
 
51
+ A `cancelled` blocker does **not** resolve a dependency. Remove that blocker relation from every dependent when the dependency is no longer required, or replace it with the issue that now owns the work. Do not force a dependent active while diagnostics still list the cancelled blocker as unresolved.
52
+
49
53
  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
54
  2. Leave a structured comment with blocker readiness and wake-diagnostic evidence.
51
55
  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`.
@@ -53,17 +57,14 @@ If `readiness.pendingFinalizeBlockerCount` is non-zero, a blocker may be `done`
53
57
 
54
58
  ## PR-queue hygiene
55
59
 
56
- As part of every stall-detection run, scan the repository's open PR queue for pile-ups and red/DIRTY state — the issue queue alone does not surface a growing PR backlog. This scan only applies when the `github-repo` module is active (so `gh` is configured and a repository exists). Discover the repo from the project workspace metadata (`repoUrl` / `repoRef`) or your `heartbeat-context`; for multi-repo companies, scan each project's repo.
60
+ When `github-repo` is active, reconcile each configured project repository's open PRs against their originating Paperclip issues. Resolve repositories only from project metadata/workspace origin and identify every PR as `owner/repo#number`.
57
61
 
58
- 1. List open PRs: `gh pr list --repo <owner/repo> --state open --json number,title,mergeStateStatus,headRefName,baseRefName`.
59
- 2. Count PRs in each state: UNSTABLE (mergeable but CI failing), DIRTY/CONFLICTING, CLEAN.
60
- 3. Escalate a triage issue when any threshold is met:
61
- - **3 or more** UNSTABLE or DIRTY/CONFLICTING PRs, or
62
- - **8 or more** open PRs total.
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.
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).
65
- 6. Assign the triage issue to the CEO (or the engineer owning the red base) and summarize on the routine-run issue.
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.
62
+ 1. List open PRs and compare each with its originating issue, exact head/base, required CI, merge state, owner, and next gate.
63
+ 2. Open PR count is a queue-health signal, not a hard WIP cap. Keep independent acceptance-ready work moving while routing stale, conflicting, red, or ownerless PRs to their existing owners; never create dependencies merely because other PRs are open.
64
+ 3. Route CI/runner failures, stale bases, conflicts, branch protection, packaging, deployment, and release mechanics on the **existing originating issue and PR** to the operational owner. Never open a replacement PR to escape a blocker.
65
+ 4. A `done` issue with an open PR is an invariant violation. Reopen/route the originating issue when work remains, or close the obsolete PR with evidence. Do not create a separate merge, status, evidence, or cleanup issue.
66
+ 5. Detect base-branch-red before blaming feature diffs. Restore the base through one explicitly owned baseline fix, then rebase and drain existing PRs.
67
+ 6. Summarize repository counts and exact existing issue/PR next actions on the routine-run issue.
67
68
 
68
69
  ## Rules
69
70
 
@@ -71,4 +72,6 @@ As part of every stall-detection run, scan the repository's open PR queue for pi
71
72
  - Do not interrupt running agents.
72
73
  - Do not close or cancel another agent's work unless the issue explicitly grants that authority.
73
74
  - Be specific: which issue, which agent, last activity, why stalled, and who owns the next action.
75
+ - Do not poll ordinary review stages, PR-capacity waits, or workspace cleanup with a fixed-cadence monitor when a live owner, blocker, participant, or wake path exists. For a named external transition such as a running CI job, use a bounded monitor no more often than every 15 minutes unless the issue defines a tighter SLA; set attempt/timeout bounds and comment only on a state change or terminal checkpoint.
76
+ - **A `403 ... outside this actor's authorization boundary` is a final answer, not a retry.** Paperclip contains cross-issue agent writes: a repair you are not authorized to make on someone else's issue will be denied no matter how often you retry. Record the denial (issue id, attempted change, denial reason) in the routine summary and escalate to the responsible human/board operator in the same pass. Never loop on the same denied call.
74
77
  - **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.
@@ -4,9 +4,9 @@ The Engineer primarily owns technology decisions. You are the fallback — step
4
4
 
5
5
  ## Tech Stack Evaluation (Fallback)
6
6
 
7
- 1. If no `../../docs/TECH-STACK.md` exists and no engineer has started:
7
+ 1. If no `docs/TECH-STACK.md` exists and no engineer has started:
8
8
  - Make pragmatic default choices based on the project type
9
- - Document in `../../docs/TECH-STACK.md` with clear rationale
9
+ - Document in `docs/TECH-STACK.md` with clear rationale
10
10
  - Create an issue for the engineer to review and refine the choices
11
11
  2. If an engineer is active, skip this entirely.
12
12
 
@@ -15,7 +15,7 @@
15
15
  {
16
16
  "title": "Evaluate and document technology choices",
17
17
  "assignTo": "capability:tech-stack",
18
- "description": "Assess technology options for the project based on goals, constraints, and team capabilities. Document decisions, trade-offs, and rationale in ../../docs/TECH-STACK.md."
18
+ "description": "Assess technology options for the project based on goals, constraints, and team capabilities. Document decisions, trade-offs, and rationale in docs/TECH-STACK.md."
19
19
  }
20
20
  ]
21
21
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  A good tech stack evaluation:
4
4
 
5
- - A `../../docs/TECH-STACK.md` that lists the chosen technology per layer (language, framework, database, infra) with version, the rationale for each choice, and the alternatives that were considered and rejected.
5
+ - A `docs/TECH-STACK.md` that lists the chosen technology per layer (language, framework, database, infra) with version, the rationale for each choice, and the alternatives that were considered and rejected.
6
6
  - Covers at least: team familiarity, ecosystem maturity, performance trade-offs, and cost for each layer.
7
7
 
8
8
  Not done:
@@ -9,13 +9,13 @@ You own technology decisions. Evaluate options and document choices that align w
9
9
  - List viable options
10
10
  - Evaluate against criteria: team familiarity, ecosystem maturity, performance, cost
11
11
  - Document the decision and rationale
12
- 3. Write the complete tech stack to `../../docs/TECH-STACK.md`:
12
+ 3. Write the complete tech stack to `docs/TECH-STACK.md`:
13
13
  - **Chosen stack**: Technology per layer with version
14
14
  - **Rationale**: Why each choice was made
15
15
  - **Trade-offs**: What was considered and rejected, and why
16
16
  - **Dependencies**: Key libraries and their purposes
17
17
  4. Create setup issues if needed:
18
- - `POST /api/companies/{companyId}/issues` for initial project scaffolding. Include the active `projectId` (and `goalId` / `parentId` when applicable). For top-level issues (no `parentId`), also include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree; subissues set `parentId` and omit it.
18
+ - `POST /api/companies/{companyId}/issues` for initial project scaffolding. Include `projectId` plus `goalId` / `parentId` when applicable, and set `executionWorkspaceSettings: { "mode": "isolated_workspace" }` for top-level repository implementation issues and subissues when the instance feature, project policy, and initialized repository support isolation. Otherwise follow the rendered project policy and avoid concurrent shared-checkout writes. Reuse only when explicitly required via `inheritExecutionWorkspaceFromIssueId`; keep API-only work project-detached.
19
19
 
20
20
  ## Rules
21
21
 
@@ -8,7 +8,7 @@ The Product Owner or Engineer primarily owns issue triage. You are the fallback
8
8
  2. If issues are piling up without responses:
9
9
  - Classify each as bug, feature, question, or invalid
10
10
  - Respond with a brief acknowledgment
11
- - Create Paperclip tasks for actionable items with priority set. When creating Paperclip issues from triaged GitHub items, include `executionWorkspaceSettings: { mode: 'isolated_workspace' }` in the issue creation payload.
11
+ - Create Paperclip tasks for actionable items with priority set. When creating Paperclip issues from triaged GitHub items, include `executionWorkspaceSettings: { mode: 'isolated_workspace' }` for repository implementation only when the instance feature, project policy, and initialized repository support isolation; otherwise follow the rendered project policy and avoid concurrent shared-checkout writes. Keep API-only work project-detached.
12
12
  - Close duplicates and invalid issues with explanation
13
13
  3. If the Product Owner or Engineer is active and triaging, skip this entirely.
14
14
 
@@ -9,7 +9,7 @@ The Product Owner primarily owns issue triage. You are the engineering fallback:
9
9
  3. For each technical issue:
10
10
  - Reproduce or inspect enough to classify it as bug, feature, question, duplicate, invalid, or needs-info.
11
11
  - Apply labels and priority based on user impact and technical severity.
12
- - Create Paperclip issues for actionable bugs or engineering work. Top-level Paperclip issues should include `executionWorkspaceSettings: { "mode": "isolated_workspace" }`; subissues set `parentId` and omit workspace settings.
12
+ - Create Paperclip issues for actionable bugs or engineering work. Top-level issues and subissues include `executionWorkspaceSettings: { "mode": "isolated_workspace" }` when the instance feature, project policy, and initialized repository support isolation; otherwise follow the rendered project policy and avoid concurrent shared-checkout writes. Explicit same-change reuse uses `inheritExecutionWorkspaceFromIssueId`.
13
13
  - Ask concise follow-up questions when reproduction details are missing.
14
14
  4. Leave product-priority and roadmap tradeoffs for the Product Owner or CEO.
15
15
 
@@ -16,7 +16,7 @@ Use this only when the current assigned issue/routine asks for GitHub issue tria
16
16
  - Set priority P0-P3; P0 maps to urgent Paperclip priority.
17
17
  - Apply labels with `gh issue edit <number> --add-label "<type>,<priority>"`.
18
18
  - Respond to the reporter with acknowledgement, follow-up questions, or a polite close reason.
19
- - For actionable issues, create a corresponding Paperclip issue via `POST /api/companies/{companyId}/issues`. Include GitHub issue URL/number, active `projectId`, and `goalId` / `parentId` when applicable. For top-level issues (no `parentId`), also include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree; subissues set `parentId` and omit it.
19
+ - For actionable issues, create a corresponding Paperclip issue via `POST /api/companies/{companyId}/issues`. Include the GitHub URL/number, `projectId`, and `goalId` / `parentId` when applicable; set `executionWorkspaceSettings: { "mode": "isolated_workspace" }` for top-level repository implementation issues and subissues when the instance feature, project policy, and initialized repository support isolation. Otherwise follow the rendered project policy and avoid concurrent shared-checkout writes. Reuse only when explicitly required via `inheritExecutionWorkspaceFromIssueId`; keep API-only work project-detached.
20
20
  4. Link bidirectionally: GitHub comment references the Paperclip issue, Paperclip issue references GitHub.
21
21
  5. Summarize triage results on the assigned triage issue/routine and mark it done.
22
22
 
@@ -4,10 +4,10 @@ QA, the UX Researcher, and PO all own usability evaluations above you. You are t
4
4
 
5
5
  ## User Testing (Fallback)
6
6
 
7
- 1. If no `../../docs/USER-TESTING.md` exists and no one has started:
7
+ 1. If no `docs/USER-TESTING.md` exists and no one has started:
8
8
  - Create a basic heuristic checklist covering the core user flow
9
9
  - Identify the top 3-5 usability concerns based on product goals
10
- - Document in `../../docs/USER-TESTING.md`
10
+ - Document in `docs/USER-TESTING.md`
11
11
  - Mark all findings as **provisional** — they need validation by QA, a researcher, or PO
12
12
  2. If QA, the researcher, or PO is active, skip this entirely.
13
13
 
@@ -4,10 +4,10 @@ QA and the UX Researcher primarily own usability evaluation. You are the fallbac
4
4
 
5
5
  ## User Testing (Fallback)
6
6
 
7
- 1. If no `../../docs/USER-TESTING.md` exists and no one above you has started:
7
+ 1. If no `docs/USER-TESTING.md` exists and no one above you has started:
8
8
  - Create a basic test plan covering the most critical user flows
9
9
  - Evaluate against acceptance criteria from the product roadmap
10
- - Document findings in `../../docs/USER-TESTING.md`
10
+ - Document findings in `docs/USER-TESTING.md`
11
11
  - Mark all findings as **provisional** — they need validation by QA or a researcher
12
12
  2. If QA or the researcher is active, skip this entirely.
13
13
 
@@ -8,7 +8,7 @@ You are the QA engineer and user-facing quality is your core domain. You own tes
8
8
  2. Design test scenarios covering critical user flows
9
9
  3. Define success metrics for each scenario (task completion, error rate, time-on-task)
10
10
  4. Build test automation for repeatable user flow validation
11
- 5. Execute evaluations and document in `../../docs/USER-TESTING.md`:
11
+ 5. Execute evaluations and document in `docs/USER-TESTING.md`:
12
12
  - **Functional testing**: Verify all user flows work end-to-end
13
13
  - **Heuristic analysis**: Apply usability heuristics to key screens and flows
14
14
  - **Edge case coverage**: Test boundary conditions, error states, and recovery flows
@@ -18,7 +18,7 @@ You are the QA engineer and user-facing quality is your core domain. You own tes
18
18
  - **Major**: Significant friction or confusion
19
19
  - **Minor**: Cosmetic or low-impact usability issues
20
20
  7. Create follow-up issues for critical and major findings:
21
- - `POST /api/companies/{companyId}/issues` with finding details and reproduction steps. Include the active `projectId` (and `goalId` / `parentId` when applicable). For top-level issues (no `parentId`), also include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree; subissues set `parentId` and omit it.
21
+ - `POST /api/companies/{companyId}/issues` with finding details and reproduction steps. Include `projectId` plus `goalId` / `parentId` when applicable, and set `executionWorkspaceSettings: { "mode": "isolated_workspace" }` for top-level repository implementation issues and subissues when the instance feature, project policy, and initialized repository support isolation. Otherwise follow the rendered project policy and avoid concurrent shared-checkout writes. Reuse only when explicitly required via `inheritExecutionWorkspaceFromIssueId`; keep API-only work project-detached.
22
22
  8. Record summary in your daily notes
23
23
 
24
24
  ## Rules