Prepare verified editor attachment correction for attended release
Some checks failed
Use-case regression gate / usecase-regressions (push) Failing after 6m17s
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:
parent
8b38afddf3
commit
bcc2944cb7
11 changed files with 318 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
6
docs/release/editor-attachments-2026-10-31.sources.txt
Normal file
6
docs/release/editor-attachments-2026-10-31.sources.txt
Normal 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
|
||||
|
|
@ -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."
|
||||
}
|
||||
45
docs/release/editor-attachments-build-2026-10-31.json
Normal file
45
docs/release/editor-attachments-build-2026-10-31.json
Normal 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
|
||||
}
|
||||
25
docs/release/editor-attachments-preflight-2026-10-31.json
Normal file
25
docs/release/editor-attachments-preflight-2026-10-31.json
Normal 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
|
||||
}
|
||||
11
docs/release/editor-attachments-provenance-2026-10-31.json
Normal file
11
docs/release/editor-attachments-provenance-2026-10-31.json
Normal 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"
|
||||
}
|
||||
67
docs/release/editor-attachments-recovery-2026-10-31.json
Normal file
67
docs/release/editor-attachments-recovery-2026-10-31.json
Normal 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"
|
||||
}
|
||||
21
docs/release/editor-attachments-target-2026-10-31.json
Normal file
21
docs/release/editor-attachments-target-2026-10-31.json
Normal 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
|
||||
}
|
||||
13
docs/release/editor-attachments-tests-2026-10-31.json
Normal file
13
docs/release/editor-attachments-tests-2026-10-31.json
Normal 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
|
||||
}
|
||||
34
docs/release/editor-attachments-validation-2026-10-31.json
Normal file
34
docs/release/editor-attachments-validation-2026-10-31.json
Normal 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."
|
||||
}
|
||||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue