Accept independent outage recovery and Storage Share guide publication
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a13eab-1e6a-7b33-9c37-372e90ada3a2
This commit is contained in:
tegwick 2026-10-16 20:04:44 +02:00
parent fbdd62b7ed
commit 31f483966c
9 changed files with 213 additions and 46 deletions

View file

@ -8,9 +8,11 @@ Approved execution is recorded in decisions40bfae40 and5edd5203; this document
records their scope and evidence.
**Outage quick start:** [Storage Share disaster recovery guide](disaster-recovery-storage-share.md).
The independently prompted provider download and offline tools ZIP are prepared;
actual outage-path retrieval and guide publication are separately tracked in
T23/T26. The [isolated service restore packet](identity-service-restore-packet.md)
The guide and standalone tools ZIP were published and read back on 2026-10-16.
The operator independently retrieved the protected bundle without OpenBao/SSO
and passed the full archive/native PostgreSQL check. T23/T26 are done; see
[the accepted publication and drill record](storage-share-recovery-publication.md).
The [isolated service restore packet](identity-service-restore-packet.md)
contains the draft native-service sequence and remaining T15 admission inputs.
## What has been established

View file

@ -0,0 +1,34 @@
{
"schema": "netkingdom.recovery-kit.v1",
"status": "published_readback_verified",
"secret_values_exported": false,
"new_grants_created": false,
"files": [
{
"name": "net-kingdom-recovery-57d1940947aa25ff-START-HERE.md",
"bytes": 8381,
"sha256": "1531675f2e7d3713a3a7fc28a5143fb24f201b19cd05d14c59ee485a0bc11e61",
"etag": "\"34e2a2b663670144cd0d0b9aed156455\"",
"readback_verified": true
},
{
"name": "net-kingdom-recovery-57d1940947aa25ff.zip",
"bytes": 34930,
"sha256": "57d1940947aa25ff83d0f25ddf30090eb40595cccaab64225de882a2fd59ea2f",
"etag": "\"eb3029b41135eb740878f4b12745f0b3\"",
"readback_verified": true
},
{
"name": "net-kingdom-recovery-57d1940947aa25ff.zip.sha256",
"bytes": 108,
"sha256": "102d1cd25662650a7a181039f6646883d72a9d976551a8950279d8936ca22171",
"etag": "\"51268aeac620038c4d66ec54376efe44\"",
"readback_verified": true
}
],
"folder": "Backup/railiance-backups/net-kingdom-identity",
"provider": "Storage Share",
"credential_source": "prompt",
"offline_retrieval_verified": true,
"finished_at": "2026-10-16T18:01:01.639515+00:00"
}

View file

@ -0,0 +1,39 @@
{
"schema": "netkingdom.identity-recovery.v1",
"status": "identity_archive_verified",
"started_at": "2026-10-16T18:01:57.282452+00:00",
"production_contacted": false,
"secret_values_exported": false,
"container_cleanup_verified": true,
"temporary_plaintext_cleanup_verified": true,
"source_sha256": "039864d0141b552887752bf17cfdcf1bef4bdc9126f946a9c0533e4fd54ebf4f",
"ciphertext_sha256": "7117b3fe1e4840c86b301c94c85e6b16709e5626bb0884bd0580bde630e30e30",
"artifact": "net-kingdom-identity-20261016T063159Z-5882771aa2ce.tar.age",
"registered_recipient_match": true,
"wrong_key_refused": true,
"checks": {
"sqlite_integrity_passed": true,
"privacyidea_key_format_and_pair_passed": true,
"keycape_signing_key_format_passed": true,
"policy_json_present": true,
"database_custom_format_present": true,
"native_identity_recovery_proven": false
},
"manifest_file_count": 36,
"all_manifest_hashes_verified": true,
"profile_sha256": "40f9e5b5bb957e5b23e03b31701702b850502d16a92a0fa0ebf92618cc3f18a1",
"database_restore": {
"image": "postgres@sha256:ff23cdce56cac62ada6f66013e1a50864c0abbe79d132d40b6e05bd80f378a70",
"image_id": "sha256:ff23cdce56cac62ada6f66013e1a50864c0abbe79d132d40b6e05bd80f378a70",
"pg_restore_version": "pg_restore (PostgreSQL) 16.14 (Debian 16.14-1.pgdg13+1)",
"aggregate_row_counts": {
"token": 5,
"resolver": 2,
"realm": 2
}
},
"full_service_authentication_proven": false,
"existing_token_decryption_proven": false,
"audit_signature_continuity_proven": false,
"finished_at": "2026-10-16T18:02:11.395426+00:00"
}

View file

@ -0,0 +1,16 @@
{
"schema": "netkingdom.actual-offline-recovery-review.v1",
"status": "verified",
"accepted_at": "2026-10-16T18:02:11.395426+00:00",
"publication_receipt": "actual-offline-publication.json",
"transfer_receipt": "actual-offline-transfer.json",
"recovery_receipt": "actual-offline-recovery.json",
"source_commit": "fbdd62b7ede49d5837a2f374511d06e1bffd3a23",
"three_published_objects_match_current_reproducible_build": true,
"local_ciphertext_sha256_rechecked": true,
"native_archive_verifier_source_matches": true,
"operator_confirmed_independent_access_and_hidden_key_run": true,
"agent_received_private_credentials": false,
"openbao_sso_contacted_for_retrieval": false,
"scope": "Existing identity ciphertext retrieval and archive/database recovery; no deliberate production shutdown, service authentication, retained MFA-token decryption or historical audit-signature continuity test."
}

View file

@ -0,0 +1,21 @@
{
"schema": "netkingdom.identity-offsite.v1",
"provider": "Storage Share",
"folder": "Backup/railiance-backups/net-kingdom-identity",
"artifact": "net-kingdom-identity-20261016T063159Z-5882771aa2ce.tar.age",
"ciphertext_bytes": 109738344,
"ciphertext_sha256": "7117b3fe1e4840c86b301c94c85e6b16709e5626bb0884bd0580bde630e30e30",
"etag": "\"28ec1f7014e492de4c40e1ae75502f08\"",
"status": "readback_verified",
"fetched_path": "/tmp/nk49-identity-fetched-v0x96qlx/net-kingdom-identity-20261016T063159Z-5882771aa2ce.tar.age",
"independent_owner_retrieval_verified": true,
"credential_source": "independently_held_provider_access",
"provider_auth_mode": "account",
"openbao_contacted": false,
"sso_contacted": false,
"provider_writes_performed": false,
"age_private_key_used": false,
"secret_values_exported": false,
"object_unchanged_during_transfer": true,
"downloaded_at": "2026-10-16T18:01:01.639298+00:00"
}

View file

@ -0,0 +1,47 @@
# Published recovery guide and accepted independent retrieval
Accepted 2026-10-16. Owner work: NK-WP-0049-T23 and T26, both done.
At <https://nx4069.your-storageshare.de>, sign into the independently accessible
**Backup** account and navigate to `railiance-backups/net-kingdom-identity/`.
The following files sit beside the encrypted identity backups:
| File | Purpose |
| --- | --- |
| `net-kingdom-recovery-57d1940947aa25ff-START-HERE.md` | Disaster recovery instructions |
| `net-kingdom-recovery-57d1940947aa25ff.zip` | Standalone recovery tools, guides, trusted fallback receipt and per-file checksums |
| `net-kingdom-recovery-57d1940947aa25ff.zip.sha256` | ZIP checksum |
Trusted ZIP SHA256, independently recorded in this repository:
```text
57d1940947aa25ff83d0f25ddf30090eb40595cccaab64225de882a2fd59ea2f
```
All three published objects passed exact readback with strong ETag, length and
content checks. Their recorded hashes match the reproducible local build.
Keep an independent copy and the trusted digest outside the identity/provider
dependency; the checksum beside the ZIP alone is not an independent trust anchor.
The operator then retrieved the protected original identity generation using
independently held provider access, without OpenBao or SSO. The read-only
download's ETag, 109,738,344-byte size and ciphertext SHA256 matched the trusted
fallback. The human-held age key matched the registered recipient. Wrong-key
refusal, all 36 manifest hashes, SQLite integrity, original key-pair checks and
an isolated PostgreSQL 16.14 restore passed. Disposable database and temporary
plaintext cleanup passed. No private credentials were sent to the agent.
Evidence:
- [Publication receipt](evidence/2026-10-16-identity-outage-recovery/actual-offline-publication.json)
- [Independent transfer receipt](evidence/2026-10-16-identity-outage-recovery/actual-offline-transfer.json)
- [Archive recovery receipt](evidence/2026-10-16-identity-outage-recovery/actual-offline-recovery.json)
- [Reconciliation review](evidence/2026-10-16-identity-outage-recovery/actual-offline-review.json)
The published guide is the exact pre-drill revision. This dated acceptance note
records the subsequent successful drill; it does not claim a later republication.
Production services were not deliberately stopped. The recovery path avoided
OpenBao/SSO; restored-service authentication, existing-token MFA and historical
audit-signature continuity remain separate acceptance under T15–T20.
Use the [isolated service restore packet](identity-service-restore-packet.md)
for that next stage.