Where you are
Phase 1 of the SIB v1 migration is done and shipped to worktree-atomic-weaving-treehouse on origin. The plan, brainstorm, and ideation docs are all aligned with the post-doc-review architectural decisions.
| Unit |
Status |
Commit |
| U1: Pre-push git hooks (verify + Vitest + conditional Playwright) |
✅ Done |
6f4da5c |
| U2: Zod schemas at the data boundary |
✅ Done |
6c1cb2f |
| U3: DataSource interface + adapter wrap |
✅ Done |
71c7007 |
| U4–U10 |
🟡 Pending |
— |
Tests: 185 Vitest + 322 Playwright across 3 browser projects, all green. CSS / components / layouts: zero diff (R24 preservation honored).
Goals (from the plan)
- Editors can independently maintain the site — either editor adds a new Location, edits one, reverts a bad save via Directus revisions, end-to-end without engineer help in a single session.
- The site survives schema-shape errors AND empty-data accidents — Zod validates at build; the minimum-records gate (U6) prevents silent empty-build replacing the prior good deploy.
- The site survives vendor outages — Directus Cloud handles primary backups; the quarterly off-vendor
age-encrypted export to R2 is the cross-vendor disaster-recovery floor.
- The published site is unchanged in shape — same per-location URLs, same CSS, same map behaviors per
docs/expectations.md. No regressions in npm run verify.
- Total monthly cost stays under ~$40 — ~$30 Directus Cloud + R2 + existing MapTiler. Well within $100/mo budget.
Resume tomorrow with these steps
1. Get back to the work
The worktree at .claude/worktrees/atomic-weaving-treehouse can be safely deleted — everything is on origin. Resume from anywhere:
# In the main repo:
git fetch origin
git checkout worktree-atomic-weaving-treehouse
# Or: spin up a fresh worktree pointed at the same branch
git worktree add ../sib-v1 worktree-atomic-weaving-treehouse
cd ../sib-v1
npm install # wires up the pre-push hook via the prepare script
2. Do these external steps before invoking ce-work for U4
U4 is Directus Cloud provisioning. ce-work can't do this for you — it requires actions in browsers and cloud consoles.
3. Resume ce-work for U4
/ce-work docs/plans/2026-04-30-001-feat-sib-production-ready-v1-plan.md
ce-work will pick up where Phase 1 left off and begin U4 (Directus Cloud provisioning + schema + roles + MFA). Subsequent units in order: U5 (Cloudflare Workers logic tier), U6 (DirectusSource adapter + per-PR staging-build CI), U7 (build-status indicator + revisions + editor cookbook), U8 (pre-launch gates), U9 (cutover), U10 (Astro 5→6 upgrade post-cutover).
Documents (current source of truth)
Architectural reminders (so you don't have to re-read everything)
Decisions locked during ce-doc-review on the plan:
- Directus Cloud General tier, not self-hosted on Fly. Cloud handles uptime + primary backups + Postgres entirely.
- Cloudflare Workers logic tier: geocoding and deploy-hook debouncing live in TypeScript at
workers/*.ts in this repo, version-controlled and unit-tested. Avoids the Apps-Script-reborn anti-pattern of logic-buried-in-CMS-admin-UI.
- Pin-confirm via Directus's native Map field; geocoding uses MapTiler via the Worker.
- Astro 5.18 stays through cutover; Astro 5→6 upgrade is U10, the LAST unit. Production migrates against the version currently working.
- Manual entry of 3 real businesses at cutover (no migration script for 3 records). Sheet snapshot lands at
data/migration-source-YYYY-MM-DD.csv for permanent off-Sheet record.
- Per-PR CI build against a staging Directus Cloud project + minimum-records gate in DirectusSource — catches silent empty-build regressions.
- Branch protection unavailable on this private-repo Free tier (verified via API: 403 Upgrade required). Compensated by the U1 conditional pre-push hook running Playwright when UI paths are touched.
age for off-vendor backup encryption (replaced GPG); two named-by-role keyholders.
- Big-bang cutover with non-rollback acknowledged, mitigated by low-traffic window + 24h monitoring + forward-fix posture. Cutover ordering pinned: disable Apps Script triggers FIRST, then rename the deploy hook.
Related issues
Done definition for this issue
Close this issue when you've successfully invoked /ce-work and U4 is in progress. (Or close it earlier if priorities shift; the work itself is tracked in #7.)
🤖 Generated with Claude Code
Where you are
Phase 1 of the SIB v1 migration is done and shipped to
worktree-atomic-weaving-treehouseon origin. The plan, brainstorm, and ideation docs are all aligned with the post-doc-review architectural decisions.6f4da5c6c1cb2f71c7007Tests: 185 Vitest + 322 Playwright across 3 browser projects, all green. CSS / components / layouts: zero diff (R24 preservation honored).
Goals (from the plan)
age-encrypted export to R2 is the cross-vendor disaster-recovery floor.docs/expectations.md. No regressions innpm run verify.Resume tomorrow with these steps
1. Get back to the work
The worktree at
.claude/worktrees/atomic-weaving-treehousecan be safely deleted — everything is on origin. Resume from anywhere:2. Do these external steps before invoking ce-work for U4
U4 is Directus Cloud provisioning. ce-work can't do this for you — it requires actions in browsers and cloud consoles.
docs/operations/license-attestation.mdwhen you create it.admin.changeplease-6hw.pages.dev(CNAME to the Directus Cloud project) or a custom domain you own. The public site stays on its current URL; only the admin needs a separate host.3. Resume ce-work for U4
ce-work will pick up where Phase 1 left off and begin U4 (Directus Cloud provisioning + schema + roles + MFA). Subsequent units in order: U5 (Cloudflare Workers logic tier), U6 (DirectusSource adapter + per-PR staging-build CI), U7 (build-status indicator + revisions + editor cookbook), U8 (pre-launch gates), U9 (cutover), U10 (Astro 5→6 upgrade post-cutover).
Documents (current source of truth)
docs/plans/2026-04-30-001-feat-sib-production-ready-v1-plan.md— 10 implementation units across 6 phases. Authoritative for architectural decisions.docs/brainstorms/sib-production-ready-v1-requirements.md— 26 requirements (R1–R26). Aligned with the plan-time pivots; specific Fly references annotated as superseded.docs/ideation/2026-04-30-sib-stack-migration-ideation.md— 8 survivor patterns from the option exploration. Preserved as historical context.docs/MAINTENANCE.md§ 10 — describes the.githooks/pre-pushsetup (no husky dep; justgit config core.hooksPathvia thepreparescript).Architectural reminders (so you don't have to re-read everything)
Decisions locked during ce-doc-review on the plan:
workers/*.tsin this repo, version-controlled and unit-tested. Avoids the Apps-Script-reborn anti-pattern of logic-buried-in-CMS-admin-UI.data/migration-source-YYYY-MM-DD.csvfor permanent off-Sheet record.agefor off-vendor backup encryption (replaced GPG); two named-by-role keyholders.Related issues
Done definition for this issue
Close this issue when you've successfully invoked
/ce-workand U4 is in progress. (Or close it earlier if priorities shift; the work itself is tracked in #7.)🤖 Generated with Claude Code