binky-control/OperatingRhythm.md

72 lines
3.1 KiB
Markdown
Raw Normal View History

# Operating Rhythm
> Status: v0 — 2026-07-16 (BINKY-WP-0002-T05). The cadence that keeps the
> control plane honest. Blue lane: agents run it; the founder consumes it.
## Daily brief
One brief per active day, written by whichever agent closes the day's work,
stored in `briefs/YYYY-MM-DD-daily-brief.md`. Hard cap: one screen. Format:
```markdown
# Daily Brief — <date>
## Decide now (03 items, each linked to DecisionQueue)
## Progress (what moved, milestone-relevant only)
## Risks (changes to RiskRegister only — no restating)
## Best next hour (single highest-leverage founder action)
```
Rules:
- **Decide now** only lists prepared decision packages. Never raw questions.
- **Best next hour** is one item. If nothing needs the founder, say so —
"no founder action needed today" is a valid and desirable outcome.
- Anything that can't fit the cap goes into a queue, not the brief.
## Queue hygiene (every agent session touching this repo)
CUST-WP-0061-T05: retarget queue closures to WORK-RECORDS.md (generated) Convention change, not new code: closing an item now means setting its terminal status (status: closed/resolved/done + outcome where applicable) directly on the item's own yaml block in place, instead of deleting it and hand-writing a bullet in a separate "Completed"/ "Resolved decisions" log. WORK-RECORDS.md (CUST-WP-0061-T04, generated by fix-consistency's C-33) already lists every closed/resolved/done record with status/lane/source -- that supersedes the hand-maintained logs as the going-forward view. - AutopilotWorkQueue.md: closing note added; "## Completed" relabeled "(historical -- pre-canon, 2026-07-21)", frozen as-is, nothing migrated or deleted - DecisionQueue.md: closing note added -- its "## Resolved decisions" entries were already structured as in-place yaml blocks with status: resolved (ahead of AWQ's convention already), so this only clarifies the log is superseded going forward, no structural change - OfficeHourQueue.md: closing note added -- items already live under "## Queued items" with status: queued|prepared|done in place, no separate log ever existed here - OperatingRhythm.md: queue-hygiene checklist updated to describe in-place status transitions instead of "moved to the log"; added item 5 noting WORK-RECORDS.md needs no hand-maintenance Re-ran fix-consistency: WORK-RECORDS.md content unchanged (correctly idempotent -- these were prose-only edits, no yaml block content changed). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 01:54:40 +02:00
1. `DecisionQueue.md` — resolved items get `status: resolved` set in place
(not moved to a separate log — CUST-WP-0061-T05); nothing older than
14 days without escalation (RISK-003 rule).
2. `OfficeHourQueue.md` — every queued item has prepared material before the
CUST-WP-0061-T05: retarget queue closures to WORK-RECORDS.md (generated) Convention change, not new code: closing an item now means setting its terminal status (status: closed/resolved/done + outcome where applicable) directly on the item's own yaml block in place, instead of deleting it and hand-writing a bullet in a separate "Completed"/ "Resolved decisions" log. WORK-RECORDS.md (CUST-WP-0061-T04, generated by fix-consistency's C-33) already lists every closed/resolved/done record with status/lane/source -- that supersedes the hand-maintained logs as the going-forward view. - AutopilotWorkQueue.md: closing note added; "## Completed" relabeled "(historical -- pre-canon, 2026-07-21)", frozen as-is, nothing migrated or deleted - DecisionQueue.md: closing note added -- its "## Resolved decisions" entries were already structured as in-place yaml blocks with status: resolved (ahead of AWQ's convention already), so this only clarifies the log is superseded going forward, no structural change - OfficeHourQueue.md: closing note added -- items already live under "## Queued items" with status: queued|prepared|done in place, no separate log ever existed here - OperatingRhythm.md: queue-hygiene checklist updated to describe in-place status transitions instead of "moved to the log"; added item 5 noting WORK-RECORDS.md needs no hand-maintenance Re-ran fix-consistency: WORK-RECORDS.md content unchanged (correctly idempotent -- these were prose-only edits, no yaml block content changed). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 01:54:40 +02:00
next command day; done items get `status: done` in place; stale items
pruned.
3. `AutopilotWorkQueue.md` — never empty; agents with idle capacity pull from
CUST-WP-0061-T05: retarget queue closures to WORK-RECORDS.md (generated) Convention change, not new code: closing an item now means setting its terminal status (status: closed/resolved/done + outcome where applicable) directly on the item's own yaml block in place, instead of deleting it and hand-writing a bullet in a separate "Completed"/ "Resolved decisions" log. WORK-RECORDS.md (CUST-WP-0061-T04, generated by fix-consistency's C-33) already lists every closed/resolved/done record with status/lane/source -- that supersedes the hand-maintained logs as the going-forward view. - AutopilotWorkQueue.md: closing note added; "## Completed" relabeled "(historical -- pre-canon, 2026-07-21)", frozen as-is, nothing migrated or deleted - DecisionQueue.md: closing note added -- its "## Resolved decisions" entries were already structured as in-place yaml blocks with status: resolved (ahead of AWQ's convention already), so this only clarifies the log is superseded going forward, no structural change - OfficeHourQueue.md: closing note added -- items already live under "## Queued items" with status: queued|prepared|done in place, no separate log ever existed here - OperatingRhythm.md: queue-hygiene checklist updated to describe in-place status transitions instead of "moved to the log"; added item 5 noting WORK-RECORDS.md needs no hand-maintenance Re-ran fix-consistency: WORK-RECORDS.md content unchanged (correctly idempotent -- these were prose-only edits, no yaml block content changed). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 01:54:40 +02:00
the top; closed items get `status: closed` in place (CUST-WP-0061-T05).
4. Workplan files match hub state (fix-consistency covers drift).
CUST-WP-0061-T05: retarget queue closures to WORK-RECORDS.md (generated) Convention change, not new code: closing an item now means setting its terminal status (status: closed/resolved/done + outcome where applicable) directly on the item's own yaml block in place, instead of deleting it and hand-writing a bullet in a separate "Completed"/ "Resolved decisions" log. WORK-RECORDS.md (CUST-WP-0061-T04, generated by fix-consistency's C-33) already lists every closed/resolved/done record with status/lane/source -- that supersedes the hand-maintained logs as the going-forward view. - AutopilotWorkQueue.md: closing note added; "## Completed" relabeled "(historical -- pre-canon, 2026-07-21)", frozen as-is, nothing migrated or deleted - DecisionQueue.md: closing note added -- its "## Resolved decisions" entries were already structured as in-place yaml blocks with status: resolved (ahead of AWQ's convention already), so this only clarifies the log is superseded going forward, no structural change - OfficeHourQueue.md: closing note added -- items already live under "## Queued items" with status: queued|prepared|done in place, no separate log ever existed here - OperatingRhythm.md: queue-hygiene checklist updated to describe in-place status transitions instead of "moved to the log"; added item 5 noting WORK-RECORDS.md needs no hand-maintenance Re-ran fix-consistency: WORK-RECORDS.md content unchanged (correctly idempotent -- these were prose-only edits, no yaml block content changed). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 01:54:40 +02:00
5. `WORK-RECORDS.md` (generated, all three queues above) stays current —
`statehub fix-consistency` regenerates it automatically (C-33); nothing
to hand-maintain.
## Bridge scheduler (workstation cron)
**Status: installed 2026-07-16** (founder-approved; agents may not install
their own persistence). Runs weekdays 08:23 local:
`scripts/rhythm-session.sh` runs a headless, lane-restricted Claude Code
session that does queue hygiene, writes the daily brief, and pulls one
autopilot item (agent name `agt-rhythm-bridge`; flock guard, logs to
`~/.cache/binky-control/rhythm/cron.log`).
**Installed line:**
```
23 8 * * 1-5 /home/worsch/binky-control/scripts/rhythm-session.sh # binky rhythm bridge
```
**Disable:** `crontab -e` and delete the `binky rhythm bridge` line.
**Health check:** `tail ~/.cache/binky-control/rhythm/cron.log` — every run
appends a finish line; a silent weekday morning means the bridge failed.
This is explicitly a **bridge**: once activity-core definitions (T05) and an
llm-connect executor (T06 follow-up) are live, the cron line is removed and
scheduling moves to the sanctioned coordination layer.
Guardrails baked into the script: Green/Blue lane only, allowed tools limited
to file edits + git add/commit, no push, no network, one-run-at-a-time lock,
bounded "maintenance pass" prompt.
## Weekly review (founder, ~15 min)
Read the newest brief + `SuccessMilestones.md`. One question: did anything
move a milestone? If two consecutive weeks show activity without milestone
movement, RISK-005 escalates.