diff --git a/docs/release/content-acceptance-review-2026-10-31.md b/docs/release/content-acceptance-review-2026-10-31.md index 9a60a80..adbed6b 100644 --- a/docs/release/content-acceptance-review-2026-10-31.md +++ b/docs/release/content-acceptance-review-2026-10-31.md @@ -1,4 +1,9 @@ -# Space-sharing correction — prepared 2026-11-01 +# Space-sharing correction — deployed and independently verified + +Founder execution completed2026-11-01T20:16:44Z at Helm revision22. Independent +postflight verifies complete spec/PVC/source/helper state and unchanged101business +rows/118files, with45owner pages/45outsider denials. The command below is historical: +**do not rerun it**. Productive grant/viewer/revocation acceptance remains open. The user approved explicit owner-managed space grants to any active Coulomb member, independent of platform identity tenant (decision1d5ab659). This fixes @@ -40,7 +45,7 @@ At its prompt: DEPLOY sha256:36795566d569eefb50f9827739ba515b5473669a2663064fb09283d158cdc1c8 ``` -Return the JSON result for independent verification. Then repeat the existing +Execution and independent deployment verification are complete. Continue the productive sharing walkthrough: grant testuser Viewer access to A, verify page/ file reads and mutation denial, retain B/old-address denial, then revoke and verify saved page/file addresses are denied. Automated checks do not supply the diff --git a/docs/release/mirror-sharing-point-native-2026-11-01.json b/docs/release/mirror-sharing-point-native-2026-11-01.json new file mode 100644 index 0000000..02517ec --- /dev/null +++ b/docs/release/mirror-sharing-point-native-2026-11-01.json @@ -0,0 +1,72 @@ +{ + "schema": "coulomb.native-mirror-worker-proof.v1", + "status": "native_worker_and_independent_receipt_verified", + "completed_at": "2026-11-01T20:21:46.362814+00:00", + "primary": { + "application": "coulomb-social", + "captured_at": "2026-11-01T20:14:51Z", + "object_key": "platform-pg/application-archives/coulomb-social/2026/11/01/20261101T201451Z-4eb79058a311e2f59863c2cc.tar.age", + "version_id": "1793564149208441", + "ciphertext_sha256": "4d547a02b294db74e33ed814303112731333de8c07b9666aade5b229e8688b9e", + "ciphertext_bytes": 2181848, + "age_recipient": "age1qm30jk8q0cezey652dk2dhcr3d9vs528v6lg8mavl6d4q3e3vgnqmrmyy3", + "image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:b58d858abd5b4acbd6b893c3f622f7a9fdb5e606164ab9866eb3cfaa04df1a0e", + "database_sha256": "e7d34d3cba2958cc22edcb661e9aa761f1626f0b62ac0649962133c367af778d", + "content_sha256": "87295c816111c0d055a28e01d2c78b505d43055a70cd408fabd374b6771acf07" + }, + "recovery_mirror": { + "bucket": "railiance-coulomb-social-archives", + "ciphertext_bytes": 2181848, + "ciphertext_sha256": "4d547a02b294db74e33ed814303112731333de8c07b9666aade5b229e8688b9e", + "hash_readback_verified": true, + "object_key": "archives/platform-pg/application-archives/coulomb-social/2026/11/01/20261101T201451Z-4eb79058a311e2f59863c2cc.tar.age", + "project_id": "06d107bc-9d84-4672-b2a0-95701cc0c07f", + "receipt_bytes": 1664, + "receipt_object_key": "archives/platform-pg/application-archives/coulomb-social/2026/11/01/20261101T201451Z-4eb79058a311e2f59863c2cc.tar.age.289246bb491f56256d640ba6d0116d259294769ff5953cdcdb28162168508837.receipt.json", + "receipt_readback_verified": true, + "receipt_sha256": "289246bb491f56256d640ba6d0116d259294769ff5953cdcdb28162168508837", + "receipt_version_id": "1793564505835518", + "version_id": "1793564504794913" + }, + "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": "c2ed30264ed2631710d9620a9f1b91428580b4f2c32987c9ee4d0574cddc48a4" +} diff --git a/docs/release/mirror-sharing-point-native-2026-11-01.sources.txt b/docs/release/mirror-sharing-point-native-2026-11-01.sources.txt new file mode 100644 index 0000000..0d9a5e3 --- /dev/null +++ b/docs/release/mirror-sharing-point-native-2026-11-01.sources.txt @@ -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-sharing-point.py: c322efbb0e7a8f4ab9262e2cfed22fb9a788b98440bbcfdb0a22677bd4a644a3 diff --git a/docs/release/productive-sharing-viewer-return-2026-11-01.json b/docs/release/productive-sharing-viewer-return-2026-11-01.json new file mode 100644 index 0000000..4e4b30a --- /dev/null +++ b/docs/release/productive-sharing-viewer-return-2026-11-01.json @@ -0,0 +1,19 @@ +{ + "schema": "coulomb.productive-sharing-return.v1", + "review_date": "2026-11-01", + "helm_revision": 22, + "image": "sha256:85378d10585efb782cb0629398c676d43bf7057d9d4e7a6b8af4489c1337bc83", + "user_verdict": "Sharing the a space read access only works nicely. I also see attachments and cant edit anything. I do not see the other spaces. everything as expected.", + "accepted": [ + "Owner can grant Viewer access to the existing participant across platform identity contexts", + "Participant reads the shared space and sees attachments", + "Participant cannot edit", + "Other private spaces remain hidden" + ], + "pending": [ + "Moved-page old incoming address denial while destination remains private", + "Revoked page and saved attachment download URL denial", + "Account-local portability review" + ], + "production_identity_or_grant_created_by_agent": false +} diff --git a/docs/release/space-sharing-fresh-client-export-2026-11-01.json b/docs/release/space-sharing-fresh-client-export-2026-11-01.json new file mode 100644 index 0000000..55dbc35 --- /dev/null +++ b/docs/release/space-sharing-fresh-client-export-2026-11-01.json @@ -0,0 +1,80 @@ +{ + "schema": "coulomb.packaged-content-acceptance-recovery.v1", + "status": "packaged_recovered_views_and_export_boundaries_verified", + "source": "61c154f3a615e3200372fc3ca434aef18c102f09", + "image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:85378d10585efb782cb0629398c676d43bf7057d9d4e7a6b8af4489c1337bc83", + "restore_receipt_sha256": "56e8756dcf4b69bfb7e795e619aef9be99282f03048e89a492559dd2d3a9b3f4", + "retained_point_captured_at": "2026-11-01T20:14:51Z", + "candidate_application": { + "business_tables": 12, + "migration_rows_sha256": "43471516387c0e2a3d35971033ed6af330e2963efe4da93293d97633825d04af", + "business_rows": 101, + "business_rows_sha256": "2f41693460a4c0e7ceb57f8b906e4ab4d8927b25f9ad7f4057f1ca3205999baa", + "content_files": 118, + "content_files_sha256": "067e65ead0a65cb198d5aa5891ff3a9971072975f5c6404e3d131b851ad29245", + "global_slug_constraint": true, + "tenant_slug_constraint": true, + "migration_0003_applied": true, + "duplicate_slug_groups": 0, + "actual_owner_pages_rendered": 45, + "unsaved_outsider_page_denials": 45, + "production_identity_or_grant_created": false + }, + "previous_image_application": { + "business_tables": 12, + "migration_rows_sha256": "43471516387c0e2a3d35971033ed6af330e2963efe4da93293d97633825d04af", + "business_rows": 101, + "business_rows_sha256": "2f41693460a4c0e7ceb57f8b906e4ab4d8927b25f9ad7f4057f1ca3205999baa", + "content_files": 118, + "content_files_sha256": "067e65ead0a65cb198d5aa5891ff3a9971072975f5c6404e3d131b851ad29245", + "global_slug_constraint": true, + "tenant_slug_constraint": true, + "migration_0003_applied": true, + "duplicate_slug_groups": 0, + "actual_owner_pages_rendered": 45, + "unsaved_outsider_page_denials": 45, + "production_identity_or_grant_created": false + }, + "client_exports": [ + { + "tenant_sha256": "015b03313ca71fa8153c19c976f19faf34f41fc14d0ca810b9a735c6d618128e", + "status": "external_only_content_requires_capture", + "source_sql_and_content_unchanged": true, + "archive_published": false, + "previous_image_has_same_guard": true + }, + { + "tenant_sha256": "98dd71602ef1afc56f1dcbaa7f5517198fcdd093a57d823ba11e8a634ea58ec2", + "status": "recovered_client_export_verified", + "schema": "coulomb.client-dataset-export.v1", + "content_files": 117, + "records": { + "members.user": 1, + "members.member": 1, + "spaces.space": 3, + "spaces.spacemembership": 3 + }, + "admin_events": 0, + "archive_sha256": "f93a6bb938772d1b955979a523817bf05946a2a5837fee29c6c36f22cbb4c333", + "offboarding_complete": false, + "all_source_tables_compared": 13, + "all_source_files_compared": 118, + "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 + } + ], + "reviewed_tenant_count": 2, + "exported_tenant_count": 1, + "blocked_tenant_count": 1, + "source_content_files_unchanged": 118, + "all_tables_unchanged": true, + "application_source_overlay": false, + "network_internal": true, + "published_ports": 0, + "production_access": false, + "production_restore": false, + "driver_sha256": "7f40ca5e661f65f98f95e1dcdd2eb82f7a51dc2f3415f37b8ef9a5b6a4b1d3dc" +} diff --git a/docs/release/space-sharing-fresh-recovery-2026-11-01.json b/docs/release/space-sharing-fresh-recovery-2026-11-01.json new file mode 100644 index 0000000..af00b72 --- /dev/null +++ b/docs/release/space-sharing-fresh-recovery-2026-11-01.json @@ -0,0 +1,37 @@ +{ + "schema": "coulomb.image-release-independent-recovery.v1", + "status": "fresh_point_independently_retrieved_and_restored", + "completed_at": "2026-11-01T20:22:18.317764+00:00", + "captured_at": "2026-11-01T20:14:51Z", + "primary_version": "1793564149208441", + "mirror_version": "1793564504794913", + "mirror_receipt_version": "1793564505835518", + "ciphertext_sha256": "4d547a02b294db74e33ed814303112731333de8c07b9666aade5b229e8688b9e", + "independent_reader_used": true, + "unpack": { + "status": "decrypted_pair_verified", + "version_id": "1793564149208441", + "encrypted_sha256": "4d547a02b294db74e33ed814303112731333de8c07b9666aade5b229e8688b9e", + "captured_at": "2026-11-01T20:14:51Z", + "database_sha256": "e7d34d3cba2958cc22edcb661e9aa761f1626f0b62ac0649962133c367af778d", + "content_sha256": "87295c816111c0d055a28e01d2c78b505d43055a70cd408fabd374b6771acf07", + "application_restore_verified": false + }, + "restore": { + "status": "restored_verified", + "database_tables": 13, + "database_rows": 123, + "database_rows_and_sequences_match": true, + "content_files": 118, + "content_hashes_match": true, + "network_internal": true, + "published_ports": 0, + "postgres_image_id": "sha256:ff23cdce56cac62ada6f66013e1a50864c0abbe79d132d40b6e05bd80f378a70", + "elapsed_seconds": 4.52, + "content_was_empty": false + }, + "elapsed_seconds": 5.729, + "production_restore": false, + "current_kit_replaced": false, + "driver_sha256": "7e12f456a9bbb37ec487bc8e191cdcdeb53bf574ae10bcbb33e212973978227b" +} diff --git a/docs/release/space-sharing-independent-postflight-2026-11-01.json b/docs/release/space-sharing-independent-postflight-2026-11-01.json new file mode 100644 index 0000000..13741da --- /dev/null +++ b/docs/release/space-sharing-independent-postflight-2026-11-01.json @@ -0,0 +1,41 @@ +{ + "schema": "coulomb.content-acceptance-independent-postflight.v1", + "status": "deployed_image_and_complete_native_state_verified", + "proposal_digest": "sha256:36795566d569eefb50f9827739ba515b5473669a2663064fb09283d158cdc1c8", + "receipt_sha256": "704e9c4bdf73af0e7c9b6c0a2025c84d27e95b195427056e3663ec0968ed4ab0", + "helm_revision": 22, + "image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:85378d10585efb782cb0629398c676d43bf7057d9d4e7a6b8af4489c1337bc83", + "source": "61c154f3a615e3200372fc3ca434aef18c102f09", + "packaged_source_files_verified": 79, + "sole_ready_content_writer": true, + "all_frozen_capsule_files_verified": 22, + "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": 101, + "business_rows_sha256": "2f41693460a4c0e7ceb57f8b906e4ab4d8927b25f9ad7f4057f1ca3205999baa", + "content_files": 118, + "content_files_sha256": "067e65ead0a65cb198d5aa5891ff3a9971072975f5c6404e3d131b851ad29245", + "global_slug_constraint": true, + "tenant_slug_constraint": true, + "migration_0003_applied": true, + "duplicate_slug_groups": 0, + "actual_owner_pages_rendered": 45, + "unsaved_outsider_page_denials": 45, + "production_identity_or_grant_created": false + }, + "fresh_paired_point": { + "captured_at": "2026-11-01T20:14:51Z", + "destination": "s3://railiance-platform-pg-backup/platform-pg/application-archives/coulomb-social/2026/11/01/20261101T201451Z-4eb79058a311e2f59863c2cc.tar.age", + "version_id": "1793564149208441", + "encrypted_sha256": "4d547a02b294db74e33ed814303112731333de8c07b9666aade5b229e8688b9e", + "encrypted_bytes": 2181848, + "image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:b58d858abd5b4acbd6b893c3f622f7a9fdb5e606164ab9866eb3cfaa04df1a0e" + }, + "timers_activated": false, + "production_data_restored": false, + "productive_acceptance_inferred": false +} diff --git a/docs/release/space-sharing-receipt-2026-11-01.json b/docs/release/space-sharing-receipt-2026-11-01.json new file mode 100644 index 0000000..b152711 --- /dev/null +++ b/docs/release/space-sharing-receipt-2026-11-01.json @@ -0,0 +1,70 @@ +{ + "completed_at": "2026-11-01T20:16:44.713764+00:00", + "elapsed_seconds": 122.62, + "existing_global_constraint_preserved": true, + "fresh_paired_point": { + "age_recipient": "age1qm30jk8q0cezey652dk2dhcr3d9vs528v6lg8mavl6d4q3e3vgnqmrmyy3", + "application": "coulomb-social", + "application_restore_verified": false, + "captured_at": "2026-11-01T20:14:51Z", + "ciphertext_bytes": 2181848, + "ciphertext_sha256": "4d547a02b294db74e33ed814303112731333de8c07b9666aade5b229e8688b9e", + "completed_at": "2026-11-01T20:15:49.841164+00:00", + "content_sha256": "87295c816111c0d055a28e01d2c78b505d43055a70cd408fabd374b6771acf07", + "database_sha256": "e7d34d3cba2958cc22edcb661e9aa761f1626f0b62ac0649962133c367af778d", + "destination": "s3://railiance-platform-pg-backup/platform-pg/application-archives/coulomb-social/2026/11/01/20261101T201451Z-4eb79058a311e2f59863c2cc.tar.age", + "encrypted_bytes": 2181848, + "encrypted_sha256": "4d547a02b294db74e33ed814303112731333de8c07b9666aade5b229e8688b9e", + "image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:b58d858abd5b4acbd6b893c3f622f7a9fdb5e606164ab9866eb3cfaa04df1a0e", + "immutable_create": true, + "local_archive": "20261101T201451Z-4eb79058a311e2f59863c2cc.tar.age", + "object_key": "platform-pg/application-archives/coulomb-social/2026/11/01/20261101T201451Z-4eb79058a311e2f59863c2cc.tar.age", + "pause_and_capture_seconds": 57.49, + "remote_retrieval_verified": true, + "schema": "platform.application-primary-archive.v1", + "status": "offsite_fetched_verified", + "version_id": "1793564149208441" + }, + "helm_revision": 22, + "node_request_percent": { + "cpu": 68, + "memory": 76 + }, + "pid": 2206792, + "postflight": { + "actual_owner_pages_rendered": 45, + "business_rows": 101, + "business_rows_sha256": "2f41693460a4c0e7ceb57f8b906e4ab4d8927b25f9ad7f4057f1ca3205999baa", + "business_tables": 12, + "content_files": 118, + "content_files_sha256": "067e65ead0a65cb198d5aa5891ff3a9971072975f5c6404e3d131b851ad29245", + "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": 45 + }, + "preflight": { + "business_rows": 101, + "business_rows_sha256": "2f41693460a4c0e7ceb57f8b906e4ab4d8927b25f9ad7f4057f1ca3205999baa", + "business_tables": 12, + "content_files": 118, + "content_files_sha256": "067e65ead0a65cb198d5aa5891ff3a9971072975f5c6404e3d131b851ad29245", + "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:36795566d569eefb50f9827739ba515b5473669a2663064fb09283d158cdc1c8", + "public_health_landing_static_verified": true, + "schema": "coulomb.guarded-image-release.v1", + "snapshot_pin_refreshed": true, + "started_at": "2026-11-01T20:14:41.949510+00:00", + "status": "image_candidate_deployed_verified", + "timers_activated": false +} diff --git a/docs/release/space-sharing-reconciliation-2026-11-01.json b/docs/release/space-sharing-reconciliation-2026-11-01.json new file mode 100644 index 0000000..e707e17 --- /dev/null +++ b/docs/release/space-sharing-reconciliation-2026-11-01.json @@ -0,0 +1,17 @@ +{ + "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": "e8ecf5da728400ba4bbca6b2078f8bf94e3bcf4ecb4aa2eee7af16cf0ed068f3", + "schema": "coulomb.space-sharing-release-reconciliation.v1", + "helm_revision": 22, + "owner_live_values_match_sealed_values": true, + "snapshot_restore_regression_tests_passed": 9, + "recovery_container_stopped": true +} diff --git a/docs/release/space-sharing-return-2026-11-01.sources.txt b/docs/release/space-sharing-return-2026-11-01.sources.txt new file mode 100644 index 0000000..3ad5b45 --- /dev/null +++ b/docs/release/space-sharing-return-2026-11-01.sources.txt @@ -0,0 +1,5 @@ +/home/worsch/.config/railiance-platform/coulomb-social-recovery/sharing-point-recovery-20261101/csoc-mirror-sharing-point.py: c322efbb0e7a8f4ab9262e2cfed22fb9a788b98440bbcfdb0a22677bd4a644a3 +/home/worsch/.config/railiance-platform/coulomb-social-recovery/sharing-point-recovery-20261101/csoc-recover-sharing-point.py: 7e12f456a9bbb37ec487bc8e191cdcdeb53bf574ae10bcbb33e212973978227b +/home/worsch/.config/railiance-platform/coulomb-social-recovery/sharing-point-recovery-20261101/csoc-sharing-reconcile.py: 7817e58e6d46d837ba989783ec5f861c886f01e453e714a3c51652a683e818f6 +/home/worsch/.config/railiance-platform/coulomb-social-recovery/sharing-point-recovery-20261101/csoc-verify-deployed-sharing.py: 2623b6b8fc45dd2e2e77678639fded9082708079b7722fcd955b554031c80ca8 +/home/worsch/.config/railiance-platform/coulomb-social-recovery/sharing-point-recovery-20261101/csoc-verify-sharing-fresh-point.py: 7f40ca5e661f65f98f95e1dcdd2eb82f7a51dc2f3415f37b8ef9a5b6a4b1d3dc diff --git a/docs/usecases/productive-content-acceptance-session.md b/docs/usecases/productive-content-acceptance-session.md index 370f51d..6142198 100644 --- a/docs/usecases/productive-content-acceptance-session.md +++ b/docs/usecases/productive-content-acceptance-session.md @@ -1,8 +1,8 @@ # Productive content acceptance session -The editor attachment correction imageb58d858a is independently verified at -Helm revision21, completed2026-10-31T23:32:38Z. Reopen any editor tabs from -revision20. Record your review date and actual verdicts. +The sharing correction image85378d10/source61c154f is independently verified at +Helm revision22, completed2026-11-01T20:16:44Z. The editor attachment correction +remains included. 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 @@ -75,13 +75,13 @@ This does not grant access to the owner's private spaces. Open https://app.coulomb.social/account/data/ as `testuser` and obtain **Your member ID**. The user approved owner-managed sharing with any active Coulomb member, regardless of platform identity tenant, on 2026-11-01. No directory group or -platform role change is needed. The correction is being prepared; wait for its -verified deployment before retrying Update access. +platform role change is needed. The correction is deployed and independently verified at revision22; +reopen Share space and retry Update access. The user confirmed successful `testuser` first sign-in and initial denial on 2026-11-01. Revision21 refused the grant because `testuser` is in `tenant:coulomb` and `tegwick`/the review spaces are in `tenant:platform`. That diagnosis is -recorded; viewer/revoked states still need the corrected release and user review. +recorded; the corrected release is live and viewer/revoked states need user review. The same participant can cover the ungranted, viewer and revoked states in sequence, using their own browser session. @@ -121,7 +121,7 @@ Record the deployed revision/date and each verdict independently: - UC-003 authoring: - Attachments: editor visibility confirmed; owner copy/removal independence accepted in step2. Reader/revoked access remains step3. - UC-004 copy/move and old-address permissions: owner workflow accepted2026-11-01 (“The step 2 of the walkthrough seems fine.”). Participant denial through the old address remains step3. -- UC-005 sharing/revocation: gap reported2026-11-01. Existing-platform-user onboarding succeeded and testuser cannot access the owner's review spaces, but adding access failed. Read-only inspection confirms mismatched tenants and no participant grant; viewer/revoked checks remain unperformed. +- UC-005 sharing/revocation: revision22 Viewer flow accepted2026-11-01. User confirms read access to A, visible attachments, no editing, and other spaces hidden. Moved-page old-address denial and revoked page/download denial remain pending. - UC-006 account-local export and exit/succession semantics: An unresolved gap or an unperformed participant check stays open. Automated diff --git a/scripts/snapshot-content-and-db.py b/scripts/snapshot-content-and-db.py index 342510b..d0b7f0d 100644 --- a/scripts/snapshot-content-and-db.py +++ b/scripts/snapshot-content-and-db.py @@ -21,7 +21,7 @@ from pathlib import Path NS = 'coulomb-social' IMAGE = ('forgejo.coulomb.social/coulomb/coulomb-social@sha256:' - 'b58d858abd5b4acbd6b893c3f622f7a9fdb5e606164ab9866eb3cfaa04df1a0e') + '85378d10585efb782cb0629398c676d43bf7057d9d4e7a6b8af4489c1337bc83') CLUSTER_UID = 'a553c742-0115-43d4-99a4-a5ca56fe0786' LOCK_PATH = Path('/var/lib/coulomb-social-backup/snapshot.lock') diff --git a/workplans/CSOC-WP-0012-durable-recovery-service-readiness.md b/workplans/CSOC-WP-0012-durable-recovery-service-readiness.md index ad4ca6d..8e91448 100644 --- a/workplans/CSOC-WP-0012-durable-recovery-service-readiness.md +++ b/workplans/CSOC-WP-0012-durable-recovery-service-readiness.md @@ -8,7 +8,7 @@ status: active owner: codex topic_slug: coulomb-social created: "2026-10-08" -updated: "2026-10-31" +updated: "2026-11-01" origin: residual origin_ref: CSOC-WP-0008 state_hub_workstream_id: "0cd1f513-f26e-5707-b646-8b4bbe6369fc" @@ -761,6 +761,15 @@ priority: high state_hub_task_id: "54af74b0-3212-537e-a02c-d2d8a091caf9" ``` +2026-11-01 revision22 follow-through confirms the known other-tenant external +binding from the 2026-10-31 scope review still refuses complete client export in +both previous and deployed images. The independently recovered new point has +13tables/123rows/118files; the local content tenant exports117files unchanged. +Both tenant scopes were checked, with one successful export and one guarded +refusal. External capture/disposition remains this task; no whole-instance +export or offboarding acceptance is inferred. Evidence: +`docs/release/space-sharing-fresh-client-export-2026-11-01.json`. + Remaining T03 service-contract §6: resolve external/unattributed data, obtain private delivery/acceptance of complete client export, and agree instance teardown, sessions, logs and primary/mirror/protected-kit expiry. Current packaged export proof covers 85 selected files and four record sets; it is not offboarding acceptance. Coordinate retention with T04 and personal portability with WP-0013-T03. Record non-destructive review first; do not infer authorization to delete data. 2026-10-31: T12 advances to progress with the concrete non-destructive scope review diff --git a/workplans/CSOC-WP-0013-sharing-content-hardening.md b/workplans/CSOC-WP-0013-sharing-content-hardening.md index 4237671..24e7082 100644 --- a/workplans/CSOC-WP-0013-sharing-content-hardening.md +++ b/workplans/CSOC-WP-0013-sharing-content-hardening.md @@ -23,12 +23,11 @@ Necessary WP-0012-T07 route and T08 inactive source installation are founder- executed and independently verified, including capacity admission. Full recurring backup/service acceptance and migration/cutover remain in their existing plans. -The combined content release is deployed at revision20; its editor follow-up is -now independently verified at revision21/imageb58d858a/source31eaa58. Full desired -spec/source/helper checks pass,97business rows/98files are unchanged, and43owner -views/43outsider denials pass. The live editor check renders all43editors and -verifies42saved-file download links. No execution retry is required. Evidence: -editor-attachments-{receipt,independent-postflight,live-editor}-2026-11-01.json. +Current production is independently verified revision22/image85378d10/source61c154f, +including the prior combined content and editor attachment corrections. Complete +spec/PVC/source/helper checks pass, all101business rows/118files are unchanged by +deployment, and45owner views/45outsider denials pass. No execution retry is needed. +Evidence: space-sharing-{receipt,independent-postflight}-2026-11-01.json. T02 retains final content acceptance: three custom-topic rendering cases are accepted for now (decision69ec9380), two original attachments are recovered, @@ -47,10 +46,10 @@ T03 owns the separate UC-003/004/005/006 productive outcomes in the [acceptance session](../docs/usecases/productive-content-acceptance-session.md). The nominated `testuser` has signed in and initial private-space denial is confirmed. The attempted grant exposed a platform-tenant mismatch; the approved -space-local sharing correction is tested and sealed for founder-terminal release +space-local sharing correction is deployed and independently verified (source61c154f/image85378d10, proposal 36795566). The owner portion of copy/move -is accepted; incoming-address denial, sharing/revocation after the correction, -and account-local portability verdicts remain open. Narrow visibility acceptance +is accepted, as is the corrected Viewer sharing flow. Incoming-address denial, +revocation and account-local portability verdicts remain open. Narrow visibility acceptance and automated checks do not supply broader workflow verdicts. 2026-11-01 onboarding clarification: the participant already has an LLDAP @@ -106,6 +105,28 @@ founder-terminal launcher. Final native preflight passed at the exact digest wit Attended execution and independent postflight/fresh-point recovery remain required. No production deployment or identity/grant mutation has occurred. Evidence: docs/release/space-sharing-*-2026-11-01.*. +2026-11-01 verified sharing release return: founder executed proposal36795566, +completed20:16:44Z at Helm22/image85378d10. Durable receipt and independent native +postflight agree:101business rows/118files unchanged,45owner views/45outsider +denials,79packaged source files and22frozen capsule members verified. Source/helper +pins are reconciled; snapshot dry-run and9snapshot/restore regressions pass. + +The fresh20:14:51point is independently mirrored/read back/decrypted/restored: +13tables/123rows and118files match. Deployed and previous image views pass on that +recovered store. The content tenant export verifies117files with all source SQL/ +files unchanged. The other tenant's existing external-only binding triggers the +same complete-export refusal in both images; this known whole-instance scope +residual stays CSOC-WP-0012-T12, not a new sharing regression or an accepted full +instance export. Productive grant/viewer/revocation and personal export verdicts +remain open. No live identity/grant writes or timer activation by the agent. + +2026-11-01 productive Viewer acceptance: the user confirms sharing A works, +testuser can read and see attachments, cannot edit, and other spaces stay hidden. +The reported cross-context sharing gap is resolved. UC-005 remains open only for +explicit old incoming-address denial and revocation checks; UC-006 personal +portability also remains open. Requested those next sharing checks without +changing any production grants. Proof: productive-sharing-viewer-return-2026-11-01.json. + The [four-workplan assessment](../docs/release/goal-progress-audit-2026-10-31.md) retains the scope split. Historical task notes retain earlier preparation and release evidence; this map and the latest task returns govern current status.