Implement ACTIVITY-WP-0022/0023: safe sink default and gap closures
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 3s
Build and Publish Container Image / build-and-push (push) Successful in 28s

Default ISSUE_SINK_TYPE to state-hub (no silent Forgejo issues), hard-fail
prune apply without live-images protection, refresh-live-images script,
disable TaskExecutor stub by default, and document consumer/sink contracts.
This commit is contained in:
tegwick 2026-07-21 21:40:08 +02:00
parent 5c7a90ce7c
commit 4f5399df84
19 changed files with 525 additions and 155 deletions

View file

@ -4,7 +4,7 @@ type: workplan
title: "IssueSink: stop default silent Forgejo issues for internal findings"
domain: infotech
repo: activity-core
status: proposed
status: finished
owner: codex
topic_slug: activity-core
created: "2026-07-21"
@ -36,7 +36,7 @@ create Forgejo issues for internal findings.
- the-custodian: CUST-WP-0060 closure review item 6 (TODO-stale / IssueSink)
- activity-core: `ACTIVITY-WP-0021` (prod reliability; T01 may restore *or*
replace emit path — this WP owns the **policy** default)
- `src/activity_core/issue_sink.py``ISSUE_SINK_TYPE` defaults to `"rest"`
- `src/activity_core/issue_sink.py``ISSUE_SINK_TYPE` defaults to `"state-hub"` (ACTIVITY-WP-0022)
## Goal
@ -63,7 +63,7 @@ create Forgejo issues for internal findings.
```task
id: ACTIVITY-WP-0022-T01
status: todo
status: done
priority: high
state_hub_task_id: "1a0d9bf6-c822-42c8-9b67-8a9be16cce7d"
```
@ -82,7 +82,7 @@ and ISSUE-WP-0004 origin.
```task
id: ACTIVITY-WP-0022-T02
status: todo
status: done
priority: high
state_hub_task_id: "78f994f6-68bd-4f18-88b0-3a25b46e7563"
```
@ -95,7 +95,7 @@ Forgejo. Update tests (`tests/test_issue_sink.py` and callers of
```task
id: ACTIVITY-WP-0022-T03
status: todo
status: done
priority: medium
state_hub_task_id: "d45f861d-4c5e-4721-8e02-50d7deafaefd"
```
@ -109,7 +109,7 @@ paused.
```task
id: ACTIVITY-WP-0022-T04
status: todo
status: done
priority: medium
state_hub_task_id: "747a19ab-c6a5-4f8a-b294-a8dc0f82109f"
```
@ -133,3 +133,23 @@ match policy after T02.
- issue-core `INTENT.md` (pivot 2026-07-20)
- `the-custodian/canon/standards/work-record-types_v0.1.md`
- `the-custodian/research/WorkOrchestrationArchitectureDraft.md` §4.2
## Closeout 2026-07-21
**Policy decision (T01):** `ISSUE_SINK_TYPE` default = **`state-hub`**. `rest` is
explicit opt-in only. Unknown/empty → state-hub.
**Code (T02):** `DEFAULT_ISSUE_SINK_TYPE`, factory fallback, tests.
**Definitions (T03):** `daily-todo-md-stale-review` already paused/disabled in
prod; SBOM task rules gated off; internal paths use reports / state-hub.
**Docs (T04):** `docs/issue-core-emission-boundary.md` sink matrix,
`docs/task-emission-consumer-contract.md`, `.env.example`, runbook.
Acceptance checkboxes:
- [x] Default does not open Forgejo issues for internal findings
- [x] Intentional `rest` still available
- [x] TODO-stale not depending on IssueSink→Forgejo
- [x] Tests and deploy docs match

View file

@ -4,7 +4,7 @@ type: workplan
title: "Intentscope gap closure and WP-0020/0021 operational follow-ups"
domain: infotech
repo: activity-core
status: proposed
status: active
owner: codex
topic_slug: activity-core
created: "2026-07-21"
@ -62,7 +62,7 @@ note — so SCOPE stays truthful and INTENTs three questions remain load-bear
```task
id: ACTIVITY-WP-0023-T01
status: wait
status: done
priority: high
state_hub_task_id: "144197ee-5ed1-40be-b4fe-ba5683fc0579"
```
@ -84,7 +84,7 @@ tasks for docs/defaults are cross-linked as done.
```task
id: ACTIVITY-WP-0023-T02
status: todo
status: done
priority: high
state_hub_task_id: "fbfd3796-736a-4b75-a391-20ce29eeca48"
```
@ -106,7 +106,7 @@ INTENT: execution lives in per-repo workers / harness — not activity-core.
```task
id: ACTIVITY-WP-0023-T03
status: todo
status: done
priority: medium
state_hub_task_id: "7626820e-f823-4d20-936d-1aecc2828caf"
```
@ -124,7 +124,7 @@ source; docs list allowed side-effect definitions.
```task
id: ACTIVITY-WP-0023-T04
status: todo
status: done
priority: medium
state_hub_task_id: "50945834-b005-4010-9dc7-6abf071b6aa8"
```
@ -201,7 +201,7 @@ or MarkiTect-missing errors for configured domains.
```task
id: ACTIVITY-WP-0023-T08
status: todo
status: done
priority: low
state_hub_task_id: "17b863e9-955a-402e-ba20-a5189556e21d"
```
@ -217,7 +217,7 @@ state_hub_task_id: "17b863e9-955a-402e-ba20-a5189556e21d"
```task
id: ACTIVITY-WP-0023-T09
status: todo
status: done
priority: low
state_hub_task_id: "24bbf6eb-bf83-4d99-9a2a-0e207ead59c0"
```
@ -233,7 +233,7 @@ state_hub_task_id: "24bbf6eb-bf83-4d99-9a2a-0e207ead59c0"
```task
id: ACTIVITY-WP-0023-T10
status: todo
status: done
priority: low
state_hub_task_id: "05b3e280-da88-45da-833e-3bd4ee5eaea3"
```
@ -263,3 +263,18 @@ guessing hub topology.
- `ACTIVITY-WP-0021` closeout (state-hub sink, schedule harden, ROS template)
- `ACTIVITY-WP-0022` IssueSink no-default-Forgejo
- `docs/issue-core-emission-boundary.md`
## Progress 2026-07-21 (implementation session)
| Task | Status | Notes |
| --- | --- | --- |
| T01 | done | INTENT + emission docs + default state-hub after WP-0022 |
| T02 | done | Consumer contract doc; Binky completion path documented (harness external) |
| T03 | done | apply=true hard-fails without non-empty live_images_file |
| T04 | done | `scripts/refresh_live_images.sh` + make target |
| T05 | todo | OpenBao ESO policy still 403 on forgejo-admin |
| T06 | todo | issue-core GITEA_BACKEND_TOKEN rotation (external) |
| T07 | todo | MarkiTect in state-hub image (external) |
| T08 | done | TaskExecutor stub disabled by default |
| T09 | done | review_required documented as metadata-only |
| T10 | done | Edge vs workstation evidence in runbook |