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.