2026-07-16 09:15:38 +02:00
|
|
|
|
# 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 (0–3 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
|
2026-07-16 09:15:38 +02:00
|
|
|
|
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.
|
2026-07-16 09:15:38 +02:00
|
|
|
|
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).
|
2026-07-16 09:15:38 +02:00
|
|
|
|
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.
|
2026-07-16 09:15:38 +02:00
|
|
|
|
|
2026-07-21 23:51:43 +02:00
|
|
|
|
## 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.
|
|
|
|
|
|
|
2026-07-22 10:28:11 +02:00
|
|
|
|
**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
|
2026-07-22 18:15:45 +02:00
|
|
|
|
`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`.
|
2026-07-16 10:54:42 +02:00
|
|
|
|
|
2026-07-16 09:15:38 +02:00
|
|
|
|
## 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.
|