Record live custody reader audit and remote history recovery receipts
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s

Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a1029d-2c93-7500-a0e0-e3e089668b29
This commit is contained in:
codex 2026-10-03 20:49:59 +02:00
parent a252447058
commit b8f8a7ada6
5 changed files with 115 additions and 1 deletions

View file

@ -106,3 +106,36 @@ backup-discovery tool output. No values are retained here. The finish helper
compares that grant with the current lane in memory; if current, it reports a
safe incident status and stops before upload for coordinated existing owner
credential cutover, preserving consumers. No uninformed rotation is performed.
## Completed live reader/audit and remote source retention proof
Consumer owner confirmed fresh authenticated revision-1 empty read/no grant,
actual pod restart retains baseline, wrong audience JWT denied, metadata LIST,
sibling GET and exact-path POST all denied403. Injected transport failure and
same-revision mutation preserve the trusted baseline and return no grant. These
failure tests do not claim a disruptive live OpenBao outage. Receipt:
2026-10-03-root-custody-reader-acceptance.json.
Safe bounded-tail lookup of the current audit PVC correlated exact consumer
read and login request IDs with both request and response events, no errors.
No raw audit records were emitted. Receipt:
2026-10-03-root-custody-audit-correlation.json. Whole-file grep was abandoned
because the audit file is about6.68GB; the successful query bounded its tail to
64MiB. This proves event correlation, not an audit archival/rotation policy.
A fresh remote Forgejo clone retrieved source commit
`a252447058105eed0931d34f1a906f39ce7c2e5e` and both independent publisher
baseline/history recovery files matched byte-for-byte. The clone was removed.
Receipt: 2026-10-03-root-custody-source-backup-readback.json. Source retrieval
proves remote retention independent of workstation state, but does not prove
that a new Nextcloud/Scaleway Forgejo archive generation contains that commit.
The only remaining bounded execution for RPF-WP-0049-T05 is the attended finish
helper: current authenticated owner baseline check plus encrypted retained
history upload/download/decryption through the current governed provider lane.
This directly establishes the small custody-history provider recovery artifact
without generating a multi-gigabyte full Forgejo dump. Existing go-forward
approval applies; operator OIDC/MFA remains execution-only. Fresh receipt must
show success. If the exposed historical local grant matches the current lane,
coordinated existing credential recovery is required before provider proof;
there is no automatic credential rotation or root authority change.

View file

@ -0,0 +1,19 @@
{
"audit_tail_max_bytes": 67108864,
"login": {
"error_absent": true,
"request_event_found": true,
"request_id": "29a2fac4-8108-7ca5-d0a6-682c4a31f48d",
"response_event_found": true
},
"ok": true,
"raw_logs_emitted": false,
"read": {
"error_absent": true,
"request_event_found": true,
"request_id": "91cd7235-9cfe-06c3-57a6-64a013d1cfcb",
"response_event_found": true
},
"scope": "read-only-current-owner-audit-correlation",
"transport_succeeded": true
}

View file

@ -0,0 +1,33 @@
{
"actual_grant": false,
"baseline_initially_absent": false,
"baseline_receipt_matched": true,
"baseline_survives_actual_pod_restart": true,
"capability_probe_read_at": "2026-10-03T18:30:58.194568+00:00",
"capability_probe_read_digest_matched": true,
"custody_write_denied": true,
"custody_write_denied_http_status": 403,
"empty_no_grant_document": true,
"empty_record_returns_no_grant": true,
"existing_baseline_receipt_matched": true,
"failure_preserves_baseline": true,
"fixture_service_serializes_live_empty_root_grant_null": true,
"fresh_authenticated_owner_read": true,
"hub_private_route_acceptance_claimed": false,
"injected_read_failure_returns_no_grant": true,
"metadata_list_denied": true,
"metadata_list_denied_http_status": 403,
"ok": true,
"other_tenant_returns_no_grant": true,
"owner_read_clock_aware": true,
"read_request_id": "91cd7235-9cfe-06c3-57a6-64a013d1cfcb",
"reader_login_request_id": "29a2fac4-8108-7ca5-d0a6-682c4a31f48d",
"reconnect_preserves_baseline": true,
"record_id_matched": true,
"record_revision": 1,
"runtime_enabled": true,
"same_revision_mutation_preserves_baseline": true,
"sibling_read_denied": true,
"sibling_read_denied_http_status": 403,
"wrong_audience_login_denied": true
}

View file

@ -0,0 +1,10 @@
{
"expected_commit": "a252447058105eed0931d34f1a906f39ce7c2e5e",
"history_file_count": 2,
"history_files_readback_match": true,
"ok": true,
"provider_archive_generation_verified": false,
"retrieved_commit": "a252447058105eed0931d34f1a906f39ce7c2e5e",
"scope": "fresh-owner-forgejo-git-retrieval",
"temporary_clone_removed": true
}

View file

@ -103,7 +103,8 @@ id: RPF-WP-0049-T05
status: wait
priority: high
depends_on: [RPF-WP-0049-T04]
blocking_reason: "Admission and empty publication receipts verified; workload success/denial/outage/audit correlation, current live retained-baseline restore-check and established receipt-holder backup coverage/provider readback remain. Actual disposable native-Raft rollback/restore and local holder copy/restore proof passed. No new generic approval gate."
needs_human: true
blocking_reason: "Admission, empty publication, live reader/denials/restart, audit correlation, native isolated Raft restore and remote Git history readback are verified. Only attended finish helper current owner baseline check plus governed encrypted history provider roundtrip receipt remains; existing approval persists."
state_hub_task_id: "871e3236-61c0-58a1-a307-399cd662be6b"
```
@ -171,3 +172,21 @@ snapshot or live admin login used. Evidence:
docs/evidence/2026-10-03-root-custody-isolated-raft-recovery.json.
Current live restore-check and established backup coverage/provider readback
remain separate evidence requirements, not new generic approvals.
## Live reader/audit and remote history receipts verified — 2026-10-03
Stored sanitized owner consumer reader/denial/restart and bounded64MiB audit
correlation receipts under docs/evidence. Wrong-audience JWT and read token
metadata-list/sibling-read/exact-write all denied; source empty/no-grant and
actual restart retention verified. Failure receipt uses injected transport
failure, not a disruptive production outage. Audit read/login exact IDs each
have request+response records and no errors, with no raw log emitted.
Remote source retrieval at a252447 independently restored the non-authoritative
publisher baseline/history copy byte-for-byte; provider archive generation is
not claimed. Native isolated recovery and local scratch holder restore already
passed. T05 remains wait only for the concrete attended finish helper's current
owner baseline and direct governed history provider roundtrip receipt. No new
generic approval, storage service or credential is requested. If the historical
exposed grant matches current lane, existing coordinated owner incident flow
must resolve it before backup proof; authority remains no-grant meanwhile.