Files
fusion/docs/agents-playbooks.md
gsxdsm dff864e098 feat: harden permanent-agent heartbeat instructions (#2081)
## Summary

Hardens permanent-agent operating law while keeping the
heartbeat/executor split:

- **Critical Rules** in task-scoped and no-task heartbeat system prompts
(survive custom `HEARTBEAT.md`)
- Stronger default procedures: disposition checklist, scoped-wake,
blocked dedup, progress note style
- **Wake Delta multi-assign inventory** (ranked, cap 8,
coordination-only framing) + `checkout_conflict` regression test
- Standing instructions six-section template for blank custom create /
empty detail insert
- Onboarding interview guidance to prefer structured `instructionsText`
- Playbooks, CONCEPTS, agents.md accuracy; remove stale agent
gap-analysis doc

Plan:
`docs/plans/2026-07-12-001-feat-permanent-agent-heartbeat-instructions-plan.md`

## Test plan

- [x] `pnpm --filter @fusion/core exec vitest run
src/__tests__/assigned-task-ranking.test.ts`
- [x] `pnpm --filter @fusion/engine exec vitest run
src/__tests__/agent-heartbeat-procedures.test.ts
src/__tests__/heartbeat-executor.test.ts -u`
- [x] `pnpm --filter @fusion/dashboard exec vitest run
app/components/__tests__/standing-instructions-template.test.ts`
- [ ] CI gate green on PR

## Residual Review Findings

None recorded at open (inline review; no residual sink).

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Added ranked multi-assignment context to agent heartbeat wake-ups,
including task status, ownership, and lease details.
* Added standing-instructions templates for creating and editing
permanent agents.
* Improved onboarding guidance with a consistent six-section instruction
structure.
* Added clearer heartbeat handling for blocked tasks, no-task runs, and
checkout conflicts.

* **Documentation**
* Added permanent-agent heartbeat playbooks and expanded coordination
glossary entries.
  * Updated documentation indexes and heartbeat behavior guidance.

* **Tests**
* Added coverage for task ranking, instruction templates, wake-up
context, and conflict handling.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-14 08:23:11 -07:00

72 lines
2.6 KiB
Markdown

# Permanent Agent Heartbeat Playbooks
[← Agents](./agents.md)
Operator and implementer playbooks for durable (permanent) agent heartbeats. Heartbeats are **coordination** windows; task-body implementation runs on the executor path.
## Mental model
1. Wake (timer / assignment / message / on-demand)
2. Identity + Wake Delta + procedure
3. **One** concrete coordination action
4. Disposition + `fn_heartbeat_done`
Do **not** implement code, run tests, or commit from a default strict heartbeat.
## Playbook: Manager health tick
1. Process inbox / room notices first.
2. Read reports-health (if present) for stale direct reports.
3. Pick **one**: reassign blocked child, message an idle specialist, or create a focused follow-up.
4. Log outcome with next owner; `fn_heartbeat_done`.
## Playbook: Message / comment wake
1. Acknowledge the wake payload (message id or comment).
2. If one clear action: reply / create / delegate — then exit (scoped-wake).
3. Do not open a multi-step investigation in the same tick.
## Playbook: Bound task is executor-class or blocked
1. Do **not** re-read PROMPT.md to implement.
2. Skim for blocker risk; pivot to board signals (stale in-review, idle reports, memory themes).
3. **Blocked dedup:** if the same blocker was already logged and nothing new arrived → no-op with reason.
## Playbook: No-task ambient run
1. Inbox first.
2. Prefer auto-claim candidates only when policy allows and role matches.
3. Create or delegate **one** focused task; never unscheduled implementation with ambient tools alone.
## Playbook: Multi-assign inventory in Wake Delta
When Wake Delta lists “your assigned tasks (coordination inventory…)”:
- Use it to **unblock, reassign, or prioritize** — not to code.
- Bound line (`assigned task: FN-…`) remains the singular execution bind.
- Foreign `lease: held-by-other` → do **not** retry checkout this tick.
## Playbook: Empty wake / nothing to do
Explicit no-op with reason is success:
```text
fn_heartbeat_done summary: "No new inbox or wake delta; no open coordination lever; no-op."
```
## Anti-patterns
| Avoid | Prefer |
|---|---|
| Implement / test / commit in heartbeat | Executor path / create task |
| Re-comment same blocker every tick | Blocked dedup no-op |
| Retry checkout on conflict | Exit / other work |
| Pause task on failure | Log + create/delegate follow-up |
| Duplicate `fn_task_create` without scan | Scan open tasks first |
| Self-only “please review” with no real review path | Explicit reviewer / `in-review` handoff |
## Related
- Composition and settings: [Agents](./agents.md)
- Domain vocabulary: [CONCEPTS.md](../CONCEPTS.md)