diff --git a/docs/release/private-visuals-2026-10-07.md b/docs/release/private-visuals-2026-10-07.md index 342d776..dd250e6 100644 --- a/docs/release/private-visuals-2026-10-07.md +++ b/docs/release/private-visuals-2026-10-07.md @@ -1,6 +1,7 @@ # Authenticated space and page visuals β€” release review -CSOC-WP-0008-T05. **Deployed as Helm revision 14**; user Visual review pending. +CSOC-WP-0008-T05. **Current Helm revision 15**, including Spaces-list previews; +user review pending. Original private-image delivery deployed as revision14. Exact live decision: `3f959ed2-4163-4fa5-9f88-f80b2a3d1b89` (founder approved). ## User-visible behavior @@ -134,3 +135,51 @@ safety tests pass and its fresh server dry-run succeeds without pausing writers. Original full release gate:129passed including actual browser Visual loading, duplication/edit/rename/clipboard and reader/outsider denial. T01/T02/T04/T05/T09 remain open for their broader requirements and interactive user acceptance. + +## Founder review and Spaces-list correction + +Founder reports: β€œThe visual shows on the page itself but not in the spaces +list entries.” Page Visual visibility is confirmed; the list preview remained +a concrete T05/T09 gap. Correct that omitted rendering within the already +approved private-Visual image-only upgrade scope and this direct founder review. + +The Spaces list now renders each visible space's local cover in its existing +entry, using the same private image URL and membership-filtered query. The +underlying space metadata, stored content, clipboard and image access policy +remain in use. Broader UI framework work is not part of this correction. + +Source `881a61d10798`, owning pin `f5fc9ea`, published digest +`sha256:91673ba7625f905c7a4d0c3d52b45ccc7e7746f387d1e84aab331d68994c5df9`. +Full `make check`:129passed, including writer/viewer Spaces-list image loading +and outsider exclusion. Parallel cover requests exposed the live-test server's +shared in-memory SQLite cursor race; the isolated test database is now a +temporary file per run/worker with separate request connections. Fast streaming +tests consume Django Client's closing iterator once rather than calling close +again. No regression check is skipped, disabled or serialized. The staged +commit preceded inspection of one failed run; all fixes and the complete passing +gate were in place before this image was built, published or deployed. + +Fresh paired capture started2026-10-07T11:56:43Z, took56.03seconds, app resumed. +Database archive50087bytes SHA256 +`72ee616dc1d5375e0c48100c89697aad15c15cef9c3b7c9f4f3208b8ac96c5a0`; +content archive2001238bytes SHA256 +`f5edb609db9fe4feb6e81f4e73ee97ab8040502f561b285391ce3a926dadd6ed`. +Private copied artifacts hash-match. Isolated restore13tables/104rows/sequences/ +75files match, measured4.14seconds. New packaged image renders the actual +restored space cover in owner and synthetic viewer list entries; image reads +pass and outsider list excludes it. Isolated internal network has no published +ports; rehearsal DB/network removed afterward. Temporary backup custody remains T02. + +Reviewed owner source archive staged on node; fresh cluster/image/readiness and +pressure checks, exact parsed image-only manifest comparison, kubectl/Helm +server dry-run and all75pre-upgrade file hashes pass. Helm atomic/wait revision15 +completed20.58seconds, app1/1 at the exact new digest. No rollback required. + +Read-only deployed core view verifies owner list preview and its route; private +preview bytes match the stored space Visual. An unsaved same-tenant outsider's +list has no preview/URL. Production UID10001, single explicit owner grant and +all75file hashes unchanged; no production probe identities/sessions/grants +created. Public health/static200; served clipboard JavaScript unchanged. +Snapshot-helper pin follows this release;7focused recovery tests and fresh +server dry-run pass. User list-preview confirmation remains T09; no complete +workflow acceptance, durable backup closure or Bubble retirement inferred. diff --git a/docs/usecases/first-transfer-review.md b/docs/usecases/first-transfer-review.md index 7d4057b..234ddff 100644 --- a/docs/usecases/first-transfer-review.md +++ b/docs/usecases/first-transfer-review.md @@ -23,14 +23,15 @@ 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 revision14 receipt](../release/private-visuals-2026-10-07.md). + Current immutable release: [private Visual revision15 receipt](../release/private-visuals-2026-10-07.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 observed directly and matched exactly; wider Bubble UI inventory remains T08. - Migrated content/visual/link reconciliation and accepted differences: pending T03/T05. - Private covers are now deployed; live owner reads/hash preservation and actual - production-pair isolated recovery pass. Imported Visual user review is pending. + Private page covers are visible per founder review. Missing Spaces-list + 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; sharing and portability UX: pending T04. - 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 5611ccb..5d04cde 100644 --- a/scripts/snapshot-content-and-db.py +++ b/scripts/snapshot-content-and-db.py @@ -18,7 +18,7 @@ from pathlib import Path NS = 'coulomb-social' IMAGE = ('forgejo.coulomb.social/coulomb/coulomb-social@sha256:' - '0e235abc33a1c5613c0e2c9a0f767c871d0fbed6695973ae17cfdcb2dedaaafa') + '91673ba7625f905c7a4d0c3d52b45ccc7e7746f387d1e84aab331d68994c5df9') CLUSTER_UID = 'a553c742-0115-43d4-99a4-a5ca56fe0786' diff --git a/workplans/CSOC-WP-0008-production-transfer-acceptance.md b/workplans/CSOC-WP-0008-production-transfer-acceptance.md index 463d717..f5d979c 100644 --- a/workplans/CSOC-WP-0008-production-transfer-acceptance.md +++ b/workplans/CSOC-WP-0008-production-transfer-acceptance.md @@ -167,7 +167,8 @@ responses prevent active-file serving. Visual copy uses the same bounded file access and refuses destination asset overwrite. Clipboard Markdown/HTML payloads remain unchanged. UC-008 mandatory fast/browser regressions now protect actual image loading after duplication and reader/outsider access. make check129passed. -Revision14 deployment is complete; actual Visual/user acceptance is pending. +Revision15 adds Spaces-list covers after founder confirms page Visual visibility +but reports missing list previews. List-preview/user acceptance is pending. T05 remains open for revision/concurrency policy, cross-space body-linked assets/incoming links, and original hierarchy/privacy fidelity; T04 tenant-storage work remains. @@ -180,7 +181,8 @@ inventory:37JPEG assets, zero unsupported/signature mismatches or ambiguous slugs. No productive content disclosed or changed. Concrete review packet: docs/release/private-visuals-2026-10-07.md. Exact live decision: 3f959ed2-4163-4fa5-9f88-f80b2a3d1b89 was explicitly approved by the founder. -Runtime now uses this image as revision14; receipt below. +This initial image deployed as revision14. Current runtime is the Spaces-list +correction881a61d/digest91673ba7 at revision15; receipts below. ## T06 β€” Close service contract and founder cutover gate @@ -595,3 +597,18 @@ UC-008 fast and real-browser checks for writer/viewer list-preview loading and outsider exclusion. Preserve page/clipboard/content/access behavior. This is a correction within the approved private-Visual image-only upgrade scope, not acceptance of the complete use case. No wider UI framework work included. + +Correction deployed as revision15: source881a61d10798, owner pinf5fc9ea, digest +sha256:91673ba7625f905c7a4d0c3d52b45ccc7e7746f387d1e84aab331d68994c5df9. +Full129-test lint/browser gate passes with mandatory writer/viewer list-preview +loading and outsider exclusion. Temporary file-backed test DB resolves concurrent +SQLite request-cursor races without serializing or skipping browser requests; +streaming tests follow Django Client's close lifecycle. Gate passed before build. +Fresh paired capture56.03seconds/app resumed; isolated13tables/104rows/sequences/ +75files recovery4.14seconds matches. New-image actual restored list cover reads +pass for owner/viewer; outsider excluded. Rehearsal DB/network removed. +Fresh image-only/cluster/content guards and server/Helm dry-run pass. Atomic/wait +upgrade20.58seconds, app1/1. Read-only live list preview/image bytes, outsider +exclusion, owner grant and all75stored hashes verified. Health/static200, +clipboard unchanged. Snapshot-helper pin/7tests/server dry-run pass. T09 awaits +founder list-preview/full workflow review; other T02/T04/T05 requirements stay open.