WARDEN-WP-0026 finish Strand A (T04/T05/T07)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s

Promote railiance-backup-offsite-lane to active/resolvable after
capabilities-safe re-verify. Add catalog risk=high, agent read-boundary
(exit 7 + OpenBao policy companion), EXPOSED taint via warden taint, and
close WP-0026.
This commit is contained in:
tegwick 2026-07-16 23:26:26 +02:00
parent 7d0c7c7684
commit b971403dad
16 changed files with 689 additions and 31 deletions

View file

@ -4,7 +4,7 @@ type: workplan
title: "Credential disclosure hygiene + rotation guidance (Strand A)"
domain: infotech
repo: ops-warden
status: active
status: finished
owner: codex
topic_slug: custodian
planning_priority: high
@ -140,11 +140,21 @@ limitation documented.
```task
id: WARDEN-WP-0026-T04
status: todo
status: done
priority: high
state_hub_task_id: "f95d4381-f995-4c9d-b438-70b4f0ed90c5"
```
Done 2026-07-16: Catalog `risk: high|standard` (default standard). High-risk:
`railiance-backup-offsite-lane`, `forgejo-admin-api-token`, `openrouter-llm-connect`.
OpenBao policy `agent-high-risk-boundary` (railiance-platform + live write) grants
metadata/capabilities only and **denies** data-read on those paths — verified with
minted agent token (data=deny, metadata=read). `warden access` with
`WARDEN_AGENT_ID` set refuses raw value stream on high-risk lanes (exit 7);
`--out`/`--exec`/`--wrap`/`--fingerprint` remain. Playbook:
`wiki/playbooks/agent-read-boundary.md`. Tests in `tests/test_routing.py` +
`tests/test_proxy.py`.
**Repo: railiance-platform (OpenBao policy/roles).** Agent identities receive
`capabilities`/metadata and wrapping tokens on high-risk lanes, not raw data
reads. Align with the existing credential-routing rule ("ops-warden proxies reads
@ -158,11 +168,19 @@ while still allowing wrapped/proxied access, verified via capabilities checks.
```task
id: WARDEN-WP-0026-T05
status: todo
status: done
priority: medium
state_hub_task_id: "e989f8f0-930e-4d2f-9037-221e04f34199"
```
Done 2026-07-16: Convention documented in `wiki/playbooks/exposed-taint.md`
(`exposed_at`, `exposed_version`, `exposed_reason`, `exposed_ref` on KV v2
custom_metadata). First worked mark applied to
`platform/workloads/railiance/backup/offsite-lane` version 2 (disclosure
incident). `warden taint <id>` (+ `--json`) reports taint via metadata-only
`bao kv metadata get` — never secret data (`src/warden/taint.py`). Tests in
`tests/test_taint.py`.
**Repo: railiance-platform (OpenBao) + ops-warden surface.** Establish a KV v2
`custom_metadata` convention to mark a tainted secret: `exposed_at=<datetime>`
and the affected `version`. Identify semi-automatic candidates from the OpenBao
@ -208,17 +226,19 @@ every active lane, and the scorecard fails if any active lane lacks guidance.
```task
id: WARDEN-WP-0026-T07
status: progress
status: done
priority: medium
state_hub_task_id: "9944f46d-3706-43a4-9300-7f63bf87c9ff"
```
Lessons-learned note written 2026-07-16:
`history/2026-07-16-credential-disclosure-lessons.md` (buildup context, exposure
accepted, three root causes). Remaining: capabilities-based live re-verify of
CCR-2026-0004 on `bao.coulomb.social` (uses T01 pattern) and its `rotation:` block
(depends on T06 registry) so the lane can promote to `resolvable: true` and unblock
RAILIANCE-WP-0015.
Done 2026-07-16: Lessons note present. Capabilities-safe live re-verify on
`bao.coulomb.social`: lane-policy token → `read` on data path; default + agent
boundary → `deny`; field keys present (no values printed). Catalog promoted
`draft``active`, `fetch_command` pinned to `NC_WEBDAV_TOKEN` (no placeholders)
so `resolvable: true`; `risk: high`; rotation guidance + EXPOSED taint on v2.
CCR-2026-0004 evidence + `access_frontdoor.resolvable: true` / `readiness: ready`.
Playbook + `wiki/CredentialRouting.md` updated. Operator may still rotate the
exposed values optionally (buildup) — not a promotion blocker.
Write a short lessons-learned note (buildup context; exposure accepted; the three
root causes). Apply T01 + T06 to `CCR-2026-0004` as the first worked lane: