Preserve captured Bubble Visuals in private review trees

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a18e2d-f513-7742-b8e7-12af0b744ff3
This commit is contained in:
tegwick 2026-10-31 14:54:06 +01:00
parent 000ca43f0c
commit 0c714d3c56
9 changed files with 777 additions and 1 deletions

View file

@ -142,3 +142,38 @@ Set COULOMB_SOCIAL_CORPUS_DIR to a private directory if needed. Do not put raw
exports in the checkout. Default target route is /vw_pages; override via
COULOMB_SOCIAL_CAPTURE_ROUTE only after confirming the actual authenticated
protocol surface. A successful public-route load is not authentication proof.
## Retained Visual capture and review bundle
The October31 all-space bundle now has a separate private Visual preparation at
`~/.config/coulomb-social/auth/exports/visual-bundle-20261031`. The original
`review-bundle-20261031` remains unchanged.242Visual references were captured from
108URLs on the one recorded Bubble CDN, producing90distinct images.236draft
article pages and67space indexes link local hashed assets. All90images decode in
an offline browser; this is not a source/product appearance verdict or an import.
The reusable collector is `scripts/capture-bubble-visuals.py ORIGINAL --output NEW`.
It requires a complete hash-bound original bundle, a new private directory outside
repositories, and the exact known CDN over HTTPS. It refuses redirects, alternate
origins, credentials in URLs, active/unknown image formats, source drift, oversized
responses and existing output. No stored browser credentials are read or sent.
A missing final reconciliation.json means partial output, which must be retained
for review rather than used as an import bundle. Original body/date bytes are not
rewritten; only the compiler's empty Visual metadata is replaced.
Verification for the completed bundle (read-only):
```bash
python3 scripts/verify-bubble-visual-preservation.py \
~/.config/coulomb-social/auth/exports/review-bundle-20261031 \
~/.config/coulomb-social/auth/exports/visual-bundle-20261031
node scripts/verify-bubble-visuals.mjs \
~/.config/coulomb-social/auth/exports/visual-bundle-20261031
```
Only aggregate results belong in Git/chat. Images, titles, source URLs and original
records remain private. The new bundle retains all71spaces and the existing
graph/grant/fidelity gates.18body links and one attachment flag are still
unreconciled. Captured Visual bytes do not authorize copying memberships or
productive import. Public proof: docs/release/bubble-visual-preparation-2026-10-31.json.

View file

@ -0,0 +1,83 @@
{
"schema": "coulomb.bubble-visual-preparation.v1",
"status": "captured_and_privately_prepared_not_imported",
"owner_task": "CSOC-WP-0014-T08",
"private_bundle": "~/.config/coulomb-social/auth/exports/visual-bundle-20261031",
"source_report_sha256": "75fcd87d17ea0c5042e903efd60e65839da7716e5399ff431a345486ddd10f01",
"capture": {
"references": 242,
"unique_urls": 108,
"downloaded_bytes": 168139156,
"materialized_pages": 236,
"body_rewriting_performed": false,
"grants_changed": false,
"browser_render_verified": false,
"production_imported": false
},
"browser": {
"schema": "coulomb.private-visual-decode.v1",
"status": "all_captured_visuals_decoded",
"decoded_images": 90,
"bundle_sha256": "a255df2237d95588b21a5db059487ca0178d1df28c810ebaaf744c5e6491267a",
"browser_network_disabled": true,
"productive_fidelity_accepted": false
},
"preservation": {
"schema": "coulomb.visual-preservation-proof.v1",
"verified_output_files": 738,
"verified_original_files": 545,
"frontmatter_only_changes": 303,
"all_source_bodies_and_dates_preserved": true,
"spaces_preserved": 71,
"original_blockers_preserved": true,
"unassigned_records_preserved": true,
"private_modes_verified": true,
"private_bundle_sha256": "a255df2237d95588b21a5db059487ca0178d1df28c810ebaaf744c5e6491267a",
"production_imported": false
},
"boundaries": {
"cdn_origins": 1,
"https_only": true,
"redirects_allowed": false,
"cookies_or_authorization_sent": false,
"live_application_or_grants_changed": false,
"source_completeness_or_fidelity_accepted": false,
"all_other_links_attachments_reconciled": false
},
"tests": {
"focused_passed": 24,
"full_gate_passed": 570,
"failures": 0,
"errors": 0,
"skipped": 0,
"warnings": 69,
"full_junit_sha256": "d11afa225571077d1d59c68711a5f0eb402de8ceff7f2f50c279fbba7f923349",
"final_verification_script": "native private bundle pass; final all-repo Ruff pass"
},
"remaining": {
"source_graph_exception_groups": 4,
"unassigned_article_records": 1,
"body_link_references": 18,
"attachment_review_flags": 1,
"identity_and_explicit_grants": "unresolved",
"productive_fidelity_verdict": "pending"
},
"sources": [
{
"path": "scripts/capture-bubble-visuals.py",
"sha256": "c16c8cf5013a6f02c9a9f79f444aea82ced7d8642b0fb2d2dc5315fabe92be7c"
},
{
"path": "scripts/verify-bubble-visuals.mjs",
"sha256": "2cb9625b0738028508957b8bc40a69b7ab2719046d20e0a69a0ac1a9394f56c5"
},
{
"path": "scripts/verify-bubble-visual-preservation.py",
"sha256": "9fbc212bd668126a0f6ce6a458b1ca3fba1e14d4b44438c0697f63dc34b5bc3d"
},
{
"path": "tests/test_bubble_visuals.py",
"sha256": "707fc9aa4ac0de5e40d33ee76571d74c141b361154a659f10c723a6597262006"
}
]
}

View file

@ -150,3 +150,14 @@ retains actual ops registration, client/app/instance finance attribution/report,
current SLO and stage-1 smoke. This makes the source checklist13of32done; it is an
additional independently verified requirement, not a new product scope or an
updated effort estimate. The rough remaining-work estimate is unchanged.
## Visual preservation checkpoint
WP-0014-T08 completes the previously missing private Visual capture and draft-tree
materialization:242references,108URLs,90distinct images,236article pages and67
space indexes. Offline decoding and independent body/date/source preservation
checks pass. This advances the source checklist to14of33done, not an effort
percentage. Source exceptions, identity/grant mapping, links/attachments and
productive transfer/verdicts remain open; the rough remaining-effort estimate
has not been recalculated from these counts.

View file

@ -136,3 +136,15 @@ bounds. Incremental provider cost is unpriced; no EUR autopilot budget is claime
Application writes pause during paired capture and the Recreate rollout. Evidence:
`../release/content-lifecycle-release-preparation-2026-10-31.json`, its proposal,
native target/preflight/row-drift receipts, and the candidate recovery receipt.
### October31 Visual preservation follow-through
A new private `~/.config/coulomb-social/auth/exports/visual-bundle-20261031` retains
242Visual references as90distinct local images and populates236draft article
Visuals plus67space indexes. The original rendering cards and source capture are
unchanged. Offline image decoding and exact body/date preservation pass; neither
proves appearance fidelity to Bubble. Use these retained local assets for the
source/product comparison after each mapping is ready. Graph exceptions, grants,
18body links and one attachment flag remain explicit. No productive import or
user verdict is inferred. Evidence: ../release/bubble-visual-preparation-2026-10-31.json.