Assistant: codex Assistant-Model: gpt-6.1-sol Assistant-Session: 01a18e2d-f513-7742-b8e7-12af0b744ff3
11 KiB
| id | type | title | domain | repo | status | owner | topic_slug | created | updated | origin | origin_ref | state_hub_workstream_id |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CSOC-WP-0014 | workplan | Further cohort reconciliation and Bubble off-ramp | communication | coulomb-social | active | codex | coulomb-social | 2026-10-08 | 2026-10-30 | residual | CSOC-WP-0008 | db6b85dc-f2f0-5283-ac52-3a6af28eb5b5 |
Residual acceptance from CSOC-WP-0008, split at the user's request. Existing implementation/release/acceptance evidence remains in the originating workplan; these tasks own the remaining concrete outputs. Source checks never grant runtime or productive acceptance.
T01 — Reconcile retained inventory and nominate the next cohort
id: CSOC-WP-0014-T01
status: progress
priority: high
state_hub_task_id: "0002882d-f156-5a5d-b524-d04793f4684d"
Treat 71-space/109-article capture as inventory, not bulk-import authorization. Reconcile fresh/private source, identity and explicit grants, retained/discontinued workflows and assets/links. ReichelAg weekly-call cohort is already live and accepted. Record exact next nominated cohort and non-secret lossiness evidence.
2026-10-27: User specifies all coulomb.social spaces as the eventual migration scope, using deterministic tooling to minimize token cost and LIFO guidance (newest space creation first). Preserve original creation dates of spaces, pages and every chunk. Decision: 4aab0481-8597-5e47-bc8c-46e8d3b524ed. This supersedes the need to nominate just one next space; productive workflow/cohort review and host cutover remain separate gates.
Implemented offline source-hash-bound planner for every captured space, deterministic creation-date ordering/ties and recursive chunk closure with missing-date/body/ reference gaps. Retained capture: 71 spaces, 109 articles; 60 captured graphs complete, 11 with gaps, no unassigned captured articles. This old capture does not prove current source completeness. Import restores source space creation date in SQL and retains page/chunk source date metadata through edit/reimport. Missing or invalid dates refuse before writes. User renewed the Bubble session. Fresh capture exposed numeric-prefixed LOOKUP references; both normalizers now handle them. All-visible-space discovery now uses exact-root cards and visible titles, fresh-source checkpoints and step diagnostics; the live pass is progressing without navigation failures. Prior metadata is used only to guide LIFO ordering, never to seed older article bodies. Next: complete fresh capture/reconciliation, deterministic all-tree conversion, asset/link reconciliation and restartable per-space receipts before productive import. No bulk import performed.
2026-10-27 follow-through: the all-visible pass checkpointed 70 visits but timed out before its final index; records were preserved as partial. Bounded targeted reference continuation completed 34 visits, yielding 70 fresh spaces/162 articles. All 71 known spaces remain queued (67 captured graphs pass), with one stale space, body/date gaps, cross-space chunk relation and one unassigned article explicitly unresolved. No old body seeding, date fabrication or productive import. Native response read bounds/checkpoints now prevent the observed drain stall. Evidence: docs/release/bubble-capture-reconciliation-2026-10-27.json. Next: deterministic all-tree preparation, asset/link reconciliation, source exceptions and explicit tenant/identity/grant mapping before stepwise LIFO cohort transfer.
2026-10-28: Offline all-tree compiler now retains all 71 known spaces in LIFO order, emits 67 draft review trees and preserves every captured text body exactly in private sidecars, including blocked/unassigned records. Proposed slugs derive from source IDs and remain stable across renamed labels/new records. Exact input snapshots, file/body hashes and raw/UTC date manifests bind preparation to source. No import manifest, grants, body rewriting, asset fetching or productive import. Markdown/reference/HTML/Visual link inventory, ambiguous target candidates, unsupported constructs, attachments and contents relations remain explicit review gates, with no exhaustive-parser claim. Contents relations revealed 33 previously uncaptured article references. Targeted continuation completed 57 visits, capturing 244 articles/241 bodies; five references and one response timeout remain recorded. All four prior per-space graph exceptions persist. Non-secret counts/hashes: docs/release/bubble-offline-preparation-2026-10-28.json.
T02 — Review remaining journeys and record transfer decisions
id: CSOC-WP-0014-T02
status: todo
priority: high
state_hub_task_id: "9257e4df-4b34-5127-9485-0118b9c203b8"
Maintain docs/usecases/catalog.md confidence and stable UC IDs. Privately compare original/rebuild actor steps for UC-001–007 and user-prioritized hierarchy/discovery/social/marketplace candidates; register synthetic regression contracts when established. Each productive transfer needs a user verdict; reject/gap/defer becomes live work.
T03 — Decide service and host cutover for accepted cohorts
id: CSOC-WP-0014-T03
status: wait
priority: high
needs_human: true
decision_id: "186be722-e2c7-4109-a1e6-d120fe8fca5b"
intervention_note: "Existing cutover decision 186be722-e2c7-4109-a1e6-d120fe8fca5b remains open, after WP-0012 recovery/service and WP-0013 privacy/content returns."
state_hub_task_id: "599b4b6a-829d-5fe5-b52d-ff419e548fa8"
Depends on WP-0012 service/recovery and WP-0013 privacy/content returns. Link service contract §§1–6, current registration Case B, cost/SLO/provenance and accepted differences. Existing open decision186be722-e2c7-4109-a1e6-d120fe8fca5b is retained here for the cutover return, not resolved by closing WP-0008. Retain parallel hosts until an explicit cohort/apex decision; Bubble retirement requires all retained use cases transferred or explicitly discontinued.
T04 — Preserve original creation dates and reconcile the accepted cohort
id: CSOC-WP-0014-T04
status: progress
priority: high
state_hub_task_id: "3018caa3-0f7b-5cc4-85e9-4dc4f41be9f7"
User requirement from 2026-10-27 (decision 4aab0481-8597-5e47-bc8c-46e8d3b524ed): preserve creation dates of spaces, pages and every chunk. Import now restores SQL Space.created_at and preserves page/chunk source timestamps, requiring them throughout Bubble trees before writes. Tests include missing index/date refusal, timezone-aware/epoch dates, edit/reimport preservation and rollback. Do not invent dates from IDs or mtime.
Still required: resolve remaining tree/source-date exceptions and verify the
per-source-ID date manifest on the productive target. Backfill the
accepted cohort's missing original space date without replacing its content or
losing post-transfer edits, copies or aliases. Source provenance on copied local
pages is not authority to overwrite those copies during a bulk reimport. Current
candidate 17d0eb6 includes the stricter date guard (WP-0013 proof); guarded rollout
still requires paired rollback/recovery evidence.
Do not close on source-level tests alone.
2026-10-28: Draft indexes keep space creation dates separate from their source root article; every article/chunk retains its own dates and ordered relations. Actual private-capture rehearsal imported all 67 draft trees into isolated SQLite with a synthetic owner, outgoing network disabled and no productive identities or grants. All 235 included pages/chunks retained exact file/body hashes and original creation dates; all 67 SQL space dates matched. Six captured text bodies outside those trees remain in the private source sidecars. Evidence is the hash-bound rehearsal embedded in bubble-offline-preparation-2026-10-28.json. This proves draft conversion/import date preservation, not rendering, source completeness, live acceptance or accepted-cohort backfill. Existing live content is untouched.
2026-10-28 accepted-cohort reconciliation: authorized read-only application metadata observation found 39 pages in the accepted space: 36 imported articles, its index and two local pages. All 36 article creation dates match fresh source; no article dates need correction. The old index uses a prefixed LOOKUP source ID, now correctly normalized to its fresh source space. Its missing source creation field and SQL insertion-time creation date need two targeted corrections. Implemented an offline, hash-bound planner requiring explicit SQL/tenant/slug/ source selection. It proposes only SQL created_at and index-field insertion; local edits/copies, every body/asset/alias and grants remain untouched. Duplicate article provenance is audited, never used as overwrite authority. Existing date conflicts/missing source are review blockers. Actual plan has zero date blockers, 36 matching article dates and two excluded local pages, ready_to_apply false. Evidence: docs/release/accepted-source-date-reconciliation-2026-10-28.json. No productive backfill performed; fresh paired rollback/recovery point, quiescence, live hash/SQL preconditions and postflight remain required.
2026-10-29: Added a deterministic byte-preserving index-date patch compiler and rehearsed the exact private accepted-cohort plan against the independently recovered real pair. Only the selected SQL creation date and a disposable index copy changed. Full table comparison and all 82 file hashes prove unrelated rows, grants, 38 other pages and local edits unchanged. Reverse and transaction rollback restore the baseline; stale SQL preconditions refuse replay. The patch module was explicitly overlaid on the packaged image; it is not yet deployed. Evidence: docs/release/source-date-backfill-rehearsal-2026-10-29.json and its companion review note. Production is untouched. A supervised quiesced executor with a durable cross-store recovery journal and fresh backup binding remains required.
2026-10-30: Added a durable cross-store date journal primitive. Intent is fsynced before SQL/file mutation; pending recovery uses committed SQL to restore or finish the byte-preserving index patch and refuses later edits. Private journal storage, complete selected-page hashes, SQL row locking, replay refusal and file ownership/ mode preservation are enforced. Actual child-process exits at intent/SQL/file/ commit boundaries recover correctly on both SQLite and disposable PostgreSQL; 30 focused planner/journal cases pass. No productive/recovered dataset was changed. Review/evidence: docs/release/source-date-journal-review-2026-10-30.md and source-date-journal-rehearsal-2026-10-30.json. The supervised wrapper, verified writer fence, fresh backup binding, recovered-real-pair rehearsal and productive postflight remain required; this primitive does not establish those prerequisites.
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.