Verify revision 20 content release and prepare productive acceptance
Some checks failed
Use-case regression gate / usecase-regressions (push) Has been cancelled
Some checks failed
Use-case regression gate / usecase-regressions (push) Has been cancelled
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a192e9-c28b-7533-bf25-e2341364c22a
This commit is contained in:
parent
a20e322b0e
commit
479a15024d
18 changed files with 519 additions and 10 deletions
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"schema": "coulomb.content-release-supervisor-disposition.v1",
|
||||
"proposal_digest": "sha256:e96752ecfa7adef2fd1d9da48902c8e63de124ccfd272fe20ba79b758b3ca4a3",
|
||||
"decision_id": "d9b70cc5-e035-40ae-8d0d-020190581202",
|
||||
"approved_by": "Bernd",
|
||||
"recorded_at": "2026-10-31T20:16:08.885956+00:00",
|
||||
"user_instruction": "Good, then lets do deployment the productive acceptance work now.",
|
||||
"status": "deployment_scope_approved_awaiting_founder_execution",
|
||||
"execution_performed": false,
|
||||
"human_only_execution_lane_changed": false,
|
||||
"productive_acceptance_inferred": false
|
||||
}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
{
|
||||
"schema": "coulomb.packaged-content-acceptance-recovery.v1",
|
||||
"status": "packaged_recovered_export_and_views_verified",
|
||||
"source": "1139a6d30eee4f75317b46bd45120a15d818455f",
|
||||
"image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:7906f461bc8d2d5204fd4fde67a251850f725b914452a66172919d6853672ed5",
|
||||
"restore_receipt_sha256": "9dacbd44544f93abf99354158cf610b4fb1f4e59611b22056b3086e0033231ab",
|
||||
"retained_point_captured_at": "2026-10-31T20:21:01Z",
|
||||
"candidate_application": {
|
||||
"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
|
||||
},
|
||||
"previous_image_application": {
|
||||
"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
|
||||
},
|
||||
"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": "597f5929cae723e9f5d895afac6f5c96022049cb6bd938d4908d6aa56221f4ea",
|
||||
"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
|
||||
},
|
||||
"source_content_files_unchanged": 86,
|
||||
"all_tables_unchanged": true,
|
||||
"application_source_overlay": false,
|
||||
"network_internal": true,
|
||||
"published_ports": 0,
|
||||
"production_access": false,
|
||||
"production_restore": false,
|
||||
"driver_sha256": "ce8c34a0ad00f9c4ac1ba6dd2043884aa07c90e216074cae070626aa04bf1639"
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
"schema": "coulomb.image-release-independent-recovery.v1",
|
||||
"status": "fresh_point_independently_retrieved_and_restored",
|
||||
"completed_at": "2026-10-31T20:27:35.058428+00:00",
|
||||
"captured_at": "2026-10-31T20:21:01Z",
|
||||
"primary_version": "1793478121590106",
|
||||
"mirror_version": "1793478426025763",
|
||||
"mirror_receipt_version": "1793478427159655",
|
||||
"ciphertext_sha256": "91b4ffe4874a53e3422d604b7c3fa85f6551a481411ef82b2209993552486bfb",
|
||||
"independent_reader_used": true,
|
||||
"unpack": {
|
||||
"status": "decrypted_pair_verified",
|
||||
"version_id": "1793478121590106",
|
||||
"encrypted_sha256": "91b4ffe4874a53e3422d604b7c3fa85f6551a481411ef82b2209993552486bfb",
|
||||
"captured_at": "2026-10-31T20:21:01Z",
|
||||
"database_sha256": "c5faa20ac0c443635393e04cf5b154710780d829d6c085edc098e2dd7525fc6a",
|
||||
"content_sha256": "1bf31bafc19d8c4847f3793463189f13ce4b470ed96ccdc614b269acca6c12c0",
|
||||
"application_restore_verified": false
|
||||
},
|
||||
"restore": {
|
||||
"status": "restored_verified",
|
||||
"database_tables": 13,
|
||||
"database_rows": 115,
|
||||
"database_rows_and_sequences_match": true,
|
||||
"content_files": 86,
|
||||
"content_hashes_match": true,
|
||||
"network_internal": true,
|
||||
"published_ports": 0,
|
||||
"postgres_image_id": "sha256:ff23cdce56cac62ada6f66013e1a50864c0abbe79d132d40b6e05bd80f378a70",
|
||||
"elapsed_seconds": 4.42,
|
||||
"content_was_empty": false
|
||||
},
|
||||
"elapsed_seconds": 5.517,
|
||||
"production_restore": false,
|
||||
"current_kit_replaced": false,
|
||||
"driver_sha256": "a88a63c0e990cc4d8d9180d1907ec367f2e7f54c81d00e79f38ded4f30384341"
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"schema": "coulomb.content-acceptance-independent-postflight.v1",
|
||||
"status": "deployed_image_and_complete_native_state_verified",
|
||||
"proposal_digest": "sha256:e96752ecfa7adef2fd1d9da48902c8e63de124ccfd272fe20ba79b758b3ca4a3",
|
||||
"receipt_sha256": "074ec03d62d43f35bd6c276213a28de4a7b0161132379221bec0e402b5334233",
|
||||
"helm_revision": 20,
|
||||
"image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:7906f461bc8d2d5204fd4fde67a251850f725b914452a66172919d6853672ed5",
|
||||
"source": "1139a6d30eee4f75317b46bd45120a15d818455f",
|
||||
"packaged_source_files_verified": 79,
|
||||
"sole_ready_content_writer": true,
|
||||
"all_frozen_capsule_files_verified": 23,
|
||||
"installed_helper_hashes_verified": true,
|
||||
"snapshot_pin_refreshed": true,
|
||||
"public_health_landing_static_verified": true,
|
||||
"postflight": {
|
||||
"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
|
||||
},
|
||||
"fresh_paired_point": {
|
||||
"captured_at": "2026-10-31T20:21:01Z",
|
||||
"destination": "s3://railiance-platform-pg-backup/platform-pg/application-archives/coulomb-social/2026/10/31/20261031T202101Z-2ad4faf215939d67e82f67a4.tar.age",
|
||||
"version_id": "1793478121590106",
|
||||
"encrypted_sha256": "91b4ffe4874a53e3422d604b7c3fa85f6551a481411ef82b2209993552486bfb",
|
||||
"encrypted_bytes": 2181848,
|
||||
"image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:522bcd7fce92436765a60c1e4afa2598f3cc40913352153ff1c4319a99ca92ed"
|
||||
},
|
||||
"timers_activated": false,
|
||||
"production_data_restored": false,
|
||||
"productive_acceptance_inferred": false
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"schema": "coulomb.guarded-image-release.v1",
|
||||
"proposal_digest": "sha256:e96752ecfa7adef2fd1d9da48902c8e63de124ccfd272fe20ba79b758b3ca4a3",
|
||||
"started_at": "2026-10-31T20:14:42.622703+00:00",
|
||||
"status": "live_release_preflight_verified",
|
||||
"production_data_restored": false,
|
||||
"timers_activated": false,
|
||||
"node_request_percent": {
|
||||
"cpu": 68,
|
||||
"memory": 76
|
||||
},
|
||||
"preflight": {
|
||||
"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
|
||||
},
|
||||
"live_changes": false
|
||||
}
|
||||
70
docs/release/content-acceptance-receipt-2026-10-31.json
Normal file
70
docs/release/content-acceptance-receipt-2026-10-31.json
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
{
|
||||
"completed_at": "2026-10-31T20:22:30.428195+00:00",
|
||||
"elapsed_seconds": 97.22,
|
||||
"existing_global_constraint_preserved": true,
|
||||
"fresh_paired_point": {
|
||||
"age_recipient": "age1qm30jk8q0cezey652dk2dhcr3d9vs528v6lg8mavl6d4q3e3vgnqmrmyy3",
|
||||
"application": "coulomb-social",
|
||||
"application_restore_verified": false,
|
||||
"captured_at": "2026-10-31T20:21:01Z",
|
||||
"ciphertext_bytes": 2181848,
|
||||
"ciphertext_sha256": "91b4ffe4874a53e3422d604b7c3fa85f6551a481411ef82b2209993552486bfb",
|
||||
"completed_at": "2026-10-31T20:22:02.185627+00:00",
|
||||
"content_sha256": "1bf31bafc19d8c4847f3793463189f13ce4b470ed96ccdc614b269acca6c12c0",
|
||||
"database_sha256": "c5faa20ac0c443635393e04cf5b154710780d829d6c085edc098e2dd7525fc6a",
|
||||
"destination": "s3://railiance-platform-pg-backup/platform-pg/application-archives/coulomb-social/2026/10/31/20261031T202101Z-2ad4faf215939d67e82f67a4.tar.age",
|
||||
"encrypted_bytes": 2181848,
|
||||
"encrypted_sha256": "91b4ffe4874a53e3422d604b7c3fa85f6551a481411ef82b2209993552486bfb",
|
||||
"image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:522bcd7fce92436765a60c1e4afa2598f3cc40913352153ff1c4319a99ca92ed",
|
||||
"immutable_create": true,
|
||||
"local_archive": "20261031T202101Z-2ad4faf215939d67e82f67a4.tar.age",
|
||||
"object_key": "platform-pg/application-archives/coulomb-social/2026/10/31/20261031T202101Z-2ad4faf215939d67e82f67a4.tar.age",
|
||||
"pause_and_capture_seconds": 59.82,
|
||||
"remote_retrieval_verified": true,
|
||||
"schema": "platform.application-primary-archive.v1",
|
||||
"status": "offsite_fetched_verified",
|
||||
"version_id": "1793478121590106"
|
||||
},
|
||||
"helm_revision": 20,
|
||||
"node_request_percent": {
|
||||
"cpu": 68,
|
||||
"memory": 76
|
||||
},
|
||||
"pid": 1461378,
|
||||
"postflight": {
|
||||
"actual_owner_pages_rendered": 40,
|
||||
"business_rows": 93,
|
||||
"business_rows_sha256": "7953b37b02b80d89ca6869dab6b2b0b996541de20ca0dd1b294a5f25572fb2ca",
|
||||
"business_tables": 12,
|
||||
"content_files": 86,
|
||||
"content_files_sha256": "ed535246f4e8f46fcd7ce01f936127996aff873c6936b297f7272194b594aeda",
|
||||
"duplicate_slug_groups": 0,
|
||||
"global_slug_constraint": true,
|
||||
"migration_0003_applied": true,
|
||||
"migration_rows_sha256": "43471516387c0e2a3d35971033ed6af330e2963efe4da93293d97633825d04af",
|
||||
"production_identity_or_grant_created": false,
|
||||
"tenant_slug_constraint": true,
|
||||
"unsaved_outsider_page_denials": 40
|
||||
},
|
||||
"preflight": {
|
||||
"business_rows": 93,
|
||||
"business_rows_sha256": "7953b37b02b80d89ca6869dab6b2b0b996541de20ca0dd1b294a5f25572fb2ca",
|
||||
"business_tables": 12,
|
||||
"content_files": 86,
|
||||
"content_files_sha256": "ed535246f4e8f46fcd7ce01f936127996aff873c6936b297f7272194b594aeda",
|
||||
"duplicate_slug_groups": 0,
|
||||
"global_slug_constraint": true,
|
||||
"migration_0003_applied": true,
|
||||
"migration_rows_sha256": "43471516387c0e2a3d35971033ed6af330e2963efe4da93293d97633825d04af",
|
||||
"tenant_slug_constraint": true
|
||||
},
|
||||
"private_values_printed": false,
|
||||
"production_data_restored": false,
|
||||
"proposal_digest": "sha256:e96752ecfa7adef2fd1d9da48902c8e63de124ccfd272fe20ba79b758b3ca4a3",
|
||||
"public_health_landing_static_verified": true,
|
||||
"schema": "coulomb.guarded-image-release.v1",
|
||||
"snapshot_pin_refreshed": true,
|
||||
"started_at": "2026-10-31T20:20:53.065197+00:00",
|
||||
"status": "image_candidate_deployed_verified",
|
||||
"timers_activated": false
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"schema": "coulomb.content-release-reconciliation.v1",
|
||||
"helm_revision": 20,
|
||||
"snapshot_server_dry_run": {
|
||||
"status": "reviewed",
|
||||
"server_dry_run": true,
|
||||
"image_pinned": true,
|
||||
"pvc_read_only": true,
|
||||
"db_scope": "coulomb_social_db",
|
||||
"replicas_restored_to": 1
|
||||
},
|
||||
"backup_timers_inactive_disabled": true,
|
||||
"snapshot_source_sha256": "23f92c96b840df61f92858004241e860e0ddb32ed6fd7448294d3c8278906e46",
|
||||
"owner_live_values_match_sealed_values": true,
|
||||
"recovery_container_stopped": true,
|
||||
"snapshot_restore_regression_tests_passed": 9
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
/home/worsch/.config/railiance-platform/coulomb-social-recovery/content-point-recovery-20261031/csoc-mirror-content-point.py: bc4d04c3f8ee3ca089fa9b038e6ab617eaababcb7f0aec94339e7f4eeb70f13a
|
||||
/home/worsch/.config/railiance-platform/coulomb-social-recovery/content-point-recovery-20261031/csoc-recover-content-point.py: a88a63c0e990cc4d8d9180d1907ec367f2e7f54c81d00e79f38ded4f30384341
|
||||
/home/worsch/.config/railiance-platform/coulomb-social-recovery/content-point-recovery-20261031/csoc-verify-deployed-content.py: fb6079fb614a23eba0985c1d4a2e5b776e2d873f29c158cf6f38254d1415b387
|
||||
/home/worsch/.config/railiance-platform/coulomb-social-recovery/content-point-recovery-20261031/csoc-verify-fresh-content-point.py: ce8c34a0ad00f9c4ac1ba6dd2043884aa07c90e216074cae070626aa04bf1639
|
||||
|
|
@ -1,5 +1,10 @@
|
|||
# Combined content release for WP-0013
|
||||
|
||||
Deployed and independently verified at Helm revision20, completed
|
||||
2026-10-31T20:22:30Z. The command below is historical: do not rerun it.
|
||||
All93business rows/86files are unchanged;40owner views/40outsider denials pass.
|
||||
See content-acceptance-independent-postflight-2026-10-31.json.
|
||||
|
||||
The candidate adds the requested attachment action menu, including author uploads
|
||||
and removal, authenticated downloads, and independent attachments on copies and
|
||||
moves. It also restores ordered-list starting numbers and fixes interrupted
|
||||
|
|
@ -22,7 +27,10 @@ recovery database was returned to its previously stopped state. This retained
|
|||
point has92business rows; current production has93. Session/login-only drift was
|
||||
previously reviewed and its fingerprints are unchanged. Execution creates and
|
||||
reads back a fresh paired backup before Helm; independent recovery of that new
|
||||
point is still required afterward.
|
||||
point is now verified: all13tables/115rows and86files restore exactly; the
|
||||
deployed and previous packages pass40owner/40outsider checks, and client export
|
||||
verifies85files without altering source data. See content-acceptance-fresh-
|
||||
{recovery,client-export}-2026-10-31.json.
|
||||
|
||||
The route and inactive installation prerequisites are independently verified.
|
||||
Full recurring backup/service acceptance remains WP-0012. This proposal does not
|
||||
|
|
@ -39,8 +47,8 @@ snapshot image pin. Rollback restores the prior image/pin while preserving write
|
|||
An older image retains the new attachment metadata/files but lacks the new menu.
|
||||
|
||||
Full native preflight reports `live_release_preflight_verified` at this exact
|
||||
digest (receipt: content-acceptance-preflight-2026-10-31.json). Pending execution
|
||||
decision: d9b70cc5-e035-40ae-8d0d-020190581202. Run:
|
||||
digest (receipt: content-acceptance-preflight-2026-10-31.json). Resolved approval
|
||||
decision: d9b70cc5-e035-40ae-8d0d-020190581202. Executed command:
|
||||
|
||||
```bash
|
||||
python3 /home/worsch/railiance-apps/tools/coulomb-image-release.py \
|
||||
|
|
@ -58,8 +66,8 @@ DEPLOY sha256:e96752ecfa7adef2fd1d9da48902c8e63de124ccfd272fe20ba79b758b3ca4a3
|
|||
Founder-terminal execution is required by the source-bound launcher and the
|
||||
standing supervised execution contract in
|
||||
`the-custodian/docs/agent-autonomy-decision.md`: “The supervisor approves that
|
||||
proposal or performs it through the privileged execution path.” The already
|
||||
completed route/installer approvals do not approve this different proposal.
|
||||
proposal or performs it through the privileged execution path.” Bernd separately
|
||||
approved and executed this proposal; the execution gate is satisfied.
|
||||
|
||||
The action pauses writes during backup capture and the Recreate rollout. It adds
|
||||
one encrypted primary backup object and temporary scratch within the admitted
|
||||
|
|
@ -71,7 +79,7 @@ Check the durable receipt before any retry. Required final status:
|
|||
## Productive review after verified deployment
|
||||
|
||||
Use the prepared UC-003–006 steps in
|
||||
[sharing-portability-review.md](../usecases/sharing-portability-review.md).
|
||||
[productive-content-acceptance-session.md](../usecases/productive-content-acceptance-session.md).
|
||||
On a disposable page, open Attachments, add a file, download it as an authorized
|
||||
reader, duplicate/move the page, and remove the copied association. Verify that
|
||||
the original remains independent and revoked/outsider access is denied. Record
|
||||
|
|
|
|||
72
docs/release/mirror-content-point-native-2026-10-31.json
Normal file
72
docs/release/mirror-content-point-native-2026-10-31.json
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
{
|
||||
"schema": "coulomb.native-mirror-worker-proof.v1",
|
||||
"status": "native_worker_and_independent_receipt_verified",
|
||||
"completed_at": "2026-10-31T20:27:08.869833+00:00",
|
||||
"primary": {
|
||||
"application": "coulomb-social",
|
||||
"captured_at": "2026-10-31T20:21:01Z",
|
||||
"object_key": "platform-pg/application-archives/coulomb-social/2026/10/31/20261031T202101Z-2ad4faf215939d67e82f67a4.tar.age",
|
||||
"version_id": "1793478121590106",
|
||||
"ciphertext_sha256": "91b4ffe4874a53e3422d604b7c3fa85f6551a481411ef82b2209993552486bfb",
|
||||
"ciphertext_bytes": 2181848,
|
||||
"age_recipient": "age1qm30jk8q0cezey652dk2dhcr3d9vs528v6lg8mavl6d4q3e3vgnqmrmyy3",
|
||||
"image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:522bcd7fce92436765a60c1e4afa2598f3cc40913352153ff1c4319a99ca92ed",
|
||||
"database_sha256": "c5faa20ac0c443635393e04cf5b154710780d829d6c085edc098e2dd7525fc6a",
|
||||
"content_sha256": "1bf31bafc19d8c4847f3793463189f13ce4b470ed96ccdc614b269acca6c12c0"
|
||||
},
|
||||
"recovery_mirror": {
|
||||
"bucket": "railiance-coulomb-social-archives",
|
||||
"ciphertext_bytes": 2181848,
|
||||
"ciphertext_sha256": "91b4ffe4874a53e3422d604b7c3fa85f6551a481411ef82b2209993552486bfb",
|
||||
"hash_readback_verified": true,
|
||||
"object_key": "archives/platform-pg/application-archives/coulomb-social/2026/10/31/20261031T202101Z-2ad4faf215939d67e82f67a4.tar.age",
|
||||
"project_id": "06d107bc-9d84-4672-b2a0-95701cc0c07f",
|
||||
"receipt_bytes": 1664,
|
||||
"receipt_object_key": "archives/platform-pg/application-archives/coulomb-social/2026/10/31/20261031T202101Z-2ad4faf215939d67e82f67a4.tar.age.741bdf7b02b859523053f45c88c874b58d43b45a0273bb315116d2bfc34e58aa.receipt.json",
|
||||
"receipt_readback_verified": true,
|
||||
"receipt_sha256": "741bdf7b02b859523053f45c88c874b58d43b45a0273bb315116d2bfc34e58aa",
|
||||
"receipt_version_id": "1793478427159655",
|
||||
"version_id": "1793478426025763"
|
||||
},
|
||||
"worker_results": [
|
||||
{
|
||||
"status": "mirrored_with_retained_receipt",
|
||||
"primary_recaptured": false,
|
||||
"ciphertext_readback_verified": true,
|
||||
"receipt_readback_verified": true,
|
||||
"recovery_key_read": false,
|
||||
"independent_reader_used": false,
|
||||
"retained_objects_deleted": false,
|
||||
"application_restore_verified": false
|
||||
},
|
||||
{
|
||||
"status": "mirrored_with_retained_receipt",
|
||||
"primary_recaptured": false,
|
||||
"ciphertext_readback_verified": true,
|
||||
"receipt_readback_verified": true,
|
||||
"recovery_key_read": false,
|
||||
"independent_reader_used": false,
|
||||
"retained_objects_deleted": false,
|
||||
"application_restore_verified": false
|
||||
}
|
||||
],
|
||||
"native_versions_before": 0,
|
||||
"native_versions_after": 2,
|
||||
"one_ciphertext_and_one_receipt_version_after_retry": true,
|
||||
"independent_reader_ciphertext_and_receipt_verified": true,
|
||||
"retained_receipt_equals_exact_public_field_filter": true,
|
||||
"local_primary_receipt_and_ciphertext_unchanged": true,
|
||||
"retry_last_mirror_bytes_unchanged": true,
|
||||
"runtime_source_commit": "09f4fd33cbeefecb833998246cf53848bb1e5d8d",
|
||||
"private_state_copy_used": true,
|
||||
"production_application_contact": false,
|
||||
"node_helpers_or_state_modified": false,
|
||||
"node_timers_changed": false,
|
||||
"native_capture_performed": false,
|
||||
"decryption_identity_read": false,
|
||||
"retained_objects_deleted": false,
|
||||
"operating_capacity_profile_admitted": false,
|
||||
"alert_reception_verified": false,
|
||||
"scheduled_service_execution_verified": false,
|
||||
"sources_manifest_sha256": "a865efe1cbf468c34e8f06912a6d423845ce08fc8a9963936f1e8af73897cad2"
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
/home/worsch/coulomb-social/deploy/backup/mirror-platform-runtime.json: 9253c5f6e956b67f499d3e12d2851be7fabd3bc56b00496b8810bbd0be8209f1
|
||||
/home/worsch/coulomb-social/scripts/backup_capacity.py: cb699a79e67b129239b5aa5d6f3b0d4ffaa9773a8b073227ad17fdecb5b9d893
|
||||
/home/worsch/coulomb-social/scripts/check-paired-backup-health.py: 2d40ec6e4c59ea7fe1d46065d197b9a87ca6811f023cc6f3e20e4184a3490566
|
||||
/home/worsch/coulomb-social/scripts/mirror-paired-backup.py: 9ceb26d9083af016c4b787907e4dce7bdf437c782fb2d15eb28d9e334e6e431c
|
||||
/home/worsch/railiance-platform/scripts/application_recovery_identities.py: 20f56255ed6eeec4aafe33f142bc3ee03f623d4957a7b0cabb741d340f15f79d
|
||||
/home/worsch/railiance-platform/scripts/application_recovery_mirror.py: d48ab95e89b9eeae36269d853ebe4c44c22e1f57d4e14224f03d0b9aeeb34178
|
||||
/home/worsch/railiance-platform/scripts/application_recovery_resources.py: ab70ec341e738272730eb0daf76840d0bca807caeb3c4e4c2357f162fbed4498
|
||||
/home/worsch/railiance-platform/scripts/primary_application_archive.py: a3f0a61e869a6012edb4b5288be14e3b0c4a9a1273b090320ab146d12e5aa94d
|
||||
/tmp/csoc-mirror-content-point.py: bc4d04c3f8ee3ca089fa9b038e6ab617eaababcb7f0aec94339e7f4eeb70f13a
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
Coulomb attachment acceptance
|
||||
This file should download unchanged.
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"schema": "coulomb.productive-acceptance-samples.v1",
|
||||
"purpose": "Harmless files for an attended productive review",
|
||||
"files": {
|
||||
"attachment-check.txt": {
|
||||
"bytes": 67,
|
||||
"sha256": "3dc7fcbfc6f2fa76172a42d61cedcf1b1acbd4a09d1ba4b38057776d864628eb"
|
||||
},
|
||||
"visual-check.png": {
|
||||
"bytes": 125,
|
||||
"sha256": "f5cfb696601f2da142f011cc09e82d14febaf444a395dc2c558d1a23e7d1f635"
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 125 B |
109
docs/usecases/productive-content-acceptance-session.md
Normal file
109
docs/usecases/productive-content-acceptance-session.md
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
# Productive content acceptance session
|
||||
|
||||
The combined image7906f461 is independently verified at Helm revision20,
|
||||
completed2026-10-31T20:22:30Z. Record your review date and actual verdicts.
|
||||
|
||||
Use your normal account at https://app.coulomb.social. Create two private spaces,
|
||||
`acceptance-a-20261031` and `acceptance-b-20261031`, or choose unused names if those
|
||||
already exist. These are disposable review spaces. Keep existing workspaces and
|
||||
their grants intact. Keep the review artifacts until the verdicts are recorded.
|
||||
|
||||
## 1. Authoring and attachments — UC-003 / WP-0013-T06
|
||||
|
||||
In space A, create a page titled `Acceptance notes`, file name `notes`, and abstract
|
||||
`Content and attachment review`. Use this body:
|
||||
|
||||
```html
|
||||
Acceptance notes.
|
||||
|
||||
<ol start="3">
|
||||
<li>Third item</li>
|
||||
<li>Fourth item</li>
|
||||
</ol>
|
||||
|
||||
**Keep this text when adding or removing attachments.**
|
||||
```
|
||||
|
||||
Save and reopen. The list should start at3. In Attachments, add
|
||||
[attachment-check.txt](fixtures/productive-content-acceptance/attachment-check.txt)
|
||||
and [visual-check.png](fixtures/productive-content-acceptance/visual-check.png).
|
||||
Download the text file and open the image: the text has two short lines and the
|
||||
image has blue and yellow halves. Files should remain available after reopening.
|
||||
|
||||
To check a page Visual, use Open image and take the `assets/...` part of its
|
||||
address as the Visual field in the page editor. Save and check the displayed
|
||||
image. Edit the title/abstract/body and reopen to check persistence.
|
||||
|
||||
Open the page editor in two tabs. Save a change in the first; then try saving the
|
||||
older second tab. The second submission must retain your submitted text and ask
|
||||
you to reopen/merge rather than overwrite the newer page. Return to the current
|
||||
page and check that its attachments and Visual remain intact.
|
||||
|
||||
Verdicts: `UC-003 accepted/gap` and `attachments accepted/gap`, with any observed
|
||||
difference. The custom-topic rendering and obsolete-scrap dispositions are already
|
||||
recorded; they do not need another review.
|
||||
|
||||
## 2. Independent copy and move — UC-004
|
||||
|
||||
Duplicate the page into space B with file name `copied`. Change its body and
|
||||
remove its text attachment. Reopen the original in A: its body and downloadable
|
||||
text file should remain unchanged. The removed copy's earlier revisions retain
|
||||
the file, as agreed in the retention policy.
|
||||
|
||||
Create another duplicate in A with file name `moving`, retaining both files.
|
||||
Save its address before moving it to B with file name `moved`. Its content,
|
||||
Visual and downloads should remain intact. Its old address should reach the
|
||||
destination for an authorized account; the sharing check below verifies denial
|
||||
when the destination is private to you.
|
||||
|
||||
Verdict: `UC-004 accepted/gap`, including the incoming-address permission result
|
||||
once the second participant has checked it.
|
||||
|
||||
## 3. Sharing and revocation — UC-005
|
||||
|
||||
The user nominated `testuser` as the second participant. The live app had only
|
||||
one member at preparation. Have `testuser` sign in to the same tenant and
|
||||
obtain their member ID from Your app data. The same participant can cover the
|
||||
ungranted, viewer and revoked states in sequence, using their own browser session.
|
||||
|
||||
Before a grant, they try the A page and its direct image/download URLs: access
|
||||
must be denied. In A's Share space screen, grant their member ID Viewer access.
|
||||
They should now read and download, but receive denial for direct edit/copy/move
|
||||
URLs copied from your session. Space B stays private: they must be denied both
|
||||
the moved page and its old incoming address.
|
||||
|
||||
Revoke their A access. They retry the page, image and saved download URLs: each
|
||||
must be denied. Review the remaining grants and creator access in Share space.
|
||||
Sharing does not send email.
|
||||
|
||||
Verdict: `UC-005 accepted/gap`, including the participant's three access states.
|
||||
|
||||
## 4. Account-local portability — UC-006
|
||||
|
||||
Open https://app.coulomb.social/account/data/ and Export my account records.
|
||||
Inspect the downloaded JSON privately: profile, identity references and space
|
||||
memberships should match your local account. Pages/assets remain in their spaces;
|
||||
this account export is distinct from the complete operator client-data export.
|
||||
|
||||
Review Leaving the app and the ownership/succession explanation. Sole-owned
|
||||
spaces must gain another active owner before local account removal. Shared
|
||||
content remains, while platform identity and mailbox remain under their existing
|
||||
owners. Review these screens with your productive account. Any actual account
|
||||
removal exercise needs a separately selected disposable member.
|
||||
|
||||
Verdict: `UC-006 accepted/gap`, stating whether export and the displayed exit/
|
||||
succession semantics meet your needs. Keep the account export private.
|
||||
|
||||
## Result record
|
||||
|
||||
Record the deployed revision/date and each verdict independently:
|
||||
|
||||
- UC-003 authoring:
|
||||
- Attachments:
|
||||
- UC-004 copy/move and old-address permissions:
|
||||
- UC-005 sharing/revocation:
|
||||
- UC-006 account-local export and exit/succession semantics:
|
||||
|
||||
An unresolved gap or an unperformed participant check stays open. Automated
|
||||
regression, native postflight and recovered-store proofs remain supporting
|
||||
evidence and do not supply these user verdicts.
|
||||
|
|
@ -35,7 +35,7 @@ pins:
|
|||
digest:
|
||||
hashAlgorithm: SHA-256
|
||||
normalisationAlgorithm: ociArtifactDigest/v1
|
||||
value: sha256:522bcd7fce92436765a60c1e4afa2598f3cc40913352153ff1c4319a99ca92ed
|
||||
value: sha256:7906f461bc8d2d5204fd4fde67a251850f725b914452a66172919d6853672ed5
|
||||
sources:
|
||||
- name: coulomb-social
|
||||
type: git
|
||||
|
|
@ -43,4 +43,4 @@ pins:
|
|||
digest:
|
||||
hashAlgorithm: SHA-1
|
||||
normalisationAlgorithm: gitCommit/v1
|
||||
value: 23ffe2cf4b214666754a2420558943438e54251a
|
||||
value: 1139a6d30eee4f75317b46bd45120a15d818455f
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ from pathlib import Path
|
|||
|
||||
NS = 'coulomb-social'
|
||||
IMAGE = ('forgejo.coulomb.social/coulomb/coulomb-social@sha256:'
|
||||
'522bcd7fce92436765a60c1e4afa2598f3cc40913352153ff1c4319a99ca92ed')
|
||||
'7906f461bc8d2d5204fd4fde67a251850f725b914452a66172919d6853672ed5')
|
||||
CLUSTER_UID = 'a553c742-0115-43d4-99a4-a5ca56fe0786'
|
||||
LOCK_PATH = Path('/var/lib/coulomb-social-backup/snapshot.lock')
|
||||
|
||||
|
|
|
|||
|
|
@ -41,6 +41,23 @@ records the scope split and effort estimate. Task counts are not effort percenta
|
|||
Historical notes retain the evidence trail; this map and the task blocks govern
|
||||
current status. No original acceptance requirement has been dropped.
|
||||
|
||||
2026-10-31 deployment return: Bernd approved and executed exact proposal
|
||||
`e96752ec`. Independent verification confirms Helm revision20/image7906f461,
|
||||
all79packaged source files, all23frozen capsule files, complete deployment/PVC
|
||||
identities and all helper hashes. All93business rows/86content files are unchanged;
|
||||
40owner views and40outsider denials pass. The fresh20:21paired point was fetched
|
||||
back from primary storage. Snapshot pin is refreshed; timers remain inactive.
|
||||
Receipt and proof: docs/release/content-acceptance-{receipt,independent-postflight}-2026-10-31.json.
|
||||
Independent mirror retrieval/decryption now restores all13tables/115rows and
|
||||
86files exactly. Deployed/previous image views and85-file client export pass;
|
||||
source SQL/files remain unchanged. Source release/helper pins match revision20.
|
||||
The execution gate is complete. T03 is now in progress with the attended
|
||||
[acceptance session](../docs/usecases/productive-content-acceptance-session.md)
|
||||
and harmless attachment fixtures. Actual user verdicts remain open; sharing
|
||||
uses the user-nominated `testuser` account after its sign-in; there was only one
|
||||
live member at preparation. Deployment
|
||||
and automated evidence do not supply those verdicts.
|
||||
|
||||
## T01 — Finish unambiguous storage enforcement
|
||||
|
||||
```task
|
||||
|
|
@ -272,7 +289,7 @@ The earlier unresolved-scrap notes are historical and superseded by this return.
|
|||
|
||||
```task
|
||||
id: CSOC-WP-0013-T03
|
||||
status: todo
|
||||
status: progress
|
||||
priority: high
|
||||
state_hub_task_id: "8edd7661-17b0-5aa0-b177-6170aa159623"
|
||||
```
|
||||
|
|
@ -283,6 +300,11 @@ Review owner Share space/revocation, reader/outsider denial, account-local expor
|
|||
Prepared exact UC-003–006 steps in docs/usecases/sharing-portability-review.md;
|
||||
no acceptance inferred.
|
||||
|
||||
2026-10-31: Revision20 is independently verified and the user requested productive
|
||||
acceptance now. The focused session and sample attachments are prepared; owner
|
||||
authoring/attachments review has been requested. A second participant must sign
|
||||
in after deployment for ungranted/viewer/revoked checks. No verdict is inferred.
|
||||
|
||||
## T04 — Prepare private corpus fidelity review evidence
|
||||
|
||||
```task
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue