Verify full and essentials recovery and implement bounded retention tooling
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a06ecb-456a-71c2-b41e-0755d336e883
This commit is contained in:
parent
11322a5256
commit
a3ca4b708f
16 changed files with 461 additions and 4 deletions
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"schema": "platform.essentials-bootstrap-assessment.v1",
|
||||
"pinned_recovery_images_public_pull_verified": true,
|
||||
"image_bytes": [
|
||||
75323786,
|
||||
160190278
|
||||
],
|
||||
"other_database_physical_bytes": {
|
||||
"apps-pg-1": 32477276,
|
||||
"net-kingdom-pg-1": 41300060,
|
||||
"platform-pg-1": 53373778,
|
||||
"platform-pg-2-1": 25556393,
|
||||
"state-hub-db-1": 66697262
|
||||
},
|
||||
"package_type_counts": {
|
||||
"container": 21,
|
||||
"npm": 2,
|
||||
"pypi": 2
|
||||
},
|
||||
"all_packages_assumed_rebuildable": false,
|
||||
"note": "Physical database/image sizes, not compressed offsite exports. Other service backup coverage and independent recovery-key custody retain their own acceptance contracts."
|
||||
}
|
||||
26
docs/evidence/RPF-WP-0038-essentials-capture-2026-09-06.json
Normal file
26
docs/evidence/RPF-WP-0038-essentials-capture-2026-09-06.json
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"schema": "platform.forgejo-essentials-capture.v1",
|
||||
"status": "captured_pending_offsite_restore",
|
||||
"archive_bytes": 286228448,
|
||||
"archive_sha256": "940b27f6782ad614fe16ab4f6f31dd431adb60b6dea249662346c573617b3a10",
|
||||
"repository_heads": 142,
|
||||
"zip_crc_passed": true,
|
||||
"budget_bytes": 629145600,
|
||||
"manifest": {
|
||||
"complete_application_backup": false,
|
||||
"created_at": "2026-09-06T06:12:09.581148+00:00",
|
||||
"kept_members": 70433,
|
||||
"omitted_prefixes": [
|
||||
"data/packages/",
|
||||
"data/repo-archive/",
|
||||
"data/indexers/",
|
||||
"data/actions_log/",
|
||||
"log/"
|
||||
],
|
||||
"package_registry_available": false,
|
||||
"profile": "essentials",
|
||||
"recovery_contract": "Git and collaboration recovery; packages require full primary or an independent artifact source.",
|
||||
"schema": "platform.forgejo-backup-profile.v1",
|
||||
"unique_data_policy": "Keep repositories, database, configuration, attachments, LFS and Actions artifacts when present."
|
||||
}
|
||||
}
|
||||
27
docs/evidence/RPF-WP-0038-essentials-restore-2026-09-06.json
Normal file
27
docs/evidence/RPF-WP-0038-essentials-restore-2026-09-06.json
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"schema": "platform.forgejo-isolated-restore.v1",
|
||||
"status": "restored_essentials",
|
||||
"images": [
|
||||
"code.forgejo.org/forgejo/forgejo@sha256:e2684fd8707d486329084a695ed91999a4072a798e5409d45c1eb8a2911ff4b9",
|
||||
"postgres@sha256:ff23cdce56cac62ada6f66013e1a50864c0abbe79d132d40b6e05bd80f378a70"
|
||||
],
|
||||
"source_provider": "Nextcloud",
|
||||
"offsite_artifact": "wp0029-recovery-forgejo-essentials-20260906.zip.age",
|
||||
"ciphertext_sha256": "23b5250469a63a3e0097047851cb02036ec4e24928979db7a972a3245f93b60a",
|
||||
"archive_profile": "essentials",
|
||||
"stage": "repository_recovery",
|
||||
"database_import": true,
|
||||
"database_counts": {
|
||||
"repositories": 142,
|
||||
"users": 6,
|
||||
"package_blobs": 2050
|
||||
},
|
||||
"application_health": true,
|
||||
"repositories_verified": [
|
||||
"coulomb/key-cape",
|
||||
"coulomb/adaptive-pricing"
|
||||
],
|
||||
"package_registry_available": false,
|
||||
"primary_storage_accessed": false,
|
||||
"cleanup": true
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"schema": "platform.real-offsite-recovery.v1",
|
||||
"status": "offsite_fetched_pending_isolated_restore",
|
||||
"quota_before": {
|
||||
"quota_bytes": 10737418240,
|
||||
"used_bytes": 5385385643,
|
||||
"available_bytes": 5352032597
|
||||
},
|
||||
"artifact": "wp0029-recovery-forgejo-essentials-20260906.zip.age",
|
||||
"source_backup": "forgejo-essentials-20260906.zip.age",
|
||||
"kv_version": 3,
|
||||
"upload_http_status": 201,
|
||||
"download_http_status": 200,
|
||||
"ciphertext_bytes": 286298520,
|
||||
"ciphertext_sha256": "23b5250469a63a3e0097047851cb02036ec4e24928979db7a972a3245f93b60a",
|
||||
"archive_profile": "essentials",
|
||||
"decrypted": true,
|
||||
"plaintext_sha256": "940b27f6782ad614fe16ab4f6f31dd431adb60b6dea249662346c573617b3a10",
|
||||
"quota_after": {
|
||||
"quota_bytes": 10737418240,
|
||||
"used_bytes": 5385385643,
|
||||
"available_bytes": 5352032597
|
||||
},
|
||||
"warden_exit_code": 0
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"schema": "platform.forgejo-primary-archive.v1",
|
||||
"status": "primary_fetched_pending_application_restore",
|
||||
"stage": "transfer_verified",
|
||||
"destination": "s3://railiance-platform-pg-backup/platform-pg/application-archives/forgejo/2026/09/06/060650-6cf2063187f52d6a2b65f79b.zip.age",
|
||||
"ciphertext_sha256": "00d2a5b099bc0e65b2109287fca3bd9d6eb1c8a4e43623520a6e9f3379904018",
|
||||
"ciphertext_bytes": 5353024293,
|
||||
"uploaded_bytes": 5353024293,
|
||||
"multipart_completed": true,
|
||||
"version_pinned": true,
|
||||
"downloaded_bytes": 5353024293,
|
||||
"download_hash_matches": true,
|
||||
"decrypted": true,
|
||||
"plaintext_sha256": "fe53d156461387ea487cddc5d6a01f0b5e3debda6fa494c8b87afc8bc62b55b2",
|
||||
"warden_exit_code": 0
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"schema": "platform.forgejo-isolated-restore.v1",
|
||||
"status": "restored",
|
||||
"images": [
|
||||
"code.forgejo.org/forgejo/forgejo@sha256:e2684fd8707d486329084a695ed91999a4072a798e5409d45c1eb8a2911ff4b9",
|
||||
"postgres@sha256:ff23cdce56cac62ada6f66013e1a50864c0abbe79d132d40b6e05bd80f378a70"
|
||||
],
|
||||
"source_provider": "Scaleway",
|
||||
"offsite_artifact": "s3://railiance-platform-pg-backup/platform-pg/application-archives/forgejo/2026/09/06/060650-6cf2063187f52d6a2b65f79b.zip.age",
|
||||
"ciphertext_sha256": "00d2a5b099bc0e65b2109287fca3bd9d6eb1c8a4e43623520a6e9f3379904018",
|
||||
"archive_profile": "full",
|
||||
"stage": "package_blob_recovery",
|
||||
"database_import": true,
|
||||
"database_counts": {
|
||||
"repositories": 142,
|
||||
"users": 6,
|
||||
"package_blobs": 2040
|
||||
},
|
||||
"application_health": true,
|
||||
"repositories_verified": [
|
||||
"coulomb/key-cape",
|
||||
"coulomb/adaptive-pricing"
|
||||
],
|
||||
"package_blobs_verified": 2040,
|
||||
"cleanup": true
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"schema": "platform.forgejo-primary-archive.v1",
|
||||
"status": "primary_fetched_pending_application_restore",
|
||||
"stage": "transfer_verified",
|
||||
"destination": "s3://railiance-platform-pg-backup/platform-pg/application-archives/forgejo/2026/09/06/060650-6cf2063187f52d6a2b65f79b.zip.age",
|
||||
"ciphertext_sha256": "00d2a5b099bc0e65b2109287fca3bd9d6eb1c8a4e43623520a6e9f3379904018",
|
||||
"ciphertext_bytes": 5353024293,
|
||||
"uploaded_bytes": 5353024293,
|
||||
"multipart_completed": true,
|
||||
"version_pinned": true,
|
||||
"downloaded_bytes": 5353024293,
|
||||
"download_hash_matches": true
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue