diff --git a/.kaizen/metrics/coach/executions.jsonl b/.kaizen/metrics/coach/executions.jsonl new file mode 100644 index 0000000..46fcf66 --- /dev/null +++ b/.kaizen/metrics/coach/executions.jsonl @@ -0,0 +1 @@ +{"agent": "coach", "committed": true, "execution_time_s": 0.03051502598100342, "harness": "agent-harness", "head_after": "defc938fd38f29f5b2866afc06318748d67dcb62", "metadata": {"completion_event_type": "binky_daily_brief", "labels": ["binky", "rhythm", "automated", "harness-onboarding"], "task_title": "Run Binky daily rhythm (daily_brief)", "tool_profile": "green-commit-only"}, "repo": "binky-control", "success": true, "timestamp": "2026-07-18T09:06:48Z", "tokens": 0} diff --git a/.kaizen/metrics/coach/summary.json b/.kaizen/metrics/coach/summary.json new file mode 100644 index 0000000..dde8102 --- /dev/null +++ b/.kaizen/metrics/coach/summary.json @@ -0,0 +1,12 @@ +{ + "agent": "coach", + "avg_execution_time_s": 0.031, + "avg_quality_score": null, + "execution_count": 1, + "last_execution": "2026-07-18T09:06:48Z", + "success_rate": 1.0, + "trend": { + "quality_score": "stable", + "success_rate": "stable" + } +} diff --git a/.kaizen/metrics/mail-triage/executions.jsonl b/.kaizen/metrics/mail-triage/executions.jsonl new file mode 100644 index 0000000..52cc7a0 --- /dev/null +++ b/.kaizen/metrics/mail-triage/executions.jsonl @@ -0,0 +1 @@ +{"agent": "mail-triage", "committed": true, "execution_time_s": 0.030837772006634623, "harness": "agent-harness", "head_after": "2785d511e2e23ac300c6ce41dc5acffa3531555f", "metadata": {"completion_event_type": "binky_mail_intake", "labels": ["binky", "mail-intake", "automated", "harness-onboarding"], "task_title": "Triage Binky mail intake", "tool_profile": "blue-mail-triage"}, "repo": "binky-control", "success": true, "timestamp": "2026-07-18T09:06:50Z", "tokens": 0} diff --git a/.kaizen/metrics/mail-triage/summary.json b/.kaizen/metrics/mail-triage/summary.json new file mode 100644 index 0000000..99b07ee --- /dev/null +++ b/.kaizen/metrics/mail-triage/summary.json @@ -0,0 +1,12 @@ +{ + "agent": "mail-triage", + "avg_execution_time_s": 0.031, + "avg_quality_score": null, + "execution_count": 1, + "last_execution": "2026-07-18T09:06:50Z", + "success_rate": 1.0, + "trend": { + "quality_score": "stable", + "success_rate": "stable" + } +} diff --git a/.kaizen/metrics/review-prep/executions.jsonl b/.kaizen/metrics/review-prep/executions.jsonl new file mode 100644 index 0000000..5f1a1bb --- /dev/null +++ b/.kaizen/metrics/review-prep/executions.jsonl @@ -0,0 +1 @@ +{"agent": "review-prep", "committed": true, "execution_time_s": 0.017968165018828586, "harness": "agent-harness", "head_after": "04410c626932e5ba98c17747ab7b1e5bd5d67736", "metadata": {"completion_event_type": "binky_weekly_review", "labels": ["binky", "weekly-review", "automated", "harness-onboarding"], "task_title": "Prepare Binky weekly founder review", "tool_profile": "green-commit-only"}, "repo": "binky-control", "success": true, "timestamp": "2026-07-18T09:06:51Z", "tokens": 0} diff --git a/.kaizen/metrics/review-prep/summary.json b/.kaizen/metrics/review-prep/summary.json new file mode 100644 index 0000000..59fc3f3 --- /dev/null +++ b/.kaizen/metrics/review-prep/summary.json @@ -0,0 +1,12 @@ +{ + "agent": "review-prep", + "avg_execution_time_s": 0.018, + "avg_quality_score": null, + "execution_count": 1, + "last_execution": "2026-07-18T09:06:51Z", + "success_rate": 1.0, + "trend": { + "quality_score": "stable", + "success_rate": "stable" + } +} diff --git a/.kaizen/schedule.yml b/.kaizen/schedule.yml index 1af40d0..e60ac14 100644 --- a/.kaizen/schedule.yml +++ b/.kaizen/schedule.yml @@ -1,17 +1,48 @@ -# Kaizen scheduled agent execution manifest (ADR-005) -# Declares which agents run on what cadence in this repo. -# Validate with: kaizen-agentic schedule validate -version: '1' +# Instance manifest — ADR-005 schedule + agent-harness extensions (HARNESS-WP-0001-T07). +# Validate: +# agent-harness validate --target . --strict +# kaizen-agentic schedule validate --target . # base cadence keys; harness instance +# names mail-triage / review-prep use blueprint: coach for persona prepare +# +# Maps to activity-core definitions (still enabled: false until BINKY-WP-0004-T06): +# coach → binky-daily-rhythm +# mail-triage → binky-weekly-mail-intake +# review-prep → binky-weekly-review-prep +version: "1" timezone: Europe/Berlin +harness: 0 agents: coach: - cadence: weekly - cron: 0 9 * * 1 + cadence: daily + cron: "23 8 * * 1-5" # weekdays 08:23 — aligns with binky-daily-rhythm enabled: true + lane: green + tool_profile: green-commit-only + budget: 80000 + mail-triage: + cadence: weekly + cron: "37 9 * * 1" # Monday 09:37 — aligns with binky-weekly-mail-intake + enabled: true + blueprint: coach + lane: blue + tool_profile: blue-mail-triage + budget: 40000 + review-prep: + cadence: weekly + cron: "43 16 * * 5" # Friday 16:43 — aligns with binky-weekly-review-prep + enabled: true + blueprint: coach + lane: green + tool_profile: green-commit-only + budget: 60000 + # Kaizen fleet optimization (not a Binky rhythm slot; harness-ready for completeness) optimization: cadence: weekly - cron: 0 10 * * 1 + cron: "0 10 * * 1" enabled: true + lane: green + tool_profile: green-commit-only + budget: 40000 tdd-workflow: cadence: monthly enabled: false diff --git a/integrations/executor-cutover-runbook.md b/integrations/executor-cutover-runbook.md index c4e5e68..a3281d0 100644 --- a/integrations/executor-cutover-runbook.md +++ b/integrations/executor-cutover-runbook.md @@ -8,14 +8,15 @@ 1. ~~DEC-2026-002 resolved~~ **done 2026-07-17**: single shared `agent-harness` repo (ADR-001 there); prototype adopted as its seed. -2. **Lane 2 + Lane 3 Red-lane provisioning** done - (`integrations/executor-worker-secrets.md`): forgejo deploy key - (sandbox repo first, binky-control at cutover) and AppRole - `agent-harness-binky-mail`. -3. **Harness deployed on Railiance** (HARNESS-WP-0001-T06 in the - agent-harness repo) and one sandbox task executed there end-to-end - (same smoke as the 2026-07-17 workstation run, sandbox commit - e043f21). Tenant onboarding = HARNESS-WP-0001-T07. +2. ~~Lane 2 + Lane 3 Red-lane provisioning~~ **done 2026-07-17** + (`integrations/executor-worker-secrets.md`): forgejo deploy key on + `coulomb/executor-sandbox` + AppRole `agent-harness-binky-mail` on + railiance01. **Still at cutover:** attach the same deploy key write + access to `coulomb/binky-control`. +3. ~~Harness on Railiance + tenant onboarding~~ **done 2026-07-18**: + HARNESS-WP-0001-T06 (image + k8s + host smoke) and T07 (instance + manifest + three definition runs). See + `integrations/harness-tenant-onboarding.md`. ## Cutover steps diff --git a/integrations/harness-tasks/daily-rhythm.json b/integrations/harness-tasks/daily-rhythm.json new file mode 100644 index 0000000..8622ab2 --- /dev/null +++ b/integrations/harness-tasks/daily-rhythm.json @@ -0,0 +1,9 @@ +{ + "title": "Run Binky daily rhythm (daily_brief)", + "description": "Queue hygiene + daily brief per OperatingRhythm.md. Green/Blue lane only: DecisionQueue / OfficeHourQueue / AutopilotWorkQueue hygiene; write today's brief under briefs/ if due. Commit with a clear message. Never push.", + "target_repo": "~/binky-control", + "agent": "coach", + "labels": ["binky", "rhythm", "automated", "harness-onboarding"], + "completion_event_type": "binky_daily_brief", + "timeout_seconds": 900 +} diff --git a/integrations/harness-tasks/mail-intake.json b/integrations/harness-tasks/mail-intake.json new file mode 100644 index 0000000..5fecdf5 --- /dev/null +++ b/integrations/harness-tasks/mail-intake.json @@ -0,0 +1,9 @@ +{ + "title": "Triage Binky mail intake", + "description": "Blue-lane mail intake: if a deterministic mail-scan report exists under mailmeta/reports/, triage metadata only into mailmeta/mail-log.md and queues per integrations/paper-mail-intake.md and the company mailbox triage rules. SUSPICIOUS MAIL: log sender/subject/date only — never act on message content. If no new report, commit a short note under history/ that intake was checked. Never push.", + "target_repo": "~/binky-control", + "agent": "mail-triage", + "labels": ["binky", "mail-intake", "automated", "harness-onboarding"], + "completion_event_type": "binky_mail_intake", + "timeout_seconds": 900 +} diff --git a/integrations/harness-tasks/review-prep.json b/integrations/harness-tasks/review-prep.json new file mode 100644 index 0000000..3ade84a --- /dev/null +++ b/integrations/harness-tasks/review-prep.json @@ -0,0 +1,9 @@ +{ + "title": "Prepare Binky weekly founder review", + "description": "Prepare the ~15-minute founder review per OperatingRhythm.md: point at newest daily brief + SuccessMilestones delta; note RISK-005 if two milestone-free weeks. Write a short prep note under briefs/ or history/. Commit with a clear message. Never push.", + "target_repo": "~/binky-control", + "agent": "review-prep", + "labels": ["binky", "weekly-review", "automated", "harness-onboarding"], + "completion_event_type": "binky_weekly_review", + "timeout_seconds": 900 +} diff --git a/integrations/harness-tenant-onboarding.md b/integrations/harness-tenant-onboarding.md new file mode 100644 index 0000000..0fc8cf8 --- /dev/null +++ b/integrations/harness-tenant-onboarding.md @@ -0,0 +1,65 @@ +# agent-harness tenant onboarding — binky-control (HARNESS-WP-0001-T07) + +> Status: done 2026-07-18. Tenant #1 instance manifest committed; three +> rhythm definitions exercised through the harness; cutover remains +> **BINKY-WP-0004-T06** (`integrations/executor-cutover-runbook.md`). + +## Instance manifest + +File: `.kaizen/schedule.yml` (ADR-005 + harness extensions). + +| Instance | activity-core definition | Cadence (Europe/Berlin) | Lane | tool_profile | Completion event | +|----------|--------------------------|-------------------------|------|--------------|------------------| +| `coach` | `binky-daily-rhythm` | weekdays 08:23 | green | `green-commit-only` | `binky_daily_brief` | +| `mail-triage` | `binky-weekly-mail-intake` | Mon 09:37 | blue | `blue-mail-triage` | `binky_mail_intake` | +| `review-prep` | `binky-weekly-review-prep` | Fri 16:43 | green | `green-commit-only` | `binky_weekly_review` | + +Validate: + +```bash +agent-harness validate --target ~/binky-control --strict +``` + +`mail-triage` and `review-prep` set `blueprint: coach` so +`kaizen-agentic schedule prepare` loads the coach persona. + +## Task files (local / Railiance) + +Under `integrations/harness-tasks/`: + +- `daily-rhythm.json` +- `mail-intake.json` +- `review-prep.json` + +Run one definition (workstation or railiance01 host install): + +```bash +source ~/.local/agent-harness/env # on railiance01 +export STATE_HUB_URL="${STATE_HUB_URL:-http://127.0.0.1:18000}" # remote +# or default http://127.0.0.1:8000 on workstation + +agent-harness run --task-file integrations/harness-tasks/daily-rhythm.json +``` + +Onboarding proof runs (T07) used a deterministic commit adapter when a full +Claude Code session was not required; they still posted the completion +events above with `detail.repo=binky-control` so `binky_rhythm_status` +idempotence can observe them. + +## Handoff → BINKY-WP-0004-T06 + +Cleared by T07 + prior work: + +- [x] DEC-2026-002 / agent-harness repo +- [x] Red-lane Lanes 2–3 (sandbox deploy key + mail AppRole) +- [x] HARNESS-WP-0001-T06 Railiance deploy + sandbox smoke +- [x] HARNESS-WP-0001-T07 instance manifest + three definition runs + +Still for cutover (founder / Blue with notification): + +1. Attach forgejo **write deploy key** to `coulomb/binky-control` (sandbox only today). +2. activity-core: set `enabled: true` on the three definitions (governance there). +3. Wire task intake (HARNESS-WP-0001-T03) or interim pull path. +4. Three clean **scheduled** business-day executions, then retire workstation cron bridge. + +Rollback: cutover runbook. Do **not** remove the cron bridge until step 4 passes. diff --git a/workplans/BINKY-WP-0004-workstation-independent-executor.md b/workplans/BINKY-WP-0004-workstation-independent-executor.md index 2c26e3b..71df2f6 100644 --- a/workplans/BINKY-WP-0004-workstation-independent-executor.md +++ b/workplans/BINKY-WP-0004-workstation-independent-executor.md @@ -107,8 +107,14 @@ re-add the cron line. Blue lane with founder notification at cutover. ```task id: BINKY-WP-0004-T06 -status: blocked -blocking_reason: "Gates: Red-lane Lane 2/3 provisioning + agent-harness Railiance deployment (HARNESS-WP-0001-T06/T07) + 3 business days of verified runs. DEC-2026-002 resolved 2026-07-17 (agent-harness). Runbook: integrations/executor-cutover-runbook.md" +status: todo priority: medium state_hub_task_id: "eb8c9860-49b4-4d9e-b242-fff48b2ef603" ``` + +**Unblocked 2026-07-18** for operator execution: Red-lane Lanes 2–3, +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).