Record live custody reader audit and remote history recovery receipts
Assistant: codex Assistant-Model: gpt-6.1-sol Assistant-Session: 01a1029d-2c93-7500-a0e0-e3e089668b29
This commit is contained in:
parent
a252447058
commit
b8f8a7ada6
5 changed files with 115 additions and 1 deletions
|
|
@ -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.
|
||||
|
|
|
|||
19
docs/evidence/2026-10-03-root-custody-audit-correlation.json
Normal file
19
docs/evidence/2026-10-03-root-custody-audit-correlation.json
Normal 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
|
||||
}
|
||||
33
docs/evidence/2026-10-03-root-custody-reader-acceptance.json
Normal file
33
docs/evidence/2026-10-03-root-custody-reader-acceptance.json
Normal 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
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue