railiance-platform/workplans/RAILIANCE-WP-0022-agent-high-risk-boundary-coverage.md
codex 429cc912ed
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Finish coding-agent high-risk boundary coverage
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a02669-87ee-7a31-b111-edc95a16e0fa
2026-08-22 10:03:54 +02:00

6.3 KiB

id type title domain repo status owner topic_slug created updated related origin origin_ref state_hub_workstream_id
RAILIANCE-WP-0022 workplan Close agent high-risk OpenBao boundary coverage financials railiance-platform finished codex railiance 2026-08-21 2026-08-22
WARDEN-WP-0032
RISK-F-0009
routed State Hub message 828e4903-30fe-4903-acfd-cd2ecdda437d b4701216-b235-48d1-a527-b52b8fb7e6fc

RAILIANCE-WP-0022 — Agent high-risk boundary coverage

Goal

Make the OpenBao agent-high-risk-boundary deny every concrete high-risk KV data path in the ops-warden routing catalog, verify the deployed policy, and establish whether any agent identity actually carries the boundary.

Boundaries

  • Read policy documents, token-role metadata and capabilities only; never read a Secret value.
  • A deny is added only for a concrete catalog path graded risk: high.
  • Pattern-only and non-KV lanes are reported but do not produce invented paths.
  • Operator identities do not receive this boundary; it is for coding-agent identities where deny must override any coincident workload read policy.

T01 — Reconcile catalog coverage

id: RAILIANCE-WP-0022-T01
status: done
priority: high
state_hub_task_id: "44d1a4bf-70bb-4d50-a40a-2158acc96b36"

Run the capabilities-only ops-warden audit against the policy. The initial 2026-08-21 reconciliation found 17 high-risk lanes: six covered, six concrete uncovered, and five without a concrete KV address. The final generated input contains 19 high-risk lanes, 14 concrete entries, and five without an address. No credential value was read.

T02 — Close the concrete deny gaps

id: RAILIANCE-WP-0022-T02
status: done
priority: high
state_hub_task_id: "97c73849-716f-45d7-878f-5e1811a594ff"

Add deny-data/read-metadata pairs for the six catalog paths: whynot-design npm, rapp-qonto Keycape client, agent-harness Forgejo deploy key, audit-core senders, email-connect transactional, and Scaleway bootstrap. Add regression coverage for every concrete path currently emitted by the catalog audit.

Completed 2026-08-22. After ops-warden corrected two multi-field grades, the source policy covers all 13 unique concrete catalog paths plus the additional reviewed Core Hub path. The generated-input check reports all 14 concrete catalog entries covered with none uncovered.

T03 — Apply and verify live

id: RAILIANCE-WP-0022-T03
status: done
priority: high
state_hub_task_id: "9a293b09-dc0c-4575-bdc1-05102fb218a8"

Under attended platform authority, upload the reviewed policy, read it back, and rerun the catalog audit with policy_source: server. Inspect policy/token role metadata to determine whether an agent identity carries the boundary and whether any role combines it with a workload-read policy. Do not mint a token.

Completed initially on 2026-08-21 and reconciled again on 2026-08-22 under attended platform-admin OIDC. OpenBao accepted the policy; normalized readback matched source, and the final server-backed audit reported 19 high-risk lanes, 14 covered entries, zero uncovered, and five pattern/non-KV lanes without a concrete address. No Secret value was read.

T04 — Route the result

id: RAILIANCE-WP-0022-T04
status: done
priority: medium
state_hub_task_id: "64ddfacf-b3f2-428e-9630-4b9f436f627f"

Reply to ops-warden with the deployment evidence and remaining attachment finding. Request a generated, versioned concrete-deny artifact so future policy updates consume catalog output rather than relying on a hand-maintained list.

Completed 2026-08-21 via State Hub message fe727451-163a-4e14-8ce3-187fea8ce5b3, including live audit counts, the zero- attachment finding, the distinct-agent-identity blocker, and the requested versioned generated artifact shape.

Ops-warden delivered revision 55f0f47a021375b8b25c924953d1b49a24e002c5 on 2026-08-21. The platform now vendors it as a checked policy input and has a repeatable upstream-equality plus policy-coverage command.

T05 — Establish a distinct coding-agent identity

id: RAILIANCE-WP-0022-T05
status: done
priority: high
state_hub_task_id: "47aa5ed9-95c5-4a23-a460-e4bbd3ed6f65"

The policy is live but no role attaches it. Do not add the boundary to platform-admin: that is an attended human/operator role whose legitimate recovery work may require the protected values. The identity owner must define a distinct coding-agent issuance path, attach this boundary there, and prove deny-wins behavior when combined with an otherwise readable workload policy. Completed 2026-08-22. State Hub decision f0955252-7b20-4c80-86e9-f8080ec60793 establishes the platform-owned AppRole coding-agent-railiance-platform as the operational machine identity. Its single-use SecretIDs expire after five minutes; its tokens last at most 15 minutes, have eight uses, omit the default policy, and attach both agent-high-risk-boundary and the otherwise-readable issue-core workload policy. A live ephemeral login proved data capabilities resolve to deny and metadata to read; the token was revoked without reading the KV value.

The exact-bound KeyCape JWT role is also live as the issuer-backed migration target. KeyCape principal registration remains an identity hardening follow-up, not a blocker to the active AppRole boundary.

T06 — Consume the generated catalog artifact

id: RAILIANCE-WP-0022-T06
status: done
priority: high

Consume ops-warden's versioned high-risk-data-paths.yaml as a policy-check input, add the two newly regraded issue-core and reuse-surface paths, and rerun source plus live coverage. The input remains ops-warden's risk statement, not the policy authority; railiance-platform continues to own every deny decision.

Completed 2026-08-22. The vendored input matches the clean upstream artifact, the repository check covers all 14 entries, and the server-backed audit reports zero uncovered. Evidence: docs/evidence/agent-high-risk-boundary-2026-08-21.md.

Acceptance

  • Every concrete high-risk catalog path is denied in the source policy.
  • The live policy matches source and the server-backed audit passes.
  • A distinct AppRole attachment is established from live metadata.
  • Result and generated-artifact follow-up are routed to ops-warden.
  • A distinct coding-agent identity actually attaches the boundary.