Implement ACTIVITY-WP-0024 operator automation console
Add /ops REST inventory, status, runs, and fail-closed operator-token mutations (trigger, enable/disable, pause/unpause) with audit trail. Ship thin HTML UI at /ops/ui, runbook/k8s access docs, and contract tests.
This commit is contained in:
parent
81d350de71
commit
71027f0a67
11 changed files with 1494 additions and 20 deletions
|
|
@ -4,7 +4,7 @@ type: workplan
|
|||
title: "Operator automation console (status API + control plane + thin UI)"
|
||||
domain: infotech
|
||||
repo: activity-core
|
||||
status: proposed
|
||||
status: finished
|
||||
owner: codex
|
||||
topic_slug: activity-core
|
||||
created: "2026-07-21"
|
||||
|
|
@ -107,7 +107,7 @@ Deep-links into State Hub / edge when evidence lives there (G9-aware).
|
|||
|
||||
```task
|
||||
id: ACTIVITY-WP-0024-T01
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "d8830c31-bbcd-41d4-b74b-e1632d8d0257"
|
||||
```
|
||||
|
|
@ -124,7 +124,7 @@ state_hub_task_id: "d8830c31-bbcd-41d4-b74b-e1632d8d0257"
|
|||
|
||||
```task
|
||||
id: ACTIVITY-WP-0024-T02
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "a94decc6-8ac9-4738-823a-6c7b19dade80"
|
||||
```
|
||||
|
|
@ -143,7 +143,7 @@ runbook describes custody without leaking secrets.
|
|||
|
||||
```task
|
||||
id: ACTIVITY-WP-0024-T03
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "ed665a54-0a5c-4d35-b47d-50de77ef91d6"
|
||||
```
|
||||
|
|
@ -163,7 +163,7 @@ window within documented field mapping.
|
|||
|
||||
```task
|
||||
id: ACTIVITY-WP-0024-T04
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "720e0783-93b8-480a-8bfb-00a6aae592a1"
|
||||
```
|
||||
|
|
@ -179,7 +179,7 @@ state_hub_task_id: "720e0783-93b8-480a-8bfb-00a6aae592a1"
|
|||
|
||||
```task
|
||||
id: ACTIVITY-WP-0024-T05
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "2673bd8e-f746-428a-9a20-79336dcad9d4"
|
||||
```
|
||||
|
|
@ -200,7 +200,7 @@ evidence; pause/disable visible in inventory/status; unauthenticated mutate fail
|
|||
|
||||
```task
|
||||
id: ACTIVITY-WP-0024-T06
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "8b10eb8f-90d1-498b-a0a3-5444c590a691"
|
||||
```
|
||||
|
|
@ -215,7 +215,7 @@ state_hub_task_id: "8b10eb8f-90d1-498b-a0a3-5444c590a691"
|
|||
|
||||
```task
|
||||
id: ACTIVITY-WP-0024-T07
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "32c695ac-f208-4540-b2fa-199a3f83c4c9"
|
||||
```
|
||||
|
|
@ -232,7 +232,7 @@ state_hub_task_id: "32c695ac-f208-4540-b2fa-199a3f83c4c9"
|
|||
|
||||
```task
|
||||
id: ACTIVITY-WP-0024-T08
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "032f7485-3cf6-4ec2-a076-cbf82312a63c"
|
||||
```
|
||||
|
|
@ -250,7 +250,7 @@ still deferred with a clear follow-up note.
|
|||
|
||||
```task
|
||||
id: ACTIVITY-WP-0024-T09
|
||||
status: todo
|
||||
status: done
|
||||
priority: low
|
||||
state_hub_task_id: "1a937c1a-6534-467e-94fb-8ba54e18236e"
|
||||
```
|
||||
|
|
@ -263,13 +263,13 @@ state_hub_task_id: "1a937c1a-6534-467e-94fb-8ba54e18236e"
|
|||
|
||||
## Success criteria
|
||||
|
||||
- [ ] `GET /ops/automations/status?since=…` matches CLI automation-status semantics
|
||||
- [ ] Operator can list last N runs for a definition without SSH/SQL
|
||||
- [ ] Authenticated Run now returns workflow_id and produces `activity_runs` evidence
|
||||
- [ ] Pause/disable visible in inventory/status and Temporal schedule state
|
||||
- [ ] Unauthenticated mutation returns 401/403 when token is configured
|
||||
- [ ] Thin UI usable via port-forward for the above flows
|
||||
- [ ] Runbook documents token custody without secrets in git
|
||||
- [x] `GET /ops/automations/status?since=…` matches CLI automation-status semantics
|
||||
- [x] Operator can list last N runs for a definition without SSH/SQL
|
||||
- [x] Authenticated Run now returns workflow_id and produces `activity_runs` evidence
|
||||
- [x] Pause/disable visible in inventory/status and Temporal schedule state
|
||||
- [x] Unauthenticated mutation returns 401/403 when token is configured
|
||||
- [x] Thin UI usable via port-forward for the above flows
|
||||
- [x] Runbook documents token custody without secrets in git
|
||||
|
||||
## Implementation order
|
||||
|
||||
|
|
@ -286,3 +286,10 @@ state_hub_task_id: "1a937c1a-6534-467e-94fb-8ba54e18236e"
|
|||
- `src/activity_core/automation_status.py`, `src/activity_core/api.py`
|
||||
- `docs/runbook.md`, `SCOPE.md` G10
|
||||
- ACTIVITY-WP-0018, ACTIVITY-WP-0019, ACTIVITY-WP-0021
|
||||
|
||||
## Closeout 2026-07-21
|
||||
|
||||
Implemented `/ops` console: auth (fail-closed operator token), inventory/status/runs
|
||||
REST, Run now + enable/disable/pause with audit buffer + optional State Hub progress,
|
||||
thin HTML UI at `/ops/ui`, runbook + k8s access docs. Tests: `tests/test_ops_auth.py`,
|
||||
`tests/test_ops_console_api.py`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue