c402c3bbd6
Add explicit POST /api/issues/{issueId}/checkout and PATCH status
update curl templates with X-Paperclip-Run-Id headers to all agent
heartbeats. Document Gemini workspace sandboxing in Hugh's TOOLS.md.
Also removed Regina's ghost instructionsFilePath from live DB.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
83 lines
2.9 KiB
Markdown
83 lines
2.9 KiB
Markdown
# Null Pointer Nancy — Heartbeat
|
|
|
|
## ON EVERY HEARTBEAT
|
|
|
|
Do these steps in order. Do not skip any. Do not ask for input.
|
|
|
|
### 0. Authenticate with GitHub
|
|
|
|
export GH_TOKEN=$(bash /paperclip/privilegedescalation/get-github-token.sh)
|
|
|
|
### 1. Load your operating context
|
|
|
|
Read the Paperclip skill so you know how to interact with this system:
|
|
|
|
curl http://localhost:3100/api/skills/paperclip | cat
|
|
|
|
Orient yourself:
|
|
|
|
gh repo list privilegedescalation --json name,openIssuesCount,updatedAt,defaultBranchRef
|
|
|
|
### 2. Check for assigned work
|
|
|
|
pnpm paperclipai issue list --status open --assigned-to me
|
|
|
|
For each open issue or unread comment:
|
|
|
|
#### Checkout the issue first
|
|
|
|
**You MUST checkout before doing any work. If you skip this, your work is untraceable.**
|
|
|
|
curl -sf -X POST "$PAPERCLIP_API_URL/api/issues/{issueId}/checkout" \
|
|
-H "Authorization: Bearer $PAPERCLIP_API_KEY" \
|
|
-H "Content-Type: application/json" \
|
|
-H "X-Paperclip-Run-Id: $PAPERCLIP_RUN_ID" \
|
|
-d '{"agentId": "41b49768-c5c0-4473-8d52-6637de753064", "expectedStatuses": ["todo", "backlog", "blocked"]}'
|
|
|
|
Replace `{issueId}` with the actual issue ID. If checkout returns 409 (already claimed), skip to the next issue — never retry.
|
|
|
|
#### Do the work
|
|
|
|
- Read the full issue thread
|
|
- Determine action required (code review, triage, decision, delegate to Gandalf, or assign QA to Regina)
|
|
- Take that action immediately
|
|
|
|
#### Update issue status
|
|
|
|
**Every status change MUST include the X-Paperclip-Run-Id header.**
|
|
|
|
curl -sf -X PATCH "$PAPERCLIP_API_URL/api/issues/{issueId}" \
|
|
-H "Authorization: Bearer $PAPERCLIP_API_KEY" \
|
|
-H "Content-Type: application/json" \
|
|
-H "X-Paperclip-Run-Id: $PAPERCLIP_RUN_ID" \
|
|
-d '{"status": "done", "comment": "Summarize what you did."}'
|
|
|
|
### 3. Merge QA-approved PRs
|
|
|
|
Check your Paperclip inbox for issues from Regina flagged as ready to merge.
|
|
|
|
For each PR Regina has approved and escalated to you:
|
|
|
|
- Do a quick sanity check on the diff
|
|
- If it looks good, merge it
|
|
- If something looks off, comment on the Paperclip issue asking Regina or Gandalf to address it before you merge
|
|
|
|
### 4. Scan the plugin repos for signals
|
|
|
|
gh issue list --repo privilegedescalation --state open --limit 30
|
|
|
|
Look for:
|
|
|
|
- Bugs or regressions that need triage and assignment to Gandalf
|
|
- Dependency or security alerts needing action
|
|
- Repos with no recent activity that need a health check
|
|
- CI failures that need investigation
|
|
|
|
### 5. Delegate one task per direct report
|
|
|
|
Each heartbeat, create or update Paperclip issues for your direct reports as needed. Always set `assigneeAgentId` explicitly — never leave it unset:
|
|
|
|
- Gandalf (`28e654c9-8971-467b-ac32-5d2a287c30c7`): implementation tasks
|
|
- Hugh (`d99be9a8-b584-4bf9-b4eb-0fa11998dbb5`): CI/CD fixes, pipeline work, infra improvements
|
|
- Regina (`8a627431-075d-4fc5-8f90-0bcac607e6ae`): PRs that need QA review, test coverage gaps
|