@starlein/paperclip-plugin-company-wizard 0.3.24 → 0.4.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 (65) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +15 -11
  3. package/dist/manifest.js +1 -6
  4. package/dist/manifest.js.map +2 -2
  5. package/dist/ui/index.css +3 -0
  6. package/dist/ui/index.css.map +2 -2
  7. package/dist/ui/index.js +59 -30
  8. package/dist/ui/index.js.map +3 -3
  9. package/dist/worker.js +266 -81
  10. package/dist/worker.js.map +3 -3
  11. package/package.json +1 -1
  12. package/templates/ai-wizard/config-format.md +4 -4
  13. package/templates/ai-wizard/interview-system.md +3 -3
  14. package/templates/ai-wizard/single-shot-system.md +3 -3
  15. package/templates/bootstrap-instructions.md +3 -3
  16. package/templates/modules/architecture-plan/agents/ui-designer/skills/design-system.md +1 -1
  17. package/templates/modules/auto-assign/agents/ceo/heartbeat-section.md +2 -8
  18. package/templates/modules/auto-assign/agents/product-owner/heartbeat-section.md +2 -9
  19. package/templates/modules/auto-assign/module.meta.json +1 -1
  20. package/templates/modules/auto-assign/skills/auto-assign.md +18 -15
  21. package/templates/modules/backlog/agents/ceo/heartbeat-section.md +2 -9
  22. package/templates/modules/backlog/agents/product-owner/heartbeat-section.md +2 -14
  23. package/templates/modules/backlog/module.meta.json +1 -1
  24. package/templates/modules/backlog/skills/backlog-health.md +20 -21
  25. package/templates/modules/codebase-onboarding/skills/codebase-audit.md +29 -30
  26. package/templates/modules/github-repo/agents/engineer/skills/git-workflow.md +11 -7
  27. package/templates/modules/github-repo/docs/git-workflow.md +10 -6
  28. package/templates/modules/hiring-review/skills/hiring-review.md +40 -16
  29. package/templates/modules/market-analysis/agents/ux-researcher/skills/market-analysis.md +1 -1
  30. package/templates/modules/pr-review/README.md +13 -13
  31. package/templates/modules/pr-review/agents/devops/skills/infra-review.md +1 -1
  32. package/templates/modules/pr-review/agents/engineer/skills/pr-workflow.md +17 -11
  33. package/templates/modules/pr-review/agents/product-owner/skills/product-review.md +1 -1
  34. package/templates/modules/pr-review/agents/qa/skills/qa-review.md +1 -1
  35. package/templates/modules/pr-review/agents/security-engineer/skills/pr-security-review.md +1 -1
  36. package/templates/modules/pr-review/agents/ui-designer/skills/design-review.md +1 -1
  37. package/templates/modules/pr-review/agents/ux-researcher/skills/ux-review.md +1 -1
  38. package/templates/modules/pr-review/docs/pr-conventions.md +11 -8
  39. package/templates/modules/stall-detection/README.md +8 -8
  40. package/templates/modules/stall-detection/agents/ceo/heartbeat-section.md +2 -11
  41. package/templates/modules/stall-detection/agents/ceo/skills/stall-detection.md +22 -13
  42. package/templates/modules/stall-detection/module.meta.json +1 -1
  43. package/templates/modules/triage/skills/issue-triage.md +20 -33
  44. package/templates/roles/audio-designer/HEARTBEAT.md +37 -21
  45. package/templates/roles/ceo/HEARTBEAT.md +34 -56
  46. package/templates/roles/cmo/HEARTBEAT.md +37 -21
  47. package/templates/roles/code-reviewer/HEARTBEAT.md +39 -19
  48. package/templates/roles/cto/HEARTBEAT.md +33 -25
  49. package/templates/roles/customer-success/HEARTBEAT.md +39 -19
  50. package/templates/roles/devops/HEARTBEAT.md +36 -25
  51. package/templates/roles/engineer/AGENTS.md +27 -9
  52. package/templates/roles/engineer/HEARTBEAT.md +35 -21
  53. package/templates/roles/game-artist/HEARTBEAT.md +37 -21
  54. package/templates/roles/game-designer/HEARTBEAT.md +37 -21
  55. package/templates/roles/level-designer/HEARTBEAT.md +37 -21
  56. package/templates/roles/product-owner/AGENTS.md +24 -8
  57. package/templates/roles/product-owner/HEARTBEAT.md +37 -19
  58. package/templates/roles/qa/AGENTS.md +26 -11
  59. package/templates/roles/qa/HEARTBEAT.md +37 -21
  60. package/templates/roles/security-engineer/AGENTS.md +21 -23
  61. package/templates/roles/security-engineer/HEARTBEAT.md +39 -19
  62. package/templates/roles/technical-writer/HEARTBEAT.md +39 -18
  63. package/templates/roles/ui-designer/AGENTS.md +26 -9
  64. package/templates/roles/ui-designer/HEARTBEAT.md +37 -21
  65. package/templates/roles/ux-researcher/HEARTBEAT.md +37 -21
@@ -4,20 +4,24 @@ When this skill is active, you work in feature branches and open PRs instead of
4
4
 
5
5
  ## Feature Branch Flow
6
6
 
7
- 1. Pull latest main: `git pull origin main`
8
- 2. Create branch: `git checkout -b <prefix>-<N>/<short-description>`
9
- 3. Make your changes, commit with Conventional Commits format
10
- 4. Push branch: `git push -u origin <branch-name>`
11
- 5. Open PR: write the body (PR Body Template in `docs/pr-conventions.md`) to a file, then `gh pr create --title "<type>: <description>" --body-file <file>`. Never inline `--body "..."` — a double-quoted shell string keeps `\n` literal and the PR renders as `text\ntext` (see *Posting PR Bodies & Comments*).
12
- 6. Set the originating issue's `executionPolicy` to gate the merge on review, ending with your own merge gate:
13
- - One `review` stage with the **Code Reviewer** as participant (always).
14
- - Additional `review` stages for any relevant domain reviewer that exists in the team (UI Designer for UI diffs, UX Researcher for flow changes, QA for logic/test-sensitive changes, DevOps for infra/deploy/dependency changes).
7
+ 1. Resolve the project/worktree base ref from the issue's `heartbeat-context` / project workspace metadata before branching. Use the configured `repoRef`, `defaultRef`, or `executionWorkspacePolicy.workspaceStrategy.baseRef` exactly as Paperclip provides it. Never guess from your shell's current branch and never rewrite the configured ref to `main`, `master`, or `origin/*`.
8
+ 2. Fetch and update the base:
9
+ - external: `git fetch origin`, then branch from the configured base ref
10
+ - local: update from the configured local branch
11
+ 3. Create branch from that base: `git checkout -b <prefix>-<N>/<short-description> <base-ref>`
12
+ 4. Make your changes, commit with Conventional Commits format
13
+ 5. Push branch: `git push -u origin <branch-name>`
14
+ 6. Open PR against the same resolved base: derive the GitHub base branch from the configured ref (for example, strip the remote prefix only when the ref is remote-tracking), write the body (PR Body Template in `docs/pr-conventions.md`) to a file, then `gh pr create --base <github-base-branch> --head <branch-name> --title "<type>: <description>" --body-file <file>`. Never inline `--body "..."` — a double-quoted shell string keeps `\n` literal and the PR renders as `text\ntext` (see *Posting PR Bodies & Comments*).
15
+ 7. Set the originating issue's `executionPolicy` to gate the merge on review, ending with your own merge gate:
16
+ - One `review` stage with **QA** when a QA agent exists (test adequacy / executed verification).
17
+ - One `review` stage with the **Security Engineer** only when the change is security-relevant (auth, secrets, input boundaries, crypto, dependencies, infra exposure).
18
+ - Additional `review` stages only for domain reviewers that should block this specific change. Code Reviewer and other specialists are advisory by default unless explicitly configured as participants.
15
19
  - An `approval` stage with the **Product Owner** as participant (always) — the product sign-off.
16
20
  - A final `approval` stage with **yourself (the Engineer)** as participant — the **merge gate**. This stage exists so you are woken *last*, after every reviewer and the Product Owner have cleared, to perform the merge.
17
21
  - Resolve each role to its agentId first (look up active agents), then set the policy on the issue. Include the PR link in an issue comment so reviewers can find it.
18
- 7. Move the originating issue to `in_review`.
19
- 8. Wait for the issue to clear its review/approval stages. Each reviewer and the Product Owner records `approved` or `changes_requested`; 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.
20
- 9. When the issue reaches your final **merge gate** stage (you are the current participant and every prior stage is approved): run `gh pr merge <number> --merge`, confirm the merge landed, **then** record `approved` on your stage — that closes the issue to `done`. Never record `approved` before the merge has actually succeeded, and never set the issue to `done` with the PR still open.
22
+ 8. Move the originating issue to `in_review`.
23
+ 9. 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.
24
+ 10. When the issue reaches your final **merge gate** stage (you are the current participant and every prior stage is approved): run `gh pr merge <number> --merge`, confirm the merge landed into the configured project base, then close/archive the isolated execution workspace if one exists and close-readiness allows it. **Only after merge and workspace close/cleanup succeeds** record `approved` on your stage — that closes the issue to `done`. Never record `approved` before the merge has actually succeeded, and never set the issue to `done` with the PR still open or an execution workspace still active.
21
25
 
22
26
  ## Rules
23
27
 
@@ -26,6 +30,8 @@ When this skill is active, you work in feature branches and open PRs instead of
26
30
  - Always include `Closes [PREFIX-N]` in the PR body.
27
31
  - If a reviewer requests changes, address them, push to the same branch, and re-request review (the stage re-runs).
28
32
  - You are the merge owner — never ask reviewers to merge.
33
+ - Before creating a PR or merging, verify the PR base matches the configured project/worktree base. If the base is wrong, retarget the PR before review/merge.
29
34
  - **Your merge gate must be the last stage.** 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` and you would never be woken to merge — leaving the PR open on GitHub. Always append your own merge-gate `approval` stage after the Product Owner's, and do the merge there before recording your verdict.
30
35
  - Do not create separate child review issues and do not use @-mentions to request review; the executionPolicy stages are the governance signal.
31
36
  - 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.
37
+ - If Paperclip created an isolated execution workspace for this issue, do not leave it behind. Use the current execution workspace id from `heartbeat-context`, check close-readiness, and archive it after the PR is merged and the tree is clean. If archive/cleanup is blocked, leave the issue `blocked` or `in_review` with the exact cleanup blocker instead of marking `done`. If this issue runs in the shared project workspace, do not invent isolated-worktree cleanup.
@@ -14,7 +14,7 @@ You review PRs for intent alignment, scope discipline, and acceptance criteria.
14
14
  ## How to Review
15
15
 
16
16
  1. When you are the active participant of the approval stage on an issue with a PR link, review the PR against the originating issue.
17
- 2. Record your verdict on your approval stage:
17
+ 2. Record your verdict through the normal issue update route for your approval stage:
18
18
  - **approved** if the change meets product requirements
19
19
  - **changes_requested** with specific feedback tied to acceptance criteria
20
20
  3. Optionally mirror the verdict as a GitHub PR comment — write it to a Markdown file (open with a heading like `## ✅ Approved` or `## 🔄 Changes requested`, then the details) and run `gh pr comment <number> --body-file <file>`. Never use inline `--body "..."`: a double-quoted shell string keeps `\n` literal, so the comment renders as `text\ntext`. See `docs/pr-conventions.md` → *Posting PR Bodies & Comments*.
@@ -38,7 +38,7 @@ Record `approved` only if the suite and build pass and coverage is adequate; oth
38
38
  ## How to record your verdict
39
39
 
40
40
  1. You are the active participant of a `review` stage on the issue carrying the PR link.
41
- 2. Record on your stage: `approved` (with the evidence — commands + results) or `changes_requested` (with specific gaps and suggested test cases).
41
+ 2. Record on your stage through the normal issue update route: `approved` (with the evidence — commands + results) by PATCHing toward `done`, or `changes_requested` (with specific gaps and suggested test cases) by PATCHing back to `in_progress`.
42
42
  3. Optionally mirror the verdict as a GitHub PR comment via a Markdown file: open with a heading (`## ✅ Approved` / `## 🔄 Changes requested`), then details, and run `gh pr comment <number> --body-file <file>`. Never inline `--body "..."` — a double-quoted shell string keeps `\n` literal. See `docs/pr-conventions.md` → *Posting PR Bodies & Comments*.
43
43
 
44
44
  ## Rules
@@ -17,7 +17,7 @@ Review is by *probing*, not by reading. Your verdict must state what you actuall
17
17
 
18
18
  1. You are the active participant of a `review` stage on the issue carrying the PR link.
19
19
  2. State **what you probed and how** (e.g. "checked the new `/upload` endpoint for path traversal with `../` inputs; validated the content-type allowlist"). A verdict without concrete checks is invalid.
20
- 3. Record `approved` (with the checks performed) or `changes_requested` (with the specific finding, its impact, and a remediation).
20
+ 3. Record the stage decision through the normal issue update route: `approved` by PATCHing the issue toward `done` with the checks performed, or `changes_requested` by PATCHing back to `in_progress` with the specific finding, impact, and remediation.
21
21
  4. Optionally mirror as a GitHub PR comment via a Markdown file (`## ✅ Approved` / `## 🔄 Changes requested`), run `gh pr comment <number> --body-file <file>`. Never inline `--body "..."`. See `docs/pr-conventions.md` → *Posting PR Bodies & Comments*.
22
22
 
23
23
  ## Rules
@@ -16,7 +16,7 @@ You review PRs for visual quality, brand consistency, and accessibility. When a
16
16
 
17
17
  1. When you are the active participant of a review stage on an issue with a PR link, review the PR.
18
18
  2. Focus only on visual/design concerns — leave code logic to Code Reviewer and product scope to Product Owner.
19
- 3. Record your verdict on your review stage:
19
+ 3. Record your verdict through the normal issue update route for your review stage:
20
20
  - **approved** if visually sound
21
21
  - **changes_requested** with specific, actionable feedback if not
22
22
  4. Optionally mirror the verdict as a GitHub PR comment — write it to a Markdown file (open with a heading like `## ✅ Approved` or `## 🔄 Changes requested`, then the details) and run `gh pr comment <number> --body-file <file>`. Never use inline `--body "..."`: a double-quoted shell string keeps `\n` literal, so the comment renders as `text\ntext`. See `docs/pr-conventions.md` → *Posting PR Bodies & Comments*.
@@ -16,7 +16,7 @@ You review PRs for usability, user flow integrity, and alignment with user needs
16
16
 
17
17
  1. When you are the active participant of a review stage on an issue with a PR link, review the PR.
18
18
  2. Focus only on UX and usability concerns — leave code logic to Code Reviewer and visuals to UI Designer.
19
- 3. Record your verdict on your review stage:
19
+ 3. Record your verdict through the normal issue update route for your review stage:
20
20
  - **approved** if usability is sound
21
21
  - **changes_requested** with specific, actionable feedback if not
22
22
  4. Optionally mirror the verdict as a GitHub PR comment — write it to a Markdown file (open with a heading like `## ✅ Approved` or `## 🔄 Changes requested`, then the details) and run `gh pr comment <number> --body-file <file>`. Never use inline `--body "..."`: a double-quoted shell string keeps `\n` literal, so the comment renders as `text\ntext`. See `docs/pr-conventions.md` → *Posting PR Bodies & Comments*.
@@ -63,19 +63,20 @@ Apply one primary label: `feature`, `bug`, `docs`, `chore`, `infra`, `agent`.
63
63
 
64
64
  Review runs through the issue's native `executionPolicy` (stages), not separate child issues. The gate is **executed verification, not opinion**.
65
65
 
66
- 1. **Engineer** opens the PR on GitHub and adds the PR link as an issue comment.
67
- 2. **Engineer** sets the originating issue's `executionPolicy` stages, in order:
66
+ 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
+ 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:
68
69
  - a `review` stage for **QA** when a QA agent is on the team (test adequacy / running the tests),
69
70
  - a `review` stage for the **Security Engineer** *only when the change is security-relevant* (auth, secrets, input boundaries, crypto, dependencies, infra exposure),
70
71
  - an `approval` stage for the **Product Owner** (intent, scope, acceptance),
71
72
  - a final `approval` stage for the **Engineer** as the merge gate.
72
73
  Resolve each role to its agentId.
73
- 3. **Engineer** sets the issue to `in_review`.
74
- 4. **QA** (when present) reviews and records `approved`/`changes_requested` with executed evidence (see *Merge Rules*).
75
- 5. **Security Engineer** (when present as a stage) probes the security-relevant change and records a verdict stating what was checked.
76
- 6. **Code Reviewer** and other domain reviewers may add **advisory, non-blocking** PR comments. They do not gate the merge.
77
- 7. **Product Owner** reviews for intent match, scope discipline, and acceptance criteria, and records the `approval` verdict.
78
- 8. **Engineer** owns the final `approval` stage (merge gate): once reviewers and the Product Owner have approved, the engineer satisfies the hard gate (CI green, or runs the tests/build and pastes the output), merges the PR, confirms the merge landed, and only then records `approved` — which closes the issue to `done`. The merge must happen before the issue is `done`.
74
+ 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. **Code Reviewer** and 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. **Engineer** owns the final `approval` stage (merge gate): once reviewers and the Product Owner have approved, the engineer 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, closes/archives the isolated execution workspace when one exists and close-readiness allows it, and only then records `approved` — which closes the issue to `done`. The merge and workspace cleanup must happen before the issue is `done`.
79
80
 
80
81
  ## Review Roles
81
82
 
@@ -97,8 +98,10 @@ The hard gate is **executed verification**, enforced on the Engineer's merge-gat
97
98
  - The Code Reviewer and other domain reviewers are advisory — blocking only when they escalate a concern that QA, the Security Engineer, or the Engineer then acts on.
98
99
  - No force pushes.
99
100
  - Merge using `gh pr merge <number> --merge`.
101
+ - Before merge, verify the PR base matches the configured project/worktree base from `heartbeat-context`. Retarget before review/merge if needed.
100
102
  - The Engineer is the merge owner — reviewers never merge.
101
103
  - The engineer's merge gate must be the **last** `approval` stage. 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.
104
+ - If Paperclip created an isolated execution workspace for the issue, read its id from `heartbeat-context`, call close-readiness, and archive it after the PR is merged and the tree is clean. If cleanup is blocked or fails, do not mark the issue `done`; record the exact blocker and leave a concrete cleanup next action. If the issue runs in the shared project workspace, do not invent isolated-worktree cleanup.
102
105
  - 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.
103
106
 
104
107
  ## Dev Cycle Rules
@@ -1,27 +1,27 @@
1
1
  # Module: stall-detection
2
2
 
3
- Adds periodic stall detection to the CEO heartbeat.
3
+ Adds scheduled stall detection as an assigned routine run.
4
4
 
5
5
  ## What it adds
6
6
 
7
- - **CEO skill**: Stall check — detects issues stuck in `in_progress` or `in_review` for too long, and nudges the responsible agent or escalates.
7
+ - **CEO skill**: Stall check — detects issues stuck in `in_progress` or `in_review` for too long, then records a structured next action, reassignment, blocker, or escalation.
8
8
 
9
9
  ## How it works
10
10
 
11
- On every heartbeat, the CEO checks:
11
+ When the CEO is assigned a stall-detection routine run:
12
12
  1. Are there issues in `in_progress` or `in_review` that haven't been updated recently?
13
13
  2. If an issue appears stalled (no activity for a configurable period):
14
14
  - Check if the assigned agent is running or idle
15
- - If idle: @-mention the agent on the issue to re-trigger
16
- - If the agent has been nudged before without response: escalate to the board
17
- 3. This catches failed handovers where an @-mention didn't trigger a wake.
15
+ - If idle: leave a structured next-action comment, reassign, or link a blocker as appropriate
16
+ - If the agent has already failed to respond: escalate to the board/CEO with exact evidence
17
+ 3. This catches dropped handoffs without relying on generic mentions.
18
18
 
19
19
  ## Best for
20
20
 
21
- - Any team using @-mention-based handover (which can be unreliable)
21
+ - Any team with multi-stage handoffs where ownership can become unclear
22
22
  - Multi-agent teams where work can get dropped between agents
23
23
  - Ensuring nothing falls through the cracks
24
24
 
25
25
  ## Example
26
26
 
27
- An engineer finishes a PR and @-mentions the Code Reviewer, but the mention doesn't trigger a wake. The CEO detects the stalled issue on the next heartbeat and re-mentions the reviewer or escalates.
27
+ An engineer finishes a PR and moves the issue to `in_review`, but the executionPolicy reviewer never acts. The CEO detects the stalled issue during the scheduled routine run, records the missing next action, and reassigns or escalates.
@@ -1,12 +1,3 @@
1
- ## Stall Detection Check
1
+ ## Stall Detection Routine
2
2
 
3
- After handling assignments and before exit:
4
-
5
- 1. Query active issues: `GET /api/companies/{companyId}/issues?status=in_progress,in_review`
6
- 2. For each issue, check the latest comment/activity timestamp.
7
- 3. If an issue has had no activity for more than 2 heartbeat cycles:
8
- - Agent is `idle` → @-mention with a nudge.
9
- - Agent is `running` → skip (may be mid-work).
10
- - Agent is `error` or `paused` → escalate to the board.
11
- 4. If already nudged and still no progress → escalate to the board.
12
- 5. Record stall findings in daily notes.
3
+ Do not scan for stalled work during a normal heartbeat. When you are assigned a routine-run issue titled like "Stall detection", use `skills/stall-detection.md`, then summarize findings on the routine issue and exit.
@@ -1,21 +1,30 @@
1
1
  # Skill: Stall Detection
2
2
 
3
- Add this check to your heartbeat, after handling assignments and before exit.
3
+ You own stall detection when you are explicitly assigned a stall-detection routine run. This is not an every-heartbeat background scan.
4
+
5
+ ## When To Use This Skill
6
+
7
+ 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.
4
8
 
5
9
  ## Stall Check
6
10
 
7
- 1. Query active issues: `GET /api/companies/{companyId}/issues?status=in_progress,in_review`
8
- 2. For each issue, check the latest comment/activity timestamp.
9
- 3. If an issue has had no activity for more than 2 heartbeat cycles:
10
- - Check the assigned agent's status via `GET /api/agents/{agentId}`
11
- - If agent is `idle`: @-mention them on the issue with a nudge: "This issue appears stalled. Please check and continue or report blockers."
12
- - If agent is `running`: skip — they may be working on it now.
13
- - If agent is `error` or `paused`: escalate to the board with a comment.
14
- 4. If you've already nudged an agent on the same issue in a previous heartbeat and there's still no progress: escalate to the board.
15
- 5. Record stall findings in your daily notes.
11
+ 1. Checkout the assigned routine-run issue.
12
+ 2. Query active issues for the relevant company/project: `todo`, `in_progress`, `in_review`, and blocked work where applicable.
13
+ 3. For each candidate, inspect latest comments/activity, execution state, blockers, approval/review state, and assigned agent status.
14
+ 4. Skip issues with an active run, recent activity, valid `blockedByIssueIds`, or pending executionPolicy approval/review.
15
+ 5. For a likely stall, leave a structured comment on the issue with:
16
+ - issue id/title
17
+ - assigned agent
18
+ - last activity timestamp/context
19
+ - why it appears stalled
20
+ - exact next action requested
21
+ 6. Prefer reassignment, blocker linkage, or escalation to CEO/Product Owner over informal nudges.
22
+ 7. If an agent is `error`, paused, or repeatedly non-responsive, escalate with an issue comment and assign the manager/CEO as appropriate.
23
+ 8. Summarize findings on the routine-run issue and mark it done.
16
24
 
17
25
  ## Rules
18
26
 
19
- - Don't nudge agents that are currently running they may be mid-work.
20
- - Only escalate after one failed nudge attempt.
21
- - When escalating, be specific: which issue, which agent, how long stalled, what was the last activity.
27
+ - Do not @-mention as a generic nudge; use assignment, status, blockers, and explicit next-action comments.
28
+ - Do not interrupt running agents.
29
+ - Do not close or cancel another agent's work unless the issue explicitly grants that authority.
30
+ - Be specific: which issue, which agent, last activity, why stalled, and who owns the next action.
@@ -5,7 +5,7 @@
5
5
  "routines": [
6
6
  {
7
7
  "title": "Stall detection",
8
- "description": "Check all in_progress issues for signs of stalling. Nudge assigned agents, escalate if blocked for >24h.",
8
+ "description": "Routine-run checklist: inspect in_progress/in_review issues for stale activity, verify blockers and executionPolicy gates, record a concrete next action/reassignment/escalation on each stalled issue, summarize on the routine issue, then exit.",
9
9
  "assignTo": "ceo",
10
10
  "schedule": "0 */3 * * *",
11
11
  "priority": "medium",
@@ -1,42 +1,29 @@
1
1
  # Skill: Issue Triage
2
2
 
3
- You are responsible for processing inbound GitHub issues classifying, responding, and converting them into actionable work.
3
+ You are responsible for processing inbound GitHub issues when assigned a triage issue or triage routine. Classify, respond, and convert actionable reports into Paperclip work.
4
4
 
5
- ## Triage Process
5
+ ## When To Use This Skill
6
6
 
7
- Run this on every heartbeat, after handling your own assignments.
7
+ Use this only when the current assigned issue/routine asks for GitHub issue triage. Do not scan GitHub on every normal heartbeat.
8
8
 
9
- 1. **Fetch new issues** — `gh issue list --state open --label "" --json number,title,body,labels,createdAt` to find untriaged issues (no classification label yet).
10
- 2. **For each untriaged issue:**
11
- a. Read the full issue body and any comments.
12
- b. **Classify** by type:
13
- - `bug` — Something is broken or behaves unexpectedly
14
- - `feature` — New functionality request
15
- - `enhancement` — Improvement to existing functionality
16
- - `question` — User needs help or clarification
17
- - `duplicate` — Already reported (link to original)
18
- - `invalid` — Not actionable, out of scope, or spam
19
- c. **Set priority** (P0–P3):
20
- - P0: Production broken, data loss, security vulnerability
21
- - P1: Major feature broken, blocking multiple users
22
- - P2: Non-critical bug or important feature request
23
- - P3: Minor issue, cosmetic, nice-to-have
24
- d. **Apply labels** — `gh issue edit <number> --add-label "<type>,<priority>"`
25
- e. **Respond to reporter:**
26
- - Acknowledge the report
27
- - Ask follow-up questions if reproduction steps are unclear (bugs)
28
- - Set expectations ("we'll look into this" / "this is out of scope because...")
29
- - For duplicates: link to the original issue and close
30
- - For invalid: explain why and close politely
31
- f. **Convert to Paperclip task** — For actionable issues (bug, feature, enhancement), create a corresponding issue in Paperclip via `POST /api/companies/{companyId}/issues` with the GitHub issue number in the description for traceability. Include the active `projectId` (and `goalId` / `parentId` when applicable).
9
+ ## Triage Process
32
10
 
33
- 3. **Record** what you triaged in your daily notes.
11
+ 1. Checkout the assigned triage issue/routine.
12
+ 2. Fetch new issues: `gh issue list --state open --label "" --json number,title,body,labels,createdAt` to find untriaged issues (no classification label yet).
13
+ 3. For each untriaged issue:
14
+ - Read the full issue body and comments.
15
+ - Classify by type: `bug`, `feature`, `enhancement`, `question`, `duplicate`, `invalid`.
16
+ - Set priority P0-P3; P0 maps to urgent Paperclip priority.
17
+ - Apply labels with `gh issue edit <number> --add-label "<type>,<priority>"`.
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.
20
+ 4. Link bidirectionally: GitHub comment references the Paperclip issue, Paperclip issue references GitHub.
21
+ 5. Summarize triage results on the assigned triage issue/routine and mark it done.
34
22
 
35
23
  ## Rules
36
24
 
37
- - Respond to every issue. No issue should sit without acknowledgment for more than one heartbeat cycle.
38
- - Be respectful and constructive in responses, even for invalid or duplicate issues.
39
- - Don't close legitimate issues without explanation. Always comment before closing.
40
- - Link GitHub issues to Paperclip tasks bidirectionally include the GitHub URL in the Paperclip issue and the Paperclip task reference in a GitHub comment.
41
- - If you can't classify an issue (ambiguous report), ask the reporter for clarification and label as `needs-info`.
42
- - Escalate P0 issues immediately — create the Paperclip task with priority `urgent` and mention it in the CEO's daily notes.
25
+ - Do not triage from unrelated heartbeats.
26
+ - Respond respectfully and constructively, even for invalid or duplicate reports.
27
+ - Do not close legitimate issues without explanation.
28
+ - If you cannot classify an issue, ask for clarification and label `needs-info`.
29
+ - Escalate P0 issues immediately via Paperclip issue assignment/status and a CEO/Product Owner comment.
@@ -1,37 +1,53 @@
1
- # HEARTBEAT.md -- Audio Designer Heartbeat
1
+ # HEARTBEAT.md -- Audio Designer Heartbeat Checklist
2
2
 
3
- ## 1. Identity and Context
3
+ Run this checklist on every heartbeat. The Paperclip skill is the source of truth for board coordination; this file records the current expected flow and role-local reminders.
4
4
 
5
- - `GET /api/agents/me` -- confirm your id, role, companyId.
6
- - Check wake context: `PAPERCLIP_TASK_ID`, `PAPERCLIP_WAKE_REASON`.
5
+ ## 1. Identity and Wake Context
7
6
 
8
- ## 2. Get Assignments
7
+ - `GET /api/agents/me` -- confirm your id, role, companyId, budget, and chain of command.
8
+ - Check wake context: `PAPERCLIP_TASK_ID`, `PAPERCLIP_WAKE_REASON`, `PAPERCLIP_WAKE_COMMENT_ID`, `PAPERCLIP_APPROVAL_ID`.
9
+ - If the wake reason is approval/review/routine, treat that object as the active assignment.
9
10
 
10
- - `GET /api/companies/{companyId}/issues?assigneeAgentId={your-id}&status=todo,in_progress`
11
- - Prioritize `in_progress` first, then `todo`.
11
+ ## 2. Get Assigned Work
12
12
 
13
- ## 3. Checkout and Work
13
+ - Prefer `GET /api/agents/me/inbox-lite` for your actionable inbox.
14
+ - If `PAPERCLIP_TASK_ID` is set and belongs to you, prioritize it.
15
+ - Otherwise work assigned issues only. Never look for random unassigned work during a normal heartbeat.
16
+ - Include `todo`, `in_progress`, `in_review`, and review/approval tasks surfaced by the inbox. Skip blocked work unless you can unblock it.
14
17
 
15
- - Always checkout before working: `POST /api/issues/{id}/checkout`.
16
- - Never retry a 409 -- that task belongs to someone else.
17
- - Do the work. Update status and comment when done.
18
- - When creating audio assets, place them in the project's `assets/audio/` directory following naming conventions.
18
+ ## 3. Load Execution Context
19
19
 
20
- ## 4. Handover
20
+ - For the chosen issue, call `GET /api/issues/{id}/heartbeat-context` before changing state.
21
+ - Inspect status, parent/children, project/goal, labels, comments, documents, work products, `blockedByIssueIds`, `executionPolicy`, and current execution state.
22
+ - Respect pause/cancel, budget, sandbox, and approval gates. Do not bypass executionPolicy review or approval stages.
21
23
 
22
- - When audio assets are ready for integration, @-mention the Engineer on the issue.
23
- - Include: file paths, format, duration, loop points, volume levels, playback triggers.
24
- - Provide integration notes: when to play, how to layer, any spatial/positional audio needs.
24
+ ## 4. Checkout and Work
25
25
 
26
- ## 5. Exit
26
+ - Checkout before mutating work: `POST /api/issues/{id}/checkout` with the expected current status when the API supports `expectedStatuses`.
27
+ - Never retry a 409; that issue belongs to another active run.
28
+ - Start actionable work in the same heartbeat; do not stop at a plan unless planning was requested.
29
+ - Leave durable progress with a clear next action. Use child issues for long or parallel delegated work instead of polling.
30
+ - Mark true dependencies with `blockedByIssueIds` instead of free-text blockers.
27
31
 
28
- - Comment on any in_progress work before exiting.
29
- - If no assignments, exit cleanly.
32
+ ## 5. Evidence, Work Products, and Handover
33
+
34
+ - Record real verification: commands, test results, screenshots, reviewed artifacts, or explicit "not run" rationale.
35
+ - Upload or attach user-inspectable outputs as work products/artifacts/documents; local filesystem paths alone are not enough.
36
+ - Use issue documents for long plans, specs, QA reports, security reviews, or hiring drafts; comments should summarize and link.
37
+ - Handoffs should use assignment/status/executionPolicy and a concrete next action. Do not rely on generic @-mentions.
38
+ - If work awaits review, move the issue to `in_review` and follow its executionPolicy.
39
+
40
+ ## 6. Exit
41
+
42
+ - Always comment before exiting any issue you touched: status, evidence, blockers, work products, and next action.
43
+ - If the issue used an isolated execution workspace/worktree, close it before final disposition: read `currentExecutionWorkspace.id` from `heartbeat-context`, check `GET /api/execution-workspaces/{id}/close-readiness`, then archive with `PATCH /api/execution-workspaces/{id}` `{ "status": "archived" }` after commits/PRs are merged and the tree is clean. If close-readiness or cleanup is blocked, do not mark `done`; leave the issue `blocked`/`in_review` with the exact cleanup blocker and next owner.
44
+ - If no assigned work, valid approval/review, or routine-run exists, exit cleanly without scanning unrelated unassigned work.
30
45
 
31
46
  ## Rules
32
47
 
33
48
  - Always use the Paperclip skill for coordination.
34
- - Always include `X-Paperclip-Run-Id` header on mutating API calls.
35
- - Your output is audio assets and audio specifications. Code-generated audio (Web Audio API, procedural synthesis) is fine — you write audio generation code, not game logic.
49
+ - Always include `X-Paperclip-Run-Id` on mutating API calls when available.
50
+ - Keep comments concise markdown: status line + bullets + links.
51
+ - Never expose secrets, credentials, private customer data, or hidden chain-of-thought in comments or artifacts.
36
52
 
37
53
  <!-- Module heartbeat sections are inserted above this line during assembly -->
@@ -1,75 +1,53 @@
1
- # HEARTBEAT.md -- CEO Heartbeat Checklist
1
+ # HEARTBEAT.md -- Ceo Heartbeat Checklist
2
2
 
3
- Run this checklist on every heartbeat. This covers both your local planning/memory work and your organizational coordination via the Paperclip skill.
3
+ Run this checklist on every heartbeat. The Paperclip skill is the source of truth for board coordination; this file records the current expected flow and role-local reminders.
4
4
 
5
- ## 1. Identity and Context
5
+ ## 1. Identity and Wake Context
6
6
 
7
- - `GET /api/agents/me` -- confirm your id, role, budget, chainOfCommand.
8
- - Check wake context: `PAPERCLIP_TASK_ID`, `PAPERCLIP_WAKE_REASON`, `PAPERCLIP_WAKE_COMMENT_ID`.
7
+ - `GET /api/agents/me` -- confirm your id, role, companyId, budget, and chain of command.
8
+ - Check wake context: `PAPERCLIP_TASK_ID`, `PAPERCLIP_WAKE_REASON`, `PAPERCLIP_WAKE_COMMENT_ID`, `PAPERCLIP_APPROVAL_ID`.
9
+ - If the wake reason is approval/review/routine, treat that object as the active assignment.
9
10
 
10
- ## 2. Local Planning Check
11
+ ## 2. Get Assigned Work
11
12
 
12
- 1. Read today's plan from `$AGENT_HOME/memory/YYYY-MM-DD.md` under "## Today's Plan".
13
- 2. Review each planned item: what's completed, what's blocked, and what up next.
14
- 3. For any blockers, resolve them yourself or escalate to the board.
15
- 4. If you're ahead, start on the next highest priority.
16
- 5. **Record progress updates** in the daily notes.
13
+ - Prefer `GET /api/agents/me/inbox-lite` for your actionable inbox.
14
+ - If `PAPERCLIP_TASK_ID` is set and belongs to you, prioritize it.
15
+ - Otherwise work assigned issues only. Never look for random unassigned work during a normal heartbeat.
16
+ - Include `todo`, `in_progress`, `in_review`, and review/approval tasks surfaced by the inbox. Skip blocked work unless you can unblock it.
17
17
 
18
- ## 3. Approval Follow-Up
18
+ ## 3. Load Execution Context
19
19
 
20
- If `PAPERCLIP_APPROVAL_ID` is set:
20
+ - For the chosen issue, call `GET /api/issues/{id}/heartbeat-context` before changing state.
21
+ - Inspect status, parent/children, project/goal, labels, comments, documents, work products, `blockedByIssueIds`, `executionPolicy`, and current execution state.
22
+ - Respect pause/cancel, budget, sandbox, and approval gates. Do not bypass executionPolicy review or approval stages.
21
23
 
22
- - Review the approval and its linked issues.
23
- - Close resolved issues or comment on what remains open.
24
+ ## 4. Checkout and Work
24
25
 
25
- ## 4. Get Assignments
26
+ - Checkout before mutating work: `POST /api/issues/{id}/checkout` with the expected current status when the API supports `expectedStatuses`.
27
+ - Never retry a 409; that issue belongs to another active run.
28
+ - Start actionable work in the same heartbeat; do not stop at a plan unless planning was requested.
29
+ - Leave durable progress with a clear next action. Use child issues for long or parallel delegated work instead of polling.
30
+ - Mark true dependencies with `blockedByIssueIds` instead of free-text blockers.
26
31
 
27
- - `GET /api/companies/{companyId}/issues?assigneeAgentId={your-id}&status=todo,in_progress,blocked`
28
- - Prioritize: `in_progress` first, then `todo`. Skip `blocked` unless you can unblock it.
29
- - If there is already an active run on an `in_progress` task, just move on to the next thing.
30
- - If `PAPERCLIP_TASK_ID` is set and assigned to you, prioritize that task.
32
+ ## 5. Evidence, Work Products, and Handover
31
33
 
32
- ## 5. Checkout and Work
34
+ - Record real verification: commands, test results, screenshots, reviewed artifacts, or explicit "not run" rationale.
35
+ - Upload or attach user-inspectable outputs as work products/artifacts/documents; local filesystem paths alone are not enough.
36
+ - Use issue documents for long plans, specs, QA reports, security reviews, or hiring drafts; comments should summarize and link.
37
+ - Handoffs should use assignment/status/executionPolicy and a concrete next action. Do not rely on generic @-mentions.
38
+ - If work awaits review, move the issue to `in_review` and follow its executionPolicy.
33
39
 
34
- - Always checkout before working: `POST /api/issues/{id}/checkout`.
35
- - Never retry a 409 -- that task belongs to someone else.
36
- - Do the work. Update status and comment when done.
40
+ ## 6. Exit
37
41
 
38
- ## 6. Delegation
39
-
40
- - Create subtasks with `POST /api/companies/{companyId}/issues`. Always set `parentId`, `projectId`, and `goalId`. For top-level follow-ons, include the active project's `projectId` explicitly.
41
- - Create subissues only for independent work slices; avoid splitting tightly coupled implementation across sibling subissues.
42
- - Use `paperclip-create-agent` skill when hiring new agents.
43
- - Assign work to the right agent for the job.
44
-
45
- ## 7. Fact Extraction
46
-
47
- 1. Check for new conversations since last extraction.
48
- 2. Extract durable facts to the relevant entity in `$AGENT_HOME/life/` (PARA).
49
- 3. Update `$AGENT_HOME/memory/YYYY-MM-DD.md` with timeline entries.
50
- 4. Update access metadata (timestamp, access_count) for any referenced facts.
51
-
52
- ## 8. Exit
53
-
54
- - Comment on any in_progress work before exiting.
55
- - If no assignments and no valid mention-handoff, exit cleanly.
56
-
57
- ---
58
-
59
- ## CEO Responsibilities
60
-
61
- - **Strategic direction**: Set goals and priorities aligned with the company mission.
62
- - **Hiring**: Spin up new agents when capacity is needed.
63
- - **Unblocking**: Escalate or resolve blockers for reports.
64
- - **Budget awareness**: Above 80% spend, focus only on critical tasks.
65
- - **Never look for unassigned work** -- only work on what is assigned to you.
66
- - **Never cancel cross-team tasks** -- reassign to the relevant manager with a comment.
42
+ - Always comment before exiting any issue you touched: status, evidence, blockers, work products, and next action.
43
+ - If the issue used an isolated execution workspace/worktree, close it before final disposition: read `currentExecutionWorkspace.id` from `heartbeat-context`, check `GET /api/execution-workspaces/{id}/close-readiness`, then archive with `PATCH /api/execution-workspaces/{id}` `{ "status": "archived" }` after commits/PRs are merged and the tree is clean. If close-readiness or cleanup is blocked, do not mark `done`; leave the issue `blocked`/`in_review` with the exact cleanup blocker and next owner.
44
+ - If no assigned work, valid approval/review, or routine-run exists, exit cleanly without scanning unrelated unassigned work.
67
45
 
68
46
  ## Rules
69
47
 
70
48
  - Always use the Paperclip skill for coordination.
71
- - Always include `X-Paperclip-Run-Id` header on mutating API calls.
72
- - Comment in concise markdown: status line + bullets + links.
73
- - Self-assign via checkout only when explicitly @-mentioned.
49
+ - Always include `X-Paperclip-Run-Id` on mutating API calls when available.
50
+ - Keep comments concise markdown: status line + bullets + links.
51
+ - Never expose secrets, credentials, private customer data, or hidden chain-of-thought in comments or artifacts.
74
52
 
75
53
  <!-- Module heartbeat sections are inserted above this line during assembly -->
@@ -1,37 +1,53 @@
1
- # HEARTBEAT.md -- Chief Marketing Officer Heartbeat
1
+ # HEARTBEAT.md -- Cmo Heartbeat Checklist
2
2
 
3
- ## 1. Identity and Context
3
+ Run this checklist on every heartbeat. The Paperclip skill is the source of truth for board coordination; this file records the current expected flow and role-local reminders.
4
4
 
5
- - `GET /api/agents/me` -- confirm your id, role, companyId.
6
- - Check wake context: `PAPERCLIP_TASK_ID`, `PAPERCLIP_WAKE_REASON`.
5
+ ## 1. Identity and Wake Context
7
6
 
8
- ## 2. Get Assignments
7
+ - `GET /api/agents/me` -- confirm your id, role, companyId, budget, and chain of command.
8
+ - Check wake context: `PAPERCLIP_TASK_ID`, `PAPERCLIP_WAKE_REASON`, `PAPERCLIP_WAKE_COMMENT_ID`, `PAPERCLIP_APPROVAL_ID`.
9
+ - If the wake reason is approval/review/routine, treat that object as the active assignment.
9
10
 
10
- - `GET /api/companies/{companyId}/issues?assigneeAgentId={your-id}&status=todo,in_progress`
11
- - Prioritize `in_progress` first, then `todo`.
11
+ ## 2. Get Assigned Work
12
12
 
13
- ## 3. Checkout and Work
13
+ - Prefer `GET /api/agents/me/inbox-lite` for your actionable inbox.
14
+ - If `PAPERCLIP_TASK_ID` is set and belongs to you, prioritize it.
15
+ - Otherwise work assigned issues only. Never look for random unassigned work during a normal heartbeat.
16
+ - Include `todo`, `in_progress`, `in_review`, and review/approval tasks surfaced by the inbox. Skip blocked work unless you can unblock it.
14
17
 
15
- - Always checkout before working: `POST /api/issues/{id}/checkout`.
16
- - Never retry a 409 -- that task belongs to someone else.
17
- - Do the work. Update status and comment when done.
18
- - When producing marketing deliverables, write them as markdown documents in the project workspace.
18
+ ## 3. Load Execution Context
19
19
 
20
- ## 4. Handover
20
+ - For the chosen issue, call `GET /api/issues/{id}/heartbeat-context` before changing state.
21
+ - Inspect status, parent/children, project/goal, labels, comments, documents, work products, `blockedByIssueIds`, `executionPolicy`, and current execution state.
22
+ - Respect pause/cancel, budget, sandbox, and approval gates. Do not bypass executionPolicy review or approval stages.
21
23
 
22
- - When marketing strategy or analysis is ready for review, @-mention the CEO on the issue.
23
- - Include links to deliverable files in your comment.
24
- - Update issue status appropriately.
24
+ ## 4. Checkout and Work
25
25
 
26
- ## 5. Exit
26
+ - Checkout before mutating work: `POST /api/issues/{id}/checkout` with the expected current status when the API supports `expectedStatuses`.
27
+ - Never retry a 409; that issue belongs to another active run.
28
+ - Start actionable work in the same heartbeat; do not stop at a plan unless planning was requested.
29
+ - Leave durable progress with a clear next action. Use child issues for long or parallel delegated work instead of polling.
30
+ - Mark true dependencies with `blockedByIssueIds` instead of free-text blockers.
27
31
 
28
- - Comment on any in_progress work before exiting.
29
- - If no assignments, exit cleanly.
32
+ ## 5. Evidence, Work Products, and Handover
33
+
34
+ - Record real verification: commands, test results, screenshots, reviewed artifacts, or explicit "not run" rationale.
35
+ - Upload or attach user-inspectable outputs as work products/artifacts/documents; local filesystem paths alone are not enough.
36
+ - Use issue documents for long plans, specs, QA reports, security reviews, or hiring drafts; comments should summarize and link.
37
+ - Handoffs should use assignment/status/executionPolicy and a concrete next action. Do not rely on generic @-mentions.
38
+ - If work awaits review, move the issue to `in_review` and follow its executionPolicy.
39
+
40
+ ## 6. Exit
41
+
42
+ - Always comment before exiting any issue you touched: status, evidence, blockers, work products, and next action.
43
+ - If the issue used an isolated execution workspace/worktree, close it before final disposition: read `currentExecutionWorkspace.id` from `heartbeat-context`, check `GET /api/execution-workspaces/{id}/close-readiness`, then archive with `PATCH /api/execution-workspaces/{id}` `{ "status": "archived" }` after commits/PRs are merged and the tree is clean. If close-readiness or cleanup is blocked, do not mark `done`; leave the issue `blocked`/`in_review` with the exact cleanup blocker and next owner.
44
+ - If no assigned work, valid approval/review, or routine-run exists, exit cleanly without scanning unrelated unassigned work.
30
45
 
31
46
  ## Rules
32
47
 
33
48
  - Always use the Paperclip skill for coordination.
34
- - Always include `X-Paperclip-Run-Id` header on mutating API calls.
35
- - Never commit to external spending or partnerships without board approval.
49
+ - Always include `X-Paperclip-Run-Id` on mutating API calls when available.
50
+ - Keep comments concise markdown: status line + bullets + links.
51
+ - Never expose secrets, credentials, private customer data, or hidden chain-of-thought in comments or artifacts.
36
52
 
37
53
  <!-- Module heartbeat sections are inserted above this line during assembly -->