Verify revision 20 content release and prepare productive acceptance
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:
tegwick 2026-10-31 21:29:27 +01:00
parent a20e322b0e
commit 479a15024d
18 changed files with 519 additions and 10 deletions

View file

@ -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
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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
}

View file

@ -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
}

View 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
}

View file

@ -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
}

View file

@ -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

View file

@ -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

View 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"
}

View file

@ -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

View file

@ -0,0 +1,2 @@
Coulomb attachment acceptance
This file should download unchanged.

View file

@ -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

View 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.

View file

@ -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

View file

@ -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')

View file

@ -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