diff --git a/docs/release/sharing-portability-review-2026-10-08.md b/docs/release/sharing-portability-review-2026-10-08.md index e8ddca3..96f9180 100644 --- a/docs/release/sharing-portability-review-2026-10-08.md +++ b/docs/release/sharing-portability-review-2026-10-08.md @@ -1,7 +1,10 @@ # WP-0008 / WP-0010 implementation review — 2026-10-08 -This is a local source review. The current production release remains revision15; -these changes have not been packaged or deployed. Both workplans remain active. +**Deployed: Helm revision16**, app1/1, immutable source `dd83c90` and owning +chart pin `2202e69`. Founder explicitly requested: “Please deploy commit and sync.” +Live authority: `ADMINISTER @ realm:kubernetes/railiance01`, `activation=APPROVED`; +decision `8e692284-6289-4594-bb21-88346f174806`. Both workplans remain active for +their remaining owner and productive user acceptance gates. Technical implementation decision: `9ffb5125-5551-4101-9025-5b6f72f40940`. ## Product behavior now implemented @@ -116,3 +119,58 @@ admission (EMAIL-WP-0007-T03/T04 and RPF-WP-0053-T05), named reply/bounce owners inbound access/alignment/retention and isolated owner-spanning browser journeys. No external owner admission, new caller, email send, mailbox scan, runtime change, productive transfer acceptance or Bubble retirement is inferred from these tests. + + +## Deployment receipt + +Source `dd83c90` and owning pin `2202e69` are committed and pushed. Published image: +`forgejo.coulomb.social/coulomb/coulomb-social@sha256:9a646d8e01a61ba5316d3c2eb0273064e17f2d0300ad07af766ccedda65ecb18`. +The packaged image passes synthetic sharing/exit/conflict checks as UID10001, +with a read-only root and disabled network. Full app gate passed again before +source commit:182tests, Ruff and both real browser journeys. + +The node identity `a553c742-0115-43d4-99a4-a5ca56fe0786`, unchanged retained PVC UID, +old image, one Ready replica, Recreate strategy and no node pressure are verified. +Requests are3455m/4000m CPU and9440Mi memory; node disk has121Gi available. +Parsed old/proposed Helm manifests contain exactly three resources and one app +image change. Namespace-correct kubectl server dry-run and Helm server dry-run +pass. A strict live-spec preflight initially stopped on the API's `1` versus the +chart's `1000m` CPU serialization; quantity-aware equality corrected that check, +and all live specs then matched. Both failed guard runs made no upgrade. + +Fresh paired capture started2026-10-08T07:19:57Z and resumed the app after56.21s. +Database archive50087bytes SHA256: +`00239424b75eae7f516ef047468b4bc05024a9448e8d43e13a8485107f850ad4`. +Content archive2001238bytes SHA256: +`8241e590229896a50ae450b7f85e2a552da930a416abbb73566a5d6bdc6b2392`. +Node root-private custody: `/tmp/csoc-sharing-pair-20261008`; matching workstation +mode0600 files under0700 `/tmp/csoc-sharing-release-wok8mljj/pair`. These are +retained temporary recovery points, not durable offsite/retention acceptance. + +Actual captured pair recovery verifies13tables,104rows/sequences and75content +hashes, measured4.31s. New image renders38pages/38Visual references and verifies +sharing/export controls, synthetic restored viewer write denial and outsider +page/image denial on an internal Docker network without published ports. +The restored-file probe uses its workstation owner UID1000; production UID10001 +and ownership remain intact. Isolated recovery container/network are removed; +private paired artifacts and restore receipt remain for custody disposition. + +The committed owning chart was staged on railiance01. Fresh cluster/PVC/image, +live-spec/content guards and Helm server dry-run pass. Atomic/waited Helm upgrade +completed in18.64s as **revision16**, deployed, one Ready replica at the exact +published digest. Postflight verifies the new live specs and all75stored file +hashes against the pair. No rollback or production restore was required. + +Read-only in-pod checks as UID10001 render38pages/38Visuals, expose Share space +and Your app data/export for the existing owner, and deny unsaved outsider +page/sharing/image reads. The single existing grant remains identical. No test +Member/User, session, role, content edit or account deletion was created in +production. Public health is200 and the served clipboard JavaScript SHA256 +`347eabe0c8d93bf439df02b5a08a7ea71004600e6ff4e8a42cecbee52a9f0413` +matches the tested source. + +Snapshot helper now pins revision16's digest. Nine focused snapshot/restore +safety tests and a fresh node server dry-run pass without a second pause/capture. +No issuer, Secret, shared-mail runtime, new caller, mailbox, schedule, offsite +archive, apex or Bubble change is included. Per-use-case user acceptance, retained +backup custody/retention and the remaining WP-0008/WP-0010 tasks remain open. diff --git a/docs/usecases/catalog.md b/docs/usecases/catalog.md index 1470ee4..d346e9c 100644 --- a/docs/usecases/catalog.md +++ b/docs/usecases/catalog.md @@ -36,10 +36,10 @@ acceptance. Do not mark transfer accepted on the strength of tests alone. |---|---|---|---|---| | CSOC-UC-001 | Returning/new member signs in and reaches their work | Login/signup strings and historical identity evidence; original transfer journey inferred | OIDC + registration entry implemented; current cohort onboarding and live Case B need review | WP-0008-T01/T03; pending | | CSOC-UC-002 | Writer finds an existing space and opens a page to continue work | `vw_spaces`, `vw_pages`, space/page fields; inferred; one historical import rehearsal | Space/page navigation and markdown implemented; nominated real content, visuals, missing hierarchy and recognizability need review | T03/T05; pending | -| CSOC-UC-003 | Writer creates and maintains a space/page with Title, Abstractor, Visual and body | Space/page create/edit symbols and captured card UI; inferred | Visuals are live; local revisions and stale-edit protection implemented; new release and revision/retention acceptance pending | T01/T04/T05; pending | -| CSOC-UC-004 | Writer makes an independent copy, or moves a page to another workspace | Copy icons captured; exact Bubble transfer action unresolved | Local linked-attachment copy and guarded incoming-address preservation implemented; actual corpus/custom conventions and original semantics need comparison | T04/T05; pending | -| CSOC-UC-005 | Reader sees shared work; outsider cannot access it; writer remains able to edit | Members/Guests/IsPrivate fields; original privacy rules inferred | Owner-managed same-tenant sharing/revocation, viewer denial and ambiguous-storage guards implemented locally; release, tenancy and original privacy review remain | T04; pending | -| CSOC-UC-006 | Member can take their app-local information with them or leave with a clear content outcome | Platform-contract portability need; Bubble equivalent **unknown** | Local personal JSON export and reviewed exit screen implemented; shared content retained, successor owner required; deployment and productive user acceptance pending | T04; pending | +| CSOC-UC-003 | Writer creates and maintains a space/page with Title, Abstractor, Visual and body | Space/page create/edit symbols and captured card UI; inferred | Visuals are live; revisions and stale-edit protection deployed as revision16; revision/retention acceptance pending | T01/T04/T05; pending | +| CSOC-UC-004 | Writer makes an independent copy, or moves a page to another workspace | Copy icons captured; exact Bubble transfer action unresolved | Linked-attachment copy and guarded incoming-address preservation deployed as revision16; actual corpus/custom conventions and original semantics need comparison | T04/T05; pending | +| CSOC-UC-005 | Reader sees shared work; outsider cannot access it; writer remains able to edit | Members/Guests/IsPrivate fields; original privacy rules inferred | Owner-managed same-tenant sharing/revocation, viewer denial and ambiguous-storage guards deployed as revision16; tenancy and original privacy review remain | T04; pending | +| CSOC-UC-006 | Member can take their app-local information with them or leave with a clear content outcome | Platform-contract portability need; Bubble equivalent **unknown** | Personal JSON export and reviewed exit screen deployed as revision16; shared content retained, successor owner required; productive user acceptance pending | T04; pending | | CSOC-UC-007 | Member returns after a restart/incident and their work is still there | Continuity requirement, not a captured Bubble action | Persistent storage and actual paired restore are evidenced; offsite custody/retention, monitoring and operational rollback remain | T01/T02; pending | | CSOC-UC-008 | Prepare the next ReichelAg founder call from the full previous protocol, write the new notes, copy them for manual email distribution | User-confirmed 2026-10-06; exact Bubble UI not freshly observed | Duplicate/edit implemented; clipboard action added; latest real protocol, mail-client paste and persistence review pending | T03/T05/T08/T09/T10; pending | @@ -64,8 +64,8 @@ edit the copy and confirm the source is independent; move another page and verify source removal, destination content and access. For UC-005: reader can open the shared page, sees read-only access and cannot change it by direct requests; outsider gets no content; destination write -permission is checked before copy/move. Review the locally implemented Share -space UI after its release; original privacy equivalence remains T04. +permission is checked before copy/move. Review the deployed Share +space UI on app.coulomb.social; original privacy equivalence remains T04. For UC-006: compare the app-local export and proposed leaving behavior before confirming deletion; platform account handling is explicitly separate. For UC-007: compare the pre-incident content and access with an isolated restore. diff --git a/docs/usecases/first-transfer-review.md b/docs/usecases/first-transfer-review.md index 5777bf6..a2bb29c 100644 --- a/docs/usecases/first-transfer-review.md +++ b/docs/usecases/first-transfer-review.md @@ -23,7 +23,7 @@ accept migration or a live release. ## Review preparation (owned by WP-0008) - Review host: https://app.coulomb.social/; retained one-writer content release is live. - Current immutable release: [private Visual revision15 receipt](../release/private-visuals-2026-10-07.md). + Current immutable release: [sharing/portability revision16 receipt](../release/sharing-portability-review-2026-10-08.md). - Nominated workspace: ReichelAg; latest real protocol and explicit personal-owner grant imported. Wider Bubble-space reconciliation remains T03. - Workflow confirmed by user description and ongoing review. Original clipboard @@ -33,8 +33,8 @@ accept migration or a live release. preview is corrected in revision15; live owner preview/hash preservation and actual production-pair isolated recovery pass. List-preview review is pending. - Writer, reader and outsider access; owner sharing/revocation, personal export - and retained-content exit UI are implemented locally and browser-tested. - Release and productive user review remain T04; see + and retained-content exit UI are deployed as revision16 and browser-tested. + Productive user review remains T04; see [implementation review](../release/sharing-portability-review-2026-10-08.md). - Content restart durability and paired real-content isolated restore verified. Durable backup custody/retention and operational rollback remain T02. diff --git a/scripts/snapshot-content-and-db.py b/scripts/snapshot-content-and-db.py index 9ca1e75..e8c3a91 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:' - '91673ba7625f905c7a4d0c3d52b45ccc7e7746f387d1e84aab331d68994c5df9') + '9a646d8e01a61ba5316d3c2eb0273064e17f2d0300ad07af766ccedda65ecb18') CLUSTER_UID = 'a553c742-0115-43d4-99a4-a5ca56fe0786' LOCK_PATH = Path('/var/lib/coulomb-social-backup/snapshot.lock') diff --git a/workplans/CSOC-WP-0008-production-transfer-acceptance.md b/workplans/CSOC-WP-0008-production-transfer-acceptance.md index ad3eda8..17da958 100644 --- a/workplans/CSOC-WP-0008-production-transfer-acceptance.md +++ b/workplans/CSOC-WP-0008-production-transfer-acceptance.md @@ -676,3 +676,35 @@ durable retention policy or authority for deployment/cutover. No private corpus, member profile, live image, offsite archive or timer changed. T01/T02/T03/T04/T05/ T06/T08/T09 remain live for their existing admission, deployment, reconciliation and productive user acceptance gates; this workplan remains active. + + +## Approved release and sync — 2026-10-08 + +Founder explicitly requested deployment/commit/sync; decision8e692284-6289-4594- +bb21-88346f174806 records ADMINISTER @ realm:kubernetes/railiance01, +activation=APPROVED for this image-only release. Source dd83c90, owner pin2202e69, +published digest9a646d8e01a61ba5316d3c2eb0273064e17f2d0300ad07af766ccedda65ecb18. +Full182-test/Ruff/browser gate passes. Packaged UID10001/read-only/no-network +synthetic sharing/portability/conflict smoke passes. Paired capture56.21s, app +resumed; actual isolated13tables/104rows/sequences/75file recovery4.31s matches. +New-image actual38page/38Visual rendering and owner controls/export/restored +viewer/outsider denial pass; isolated DB/network removed, private pair retained. + +Fresh cluster/PVC/image/node-pressure and exact three-resource image-only checks, +namespace-correct kubectl/Helm server dry-run and all75content hashes pass. +CPU quantities1/1000m were normalized after strict preflight stopped; no upgrade +occurred on either failed guard. Atomic/wait rollout18.64s deploys revision16, +app1/1 at the immutable digest. All75stored hashes and single existing owner +grant remain unchanged. Live UID10001 read-only owner sharing/data/export, +38page/Visual and unsaved outsider-denial checks pass; no production probe user, +session, grant, page edit or account removal. Public health/static200; +clipboard source hash matches. Snapshot pin updated;9focused recovery tests +and fresh node server dry-run pass. Receipt: +docs/release/sharing-portability-review-2026-10-08.md. + +Production deployment of this increment is complete. T01/T02/T03/T04/T05/T06/ +T08/T09 remain open for their broader service/cohort/privacy/custody/retention/ +operational rollback and productive user acceptance obligations. No task is +closed on deployment alone; no mail/issuer/Secret/caller/schedule/offsite/Bubble +change occurred. Temporary private backup custody is explicitly retained for +owner disposition, not inferred to be durable. diff --git a/workplans/CSOC-WP-0010-platform-email-facilities.md b/workplans/CSOC-WP-0010-platform-email-facilities.md index 16c18d4..b18ba2c 100644 --- a/workplans/CSOC-WP-0010-platform-email-facilities.md +++ b/workplans/CSOC-WP-0010-platform-email-facilities.md @@ -215,3 +215,16 @@ browser journeys still need owner returns. EMAIL-WP-0007-T03/T04 and RPF-WP-0053-T05 remain the live ledger custody/activation handoffs. No external owner source/runtime, mailbox access, caller admission or email send changed; no productive new communication flow was accepted or this workplan finished. + + +## Commit, application deployment and sync — 2026-10-08 + +The communication registry/isolated owner regression gate are committed with +source dd83c90 and pushed. The companion app sharing/portability increment is +live as Helm revision16 under the founder's explicit deployment instruction +and decision8e692284-6289-4594-bb21-88346f174806. App182-test/browser gate, +packaged isolated checks, actual paired recovery and live read-only checks pass; +owner mail gate remains39passed/zero skips. See combined release receipt. +No shared-mail runtime, sender, caller admission, mailbox access, SMTP send, +ledger capture/upload or timer changed. T04/T05/T06 remain progress for their +existing owner/custody and full browser/user acceptance returns.