binky-control/OperatingRhythm.md

78 lines
3.6 KiB
Markdown
Raw Permalink 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.
## Scheduler (workstation-independent)
**Status: workstation cron bridge retired 2026-07-21** (BINKY-WP-0004-T06 /
DEC-2026-003). Cadence is owned by activity-core definitions
(`binky-daily-rhythm`, `binky-weekly-mail-intake`, `binky-weekly-review-prep`,
all `enabled: true`). Execution on Railiance:
| Path | Role |
| --- | --- |
| activity-core Temporal schedules | When work is due (Europe/Berlin) |
| host systemd user timers | Invoke agent-harness on railiance01 (interim) — `scripts/railiance-rhythm/` |
| agent-harness | Green/Blue tool profiles, hub completion events |
**Health:** `ssh railiance01 'systemctl --user list-timers | grep binky'` and
`tail ~/.cache/binky-control/rhythm/railiance-rhythm.log` on that host.
**Rollback (emergency only):** re-add workstation cron
`23 8 * * 1-5 /home/worsch/binky-control/scripts/rhythm-session.sh # binky rhythm bridge`
and pause railiance timers. Script kept for one month as break-glass.
**Railiance executor (BINKY-WP-0006 finished 2026-07-22):** mail path is
**mail-scan → mail-triage** via **llm-connect / OpenRouter** (structured JSON
+ deterministic apply). Daily brief uses `brief-daily` the same way.
**Do not** install Claude Code or another coding agent on railiance01. Host
timers resolve `LLM_CONNECT_URL` via port-forward or Service ClusterIP (see
`integrations/railiance-llm-rhythm.md`).
**Residuals (work records, not prose):** leftovers from finished workplans are
live intakes/workplans with `origin: residual` + `origin_ref: <WP-id>` — see
`AutopilotWorkQueue.md` (e.g. AWQ-011 `brief-weekly`) and fleet canon
`work-record-types_v0.1.md` § Residuals. Do not park residuals in `SCOPE.md`.
## 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.