diff --git a/activity-definitions/daily-statehub-wsjf-triage.md b/activity-definitions/daily-statehub-wsjf-triage.md index ec6b48d..07798e1 100644 --- a/activity-definitions/daily-statehub-wsjf-triage.md +++ b/activity-definitions/daily-statehub-wsjf-triage.md @@ -17,7 +17,7 @@ context_sources: - type: static bind_to: context.prompt_path config: - value: /home/worsch/the-custodian/runtime/prompts/daily_statehub_wsgi_triage.md + value: custodian://runtime/prompts/daily_statehub_wsgi_triage.md - type: state-hub query: daily_triage_digest params: @@ -50,7 +50,7 @@ Current active runner: - activity-core Temporal schedule from this ActivityDefinition - Prompt source: - `/home/worsch/the-custodian/runtime/prompts/daily_statehub_wsgi_triage.md` + `custodian://runtime/prompts/daily_statehub_wsgi_triage.md` Railiance projection note: @@ -124,7 +124,7 @@ prompt: | {context.daily_triage_digest} Return only JSON matching - `/home/worsch/the-custodian/schemas/daily-triage-report.json`. Do not wrap + `activity-core://schemas/daily-triage-report.json`. Do not wrap the JSON in Markdown fences or add prose before or after it: { "summary": "short operator-facing summary", @@ -146,11 +146,11 @@ prompt: | } ] } -output_schema: /home/worsch/the-custodian/schemas/daily-triage-report.json +output_schema: activity-core://schemas/daily-triage-report.json review_required: false report_sinks: - type: working-memory - path: /home/worsch/the-custodian/memory/working + path: custodian://memory/working timezone: Europe/Berlin filename_template: "daily-triage-{date}-{run_id_short}.md" - type: state-hub-progress @@ -165,7 +165,7 @@ report_sinks: The run should produce: - a dated working-memory note under - `/home/worsch/the-custodian/memory/working/` + `custodian://memory/working/` - a State Hub progress event with `event_type: daily_triage` - no direct workplan/canon edits - no task status changes unless a later human request explicitly asks for an diff --git a/activity-definitions/phase5-stabilization-closeout.md b/activity-definitions/phase5-stabilization-closeout.md new file mode 100644 index 0000000..beb754b --- /dev/null +++ b/activity-definitions/phase5-stabilization-closeout.md @@ -0,0 +1,55 @@ +--- +id: "e7d2b5a8-4c1f-4e9a-b6d3-8f2a1c4e6b09" +name: "Phase 5 Stabilization Closeout Check" +type: activity-definition +version: "1.0" +enabled: true +owner: custodian +governance: custodian +status: active +created: "2026-07-06" +trigger: + type: scheduled + at: "2026-07-09T17:35:00+00:00" + timezone: UTC +context_sources: + - type: state-hub + query: phase5_stabilization_check + required: true + params: + source: activity-core + closeout: true + window_start: "2026-07-06T17:35:00+00:00" + window_end: "2026-07-09T17:35:00+00:00" + baseline: + workstreams: 640 + tasks: 4002 + topics: 14 + sweep_limit: 6 + triage_max_age_hours: 36 + evidence_sinks: + - type: state-hub-progress + event_type: phase5_stabilization_closeout + author: activity-core + workstream_id: 8a828444-dd49-4d7b-a2d1-9952b5bc929d + task_id: e91db8d0-973d-4a31-b3c2-ca37fd002ec7 + bind_to: context.phase5_stabilization_check +--- + +# ActivityDefinition: Phase 5 Stabilization Closeout Check + +## Purpose + +One-shot closeout gate at the end of the `CUST-WP-0054-T05` stabilization +window. Fails visibly when hub-visible gates are not green. When gates pass, +records `operator_signoff_needed: true` for coulombcore teardown approval. + +## Trigger + +Scheduled once at **2026-07-09T17:35:00Z** (72h after window open). + +## Output Contract + +- one State Hub progress event with `event_type: phase5_stabilization_closeout` +- fails the ActivityRun when any gate is red at closeout time +- no LLM call and no direct workplan edits \ No newline at end of file diff --git a/activity-definitions/phase5-stabilization-daily.md b/activity-definitions/phase5-stabilization-daily.md new file mode 100644 index 0000000..f201e98 --- /dev/null +++ b/activity-definitions/phase5-stabilization-daily.md @@ -0,0 +1,58 @@ +--- +id: "f3a8c2e1-9b4d-4a6f-8e2d-1c5b7a9e3f04" +name: "Phase 5 Stabilization Daily Check" +type: activity-definition +version: "1.0" +enabled: true +owner: custodian +governance: custodian +status: active +created: "2026-07-06" +trigger: + type: cron + cron_expression: "0 9 * * *" + timezone: Europe/Berlin + misfire_policy: skip +context_sources: + - type: state-hub + query: phase5_stabilization_check + required: true + params: + source: activity-core + closeout: false + window_start: "2026-07-06T17:35:00+00:00" + window_end: "2026-07-09T17:35:00+00:00" + baseline: + workstreams: 640 + tasks: 4002 + topics: 14 + sweep_limit: 6 + triage_max_age_hours: 36 + evidence_sinks: + - type: state-hub-progress + event_type: phase5_stabilization_check + author: activity-core + workstream_id: 8a828444-dd49-4d7b-a2d1-9952b5bc929d + task_id: e91db8d0-973d-4a31-b3c2-ca37fd002ec7 + bind_to: context.phase5_stabilization_check +--- + +# ActivityDefinition: Phase 5 Stabilization Daily Check + +## Purpose + +Scheduled hub-visible health gate for `CUST-WP-0054-T05` during the 72h +stabilization window (2026-07-06 → 2026-07-09). Complements the manual +`tools/phase5-stabilization-check.sh` script with fleet-side evidence in State +Hub progress. + +## Trigger + +Daily at 09:00 Europe/Berlin while the stabilization window is open. Runs +outside the window are recorded as `skipped` with `reason=outside_stabilization_window`. + +## Output Contract + +- one State Hub progress event with `event_type: phase5_stabilization_check` +- compact pass/fail detail for health, totals, sweeps, and daily triage freshness +- no LLM call and no direct workplan edits \ No newline at end of file diff --git a/docs/state-hub-railiance01-cutover-phase5-2026-07-06.md b/docs/state-hub-railiance01-cutover-phase5-2026-07-06.md index ec8274e..f33e362 100644 --- a/docs/state-hub-railiance01-cutover-phase5-2026-07-06.md +++ b/docs/state-hub-railiance01-cutover-phase5-2026-07-06.md @@ -50,6 +50,17 @@ Kickoff sweep (`source=phase5-kickoff`): **exit_code=0**, 10 repos processed, 0 Window closes **2026-07-09 ~17:35 UTC** (~65h remaining at check time). +## Scheduled checks (activity-core) + +| Definition | Schedule | Event type | +| --- | --- | --- | +| `phase5-stabilization-daily` (`f3a8c2e1…`) | `0 9 * * *` Europe/Berlin | `phase5_stabilization_check` | +| `phase5-stabilization-closeout` (`e7d2b5a8…`) | once `2026-07-09T17:35Z` | `phase5_stabilization_closeout` | + +Hub-visible gates: health, totals (640/4002/14), last 6 sweeps, daily triage +freshness ≤36h. Closeout fails visibly when any gate is red; passes record +`operator_signoff_needed` for coulombcore teardown approval. + ## Monitoring Run daily (or after incidents): diff --git a/workplans/CUST-WP-0054-workstation-independence-and-fleet-realignment.md b/workplans/CUST-WP-0054-workstation-independence-and-fleet-realignment.md index e0ed854..2fc5bb9 100644 --- a/workplans/CUST-WP-0054-workstation-independence-and-fleet-realignment.md +++ b/workplans/CUST-WP-0054-workstation-independence-and-fleet-realignment.md @@ -236,13 +236,15 @@ kickoff baseline green — `docs/state-hub-railiance01-cutover-phase5-2026-07-06 Post-cutover daily triage verified (manual 2026-07-06T17:50Z, event `a99e644e`). Forgejo CI image promoted (`main-375961c`, Helm rev 7). Day-1 check (2026-07-06T22:35Z): 640/4002/14, pod 0 restarts, 6/6 sweeps exit_code=0 proc=11 missing=0, -`state-hub-primary` LIVE. Remaining: 72h window + operator coulombcore teardown sign-off. +`state-hub-primary` LIVE. Phase 5 checks scheduled in activity-core: +`phase5-stabilization-daily` (09:00 Europe/Berlin) and one-shot closeout +`2026-07-09T17:35Z`. Remaining: 72h window + operator coulombcore teardown sign-off. ## Task: Working-memory and sink path decoupling ```task id: CUST-WP-0054-T06 -status: todo +status: progress priority: medium state_hub_task_id: "f2c5dd4b-9af4-4e8c-8619-6814e7d1666e" ``` @@ -252,6 +254,13 @@ working-memory sink and any prompt/context paths become repo-relative or PVC-native with a defined sync-to-repo step (commit via the sweep). Done when no ActivityDefinition or sink references a workstation-specific absolute path. +**Started (2026-07-06):** `custodian://` and `activity-core://` runtime path +URIs in activity-core (`runtime_paths.py`); daily triage definition + Railiance +projection decoupled from `/home/worsch/...`; working-memory mount moved to +`/var/custodian/memory/working`; prompt projected via `actcore-custodian-runtime` +ConfigMap. Remaining: sweep sync-to-repo for working-memory notes, audit remaining +ActivityDefinitions/sinks. + ## Task: Dev-environment beachhead (files-first) ```task