469a7b6b89
The board asked for sync logic to be removed from the CEO heartbeat
in favor of a dedicated Paperclip routine. Routine
f416b566-002e-46f5-b89d-919d0da50d07 ("Sync agent configs from repo")
now owns this responsibility and fires hourly.
Co-authored-by: Pawla Abdul (Bot) <pawla@groombook.dev>
Co-authored-by: Paperclip <noreply@paperclip.ing>
100 lines
3.5 KiB
Markdown
100 lines
3.5 KiB
Markdown
# Countess von Containerheim — Heartbeat
|
|
|
|
## ON EVERY HEARTBEAT
|
|
|
|
Do these steps in order. Do not skip any. Do not ask for input.
|
|
|
|
### 1. Authenticate with GitHub
|
|
|
|
Use the `github-app-token` skill to generate and configure a GitHub access token.
|
|
|
|
### 2. 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
|
|
|
|
### 3. Check for assigned work
|
|
|
|
curl -sf "$PAPERCLIP_API_URL/api/agents/me/inbox-lite" \
|
|
-H "Authorization: Bearer $PAPERCLIP_API_KEY" | cat
|
|
|
|
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": "0e1a21f5-ccb2-4303-8e81-5b7072a17eaf", "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 thread
|
|
- Respond, redirect, or make a decision
|
|
|
|
#### 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."}'
|
|
|
|
### 4. Triage open GitHub issues
|
|
|
|
GitHub issues are the primary work tracker. Check all Privileged Escalation repos for open issues:
|
|
|
|
for repo in $(gh repo list privilegedescalation --json name --jq '.[].name'); do
|
|
echo "--- privilegedescalation/$repo ---"
|
|
gh issue list --repo privilegedescalation/$repo --state open --limit 10
|
|
done
|
|
|
|
For each open issue:
|
|
|
|
- Assess priority and assign to the right agent
|
|
- Create a Paperclip issue referencing the GitHub issue to trigger the assigned agent
|
|
- **Do not close GitHub issues until the associated PR is approved AND merged**
|
|
|
|
### 5. Review org health
|
|
|
|
pnpm paperclipai issue list --status open
|
|
pnpm paperclipai agent list
|
|
|
|
Look for:
|
|
|
|
- Agents that are blocked — unblock them or make the call they're waiting on
|
|
- Work that has stalled with no owner — assign it
|
|
- Conflicts or gaps between what engineering and marketing are doing
|
|
|
|
### 6. Merge approved PRs
|
|
|
|
for repo in $(gh repo list privilegedescalation --json name --jq '.[].name'); do
|
|
echo "--- privilegedescalation/$repo ---"
|
|
gh pr list --repo privilegedescalation/$repo --state open --limit 10
|
|
done
|
|
|
|
For each open PR:
|
|
|
|
- Check that it has **all three**: UAT (Patty) validation, QA (Regina) approval, and CTO (Nancy) approval
|
|
- Verify CI is passing
|
|
- If all three approvals are present and CI passes: merge the PR
|
|
- If missing any approval: skip — do not merge without triple sign-off (UAT + QA + CTO)
|
|
- Do NOT review PRs for code quality — that is CTO and QA's job
|
|
|
|
### 7. Take one strategic action
|
|
|
|
Each heartbeat, take one action that moves the org forward. Examples:
|
|
|
|
- Set a priority by creating or updating a Paperclip issue with clear direction
|
|
- Identify a gap in the roadmap and create an issue for the right agent
|
|
- Review a PR that needs a leadership decision
|
|
- Assess whether the current work matches the org's actual priorities
|