Prepare verified editor attachment correction for attended release
Some checks failed
Use-case regression gate / usecase-regressions (push) Failing after 6m17s

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a192e9-c28b-7533-bf25-e2341364c22a
This commit is contained in:
tegwick 2026-10-31 22:16:35 +01:00
parent 8b38afddf3
commit bcc2944cb7
11 changed files with 318 additions and 0 deletions

View file

@ -1,3 +1,43 @@
# Editor attachment follow-up — prepared, not deployed
Productive review found that revision20 preserves attachments but does not show
them in edit tabs. Source `31eaa581a65e454b6ef9979326c5bdfe10e13806` adds the
saved-file list/downloads to the editor, retains it after stale-edit refusal,
and opens management separately so unsaved text remains in its tab.
Main670, isolated568 and packaged110 checks pass, including the two-editor browser
journey. Candidate/previous images pass recovered views/export without changing
source data. Full native preflight passes against revision20/97rows/98files.
All prior93rows/86files are unchanged; review added2spaces/2memberships/12files.
Image: `sha256:b58d858abd5b4acbd6b893c3f622f7a9fdb5e606164ab9866eb3cfaa04df1a0e`.
Proposal: `sha256:2cddcf38b7052287c10dce467a200a74cfa9699c666ae9ac538fc82917129e7a`.
This captures a fresh paired backup, performs the atomic image-only upgrade,
checks unchanged data and refreshes the backup image pin. Rollback preserves
writes and restores revision20's image/pin. No schema, timer, purge or mail change.
Save work in open editor tabs before running; reopen the editor after verified
success. The current source-bound launcher explicitly requires founder-terminal
execution (tools/coulomb-image-release.py:1–5 in railiance-apps).
```bash
python3 /home/worsch/railiance-apps/tools/coulomb-image-release.py \
--plan /home/worsch/railiance-apps/release/coulomb-editor-attachments-31eaa58.json \
--execute \
--expect-digest sha256:2cddcf38b7052287c10dce467a200a74cfa9699c666ae9ac538fc82917129e7a
```
At the prompt:
```text
DEPLOY sha256:2cddcf38b7052287c10dce467a200a74cfa9699c666ae9ac538fc82917129e7a
```
Return the JSON result for independent verification. The next productive review
must check both edit tabs, downloads and stale-edit text/attachment preservation.
Evidence: editor-attachments-{validation,provenance,tests,recovery,target,baseline-change,preflight}-2026-10-31.json.
---
# Combined content release for WP-0013
Deployed and independently verified at Helm revision20, completed

View file

@ -0,0 +1,6 @@
/home/worsch/.config/railiance-platform/coulomb-social-recovery/content-point-recovery-20261031/csoc-verify-deployed-editor.py: f5ecee55accd7653be1cdf7402dd85185d6fd6305bf676f7ce00c63ec6259bd8
/home/worsch/.config/railiance-platform/coulomb-social-recovery/content-point-recovery-20261031/csoc-editor-target.py: 945ae15fbc328e537ff41b778b92bfcee73754983546149cbbbd2b1503dfc6d6
/home/worsch/.config/railiance-platform/coulomb-social-recovery/content-point-recovery-20261031/csoc-verify-editor-package.py: 2c877018ffd329ec3f3c9a345aba4ee04608d6f21ba5eb372bebad53352bd58e
/home/worsch/.config/railiance-platform/coulomb-social-recovery/content-point-recovery-20261031/csoc-verify-editor-recovery.py: 29c53d551eec2b4f4d60b047f123c727eef76ee7677c054bbfb0ab008355cff9
/home/worsch/.config/railiance-platform/coulomb-social-recovery/content-point-recovery-20261031/csoc-editor-baseline-diff.py: 1680f58e00e78dbd50b2a45e2a0d006acc94c073fe7cfac27436647a902d34bd
/home/worsch/.config/railiance-platform/coulomb-social-recovery/content-point-recovery-20261031/csoc-build-editor.py: 27a07652118d5d42cc99f258f6dc2580eb84cbf8b7591b88c08f92a3c3c1dfcf

View file

@ -0,0 +1,39 @@
{
"schema": "coulomb.acceptance-baseline-change.v1",
"retained_point": "2026-10-31T20:21:01Z",
"old_business_rows": 93,
"new_business_rows": 97,
"table_changes": {
"spaces_space": {
"old": 2,
"new": 4,
"removed": 0,
"added": 2
},
"spaces_spacemembership": {
"old": 1,
"new": 3,
"removed": 0,
"added": 2
}
},
"old_content_files": 86,
"new_content_files": 98,
"old_files_missing": 0,
"old_files_changed": 0,
"new_files_added": 12,
"old_rows_preserved": true,
"current_baseline": {
"business_tables": 12,
"migration_rows_sha256": "43471516387c0e2a3d35971033ed6af330e2963efe4da93293d97633825d04af",
"business_rows": 97,
"business_rows_sha256": "35b0ae7d9dd1ff21c2ceaa04649162545ec36a2c68629548238352d9cd0fb303",
"content_files": 98,
"content_files_sha256": "b657c0e470399b6c7500da500cbbec061bea12ab9633bd74e2f142d797b2d26a",
"global_slug_constraint": true,
"tenant_slug_constraint": true,
"migration_0003_applied": true,
"duplicate_slug_groups": 0
},
"interpretation": "Changes observed during the user-requested productive acceptance session; no user verdict inferred."
}

View file

@ -0,0 +1,45 @@
{
"schema": "coulomb.content-acceptance-build.v1",
"completed_at": "2026-10-31T21:13:04.039838+00:00",
"source": "31eaa581a65e454b6ef9979326c5bdfe10e13806",
"image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:b58d858abd5b4acbd6b893c3f622f7a9fdb5e606164ab9866eb3cfaa04df1a0e",
"build_context": "clean restricted git archive",
"source_full_gate_tests": 568,
"runtime_packages_and_python_unchanged": true,
"runtime": {
"python": "3.12.16",
"distributions": {
"h11": "0.16.0",
"httpcore": "1.0.9",
"psycopg": "3.3.4",
"joserfc": "1.7.4",
"anyio": "4.14.2",
"cryptography": "50.0.0",
"idna": "3.18",
"certifi": "2026.7.22",
"packaging": "26.3",
"python-decouple": "3.8",
"psycopg-binary": "3.3.4",
"sqlparse": "0.5.5",
"whitenoise": "6.12.0",
"cffi": "2.1.1",
"markdown": "3.10.3",
"webencodings": "0.5.1",
"pycparser": "3.0",
"bleach": "6.4.0",
"authlib": "1.7.2",
"django": "6.1",
"typing_extensions": "4.16.0",
"gunicorn": "26.0.0",
"asgiref": "3.12.1",
"httpx": "0.28.1",
"dj-database-url": "3.1.2"
}
},
"django_checks": {
"check": "System check identified no issues (0 silenced).",
"makemigrations": "No changes detected"
},
"new_database_migrations": false,
"production_deployed": false
}

View file

@ -0,0 +1,25 @@
{
"schema": "coulomb.guarded-image-release.v1",
"proposal_digest": "sha256:2cddcf38b7052287c10dce467a200a74cfa9699c666ae9ac538fc82917129e7a",
"started_at": "2026-10-31T21:15:08.583669+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": 97,
"business_rows_sha256": "35b0ae7d9dd1ff21c2ceaa04649162545ec36a2c68629548238352d9cd0fb303",
"content_files": 98,
"content_files_sha256": "b657c0e470399b6c7500da500cbbec061bea12ab9633bd74e2f142d797b2d26a",
"global_slug_constraint": true,
"tenant_slug_constraint": true,
"migration_0003_applied": true,
"duplicate_slug_groups": 0
},
"live_changes": false
}

View file

@ -0,0 +1,11 @@
{
"schema": "coulomb.packaged-source-provenance.v1",
"image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:b58d858abd5b4acbd6b893c3f622f7a9fdb5e606164ab9866eb3cfaa04df1a0e",
"source": "31eaa581a65e454b6ef9979326c5bdfe10e13806",
"packaged_file_count": 79,
"all_packaged_source_bytes_match": true,
"source_revision_label_verified": true,
"registry_digest_resolves": true,
"application_source_overlay": false,
"manifest_sha256": "99401a60fdd9a95aff1168858e81fd7d8802cd7603f15c0ea35eb6917981f9fe"
}

View file

@ -0,0 +1,67 @@
{
"schema": "coulomb.packaged-content-acceptance-recovery.v1",
"status": "packaged_recovered_export_and_views_verified",
"source": "31eaa581a65e454b6ef9979326c5bdfe10e13806",
"image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:b58d858abd5b4acbd6b893c3f622f7a9fdb5e606164ab9866eb3cfaa04df1a0e",
"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": "ecf5dba7ce891475cd5df15eb30205606f805850af7339ecd46e1479b45d6c5f",
"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": "29c53d551eec2b4f4d60b047f123c727eef76ee7677c054bbfb0ab008355cff9"
}

View file

@ -0,0 +1,21 @@
{
"baseline_revision": 20,
"baseline_helm_manifest_sha256": "e388f62c97e97d54d87671825bd0b05c854a70b0cca8a00faee452ae7841799e",
"deployment_uid": "2dbe661a-d232-4477-bbd1-833813077fbe",
"baseline_spec_sha256": "8d79c64cff4bd2c62f03494e80847dc99b965ddabf35645da67e8d1020220798",
"candidate_spec_sha256": "4deab26fc15d63e09922259b3362cd4e5c6bfa10884de058f776c0de8b642b00",
"old_image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:7906f461bc8d2d5204fd4fde67a251850f725b914452a66172919d6853672ed5",
"expected_data": {
"business_tables": 12,
"migration_rows_sha256": "43471516387c0e2a3d35971033ed6af330e2963efe4da93293d97633825d04af",
"business_rows": 97,
"business_rows_sha256": "35b0ae7d9dd1ff21c2ceaa04649162545ec36a2c68629548238352d9cd0fb303",
"content_files": 98,
"content_files_sha256": "b657c0e470399b6c7500da500cbbec061bea12ab9633bd74e2f142d797b2d26a",
"global_slug_constraint": true,
"tenant_slug_constraint": true,
"migration_0003_applied": true,
"duplicate_slug_groups": 0
},
"image_only_server_preview": true
}

View file

@ -0,0 +1,13 @@
{
"schema": "coulomb.packaged-content-acceptance-tests.v1",
"image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:b58d858abd5b4acbd6b893c3f622f7a9fdb5e606164ab9866eb3cfaa04df1a0e",
"source": "31eaa581a65e454b6ef9979326c5bdfe10e13806",
"tests": 110,
"failures": 0,
"errors": 0,
"skipped": 0,
"network": "none",
"read_only_root": true,
"application_source_overlay": false,
"synthetic_fixtures_only": true
}

View file

@ -0,0 +1,34 @@
{
"schema": "coulomb.editor-attachments-validation.v1",
"reported_gap": "Attachments visible on the original page were absent from editor tabs.",
"main_source": "8b38afddf3f3648f209c60b1bafe3dd25501d857",
"release_source": "31eaa581a65e454b6ef9979326c5bdfe10e13806",
"image": "forgejo.coulomb.social/coulomb/coulomb-social@sha256:b58d858abd5b4acbd6b893c3f622f7a9fdb5e606164ab9866eb3cfaa04df1a0e",
"main_full_gate": {
"tests": 670,
"failures": 0,
"errors": 0,
"skipped": 0
},
"release_full_gate": {
"tests": 568,
"failures": 0,
"errors": 0,
"skipped": 0
},
"packaged_tests": 110,
"browser_verifies": [
"saved file list and exact download bytes in both editor tabs",
"management opens separately and keeps unsaved text",
"stale refusal keeps submitted text and attachments",
"save keeps attachments and rejects stale overwrite",
"existing copy/move/download/detach permissions journey"
],
"runtime_changes": [
"coulomb_social/apps/spaces/views.py",
"coulomb_social/templates/spaces/page_form.html"
],
"storage_schema_or_authority_changed": false,
"productive_acceptance_inferred": false,
"test_environment": "Main uses /var/tmp; isolated branch native observer requires /tmp. Final complete gates pass without deselection."
}

View file

@ -372,6 +372,9 @@ acceptance has occurred; T05 remains progress.
id: CSOC-WP-0013-T06
status: progress
priority: high
needs_human: true
decision_id: "0d538348-aadd-41a2-88f6-191defcf22b2"
intervention_note: "Editor visibility correction is tested and exact proposal2cddcf38 passes native preflight; founder-terminal execution and independent return remain required before productive recheck."
state_hub_task_id: "ff59b908-2d56-5fa5-b1b9-556aee1bae14"
```
@ -395,6 +398,20 @@ execution is requested under decisiond9b70cc5-e035-40ae-8d0d-020190581202. Atten
release/independent return and productive user verdict remain required. Existing unresolved Bubble resources
remain T02/WP-0014-T01; this UI does not establish their recovery or completeness.
2026-10-31 productive review feedback: Bernd reports that the workflow seems fine
mostly, but attachments visible on the original page are absent from the edit
tabs. This is a concrete T06 UI gap, not attachment loss or a completed verdict.
The editor currently lacks the attachment list; save/rename retain associations.
The correction displays saved attachments and downloads in the editor, opens
management in another tab, and retains the list plus submitted text after a
stale-edit refusal. The synthetic browser reproduces the two-editor scenario.
Main670, isolated568 and packaged110 gates pass. Candidate31eaa58/imageb58d858a
passes recovered-store views/export. Exact proposal2cddcf38 passes full native
preflight at revision20/97rows/98files; existing93rows/86files are unchanged.
Founder execution is requested under decision0d538348-aadd-41a2-88f6-191defcf22b2.
RAPPS-WP-0015-T08 tracks delivery. Revision20 remains live until verified return;
user acceptance remains open.
## Completion
Finish when every task above has its stated evidence and acceptance, or hand off any newly discovered residual to a live work record first. Cross-owner dependencies remain their existing canonical records.