--- id: IR-WP-0005 type: workplan title: "Deliver admitted OpenRouter credentials to Radar" domain: infotech repo: intelligence-radar status: finished flavor: implementation owner: codex topic_slug: custodian origin: residual origin_ref: IR-WP-0004 created: "2026-09-14" updated: "2026-10-04" state_hub_workstream_id: "624750a5-d613-5e32-a656-595de03ef73c" --- Created before closure of IR-WP-0004 at the user's request to separate credential delivery from billing. Source files own the work; cross-repository owner plans retain authority over native changes. Review baseline: `docs/evidence/2026-09-14-ir-wp-0004-review.md`. ## Confirm native delivery prerequisites ```task id: IR-WP-0005-T01 status: done priority: high state_hub_task_id: "52427c5c-001d-5965-a6ec-254fef0c3deb" ``` Coordinate with SECRETS-WP-0010-T03 and its existing owner records. Reuse the existing OpenBao key and completed human approvals; verify current native validity without repeating or extending approvals. Record exact recipient, caller/owner/tenant binding, admitted transport, login/time prerequisite and current owner evidence. Do not wait for billing reconciliation to perform credential-only diagnosis. No secret values in Git, logs or State Hub. Done: confirmed via secrets-engine's authoritative reply (thread `c511e9b5-4d29-4030-bf05-bd11502bd4f0`, message `76e4c7da-84bb-4211-9a46-c9be0da13757`) that SECRETS-WP-0010-T03 closed done 2026-09-16 — pinned recipient authenticated to OpenRouter `GET /api/v1/key` (HTTP 200), negative verification passed, three approvals consumed and non-reusable. Full record with pointers (no secret values): `docs/evidence/2026-09-27-ir-wp-0005-t01-native-delivery.md`. ## Verify scoped delivery and return readiness ```task id: IR-WP-0005-T02 status: done priority: high state_hub_task_id: "c4b2378a-5241-5195-8c4b-d53ec58a7f72" ``` Depends on T01 and native owner execution. Prove value-safe read-only provider key validation, correct recipient success, wrong caller/owner/tenant/path refusal, revocation and unchanged existing llm-connect delivery. Capture source/recipient revisions and sanitized native receipts. Do not widen policies or rotate the provider key merely to unblock Radar. This plan completes on admitted delivery evidence; paid inference and campaign accounting belong elsewhere. Blocked, 2026-09-27: secrets-engine confirmed no ops-mason build is needed and withdrew the guest-clock hold (claim/consume uses a Railiance Clock trust file, not the OS clock). The remaining gate is human acceptance of three new apply/verify/exec approvals for the pinned `intelligence-radar-key-check` recipient; Radar requested secrets-engine open them (message `45b52d6e-7a3b-4ebe-ac15-d8137957731f`). Coordination trail: `docs/evidence/2026-09-27-ir-wp-0005-t01-native-delivery.md`. 2026-10-03: human gate routed to hub decision 62aa95e4-3ccc-4867-8806-5e3db005b483 (D1: Attended OpenBao provisioning window: one session clears the pending credential lanes) by CUST-WP-0075; resolving that decision raises C-40 here. Rechecked 2026-10-04: decision `62aa95e4-3ccc-4867-8806-5e3db005b483` is still `open` (`decided_at` null, last hub update 2026-10-03). The radar inbox has no new secrets-engine message. No delivery check was run and no credential was read. Stays wait. 2026-10-04: the founder will accept the three memos once they are published. Asked secrets-engine again, on the same thread, to create the requests and publish memo version 3 (message `1902d854-6fd5-4444-a11d-c074e024e4b0`). The 2026-09-27 receipt is still absent. Stays wait. 2026-10-04: the founder reviewed and accepted the three memo-version-3 pages in the browser (`SECRETS-WP-0010-T03-apply`, `-verify`, `-exec`). secrets-engine had published them (reply `be0e6e0d-4336-4485-a458-51fe5fa63bf7`). Sitting policy v11 was required before those pages would open. The create receipt `railiance-platform/docs/evidence/2026-09-27-t03-approval-requests.json` is still the pre-delivery snapshot (`human_entries_created` false); browser acceptance does not rewrite it. The delivery receipts `railiance-platform/docs/evidence/2026-09-27-t03-attended-delivery.json` and `secrets-engine/docs/evidence/2026-09-27-t03-native-execution.json` are absent. No credential was read. Hub decision `62aa95e4-3ccc-4867-8806-5e3db005b483` stays open. T02 stays wait until those two receipts exist. Approvals expire 2026-10-05T14:24:25Z. Told secrets-engine on the same thread that one delivery is starting and a second execution must not start (message `a1917597-fe75-4e2f-812e-a2a640db56c5`). Worker `01a10769-5085-7161-88a7-540ce9d75466` is that single delivery. That delivery failed closed in preflight at 2026-10-04T15:00:30Z, before any apply, verify, or exec claim. Warden exit 11. Attended phase `scoped_reader_delivered`, failure `attended_admin_failed`. Native phase `preflight`, `DeliveryError` at `exec_owner.py:184`: the pinned session directory `/run/user/1000/secrets-engine-openrouter-check` was absent from the user tmpfs. The checker file and `/usr/bin/python3.12` still match their pins. No credential was emitted and no provider call was made. The failed receipts are preserved as `secrets-engine/docs/evidence/2026-10-04-t03-native-execution-cwd-missing.json` and `railiance-platform/docs/evidence/2026-10-04-t03-attended-delivery-cwd-missing.json`. The blocking native path was moved aside because this preflight claimed nothing. The empty directory was recreated at mode 0700, and the local preflight then passed. One further delivery follows, worker `01a10771-88c8-7a31-ae9f-23e74d71b37a`. 2026-10-04T15:10:05Z: that retry passed. Warden exited 0. Attended receipt `railiance-platform/docs/evidence/2026-09-27-t03-attended-delivery.json` is `passed` / `native_actions_completed`, `credential_values_emitted` false, private runtime removed. Native receipt `secrets-engine/docs/evidence/2026-09-27-t03-native-execution.json` is `passed` / `all_actions_completed`. Apply was already satisfied, so approval `b5fcbfcc-ad56-456f-bc36-c823052e9917` was not consumed and the role limits stayed token TTL 900, max TTL 1800, secret-id TTL 900, one secret-id use, eight token uses. Verify `4e9ff881-d59f-4143-9155-929afbe8dd43` exited 0 with the unrelated path denied, the session revocation checked, and the revoked token lookup at HTTP 403. Exec `a24e0898-b3c5-4e50-85a8-18a2c2aa229e` exited 0. The pinned recipient key check returned `authenticated` with HTTP 200. `llm-connect` stayed ready and its ExternalSecret stayed ready. No provider key was rotated and no inference was run. Hub decision `62aa95e4-3ccc-4867-8806-5e3db005b483` stays open. Billing remains IR-WP-0006-T03. Field outcomes remain IR-WP-0007. Asked informed-decision to provide the already specified pose-and-answer path (`INFD-WP-0005`, `docs/specs/FrictionlessDecisionIntake.md`): one prepared decision, a returned review URL, and the same login able to open and answer it. Message `5500f885-17d3-4b8f-bc07-fc6ee4c33d89`.