Record content recovery release preparation and backup ordering
Some checks failed
Use-case regression gate / usecase-regressions (push) Has been cancelled

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a18e2d-f513-7742-b8e7-12af0b744ff3
This commit is contained in:
tegwick 2026-10-31 13:25:36 +01:00
parent 4e9a1c62ee
commit a786a8050d
10 changed files with 455 additions and 2 deletions

View file

@ -0,0 +1,65 @@
{
"schema": "coulomb.packaged-content-lifecycle-recovery.v1",
"status": "packaged_recovered_client_export_and_views_verified",
"source": "f306dbfa2604e4815523667740be2925c333b84e",
"image_id": "sha256:d3f2f5bb90f0ba79f4e1d8098d2eb06f8940b8789e5ecb851914bbab364597ec",
"restore_receipt_sha256": "966d6640e42e2f4940c66d1cd5c8a802cd950de0305572f3c8b720ee3d81ae2b",
"client_export": {
"status": "recovered_client_export_verified",
"schema": "coulomb.client-dataset-export.v1",
"content_files": 85,
"records": {
"members.user": 1,
"members.member": 1,
"spaces.space": 1,
"spaces.spacemembership": 1
},
"admin_events": 0,
"archive_sha256": "e364a61570e0083e729a3f314eb707c57347200438bd98170c77b8f7fcc2b337",
"offboarding_complete": false,
"all_source_tables_compared": 13,
"all_source_files_compared": 86,
"archive_member_hashes_verified": true,
"selected_client_content_complete_locally": true,
"source_sql_and_content_unchanged": true,
"external_bindings_require_review": 0,
"sessions_and_credentials_excluded": true
},
"candidate_application": {
"status": "isolated_application_recovery_verified",
"recovered_spaces_with_content": 1,
"actual_pages_rendered_through_view": 40,
"restored_owner_access_verified": true,
"synthetic_viewer_reads": 1,
"synthetic_viewer_mutation_denials": 1,
"same_tenant_ungranted_page_denials": 40,
"fixture_transaction_rolled_back": true,
"production_access": false,
"external_identity_provider_used": false,
"real_browser_journey_verified": false
},
"previous_image_application": {
"status": "isolated_application_recovery_verified",
"recovered_spaces_with_content": 1,
"actual_pages_rendered_through_view": 40,
"restored_owner_access_verified": true,
"synthetic_viewer_reads": 1,
"synthetic_viewer_mutation_denials": 1,
"same_tenant_ungranted_page_denials": 40,
"fixture_transaction_rolled_back": true,
"production_access": false,
"external_identity_provider_used": false,
"real_browser_journey_verified": false
},
"source_content_files_unchanged": 86,
"all_tables_unchanged_after_both_view_checks": true,
"application_source_overlay": false,
"export_archive_removed": true,
"network_internal": true,
"published_ports": 0,
"production_access": false,
"production_restore": false,
"post_date_correction_data_claimed": true,
"retained_point_captured_at": "2026-10-31T07:13:52Z",
"driver_sha256": "92b66225e5f9bdf03d0a0999b613370c42341a2ceef468f1743fb4301884cb25"
}

View file

@ -0,0 +1,3 @@
/tmp/csoc-content-release-observation-20261031.py: 1065625ee5b0736ae68a5230684f0effcb2c92cf0f814154ee86450b5a8fda4a
/tmp/csoc-content-row-drift-20261031.py: 49c8f0b8a92524205e2b190bbefec76d9cc38d966c4d20ffa7391e85ff17bf0e
/tmp/csoc-packaged-lifecycle-recovery-20261031.py: 92b66225e5f9bdf03d0a0999b613370c42341a2ceef468f1743fb4301884cb25

View file

@ -0,0 +1,7 @@
{
"proposal_digest": "sha256:c9c3231620721ef3ea9b2bf22fc6c62fe3ed8efb91386cf7ec96acc6959dae08",
"execution_started": false,
"status": "release_refused_or_failed",
"failure_type": "Refused",
"failure_reason": "inactive_backup_installation_required_before_image_release"
}

View file

@ -0,0 +1,79 @@
{
"schema": "coulomb.content-release-preparation.v1",
"prepared_at": "2026-10-31T12:16:52.085864+00:00",
"status": "prepared_waiting_for_inactive_backup_installation",
"proposal_digest": "sha256:c9c3231620721ef3ea9b2bf22fc6c62fe3ed8efb91386cf7ec96acc6959dae08",
"capsule_members": 20,
"owner_task": "RAPPS-WP-0015-T07",
"owner_task_id": "8f448934-bdfe-539f-8cab-a739ec752491",
"consumer_task": "CSOC-WP-0013-T05",
"baseline_revision": 19,
"current_business_rows": 93,
"candidate_image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:d3f2f5bb90f0ba79f4e1d8098d2eb06f8940b8789e5ecb851914bbab364597ec",
"prerequisite_installation_digest": "sha256:8f442bf0ebed8bbf3b7f227b52081df52613f3f5f6874c4a59511cfc2ba06d42",
"ordering": [
"historical custody repair",
"recurring alert route",
"inactive backup-source installation",
"content image preflight and supervised release",
"native recurring proof and schedule activation"
],
"controller_tests": {
"tests": 40,
"failures": 0,
"errors": 0,
"skipped": 0
},
"helm_lint": "passed",
"image_only_local_render_difference": true,
"candidate_image_only_server_preview_verified": true,
"native_full_preflight": "refused_expected_missing_installation",
"full_preflight_passed": false,
"historical_custody_packet_digest_unchanged": true,
"inactive_installer_packet_digest_unchanged": true,
"release_executed": false,
"fresh_backup_created_by_preparation": false,
"production_data_restored": false,
"timers_activated": false,
"new_resources_committed": 0,
"cost_risk_review": {
"additional_infrastructure_reservations": 0,
"new_backup_objects": 1,
"encrypted_file_limit_bytes": 1073741824,
"incremental_provider_cost_eur": null,
"autopilot_budget_claimed": false,
"risks": [
"Brief application pause for paired capture and Recreate image rollout.",
"Rollback restores previous image/helper without rolling back productive data.",
"Uncertain or changed baseline refuses; inspect durable receipt before retry."
]
},
"files": [
{
"repo": "railiance-apps",
"path": "tools/coulomb-image-release.py",
"sha256": "4cefb7b4ce7fb7eece1cd78ce3c1712a2b5cc2f9c81acfed06e3c6ac7c4abad3"
},
{
"repo": "railiance-apps",
"path": "tools/coulomb_image_release_node.py",
"sha256": "5547b3809f34178e48404cd1590f665729b062b4333f561e2da81b56d435dece"
},
{
"repo": "railiance-apps",
"path": "tests/test_coulomb_image_release.py",
"sha256": "dc9cd51bd0698b46c5e2a4f2f0fb8f89eceed722a92bd7b03f7278ed77a497d4"
},
{
"repo": "railiance-apps",
"path": "release/coulomb-content-lifecycle-f306dbf.json",
"sha256": "1bcd840aee2a93130838b7430de279c56dd7aecbce4244765a85be9d0a7130e2"
}
],
"native_no_attempt_readback": {
"release_journal_exists": false,
"release_receipt_exists": false
},
"sequencing_decision_id": "de5a4528-0864-4769-b9d0-2f658b0310c6",
"owner_controller_commit": "9c748846413c6db3f13ae3e55627fe3f6ad89194"
}

View file

@ -0,0 +1,90 @@
{
"schema": "coulomb.reviewed-image-release.v1",
"proposal_id": "CSOC-CONTENT-LIFECYCLE-20261031",
"scope": "ADMINISTER @ realm:kubernetes/railiance01; supervised founder execution only",
"operation": "image_only_existing_migration_0003",
"cluster_uid": "a553c742-0115-43d4-99a4-a5ca56fe0786",
"baseline_revision": 19,
"baseline_helm_manifest_sha256": "93cb277abd1aea0657be482e458dcfb268fe0bfbd45d90aa1faedcc7f5bce499",
"candidate_render_sha256": "1606725273089b83689850ad1c25d1834faa15e00c8cf8aa24e1053273af71bc",
"deployment_uid": "2dbe661a-d232-4477-bbd1-833813077fbe",
"pvc_uid": "9888abeb-9d52-4c70-a23d-b5494780d9c3",
"baseline_spec_sha256": "42e091e52d5dae3c1f986e4898c62057fa80846adfce049a75d8fbd4681180ea",
"candidate_spec_sha256": "c65cb691bab7054ae25de58cdb75933d383621ec4e049d2daa1b1bf52dce0bba",
"old_image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:522bcd7fce92436765a60c1e4afa2598f3cc40913352153ff1c4319a99ca92ed",
"candidate_image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:d3f2f5bb90f0ba79f4e1d8098d2eb06f8940b8789e5ecb851914bbab364597ec",
"product_source": "f306dbfa2604e4815523667740be2925c333b84e",
"expected_data": {
"business_tables": 12,
"migration_rows_sha256": "43471516387c0e2a3d35971033ed6af330e2963efe4da93293d97633825d04af",
"business_rows": 93,
"business_rows_sha256": "7953b37b02b80d89ca6869dab6b2b0b996541de20ca0dd1b294a5f25572fb2ca",
"content_files": 86,
"content_files_sha256": "ed535246f4e8f46fcd7ce01f936127996aff873c6936b297f7272194b594aeda",
"global_slug_constraint": true,
"tenant_slug_constraint": true,
"migration_0003_applied": true,
"duplicate_slug_groups": 0
},
"public_recipient": "age1qm30jk8q0cezey652dk2dhcr3d9vs528v6lg8mavl6d4q3e3vgnqmrmyy3",
"installed_helper_hashes": {
"/opt/coulomb-social-backup/paired-backup.py": "d161c742d1a6a182460a57d0a1719591ab58fc94006f55169ad3d74442a93630",
"/opt/coulomb-social-backup/snapshot-content-and-db.py": "dcc8dd2a3989f279597595f9260b31b24fcc9b6dc787f04c17ef0491c53d830d",
"/opt/coulomb-social-backup/mirror-paired-backup.py": "9ceb26d9083af016c4b787907e4dce7bdf437c782fb2d15eb28d9e334e6e431c",
"/opt/coulomb-social-backup/check-paired-backup-health.py": "2d40ec6e4c59ea7fe1d46065d197b9a87ca6811f023cc6f3e20e4184a3490566",
"/opt/coulomb-social-backup/backup_capacity.py": "cb699a79e67b129239b5aa5d6f3b0d4ffaa9773a8b073227ad17fdecb5b9d893",
"/opt/railiance-platform/scripts/application_recovery_identities.py": "20f56255ed6eeec4aafe33f142bc3ee03f623d4957a7b0cabb741d340f15f79d",
"/opt/railiance-platform/scripts/application_recovery_mirror.py": "d48ab95e89b9eeae36269d853ebe4c44c22e1f57d4e14224f03d0b9aeeb34178",
"/opt/railiance-platform/scripts/application_recovery_resources.py": "ab70ec341e738272730eb0daf76840d0bca807caeb3c4e4c2357f162fbed4498",
"/opt/railiance-platform/scripts/primary_application_archive.py": "a3f0a61e869a6012edb4b5288be14e3b0c4a9a1273b090320ab146d12e5aa94d",
"/opt/coulomb-social-backup/backup_alerts.py": "07522437d4276b92f0a44149adc6c9e81bb18dbe59ce0f1f9e58a48347700d0e",
"/opt/coulomb-social-backup/notify-backup-alert.py": "0bd53bc5ad22d8bcb0326fb18a17737744b06416fe785dad077308e45f051d5a",
"/opt/coulomb-social-backup/observe-backup-alerts.py": "17caf4fa65283242f618b039ff1d018801c9890ea2a9178912cbdd4b50ee2664"
},
"clipboard_static_sha256": "347eabe0c8d93bf439df02b5a08a7ea71004600e6ff4e8a42cecbee52a9f0413",
"fresh_backup_before_helm": true,
"requires_dataset_equality_before_and_after": true,
"node_request_percent_limit": 90,
"helm_atomic_timeout_seconds": 300,
"rollback": "Restore Helm revision19/image522bcd7f and verified snapshot pin; preserve all post-capture data. No production data restore or schema downgrade.",
"approval_status": "prepared_not_admitted",
"recovery_rehearsal_scope": "Retained independently recovered 2026-10-31T07:13:52Z point; candidate and previous image preserve all 13 source tables and 86 files. Live observation now has93 business rows versus92 in that point; exact fresh paired backup/readback is required before Helm. Independent restore of the new point remains consumer follow-through. Read-only drift comparison confines differences to sessions and user/member login timestamps; all content and migration history match the retained point.",
"rehearsal_evidence_sha256": {
"content-lifecycle-candidate-build-2026-10-31.json": "83ad2ec41c85f8bb5087a250fdb91126ed92f12351cdc72b353c6f0e1a26452b",
"content-lifecycle-candidate-provenance-2026-10-31.json": "35ed909e0a2fa5c57cea1fcc4fbebb877eae559ca9dc753c3da00f84806d7b73",
"content-lifecycle-candidate-tests-2026-10-31.json": "27a75cfee6bbda41f377b73d6a6c7ecde0c54806c113f1be5223dd2f2cf39b3b",
"content-lifecycle-baseline-tests-2026-10-31.json": "de14e4e10337990ccec1c483f7d943bdc7e11b03aa813aff47d00a9b38a07b65",
"content-lifecycle-candidate-recovery-2026-10-31.json": "8d15172e5e330d01f153336e67f6bffb4363d571530c31ea05db872ca10807a9",
"content-lifecycle-validation-2026-10-31.json": "cbb093af470588ca6e8eb3ec5bc1ccee0be537ab37a46625b6ac267c17343d99",
"content-lifecycle-release-target-2026-10-31.json": "e9b50be3c8284c5a9ae96d75b800cbc4090580fa811c2ecd098d73ce8cbee74e",
"content-lifecycle-release-row-drift-2026-10-31.json": "b10f65bf55e900199ae6037767f32e8901aaccb6f7f3a86461f13dd02ec8efce"
},
"new_resources_committed": 0,
"autopilot_or_eur_budget_claimed": false,
"values_file": "release/content-lifecycle-values.yaml",
"snapshot_file": "release/content-lifecycle-snapshot.py",
"evidence_directory": "release/content-lifecycle-evidence",
"prerequisite_installation_digest": "sha256:8f442bf0ebed8bbf3b7f227b52081df52613f3f5f6874c4a59511cfc2ba06d42",
"requires_inactive_backup_units": true,
"files": {
"tools/coulomb-image-release.py": "4cefb7b4ce7fb7eece1cd78ce3c1712a2b5cc2f9c81acfed06e3c6ac7c4abad3",
"tools/coulomb_image_release_node.py": "5547b3809f34178e48404cd1590f665729b062b4333f561e2da81b56d435dece",
"tools/coulomb_image_probe.py": "7d241b288992fbbc961b42a1311f7d0938b0c899c0675b7db92653c5ace6014f",
"release/content-lifecycle-values.yaml": "daa302f96bddb889c7fe4aa95b740e9f5184d2ac463cd2403431b3e94db86528",
"release/content-lifecycle-snapshot.py": "c1508043f473d2762723acda04944a36f5346e7641fbe6fdf21a91acd3921a54",
"charts/coulomb-social/Chart.yaml": "663d6c23c57457a03bc376ebafb8107ee7f150e150f4d4fb6a3a949fb21006aa",
"charts/coulomb-social/templates/_helpers.tpl": "65379818d484959e7221d3f538b59ffd6b8b7d3c9493250e47520576aee1fc68",
"charts/coulomb-social/templates/content-pvc.yaml": "5c4ddcaee2b3dcdf17da061b1a7a2cb1e0398d2f56f4ef31790cfaaf648b0fee",
"charts/coulomb-social/templates/deployment.yaml": "f90b7517959ec8785f578f917fec222287931e4f8a27f6f9e8fc0a28385f7df8",
"charts/coulomb-social/templates/service.yaml": "78ce0ec6990c5ad57703c7a8d5d2c88c8eb9302d325cb2ba9d2df34e5f90ebdd",
"charts/coulomb-social/values.yaml": "af48d133f7fe45f0d762b40878f306ef48262f6cbbca61808ffac5dd9fc9d241",
"release/content-lifecycle-evidence/content-lifecycle-baseline-tests-2026-10-31.json": "de14e4e10337990ccec1c483f7d943bdc7e11b03aa813aff47d00a9b38a07b65",
"release/content-lifecycle-evidence/content-lifecycle-candidate-build-2026-10-31.json": "83ad2ec41c85f8bb5087a250fdb91126ed92f12351cdc72b353c6f0e1a26452b",
"release/content-lifecycle-evidence/content-lifecycle-candidate-provenance-2026-10-31.json": "35ed909e0a2fa5c57cea1fcc4fbebb877eae559ca9dc753c3da00f84806d7b73",
"release/content-lifecycle-evidence/content-lifecycle-candidate-recovery-2026-10-31.json": "8d15172e5e330d01f153336e67f6bffb4363d571530c31ea05db872ca10807a9",
"release/content-lifecycle-evidence/content-lifecycle-candidate-tests-2026-10-31.json": "27a75cfee6bbda41f377b73d6a6c7ecde0c54806c113f1be5223dd2f2cf39b3b",
"release/content-lifecycle-evidence/content-lifecycle-release-row-drift-2026-10-31.json": "b10f65bf55e900199ae6037767f32e8901aaccb6f7f3a86461f13dd02ec8efce",
"release/content-lifecycle-evidence/content-lifecycle-release-target-2026-10-31.json": "e9b50be3c8284c5a9ae96d75b800cbc4090580fa811c2ecd098d73ce8cbee74e",
"release/content-lifecycle-evidence/content-lifecycle-validation-2026-10-31.json": "cbb093af470588ca6e8eb3ec5bc1ccee0be537ab37a46625b6ac267c17343d99"
}
}

View file

@ -0,0 +1,61 @@
{
"changed_columns": {
"django_session": [
"session_key",
"session_data",
"expire_date"
],
"members_member": [
"updated_at",
"last_login_at"
],
"members_user": [
"last_login"
]
},
"file_changes": [],
"retained_fingerprint": {
"business_tables": 12,
"migration_rows_sha256": "43471516387c0e2a3d35971033ed6af330e2963efe4da93293d97633825d04af",
"business_rows": 92,
"business_rows_sha256": "6243955479f7861fcdcd79b62f7f1e9f9a27c05a17bd2c17b792ebc98b2fa7b6",
"content_files": 86,
"content_files_sha256": "ed535246f4e8f46fcd7ce01f936127996aff873c6936b297f7272194b594aeda",
"global_slug_constraint": true,
"tenant_slug_constraint": true,
"migration_0003_applied": true,
"duplicate_slug_groups": 0
},
"schema": "coulomb.content-release-row-drift.v1",
"changed_tables": [
{
"table": "django_session",
"retained_rows": 42,
"current_rows": 43,
"retained_sha256": "c958e33ec782f9f2fd1b3cceba4a64da0038fde51050f25905ae42de91ca6dde",
"current_sha256": "594e246ef6297d9be9b6e8d9eda076a5b2ab36afb9263606b719f64f51293ba6"
},
{
"table": "members_member",
"retained_rows": 1,
"current_rows": 1,
"retained_sha256": "4d465d2b9d1e6311e505f861f2ed4b67763a545a965f9a7d0c586a3d07e3e9a3",
"current_sha256": "ab82b3f2c5e49f8634c598c9642894747f4b6fcff0f5230ac27f41939feb8640"
},
{
"table": "members_user",
"retained_rows": 1,
"current_rows": 1,
"retained_sha256": "81ccb3a40191e910a68c101896df518a588c00231728934c4c900577f8ae4f12",
"current_sha256": "0fc7a71b4b80a71fbedce527bbd2cae3858cf6a062e5714fc231be13ff987256"
}
],
"all_other_business_tables_equal": true,
"migration_history_equal": true,
"content_equal": true,
"retained_point": "2026-10-31T07:13:52Z",
"current_business_rows": 93,
"current_business_rows_sha256": "7953b37b02b80d89ca6869dab6b2b0b996541de20ca0dd1b294a5f25572fb2ca",
"private_row_values_printed": false,
"production_changes": false
}

View file

@ -0,0 +1,62 @@
{
"schema": "coulomb.content-release-target-observation.v1",
"observed_at": "2026-10-31T12:07:24.322343+00:00",
"cluster_uid": "a553c742-0115-43d4-99a4-a5ca56fe0786",
"deployment_uid": "2dbe661a-d232-4477-bbd1-833813077fbe",
"pvc_uid": "9888abeb-9d52-4c70-a23d-b5494780d9c3",
"baseline_revision": 19,
"baseline_helm_manifest_sha256": "93cb277abd1aea0657be482e458dcfb268fe0bfbd45d90aa1faedcc7f5bce499",
"baseline_spec_sha256": "42e091e52d5dae3c1f986e4898c62057fa80846adfce049a75d8fbd4681180ea",
"candidate_spec_sha256": "c65cb691bab7054ae25de58cdb75933d383621ec4e049d2daa1b1bf52dce0bba",
"old_image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:522bcd7fce92436765a60c1e4afa2598f3cc40913352153ff1c4319a99ca92ed",
"candidate_image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:d3f2f5bb90f0ba79f4e1d8098d2eb06f8940b8789e5ecb851914bbab364597ec",
"sole_ready_pvc_writer": true,
"existing_unmanaged_metadata_preserved": true,
"candidate_image_only_server_preview_verified": true,
"data": {
"business_tables": 12,
"migration_rows_sha256": "43471516387c0e2a3d35971033ed6af330e2963efe4da93293d97633825d04af",
"business_rows": 93,
"business_rows_sha256": "7953b37b02b80d89ca6869dab6b2b0b996541de20ca0dd1b294a5f25572fb2ca",
"content_files": 86,
"content_files_sha256": "ed535246f4e8f46fcd7ce01f936127996aff873c6936b297f7272194b594aeda",
"global_slug_constraint": true,
"tenant_slug_constraint": true,
"migration_0003_applied": true,
"duplicate_slug_groups": 0,
"actual_owner_pages_rendered": 40,
"unsaved_outsider_page_denials": 40,
"production_identity_or_grant_created": false
},
"matches_verified_revision19_data": false,
"installed_helper_sha256": {
"/opt/coulomb-social-backup/paired-backup.py": "43e119acb6a4933b4e144c349a091e074e1a91ab61dbe15a65c8264c1d47661a",
"/opt/coulomb-social-backup/snapshot-content-and-db.py": "dcc8dd2a3989f279597595f9260b31b24fcc9b6dc787f04c17ef0491c53d830d",
"/opt/railiance-platform/scripts/primary_application_archive.py": "a3f0a61e869a6012edb4b5288be14e3b0c4a9a1273b090320ab146d12e5aa94d"
},
"timers": {
"coulomb-social-paired-backup.timer": {
"LoadState": "not-found",
"ActiveState": "inactive",
"UnitFileState": ""
},
"coulomb-social-backup-freshness.timer": {
"LoadState": "not-found",
"ActiveState": "inactive",
"UnitFileState": ""
}
},
"prerequisites": {
"custody": {
"exists": false
},
"installation": {
"exists": false
},
"route": {
"exists": false
}
},
"production_data_modified": false,
"release_executed": false
}

View file

@ -80,3 +80,59 @@ symlinks. Existing retention/incoming-address permission tests remain required.
Evidence: `../release/content-lifecycle-validation-2026-10-31.json`. This is source
and isolated-fixture evidence; the fix still needs release delivery and productive
review. Do not kill or mutate the productive application to perform this review.
## Prepared lifecycle image release — follows inactive backup installation
The owner packet is `railiance-apps/release/coulomb-content-lifecycle-f306dbf.json`,
proposal `sha256:c9c3231620721ef3ea9b2bf22fc6c62fe3ed8efb91386cf7ec96acc6959dae08`.
It upgrades the verified revision19/image522bcd7f to candidate d3f2f5bb, with no new
migration, resource, authorization grant or content rewrite. The only packaged
application change is attachment journal ordering/durability in pageops.py.
**Current full preflight refuses the missing inactive-installation receipt.**
The order is: existing historical custody repairfa2763d1 and recurring route4d848106,
then inactive source installation8f442bf0, then this image release, then native
recurring-backup proof and schedule activation. The installer pins the current
snapshot helper; deploying this image first would invalidate its reviewed preimage.
The image controller enforces the completed installer receipt and inactive/disabled
backup units before creating an execution journal. Do not bypass that dependency.
After the existing prerequisites have their independently verified returns, run
this read-only check from the workstation:
```bash
python3 /home/worsch/railiance-apps/tools/coulomb-image-release.py \
--plan /home/worsch/railiance-apps/release/coulomb-content-lifecycle-f306dbf.json \
--preflight \
--expect-digest sha256:c9c3231620721ef3ea9b2bf22fc6c62fe3ed8efb91386cf7ec96acc6959dae08
```
Only a `live_release_preflight_verified` return at that exact digest makes the
packet ready for attended execution. A changed baseline needs a revised review.
The founder execution command then replaces `--preflight` with `--execute`; its
terminal prompt requires `DEPLOY` followed by that full digest. The supervision
rule is recorded in the-custodian/docs/agent-autonomy-decision.md: “The supervisor
approves that proposal or performs it through the privileged execution path.”
This release has not been executed or approved through the retention-policy answer.
Execution creates a fresh immutable paired primary backup/readback before Helm,
checks the current complete data and migration fingerprints, performs an atomic
image-only upgrade, verifies owner/outsider/public endpoints and refreshes the
snapshot image pin. A failure restores revision19 and the recognized previous pin
without restoring old data or downgrading schema. Inspect the durable receipt
before any retry. Expected receipt status is `image_candidate_deployed_verified`
under `/var/lib/coulomb-social-backup/releases/c9c3231620721ef3ea9b2bf22fc6c62fe3ed8efb91386cf7ec96acc6959dae08/receipt.json`.
The current observation binds93business rows/86files. The retained07:13 recovery
point has92business rows: the differences are sessions and login timestamps, with
identical content and migration history. Candidate/rollback rehearsals preserve
all13tables/86files, verify85export files and40owner/40outsider views on that point.
They do not establish recovery of the newer session; independent retrieval/restore
of the fresh execution point remains part of the release return.
There are no new infrastructure reservations. The action adds one encrypted
primary backup object and temporary local scratch under the admitted capacity
bounds. Incremental provider cost is unpriced; no EUR autopilot budget is claimed.
Application writes pause during paired capture and the Recreate rollout. Evidence:
`../release/content-lifecycle-release-preparation-2026-10-31.json`, its proposal,
native target/preflight/row-drift receipts, and the candidate recovery receipt.

View file

@ -647,6 +647,12 @@ Then obtain the attended return and independently verify installed hashes and
disabled units. Review: docs/release/backup-source-installation-execution-review-2026-10-31.md;
source/gate evidence: backup-supervised-installer-validation-2026-10-31.json.
The later content image release (RAPPS-WP-0015-T07, packetc9c32316) must follow
this installation: it refreshes the snapshot image pin that this reviewed bundle
currently fixes atdcc8dd2a. Both existing packet digests are preserved. Technical
sequencing decision: de5a4528-0864-4769-b9d0-2f658b0310c6; this is not image
execution approval.
Preparation is complete; task status is now wait for the T04 custody/profile
return and T07 attended route. The exact eight-entry custody repair has a passing
native preflight but has not executed. Installation and independent postflight
@ -659,10 +665,15 @@ neither task represents a currently running native job.
id: CSOC-WP-0012-T09
status: todo
priority: high
depends_on:
- CSOC-WP-0012-T04
- CSOC-WP-0012-T07
- CSOC-WP-0012-T08
- RAPPS-WP-0015-T07
state_hub_task_id: "c30bc200-6e0c-5651-b53a-be7a6f3dd207"
```
After T07/T08 and applicable T04 operating admission, prove a native paired service capture, exact primary/mirror receipt, independent retrieval, received failed/pending/stale events in both channels, retry and restart continuity, and outside-producer failure detection. Retain correlated receipts without claiming an Alertmanager handoff is recipient delivery. Simulated source tests and the one-off email cannot close this task.
After T07/T08, applicable T04 operating admission and RAPPS-WP-0015-T07 content image delivery, prove a native paired service capture, exact primary/mirror receipt, independent retrieval, received failed/pending/stale events in both channels, retry and restart continuity, and outside-producer failure detection. Retain correlated receipts without claiming an Alertmanager handoff is recipient delivery. Simulated source tests and the one-off email cannot close this task.
## T10 — Activate and observe the approved recurring schedule
@ -670,10 +681,16 @@ After T07/T08 and applicable T04 operating admission, prove a native paired serv
id: CSOC-WP-0012-T10
status: todo
priority: high
depends_on:
- CSOC-WP-0012-T04
- CSOC-WP-0012-T07
- CSOC-WP-0012-T08
- RAPPS-WP-0015-T07
- CSOC-WP-0012-T09
state_hub_task_id: "009c9b51-32d4-5a35-a771-7cff0059c042"
```
After T04 and T07–T09, activate the already approved 03:15 UTC schedule with five-minute jitter, RPO24h/stale26h and attended RTO60min target. Verify native timer/service state and subsequent scheduled capture/freshness evidence. Record measured recovery limits; cached-image rehearsal is not cold-start recovery. Do not ask the user to approve the schedule again. Close on observed operation, not merely enabling a timer.
After T04, T07–T09 and RAPPS-WP-0015-T07, activate the already approved 03:15 UTC schedule with five-minute jitter, RPO24h/stale26h and attended RTO60min target. Verify native timer/service state and subsequent scheduled capture/freshness evidence. Record measured recovery limits; cached-image rehearsal is not cold-start recovery. Do not ask the user to approve the schedule again. Close on observed operation, not merely enabling a timer.
## T11 — Close service registration, provenance, cost and smoke evidence

View file

@ -229,6 +229,19 @@ new exact release preparation/execution return. T05 remains progress until that
return and productive acceptance; policy acceptance is settled and no live purge
is authorized. No production image or release pin changed during this work.
Exact owner image packetc9c32316 is now prepared and RAPPS-WP-0015-T07 waits on
WP-0012-T08. Its40controller cases pass; the separate values/snapshot paths retain
historical capsules. Current native image preview is image-only at revision19.
Candidate and rollback images preserve the retained13tables/86files and render40
owner pages/deny40outsiders. Live93-row baseline includes a new session and login
timestamps since the92-row retained point; content/migrations match. The execution
must capture a new exact paired point before Helm. Native full preflight refuses
missing installation8f442bf0 before creating an execution journal. Existing backup
packets retain their digests; image delivery follows inactive installation and
precedes native recurring-service acceptance/activation. Details and later commands
are in docs/usecases/sharing-portability-review.md. No image release or productive
acceptance has occurred; T05 remains progress.
## Completion
Finish when every task above has its stated evidence and acceptance, or hand off any newly discovered residual to a live work record first. Cross-owner dependencies remain their existing canonical records.