diff --git a/docs/evidence/AUDIT-WP-0008-T05-whitehat-e2-02-abort-2026-08-22.md b/docs/evidence/AUDIT-WP-0008-T05-whitehat-e2-02-abort-2026-08-22.md new file mode 100644 index 0000000..a02836b --- /dev/null +++ b/docs/evidence/AUDIT-WP-0008-T05-whitehat-e2-02-abort-2026-08-22.md @@ -0,0 +1,65 @@ +# WH-ENG-20260822-AUDIT-E2-02 admission abort + +Date: 2026-08-22 +Workplan task: `AUDIT-WP-0008-T05` +Outcome: aborted before probe execution; zero target packets + +## Scope + +The attended window was 19:15Z–19:30Z. Custody projection was permitted only +from 19:15Z through 19:18Z. The approved target image was +`sha256:c2fe39a0185b99be3fc0cb14d2de69772b8e66e20490097c9d11d90cc39719a6`. +The run used engagement-specific `-02` identities, tenants, fixture IDs, KV +paths, and projection resources. No credential value was printed or retained +in this evidence. + +## Timeline and value-safe observations + +- Before the window, repeated preflight observed audit-core `1/1` Ready on the + approved image, OpenBao initialized and unsealed, and no temporary identity, + exact KV path, projection resource, mounted Secret, or runner pod. +- At 19:15:32Z, preflight reported `projection-window-open` with the same clean + baseline. +- The first projection attempt stopped at its projected-key-name verification. + SSH had allowed the remote shell to expand the Go-template `$k` variables. + The procedure's automatic exact cleanup completed. At 19:16:49Z, independent + preflight again found no temporary identity, KV path, projection resource, or + runner; audit-core was `1/1` Ready. +- The value-safe key-name check was shell-quoted and projection was retried + inside the gate. Projection succeeded at 19:17:54Z with exactly two temporary + identities, mounted keys `token-a` and `token-b`, expiry 19:30Z, and + audit-core Ready. The ExternalSecret reached Ready and the named mounted + Secret and ClusterSecretStore existed. +- The approved pod contract was applied at 19:19Z and + `whitehat/whitehat-e2-audit` became Ready. +- Whitehat target validation passed, the engagement was authorized, and the + kill switch was clear. `admit-plane` then failed closed with + `live custody broker is not connected; no credential was requested`. + The custody procedure had produced a valid value-safe projection receipt, + but Whitehat has no adapter that consumes that receipt and issues a plane + lease. The runner was not invoked and sent zero packets. +- The runner pod was deleted at 19:21:07Z. Custody cleanup completed at + 19:21:39Z: two temporary identities removed, both exact engagement KV paths + deleted, mounted Secret absent, audit-core Ready, and no secret value + observed. +- The independent post-cleanup preflight found empty temporary-identity, + exact-path, and projection-resource lists, `projection-cutoff-passed`, + OpenBao unsealed, and audit-core `1/1` Ready. The runner pod was absent. + +## Result and follow-up + +This is not E2 evidence and does not complete T05. The run proves the attended +custody projection, expiry, runner creation, abort, and exact cleanup path. It +also proves that manually coordinating those roles is insufficient: the live +test-plane admission control cannot authenticate the custody projection. + +Before another engagement is scheduled, implement and test a value-safe +custody receipt contract and Whitehat broker adapter. The adapter must bind the +receipt to the exact engagement, two projected handles, target revision, +projection and expiry times, mounted Secret identity, and current cleanup +authority without returning bearer values. A single driver must then sequence +projection-ready, plane admission, runner invocation, report delivery, runner +deletion, and custody cleanup while preserving the independent role approvals. + +The SSH argument-quoting defect is fixed and pushed in `railiance-platform` +commit `d239ed3`; its regression test and all 115 platform tests pass. diff --git a/workplans/AUDIT-WP-0008-tenancy-posture-alignment.md b/workplans/AUDIT-WP-0008-tenancy-posture-alignment.md index 3335b8d..255ffa0 100644 --- a/workplans/AUDIT-WP-0008-tenancy-posture-alignment.md +++ b/workplans/AUDIT-WP-0008-tenancy-posture-alignment.md @@ -468,6 +468,20 @@ custody's four focused tests, Kubernetes server-side runner dry-run, and the live value-safe preflight pass. Before the window there are still no temporary identities, KV paths, projection resources, runner, or packets. +The `-02` attended window reached projection but aborted before any target +packet. Custody projected exactly two bounded identities at 19:17:54Z, the +approved runner became Ready, target and engagement validation passed, and the +kill switch was clear. Whitehat's `admit-plane` then failed closed because its +live custody broker remains unconnected: there is no trusted adapter that +turns the platform's value-safe projection receipt into a plane lease. The +runner was never invoked and was deleted at 19:21:07Z. Exact custody cleanup +completed at 19:21:39Z; independent checks found no runner, temporary identity, +engagement KV path, projection resource, or mounted Secret, and audit-core was +`1/1` Ready. This is a clean, zero-packet abort, not E2 evidence. A fresh +engagement must wait for the receipt-to-broker adapter and an actual +multi-driver sequence. Evidence: +`docs/evidence/AUDIT-WP-0008-T05-whitehat-e2-02-abort-2026-08-22.md`. + ```task id: AUDIT-WP-0008-T06 status: done