Skip to main content

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)

  1. v2 YAML runs exist for all shards with review outcomes captured (pass / needs_review / backlog_only).
  2. A combined worldwide v2 YAML package exists with preview and promotion-preview JSON.
  3. Supabase schema is deployed through the Mobilis Core v2 hosted compatibility floor.
  4. Worldwide package is imported (dry-run first, then guarded write).
  5. Public site reads directory + detail pages from the unified Supabase public projection views:
    • public.migente_public_routes_view
    • public.migente_public_listings_view
    • public.migente_public_listing_details_view
  6. Legacy congress-specific views remain service-role-only operational/reconciliation views and do not define the public-page contract.
  7. Legacy URLs are mapped through duplicate_identity_hints and 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.yaml
  • tmp/migente-congress-runs/<shard>/<run-id>/mobilis-research-upload-v2-preview.json
  • tmp/migente-congress-runs/<shard>/<run-id>/mobilis-research-upload-v2-promote-preview.json
  • tmp/migente-congress-runs/<shard>/<run-id>/exceptions_or_backlog.csv

Worldwide combined outputs:

  • tmp/migente-congress-runs/worldwide/<run-id>/mobilis-research-upload-v2.yaml
  • tmp/migente-congress-runs/worldwide/<run-id>/mobilis-research-upload-v2-preview.json
  • tmp/migente-congress-runs/worldwide/<run-id>/mobilis-research-upload-v2-promote-preview.json

Phase A: Review and combine (local, no writes)

  1. 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
  1. 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.
  1. 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 (see supabase/seed.sql).
  • Do not grant anon/authenticated access to the legacy congress-specific views. They are intended for service_role reads.
  • 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.co
  • SUPABASE_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).

  1. 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');
  1. Spot-check one known slug/year:
select *
from public.migente_public_listing_details_view
where canonical_path = '/<listing-slug>/';
  1. 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:

  1. 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.
  2. The website must render:
    • directory page: list cards from public.migente_public_listings_view
    • detail page: one row from public.migente_public_listing_details_view filtered by canonical path/slug
  3. The website must not display:
    • needs_review, hidden, archived, draft (the views already exclude these)
  4. 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.com apex
  • to: /{slug}

Do not implement redirects until you confirm the destination detail pages resolve and the slugs/years are correct.