diff --git a/docs/evidence/RAILIANCE-WP-0026-T01-ops-warden-receipt.json b/docs/evidence/RAILIANCE-WP-0026-T01-ops-warden-receipt.json new file mode 100644 index 0000000..5674c4f --- /dev/null +++ b/docs/evidence/RAILIANCE-WP-0026-T01-ops-warden-receipt.json @@ -0,0 +1,37 @@ +{ + "interface": "railiance.attended-login-containment-receipt", + "version": 1, + "task_id": "RAILIANCE-WP-0026-T01", + "owner": "ops-warden", + "source_repo": "ops-warden", + "source_revision": "0fae0904ce8d8694338dd53a8a79abec5fec788d", + "created_at": "2026-08-22T23:31:17Z", + "disposition": "ready_for_owner_review", + "focused_test": { + "command": "uv run pytest -q tests/test_proxy.py tests/test_plan.py", + "passed": true, + "passed_count": 42, + "failed_count": 0 + }, + "repository_verification": { + "command": "uv run pytest -q", + "passed": true, + "passed_count": 390, + "deselected_count": 4, + "lint_command": "uv run ruff check .", + "lint_passed": true + }, + "acceptance_outcomes": { + "private_helper_preflight_before_auth": true, + "read_only_home_refused_before_oidc": true, + "login_child_and_revocation_stdio_contained": true, + "unexpected_stdout_and_stderr_fail_closed": true, + "possible_issuance_triggers_contained_self_revocation": true, + "helper_cleanup_is_deterministic": true, + "persistent_login_only_handoff_refused": true + }, + "live_oidc_performed": false, + "live_drill_authorized": false, + "secret_values_observed": false, + "sensitive_material_recorded": false +} diff --git a/registry/generated/high-risk-data-paths.yaml b/registry/generated/high-risk-data-paths.yaml index 9ce16d4..6c2c341 100644 --- a/registry/generated/high-risk-data-paths.yaml +++ b/registry/generated/high-risk-data-paths.yaml @@ -10,10 +10,10 @@ # declares it, and is null where the field set has not been established -- # null means unknown, never 'one field'. -generated_at: "2026-08-22T18:54:51Z" +generated_at: "2026-08-22T23:31:10Z" source: ops-warden/registry/routing/catalog.yaml -catalog_revision: "e3b9b1620c67236d7ba2c53512e7113819ea20a9" -catalog_revision_date: "2026-08-22T20:54:45+02:00" +catalog_revision: "0fae0904ce8d8694338dd53a8a79abec5fec788d" +catalog_revision_date: "2026-08-23T01:31:05+02:00" catalog_dirty: false high_risk_lane_count: 21 concrete_path_count: 14 diff --git a/workplans/WARDEN-WP-0027-credential-governance-lockdown.md b/workplans/WARDEN-WP-0027-credential-governance-lockdown.md index 717ed37..5a2a55d 100644 --- a/workplans/WARDEN-WP-0027-credential-governance-lockdown.md +++ b/workplans/WARDEN-WP-0027-credential-governance-lockdown.md @@ -189,6 +189,29 @@ matrix is in platform snapshot/driver and master quorum contracts remain required before the fully parameterized read-only preflight. +**Live attempt terminal NO-GO 2026-08-23.** All owner receipts and the final +read-only preflight became green, and the operator opened the exact bounded +window with decision `449a697a-5303-4582-aa9e-b0bc8b35ab2d`. The platform +driver stopped before seal when attended OIDC succeeded but the read-only agent +home prevented token-helper persistence and the underlying client emitted the +short-lived credential into captured output despite `-no-print`. The credential +was immediately self-revoked. Independent metadata confirmed OpenBao remained +initialized and unsealed with zero unseal progress; no seal, unseal, reboot, +restore, policy, PVC, or workload mutation occurred. NO-GO decision +`85724c0c-e70f-4e2f-a8c6-a9cb1ea6331b` supersedes and consumes the GO; the +scenario and its receipts cannot be reused. + +The direct remediation interface is `RAILIANCE-WP-0026-T01`. Ops-warden commit +`0fae0904ce8d8694338dd53a8a79abec5fec788d` replaces the persistent login-only +handoff with a contained login-plus-reviewed-command envelope. It proves a +private writable helper before OIDC, captures login/child/revocation stdout and +stderr, fails closed on any output or persistence defect, self-revokes, and +removes the helper. No live OIDC was used for verification. The value-safe +owner receipt is +`docs/evidence/RAILIANCE-WP-0026-T01-ops-warden-receipt.json`; a future drill +requires owner acceptance, fresh receipts, a new scenario id, and a new human +decision. + ## Task: Tamper-evident policy governance + reconcile ```task