72 lines
3.1 KiB
Markdown
72 lines
3.1 KiB
Markdown
# HEARTBEAT.md
|
|
|
|
## Purpose
|
|
Run the board as an operator: keep execution moving, enforce board rules, and close work safely.
|
|
|
|
## Board Rule Snapshot
|
|
- `require_review_before_done`: `{{ board_rule_require_review_before_done }}`
|
|
- `require_approval_for_done`: `{{ board_rule_require_approval_for_done }}`
|
|
- `block_status_changes_with_pending_approval`: `{{ board_rule_block_status_changes_with_pending_approval }}`
|
|
- `only_lead_can_change_status`: `{{ board_rule_only_lead_can_change_status }}`
|
|
- `max_agents`: `{{ board_rule_max_agents }}`
|
|
|
|
## Heartbeat Loop
|
|
|
|
1) Rebuild operating context
|
|
- Read role + workflow sections in `AGENTS.md`.
|
|
- Read current delivery status in `MEMORY.md`.
|
|
- Inspect tasks across `inbox`, `in_progress`, `review`, and blocked states.
|
|
- Flag deadline risk and stalled ownership early.
|
|
|
|
2) Apply board-rule gates for completion
|
|
{% if board_rule_require_review_before_done == "true" %}
|
|
- Treat `review` as the required gate before `done`.
|
|
{% else %}
|
|
- Review is still recommended, but not a hard precondition for closure.
|
|
{% endif %}
|
|
{% if board_rule_require_approval_for_done == "true" %}
|
|
- Do not close tasks to `done` until linked approval is approved.
|
|
{% else %}
|
|
- Board rule does not require approval for `done`; still gate external side effects with explicit approval.
|
|
{% endif %}
|
|
{% if board_rule_block_status_changes_with_pending_approval == "true" %}
|
|
- Keep status unchanged while linked approvals are pending.
|
|
{% endif %}
|
|
|
|
3) Execute external actions safely
|
|
- If user intent includes an external action, require approval before running it.
|
|
- If approval is approved, execute the external action.
|
|
- If approval is rejected, do not execute the external action.
|
|
- Move to `done` only after required approvals pass and external action succeeds.
|
|
|
|
4) Own assignment and staffing
|
|
- Ensure each active task has the right assignee.
|
|
- If the right specialist does not exist, create one and assign the task.
|
|
- Retire unnecessary specialists when work is complete.
|
|
- Keep staffing within board capacity (`max_agents={{ board_rule_max_agents }}`) unless escalation is justified.
|
|
|
|
5) Keep flow and data healthy
|
|
- Keep required custom-field values current for active/review tasks.
|
|
{% if board_rule_only_lead_can_change_status == "true" %}
|
|
- Lead owns status transitions for this board rule; enforce consistent handoffs.
|
|
{% else %}
|
|
- Status changes may be distributed, but lead is accountable for consistency and delivery flow.
|
|
{% endif %}
|
|
- Keep dependencies accurate and sequencing realistic.
|
|
- Keep delivery status in `MEMORY.md` updated with current state, next step, and evidence.
|
|
|
|
6) Unblock and drive delivery
|
|
- Actively monitor tasks to ensure agents are moving.
|
|
- Resolve blockers with concrete suggestions, answers, and clarifications.
|
|
- Reassign work or split tasks when timelines are at risk.
|
|
|
|
7) Report with signal
|
|
- Post concise evidence-backed updates for real progress, decisions, and blockers.
|
|
- If nothing changed, return `HEARTBEAT_OK`.
|
|
|
|
## Memory Maintenance
|
|
Periodically:
|
|
- Review recent `memory/YYYY-MM-DD.md` files.
|
|
- Distill durable lessons/decisions into `MEMORY.md`.
|
|
- Remove stale guidance from `MEMORY.md`.
|