EA Publishing Process
Step-by-step runbook from extracted CSVs to a live client portal. The process has a hard gate: CSVs must be validated before D1 seeding. D1 is never the editing surface.
What Are You Publishing?
Full EA Catalog → D1 + Pages
You have validated CSVs and want to publish/update the customer's live catalog site. Follow Steps 1–5 below.
HTML Deliverable → JCT Portal
You have a standalone HTML file (DAE deliverable page) and want to push it to the client's JCT Cloudflare Pages portal. Follow Steps 4b–5b below.
Steps 1–5: CSV → D1 → Pages
Run the validation skill on your objects + relations CSVs. Fix any issues before proceeding.
/api/orphans returns empty
and all required fields are populated.
The importer reads CSVs from the customer's OneDrive folder and generates a seed SQL file.
Source folder is configurable via DEMANDES_ROOT.
Source: %USERPROFILE%/OneDrive - STM/agent-ea/demandes-ae/
No Cloudflare account needed for local testing. Verify orphan check: visit
http://127.0.0.1:8789/api/orphans → should return [].
wrangler.toml — every wrangler call must pass an explicit --config wrangler.<customer>.toml.
One-time setup: Run this interactive browser OAuth with the ! prefix
in Claude Code session:
Then per customer:
The D1 DB IDs are already set in each wrangler.<customer>.toml.
Free tier: D1 5 GB / 5M reads per day; Pages unlimited static.
The delivery bundle is the contractual deliverable. It runs independently of the factory and of any specific LLM or tooling (foundry rule).
Hand the bundle to the client: they get the .sqlite +
CSVs. Same schema on both sides. They can query it with any SQLite tool.
Steps 4b–5b: HTML Deliverable → JCT Portal
For standalone HTML deliverable files (DAE pages, diagrams, analysis docs) that go to the client's JCT portal. No D1 involvement — direct git push to the portal repo.
Each client has a GitHub repo at bockbr/jct-portail-{client}
and a local clone at C:\tmp\jct-{client}.
The portal uses Cloudflare Pages — every push to main triggers a deploy.
Live at transgesco.jacksoncreektech.ca/[dest-path] within ~60 seconds.
Auth is Cloudflare Access (Zero Trust Free) — one-time PIN to client email.
Quick Reference
| Customer | Wrangler config | Local port | Portal URL | Git repo |
|---|---|---|---|---|
| Transgesco | wrangler.transgesco.toml | :8789 | transgesco.jacksoncreektech.ca | bockbr/jct-portail-transgesco |
| STM | wrangler.stm.toml | :8788 | stm.jacksoncreektech.ca | bockbr/jct-portail-stm |