Retain verified recovery proof independently and bind the protected point
Assistant: codex Assistant-Model: gpt-6.1-sol Assistant-Session: 01a17f16-d99c-7ea3-95f0-8212897fba6b
This commit is contained in:
parent
e1918b3f88
commit
09f4fd33cb
7 changed files with 257 additions and 11 deletions
|
|
@ -41,5 +41,33 @@
|
|||
"automatic_expiry_enabled": false
|
||||
}
|
||||
},
|
||||
"native_application_recovery_verified": false
|
||||
"native_application_recovery_verified": true,
|
||||
"protected_recovered_point": {
|
||||
"captured_at": "2026-10-29T21:22:46Z",
|
||||
"primary_object_key": "platform-pg/application-archives/coulomb-social/2026/10/29/20261029T212246Z-fd128164c7bb22a3a6c42acf.tar.age",
|
||||
"primary_version_id": "1793309020705518",
|
||||
"ciphertext_sha256": "acbf92eda5074761bb6d00170e6e459e787359afcd377f2f18324ba17496510a",
|
||||
"protected_kit": {
|
||||
"automatic_expiry": false,
|
||||
"bucket": "railiance-coulomb-social-recovery",
|
||||
"bytes": 277585920,
|
||||
"object_key": "kits/db05c8f3b5587dc1fc09a5352c317dd3357527dbe72366ab7ca1041db578c834/recovery-kit.tar",
|
||||
"project_id": "06d107bc-9d84-4672-b2a0-95701cc0c07f",
|
||||
"schema": "platform.coulomb-protected-recovery-kit.v1",
|
||||
"sha256": "db05c8f3b5587dc1fc09a5352c317dd3357527dbe72366ab7ca1041db578c834",
|
||||
"version_id": "1793309971213507"
|
||||
},
|
||||
"recovery_seconds": 30.232,
|
||||
"proof": "docs/evidence/2026-10-29-coulomb-provider-kit-recovery.json",
|
||||
"protected_recovery_proof": {
|
||||
"project_id": "06d107bc-9d84-4672-b2a0-95701cc0c07f",
|
||||
"bucket": "railiance-coulomb-social-recovery",
|
||||
"object_key": "kits/receipts/a77477cac53086b83ad2cb512973ae0d1dfecba028a29a92e06a1bcfe5287f29/recovery-proof.json",
|
||||
"version_id": "1793310476676486",
|
||||
"sha256": "a77477cac53086b83ad2cb512973ae0d1dfecba028a29a92e06a1bcfe5287f29",
|
||||
"bytes": 4237,
|
||||
"independent_readback_verified": true,
|
||||
"automatic_expiry": false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,10 +33,11 @@ Negative PUT probes use separate transports because a denied upload can leave
|
|||
the provider connection unusable for its next request.
|
||||
|
||||
Both buckets are private and versioned; no automatic expiry has been enabled.
|
||||
The protected bucket never participates in rolling expiry. Rolling retention,
|
||||
capacity, first coherent app capture, independent exact-version decryption and
|
||||
isolated application recovery, monitoring and timers remain WP-0053/CSOC-WP-0012
|
||||
acceptance work. Synthetic fixtures are boundary evidence, not app backups.
|
||||
The protected bucket never participates in rolling expiry. First coherent app
|
||||
capture, independent exact-version decryption and isolated application recovery
|
||||
are now verified below. Rolling retention, capacity, copy disposition, monitoring
|
||||
and timers remain WP-0053/CSOC-WP-0012 acceptance work. The earlier synthetic
|
||||
fixtures remain boundary evidence, distinct from this real application backup.
|
||||
|
||||
The routine pairs and age identity each have a separate protected, enabled,
|
||||
nonexpiring provider secret version. They survive node/workstation loss. If all
|
||||
|
|
@ -51,3 +52,18 @@ deadlines, using a bounded attended construction window. No standing organizatio
|
|||
administration key or publisher IAM administration is admitted. The construction
|
||||
key was revoked, its temporary pair removed and the personal browser context
|
||||
closed without saving state. Routine drills do not rerun identity bootstrap.
|
||||
|
||||
The first provider-only kit recovery is now verified in30.232s monotonic. The
|
||||
public JSON contract records the complete protected kit, exact primary recovery
|
||||
point and separately protected recovery-proof coordinates. Native receipt:
|
||||
../evidence/2026-10-29-coulomb-provider-kit-recovery.json. All2098kit members,
|
||||
13tables/112rows/sequences,82files and39rendered pages/access denials pass.
|
||||
Images/tools/data came from the kit; the age identity came from separate escrow.
|
||||
Held API callers and the existing Docker daemon were used. Account-recovery
|
||||
latency, a fresh daemon and real-browser identity journeys are excluded.
|
||||
|
||||
application_recovery_drill.py previews without effects and executes only with
|
||||
--execute, --kit-reference and a fresh --destination under an owner-private
|
||||
directory outside Git. It never restores production. Retention/copy disposition,
|
||||
monitoring and scheduled activation remain open; this receipt closes only the
|
||||
consumer's first-paired-recovery task.
|
||||
|
|
|
|||
117
docs/evidence/2026-10-29-coulomb-provider-kit-recovery.json
Normal file
117
docs/evidence/2026-10-29-coulomb-provider-kit-recovery.json
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
{
|
||||
"age_identity_from_separate_provider_escrow": true,
|
||||
"application": "coulomb-social",
|
||||
"application_checks": {
|
||||
"actual_pages_rendered_through_view": 39,
|
||||
"content_files_unchanged": 82,
|
||||
"database_restore": {
|
||||
"content_files": 82,
|
||||
"content_hashes_match": true,
|
||||
"content_was_empty": false,
|
||||
"database_container": "csoc-recovery-20261029214329",
|
||||
"database_rows": 112,
|
||||
"database_rows_and_sequences_match": true,
|
||||
"database_tables": 13,
|
||||
"elapsed_seconds": 4.43,
|
||||
"network": "csoc-recovery-20261029214329-net",
|
||||
"network_internal": true,
|
||||
"postgres_image_id": "sha256:ff23cdce56cac62ada6f66013e1a50864c0abbe79d132d40b6e05bd80f378a70",
|
||||
"published_ports": 0,
|
||||
"restored_directory": "/tmp/csoc-recovery-20261029214329-0rvudi86",
|
||||
"status": "restored_verified"
|
||||
},
|
||||
"external_identity_provider_used": false,
|
||||
"fixture_transaction_rolled_back": true,
|
||||
"packaged_application_image": "sha256:9a646d8e01a61ba5316d3c2eb0273064e17f2d0300ad07af766ccedda65ecb18",
|
||||
"production_access": false,
|
||||
"real_browser_journey_verified": false,
|
||||
"recovered_spaces_with_content": 1,
|
||||
"restored_owner_access_verified": true,
|
||||
"same_tenant_ungranted_page_denials": 39,
|
||||
"status": "isolated_application_recovery_verified",
|
||||
"synthetic_viewer_mutation_denials": 1,
|
||||
"synthetic_viewer_reads": 1
|
||||
},
|
||||
"application_restore_verified": true,
|
||||
"captured_at": "2026-10-29T21:22:46Z",
|
||||
"completed_at": "2026-10-29T21:43:40.590019+00:00",
|
||||
"fresh_docker_daemon": false,
|
||||
"kit_members_verified": 2098,
|
||||
"operator_account_recovery_time_included": false,
|
||||
"original_node_or_plaintext_used": false,
|
||||
"personal_session_used": false,
|
||||
"protected_kit": {
|
||||
"automatic_expiry": false,
|
||||
"bucket": "railiance-coulomb-social-recovery",
|
||||
"bytes": 277585920,
|
||||
"object_key": "kits/db05c8f3b5587dc1fc09a5352c317dd3357527dbe72366ab7ca1041db578c834/recovery-kit.tar",
|
||||
"project_id": "06d107bc-9d84-4672-b2a0-95701cc0c07f",
|
||||
"schema": "platform.coulomb-protected-recovery-kit.v1",
|
||||
"sha256": "db05c8f3b5587dc1fc09a5352c317dd3357527dbe72366ab7ca1041db578c834",
|
||||
"version_id": "1793309971213507"
|
||||
},
|
||||
"real_browser_journey_verified": false,
|
||||
"recovery_seconds": 30.232,
|
||||
"registry_pulls_performed": false,
|
||||
"restore": {
|
||||
"content_files": 82,
|
||||
"content_hashes_match": true,
|
||||
"content_was_empty": false,
|
||||
"database_container": "csoc-recovery-20261029214329",
|
||||
"database_rows": 112,
|
||||
"database_rows_and_sequences_match": true,
|
||||
"database_tables": 13,
|
||||
"elapsed_seconds": 4.43,
|
||||
"network": "csoc-recovery-20261029214329-net",
|
||||
"network_internal": true,
|
||||
"postgres_image_id": "sha256:ff23cdce56cac62ada6f66013e1a50864c0abbe79d132d40b6e05bd80f378a70",
|
||||
"published_ports": 0,
|
||||
"restored_directory": "/tmp/csoc-recovery-20261029214329-0rvudi86",
|
||||
"status": "restored_verified"
|
||||
},
|
||||
"schema": "platform.coulomb-provider-kit-recovery.v1",
|
||||
"stages_seconds": {
|
||||
"all_kit_member_hashes_and_extraction": 2.501,
|
||||
"application_image_load": 1.229,
|
||||
"decrypt_and_validate_pair": 0.121,
|
||||
"isolated_database_content_restore": 4.552,
|
||||
"packaged_app_views_and_permissions": 6.555,
|
||||
"postgres_image_load": 1.754,
|
||||
"provider_age_escrow_retrieval": 0.503,
|
||||
"provider_kit_retrieval": 12.373
|
||||
},
|
||||
"started_at": "2026-10-29T21:43:07.435367+00:00",
|
||||
"status": "application_restored_verified",
|
||||
"timers_activated": false,
|
||||
"unpack": {
|
||||
"application_restore_verified": false,
|
||||
"captured_at": "2026-10-29T21:22:46Z",
|
||||
"content_sha256": "2e81fa5fe2e1a82dfdec4df855a8c5643f59573cc0418a4a26f908d87727b125",
|
||||
"database_sha256": "93f8f01edc9b9a2cd9580d0bab2048d1f5a8e2394e7fa266d419636f502e15f1",
|
||||
"encrypted_sha256": "acbf92eda5074761bb6d00170e6e459e787359afcd377f2f18324ba17496510a",
|
||||
"status": "decrypted_pair_verified",
|
||||
"version_id": "1793309020705518"
|
||||
},
|
||||
"object_key": "platform-pg/application-archives/coulomb-social/2026/10/29/20261029T212246Z-fd128164c7bb22a3a6c42acf.tar.age",
|
||||
"version_id": "1793309020705518",
|
||||
"ciphertext_sha256": "acbf92eda5074761bb6d00170e6e459e787359afcd377f2f18324ba17496510a",
|
||||
"ciphertext_bytes": 2120392,
|
||||
"image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:9a646d8e01a61ba5316d3c2eb0273064e17f2d0300ad07af766ccedda65ecb18",
|
||||
"age_recipient": "age1qm30jk8q0cezey652dk2dhcr3d9vs528v6lg8mavl6d4q3e3vgnqmrmyy3",
|
||||
"database_sha256": "93f8f01edc9b9a2cd9580d0bab2048d1f5a8e2394e7fa266d419636f502e15f1",
|
||||
"content_sha256": "2e81fa5fe2e1a82dfdec4df855a8c5643f59573cc0418a4a26f908d87727b125",
|
||||
"application_data_images_and_recovery_tools_from_provider_kit": true,
|
||||
"bootstrap_api_client_preinstalled": true,
|
||||
"executed_drill_source": "e1918b3",
|
||||
"metadata_enriched_from_hash_verified_kit": true,
|
||||
"protected_recovery_proof": {
|
||||
"project_id": "06d107bc-9d84-4672-b2a0-95701cc0c07f",
|
||||
"bucket": "railiance-coulomb-social-recovery",
|
||||
"object_key": "kits/receipts/a77477cac53086b83ad2cb512973ae0d1dfecba028a29a92e06a1bcfe5287f29/recovery-proof.json",
|
||||
"version_id": "1793310476676486",
|
||||
"sha256": "a77477cac53086b83ad2cb512973ae0d1dfecba028a29a92e06a1bcfe5287f29",
|
||||
"bytes": 4237,
|
||||
"independent_readback_verified": true,
|
||||
"automatic_expiry": false
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue