MG-CONGRESS-01 Launch Plan (From v2 YAML to alpha.migentedance.com)
This is the concrete, end-to-end plan for turning reviewed MG-CONGRESS-01 mobilis-research-upload/v2 YAML into canonical Supabase rows and then publishing them on alpha.migentedance.com while migentedance.com remains protected WordPress production.
What “created” means (definition of done)
- v2 YAML runs exist for all shards with review outcomes captured (
pass/needs_review/backlog_only). - A combined worldwide v2 YAML package exists with preview and promotion-preview JSON.
- Supabase schema is deployed through the Mobilis Core v2 hosted compatibility floor.
- Worldwide package is imported (dry-run first, then guarded write).
- Public site reads directory + detail pages from the unified Supabase public projection views:
public.migente_public_routes_viewpublic.migente_public_listings_viewpublic.migente_public_listing_details_view
- Legacy congress-specific views remain service-role-only operational/reconciliation views and do not define the public-page contract.
- Legacy URLs are mapped through
duplicate_identity_hintsand redirects are planned to flat/{slug}pages.
Inputs and where they live
Per-shard v2 files:
tmp/migente-congress-runs/<shard>/<run-id>/mobilis-research-upload-v2.yamltmp/migente-congress-runs/<shard>/<run-id>/mobilis-research-upload-v2-preview.jsontmp/migente-congress-runs/<shard>/<run-id>/mobilis-research-upload-v2-promote-preview.jsontmp/migente-congress-runs/<shard>/<run-id>/exceptions_or_backlog.csv
Worldwide combined outputs:
tmp/migente-congress-runs/worldwide/<run-id>/mobilis-research-upload-v2.yamltmp/migente-congress-runs/worldwide/<run-id>/mobilis-research-upload-v2-preview.jsontmp/migente-congress-runs/worldwide/<run-id>/mobilis-research-upload-v2-promote-preview.json
Phase A: Review and combine (local, no writes)
- Validate each shard’s v2 YAML:
cd workers/playwright-source-scanner
npm run dev -- mobilis-research-upload-preview \
--file ../../tmp/migente-congress-runs/<shard>/<run-id>/mobilis-research-upload-v2.yaml \
--out-file ../../tmp/migente-congress-runs/<shard>/<run-id>/mobilis-research-upload-v2-preview.json
- Combine shards into one worldwide package:
# Merge the per-shard items into one mobilis-research-upload/v2 YAML document.
# Preserve each item's sources, field_evidence, rich facts, and duplicate_identity_hints.
- Dry-run worldwide promotion, including media discovery (safe; no DB writes):
cd workers/playwright-source-scanner
npm run dev -- mobilis-research-upload-promote \
--file ../../tmp/migente-congress-runs/worldwide/<run-id>/mobilis-research-upload-v2.yaml \
--out-file ../../tmp/migente-congress-runs/worldwide/<run-id>/mobilis-research-upload-v2-promote-preview.json
This dry-run prints listing, occurrence, media, duplicate-review, and full-description counts.
Phase B: Deploy Supabase schema (hosted)
Applies to the hosted Supabase project you plan to use as canonical.
Required migrations are the complete ordered contents of:
workers/playwright-source-scanner/supabase/migrations/
Commands (run from workers/playwright-source-scanner):
supabase link
supabase db push
cd ../..
node scripts/ops/check-mobilis-research-upload-v2-hosted-compatibility.mjs \
--workdir workers/playwright-source-scanner \
--linked
Notes:
- If you need seed data (optional):
supabase db seed(seesupabase/seed.sql). - Do not grant
anon/authenticatedaccess to the legacy congress-specific views. They are intended forservice_rolereads. - Only the unified approved public projection views may receive public read grants for public-page rendering.
Phase C: Import worldwide package into Supabase (guarded)
Environment required (hosted Supabase only):
SUPABASE_URL=https://<project-ref>.supabase.coSUPABASE_SERVICE_ROLE_KEY=...
Preview and promotion dry-run are safe and can be executed before writes; writes require env + confirmation.
Stage worldwide drafts:
cd workers/playwright-source-scanner
npm run dev -- mobilis-research-upload-write \
--file ../../tmp/migente-congress-runs/worldwide/<run-id>/mobilis-research-upload-v2.yaml \
--write-confirmation WRITE_MOBILIS_RESEARCH_UPLOAD_DRAFTS
Promote worldwide to public canonical rows:
npm run dev -- mobilis-research-upload-promote \
--file ../../tmp/migente-congress-runs/worldwide/<run-id>/mobilis-research-upload-v2.yaml \
--write \
--write-confirmation PROMOTE_MOBILIS_RESEARCH_UPLOAD_TO_PUBLIC
Phase D: Verify Supabase contains expected records
Run these in Supabase SQL editor (or via psql).
- Confirm unified public rows exist:
select count(*) as directory_rows
from public.migente_public_listings_view
where listing_subtype in ('congress', 'festival', 'marathon', 'dance-vacation');
- Spot-check one known slug/year:
select *
from public.migente_public_listing_details_view
where canonical_path = '/<listing-slug>/';
- Ensure no Bootcamps or single-day leaks into the public view:
select listing_subtype, count(*)
from public.migente_public_listings_view
where listing_type = 'event'
group by 1
order by 2 desc;
Phase E: Publish Integration (alpha.migentedance.com)
This repo contains the Mobilis alpha public-page artifact path for alpha.migentedance.com but not the protected WordPress migentedance.com production target, but the integration contract is stable:
- The website must either use the static export generated from approved projections or query Supabase with server-only credentials. Service-role credentials are never shipped to the browser.
- The website must render:
- directory page: list cards from
public.migente_public_listings_view - detail page: one row from
public.migente_public_listing_details_viewfiltered by canonical path/slug
- directory page: list cards from
- The website must not display:
needs_review,hidden,archived,draft(the views already exclude these)
- Caching: treat view reads as cacheable for minutes-hours; invalidate on publish operations.
Recommended minimal API calls:
- Directory:
select * from migente_public_listings_view where listing_subtype in ('congress','festival','marathon','dance-vacation') order by next_start_at - Detail:
select * from migente_public_listing_details_view where canonical_path = ?
Phase F: Legacy URLs and redirects
Use v2 duplicate_identity_hints and any legacy reconciliation CSVs to plan redirects:
- from: legacy WordPress event paths under the protected
migentedance.comapex - to:
/{slug}
Do not implement redirects until you confirm the destination detail pages resolve and the slugs/years are correct.