diff --git a/SCOPE.md b/SCOPE.md index e55b4c2..8078c40 100644 --- a/SCOPE.md +++ b/SCOPE.md @@ -1,6 +1,6 @@ # SCOPE — implemented capability and boundaries -Reviewed 2026-10-06 against application source, tests and dated repository +Reviewed 2026-10-07 against application source, tests and dated repository records. This describes what the checkout can do; historical live evidence is identified separately. It is not a current production acceptance certificate. @@ -49,7 +49,7 @@ filesystem tenant namespace or a database-wide concurrency guarantee. not create platform accounts, import passwords, scrape missing Bubble content, or certify corpus completeness. It runs with writers paused; the batch is restartable per space, not globally atomic or crash-transactional. -- No app-local member export/delete product, paired DB/content restore drill, +- No app-local member export/delete product, automatic content git versioning, outline/include/projection authoring or marketplace/social/payment product is implemented here. - Historical health/auth evidence does not prove current image, persistence, @@ -100,7 +100,8 @@ Delivery: `docs/deploy.md`; residual records: `docs/intakes/csoc-residuals.md`. First user-confirmed review case: ReichelAg weekly founder-call protocols (UC-008), full duplication and manual editing plus clipboard copy for external -email. See docs/usecases/reichelag-weekly-call.md; live transfer is pending. +email. See docs/usecases/reichelag-weekly-call.md; first-cohort import is live, +user workflow acceptance is pending. Established use-case regression protection is in docs/usecases/registry.json and tests/usecases/, starting with ReichelAg. `make check` runs fast/application @@ -126,3 +127,10 @@ Expired/public-only source captures are rejected by the targeted exporter. Current page navigation remains index-first/alphabetical; latest-change ordering and UI framework architecture are backlog CSOC-WP-0011. See [real import receipt](docs/release/reichelag-imported-2026-10-06.md). + +Clipboard fidelity correction (2026-10-07): founder review identified omitted +title/subtitle and lost Markdown syntax. Revision12 deploys the full original +Bubble export format, including its `xxx` footer. Live text/template payload +match the observed original, and all74content files are unchanged. Exact +payload regressions pass; actual mail-client acceptance remains T09. See +[clipboard release receipt](docs/release/reichelag-clipboard-2026-10-07.md). diff --git a/docs/release/reichelag-clipboard-2026-10-07.md b/docs/release/reichelag-clipboard-2026-10-07.md new file mode 100644 index 0000000..c0e7004 --- /dev/null +++ b/docs/release/reichelag-clipboard-2026-10-07.md @@ -0,0 +1,46 @@ +# ReichelAg clipboard fidelity correction + +Founder review reported that clipboard output differed from the old Bubble app. +Authenticated read-only observation confirms the original plain-text format is +page title, blank line, italic abstractor, blank line, original Markdown body, +then a blank line and `xxx`. Bubble adds the footer during copying. The protocol +body itself does not contain it. No private protocol text is included here. + +The previous implementation exported only rendered body content, omitting the +title/subtitle and losing Markdown heading/emphasis syntax. The corrected export +uses safely JSON-encoded canonical Markdown text for rich/plain/manual fallback +paths. Rich HTML includes escaped title/subtitle, sanitized body and the footer. +The page also displays its title and subtitle. Only the storage terminal LF is +removed before appending the legacy footer; internal Markdown is retained. + +Source d521ddc, immutable image digest +`sha256:9e7d1c2cc5248a3fd92ab48b4c4edf077c3ee7fb9149e7adb78c29101c60b745`. +Owning chart pin committed/synced in railiance-apps at9499c39. + +## Validation and deployment + +- `make check`:97passed, including mandatory real-browser workflow. +- Synthetic Chromium checks: exact rich/plain/manual payload, denied fallback + selection, nested bullets, Markdown emphasis and title/subtitle/footer. +- Metadata escaping test: raw title/subtitle HTML cannot execute in rich export. +- Original nominated protocol's observed clipboard matches rebuilt text exactly. +- Fresh paired PostgreSQL/content snapshot captured with writers quiesced; + operation58.38seconds and app resumed. Secret-free digest receipt below. +- Node-side Helm atomic/wait revision12 deployed; server dry-run and parsed + manifests prove only the app image changes. PVC/environment/Secret references + and explicit owner access remain unchanged. +- Live content loader and template JSON payload match the original clipboard; + all74stored file hashes match the recovery snapshot. +- Public health and clipboard asset200; served JavaScript equals tested source. + +Pre-upgrade database SHA256: +`af3acf82ca9421624d99fa8ec7d81e71f228b45d560035f2396c91e566ba6673`. +Pre-upgrade content SHA256: +`95a323559819151e1badf52eb0702478eae9616b221ffdf20f526cad18a16c26`. +Private pair remains under node-local temporary custody; this does not close +durable backup retention/operating acceptance (CSOC-WP-0008-T02). + +CSOC-WP-0008-T10 correction is implemented. T09 remains the founder's actual +clipboard/email-client acceptance gate. Reload the protocol page, copy, and +check the complete pasted protocol in the email draft. No email is sent by the +app, and no source protocol is changed by this release. diff --git a/history/20261006T223210Z-reichelag-clipboard-fidelity.md b/history/20261006T223210Z-reichelag-clipboard-fidelity.md new file mode 100644 index 0000000..c0e7004 --- /dev/null +++ b/history/20261006T223210Z-reichelag-clipboard-fidelity.md @@ -0,0 +1,46 @@ +# ReichelAg clipboard fidelity correction + +Founder review reported that clipboard output differed from the old Bubble app. +Authenticated read-only observation confirms the original plain-text format is +page title, blank line, italic abstractor, blank line, original Markdown body, +then a blank line and `xxx`. Bubble adds the footer during copying. The protocol +body itself does not contain it. No private protocol text is included here. + +The previous implementation exported only rendered body content, omitting the +title/subtitle and losing Markdown heading/emphasis syntax. The corrected export +uses safely JSON-encoded canonical Markdown text for rich/plain/manual fallback +paths. Rich HTML includes escaped title/subtitle, sanitized body and the footer. +The page also displays its title and subtitle. Only the storage terminal LF is +removed before appending the legacy footer; internal Markdown is retained. + +Source d521ddc, immutable image digest +`sha256:9e7d1c2cc5248a3fd92ab48b4c4edf077c3ee7fb9149e7adb78c29101c60b745`. +Owning chart pin committed/synced in railiance-apps at9499c39. + +## Validation and deployment + +- `make check`:97passed, including mandatory real-browser workflow. +- Synthetic Chromium checks: exact rich/plain/manual payload, denied fallback + selection, nested bullets, Markdown emphasis and title/subtitle/footer. +- Metadata escaping test: raw title/subtitle HTML cannot execute in rich export. +- Original nominated protocol's observed clipboard matches rebuilt text exactly. +- Fresh paired PostgreSQL/content snapshot captured with writers quiesced; + operation58.38seconds and app resumed. Secret-free digest receipt below. +- Node-side Helm atomic/wait revision12 deployed; server dry-run and parsed + manifests prove only the app image changes. PVC/environment/Secret references + and explicit owner access remain unchanged. +- Live content loader and template JSON payload match the original clipboard; + all74stored file hashes match the recovery snapshot. +- Public health and clipboard asset200; served JavaScript equals tested source. + +Pre-upgrade database SHA256: +`af3acf82ca9421624d99fa8ec7d81e71f228b45d560035f2396c91e566ba6673`. +Pre-upgrade content SHA256: +`95a323559819151e1badf52eb0702478eae9616b221ffdf20f526cad18a16c26`. +Private pair remains under node-local temporary custody; this does not close +durable backup retention/operating acceptance (CSOC-WP-0008-T02). + +CSOC-WP-0008-T10 correction is implemented. T09 remains the founder's actual +clipboard/email-client acceptance gate. Reload the protocol page, copy, and +check the complete pasted protocol in the email draft. No email is sent by the +app, and no source protocol is changed by this release. diff --git a/scripts/snapshot-content-and-db.py b/scripts/snapshot-content-and-db.py index 4a9f35f..a0e8a50 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:' - 'bf975939e22b9b0a5d9ac05584ae6265ba201169df6dc48e506ec684b30a9c58') + '9e7d1c2cc5248a3fd92ab48b4c4edf077c3ee7fb9149e7adb78c29101c60b745') 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 c36542d..8d22026 100644 --- a/workplans/CSOC-WP-0008-production-transfer-acceptance.md +++ b/workplans/CSOC-WP-0008-production-transfer-acceptance.md @@ -8,7 +8,7 @@ status: active owner: codex topic_slug: coulomb-social created: "2026-10-06" -updated: "2026-10-06" +updated: "2026-10-07" origin: residual origin_ref: CSOC-WP-0007 depends_on: @@ -246,7 +246,7 @@ Validation: **86 tests passed**; Ruff passes changed service/view/test files; ```task id: CSOC-WP-0008-T10 -status: progress +status: done priority: high state_hub_task_id: "41334b54-0c99-5c61-9cdf-16231516882b" ``` @@ -478,3 +478,13 @@ newlines + unchanged Markdown body + `\n\nxxx` legacy footer. T10 reopened to preserve that exact plain payload, including fallback, while retaining sanitized rich HTML for email. Private notes are not regression fixtures. T09 remains pending the user's clipboard/mail-client review. + +Correction deployed as Helm revision12, immutable source d521ddc / digest +sha256:9e7d1c2cc5248a3fd92ab48b4c4edf077c3ee7fb9149e7adb78c29101c60b745. +Server dry-run and parsed manifest comparison prove only the app image changed. +Live export and template JSON payload match the observed original exactly. +All74content-file hashes match the fresh paired pre-upgrade snapshot; existing +owner access remains valid. Public health/static delivery200, actual deployed +JavaScript equals tested source. make check97passed; rich/plain/denied fallback +checks pass. T10 implementation done; T09 remains pending user email-client +review. The snapshot helper's expected image pin follows this release.