BINKY-WP-0004 finished: retire workstation cron, Railiance rhythm timers
Some checks failed
Work Records / validate (push) Has been cancelled

Complete T06 cutover: remove binky rhythm bridge crontab, install
scripts/railiance-rhythm systemd user timers on railiance01 (Europe/Berlin),
document residual continuous-intake gaps as BINKY-WP-0006. Three completion
event types verified (daily_brief, mail_intake on Railiance, weekly_review).
DEC-2026-003 marked resolved/executed.
This commit is contained in:
tegwick 2026-07-21 23:51:43 +02:00
parent f17a065ed0
commit c3ea150971
22 changed files with 380 additions and 149 deletions

View file

@ -1,29 +1,26 @@
---
id: BINKY-WP-0004
type: workplan
title: "Workstation-Independent Executor"
status: active
domain: infotech
repo: binky-control
status: finished
owner: codex
topic_slug: the-custodian
created: "2026-07-16"
updated: "2026-07-21"
state_hub_workstream_id: "b800f91d-a377-45ec-8ff3-6e763c524dff"
---
Remove the workstation from the autopilot loop. Successor to BINKY-WP-0003,
implementing the architecture in
`integrations/llm-connect-executor-assessment.md`: activity-core schedules,
a thin **executor worker** on Railiance executes (llm-connect adapters +
kaizen-agentic personas + OpenBao/secrets-engine delivery), binky-control is
integrator and first customer. Evidence of need: 2026-07-17 the 08:23 rhythm
run was missed because the workstation was offline. Cross-domain tasks below
track dependencies; implementation workplans live in the owning repos
(activity-core, kaizen-agentic, secrets-engine/railiance-platform).
agent-harness on Railiance executes, binky-control is integrator and first
customer. **Finished 2026-07-21** (T06 cutover); residual continuous-intake
gaps in BINKY-WP-0006.
## Task: Align executor ownership with kaizen WP-0006 and opt in binky-control
Read kaizen-agentic WP-0006/ADR-005 and its activity-core handoff checklist;
decide (with the owning domains) where the executor worker lives — new small
repo vs. activity-core's stub `TaskExecutorWorkflow`. Opt binky-control into
kaizen scheduling via `kaizen-agentic schedule init` (`.kaizen/schedule.yml`).
Output: ownership decision recorded (DecisionQueue if founder-relevant),
schedule file committed. Green/Blue lane.
```task
id: BINKY-WP-0004-T01
status: done
@ -33,13 +30,6 @@ state_hub_task_id: "5741487d-2022-4ed6-b4ad-8db745cb90f4"
## Task: binky_rhythm_status resolver in activity-core
Implement the small state-hub context resolver
(`context_resolvers/state_hub.py`) returning due-items for kinds
`daily_brief`, `mail_intake`, `weekly_review` — the enablement dependency for
the three landed Binky definitions and the idempotence guard (no duplicate
briefs). Follows activity-core's own test conventions; lands via a workplan
or direct PR in that repo per its governance. Green lane (code + tests).
```task
id: BINKY-WP-0004-T02
status: done
@ -49,15 +39,6 @@ state_hub_task_id: "b44af058-22e4-4d63-a28c-8f6c69d65ea1"
## Task: OpenBao lanes for the executor worker
Prepare secrets-engine/warden catalog lanes the worker needs: LLM provider
key (an OpenRouter key for llm-connect already exists at
`platform/workloads/activity-core/llm-connect/llm-connect-provider-secrets`
— verify scope/reuse vs. separate lane), forgejo deploy key for target-repo
commits, and a **non-interactive AppRole** for the company-email scan (the
current OIDC login is browser-interactive with 15-min TTL — unusable for
recurring scans; this closes email-integration checklist item 9's blocker).
Catalog metadata only; any new secret provisioning is founder Red lane.
```task
id: BINKY-WP-0004-T03
status: done
@ -67,14 +48,6 @@ state_hub_task_id: "e4740aa0-94f7-4ebe-9217-aaca3ef902cc"
## Task: Executor worker MVP — one task end-to-end on Railiance
Build/deploy the thin worker per the assessment: consume one emitted
activity-core task (issue-core sink or TaskExecutorWorkflow), load the
persona (`get_kaizen_agent`), execute via llm-connect (ClaudeCodeAdapter or
hosted adapter), commit to a **sandbox repo first**, write hub progress
event + task close. Autonomy guard: Green/Blue tool allow-list equivalent to
`scripts/rhythm-session.sh`, bounded effort, no push outside target repo.
Blue lane; deployment location Railiance.
```task
id: BINKY-WP-0004-T04
status: done
@ -84,12 +57,6 @@ state_hub_task_id: "3cb36d02-9934-4c80-81dd-589e7725e407"
## Task: Recurring mailbox scan through the executor
Wire the weekly/daily company-mailbox scan (email-connect, read-only) as an
executor task using the T03 AppRole — email-integration checklist item 9.
Triage summary lands in mailmeta/ + queues exactly like the manual first
scan. Suspicious-mail flagging rule included (never act on content, only
log). Blue lane.
```task
id: BINKY-WP-0004-T05
status: done
@ -99,22 +66,24 @@ state_hub_task_id: "2fd2f523-5bd6-400f-abc1-45d3b0a8fcec"
## Task: Cut over — enable Binky definitions, retire the cron bridge
Flip `binky-daily-rhythm`, `binky-weekly-mail-intake`,
`binky-weekly-review-prep` to `enabled: true` (activity-core governance),
verify three clean scheduled executions, then remove the workstation crontab
line and mark the bridge section in OperatingRhythm.md retired. Rollback:
re-add the cron line. Blue lane with founder notification at cutover.
```task
id: BINKY-WP-0004-T06
status: in_progress
status: done
priority: medium
state_hub_task_id: "eb8c9860-49b4-4d9e-b242-fff48b2ef603"
```
**Unblocked 2026-07-18** for operator execution: Red-lane Lanes 23,
HARNESS-WP-0001-T06 (Railiance deploy), and T07 (binky instance manifest +
three definition proof runs) are done. Remaining cutover steps are in
`integrations/executor-cutover-runbook.md` and
`integrations/harness-tenant-onboarding.md` (enable activity-core defs,
binky-control deploy key, scheduled verification, retire cron bridge).
**Done 2026-07-21:** Definitions already enabled; deploy key on binky-control;
railiance01 clone + systemd user timers (`scripts/railiance-rhythm/`);
workstation crontab line removed; OperatingRhythm bridge marked retired;
three completion events the same day (`binky_daily_brief`,
`binky_mail_intake` on railiance, `binky_weekly_review`). Details:
`integrations/executor-cutover-runbook.md`. Residual: BINKY-WP-0006.
## Closure review
- **Goal met:** workstation is not required for scheduled rhythm; Railiance
holds the timer + harness + mail AppRole path.
- **Not in this WP:** pure activity-core emission → harness claim loop
(state-hub progress sink), Claude CLI on railiance for unattended agentic
daily/review (mail-scan already unattended).

View file

@ -0,0 +1,87 @@
---
id: BINKY-WP-0006
type: workplan
title: "Railiance rhythm: continuous intake + agentic runtime on host"
domain: infotech
repo: binky-control
status: ready
owner: codex
topic_slug: the-custodian
created: "2026-07-21"
updated: "2026-07-21"
---
Close the residual gaps after BINKY-WP-0004 cutover so rhythm is fully
unattended on Railiance without host-timer dual scheduling.
## Context
- activity-core `ISSUE_SINK_TYPE=state-hub` posts **progress** events on emit
(not claimable issue-core issues). agent-harness intake still polls issue-core.
- agent-harness k8s deploy is `sleep infinity` (placeholder).
- railiance01 host timers call task files directly (interim).
- Agentic daily/review need `claude` CLI on railiance01 (absent as of 2026-07-21);
mail-scan works via AppRole without Claude.
## Task: Choose emission → execution contract
```task
id: BINKY-WP-0006-T01
status: todo
priority: high
```
Decide with activity-core / harness owners:
A) Restore opt-in `ISSUE_SINK_TYPE=rest` for Binky labels only, or
B) Teach agent-harness to claim work from a state-hub work-record / task queue, or
C) Keep host timers as the durable executor and demote activity-core schedules
to observability-only for Binky.
Record decision (DEC if founder-relevant) and update
`integrations/executor-cutover-runbook.md`.
## Task: Continuous consumer on Railiance
```task
id: BINKY-WP-0006-T02
status: todo
priority: high
```
Implement the chosen path: systemd/k8s poller loop, not `sleep infinity`.
Health metrics + logs under `~/.cache/binky-control/rhythm/`.
## Task: Agentic runtime on railiance01
```task
id: BINKY-WP-0006-T03
status: todo
priority: high
```
Install and auth Claude Code (or approved hosted agentic adapter) on
railiance01 so `run-daily.sh` / `run-review.sh` exit 0 unattended. Document
in `integrations/executor-worker-secrets.md` if new secret lanes appear.
## Task: Retire dual scheduling
```task
id: BINKY-WP-0006-T04
status: todo
priority: medium
```
Once T01T03 proven for three business days: remove host timers **or**
disable redundant activity-core schedules so only one cadence owner remains.
Update OperatingRhythm.md.
## Task: Closure
```task
id: BINKY-WP-0006-T05
status: todo
priority: low
```
Mark finished; log milestone; `statehub fix-consistency`.