feat: schedule Phase 5 checks; start T06 path decoupling

Add phase5 daily/closeout ActivityDefinitions, document schedules in Phase 5
evidence, and migrate daily triage sinks to custodian:// runtime URIs.
This commit is contained in:
codex
2026-07-07 00:48:36 +02:00
parent 03dc2070a3
commit 8baa2d10ff
5 changed files with 141 additions and 8 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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):

View File

@@ -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