Local Dev Env β Resume Notes (2026-06-10)
Pick-up-where-we-left-off doc. Companion to the snapshot in
local-dev-status-2026-06-09.md and the
comprehensive reference in local-dev.md.
TL;DR
- Local stack works.
./scripts/setup-local.shboots cleanly; 22 services healthy; SQS round-trip verified. - PR #1019
on branch
fix/local-dev-env-bootstrapcarries the fixes + status doc. Awaiting review / merge. - AWS deploy workflow also tightened (collapsed jobs, BuildKit GHA cache, scoped path filter). Cache benefit kicks in on the second post-merge deploy.
Where to start when you come back
1. Resume the PR
- Open https://github.com/LarryAnglin/theaccessible-platform/pull/1019
- If itβs still open: review CI, merge.
- If merged: confirm next
Deploy AWSrun picks up the new workflow shape and the second run after that hits the BuildKit cache.
2. Verify the stack still boots
git checkout fix/local-dev-env-bootstrap # or main if PR mergeddocker compose --profile local up -d./scripts/local-healthcheck.sh # expect 17/2/0If anything breaks at this point, treat as a fresh debug session β image
tags drift fast (especially supabase/studio which republishes daily).
3. Tackle the highest-impact gap
Three known gaps, ranked by inner-loop payoff:
A. Round-trip a real PDF through the local API (highest payoff)
- Currently we only proved SQS + sidecar wiring. Havenβt yet POSTed a PDF and watched it become an accessible HTML/PDF download.
- Path: either (i) hit gotrue admin endpoint
(
/auth/v1/admin/userswith service-role JWT) to create a test user, get a JWT, POST the file, poll, download; or (ii) generate a service-role JWT signed with the localsuper-secret-jwt-token-with-at-least-32-characters-longand bypass user auth. - Bake it into
scripts/test-pipeline-local.shsonpm run test:localis one command. - The existing
scripts/test-convert.shis hardcoded toapi.test.lan/supabase.test.lan(the broken staging server) β use it as a starting point, parameterize the host.
B. Fix batch-worker app_logs writer
- Worker boot logs:
SupabaseLogger not initialized: SUPABASE_URL or SUPABASE_SERVICE_ROLE_KEY missing. - Compose DOES set both vars on the batch-worker service
(
docker-compose.ymlaround lines 543-544). The worker code is reading different env var names than what compose exports. - Grep
workers/batch/srcfor the SupabaseLogger init to find which names it expects, then either rename in compose or alias. - Once fixed, executor logs will reach the local
app_logstable β the admin log viewer becomes useful locally.
C. Trivial polish
markitdownhealth probe inlocal-healthcheck.shis wrong β container reports healthy but the scriptβs probe path returns 000. Find the right path and fix the script (or remove the check β markitdown is legacy).setup-local.shwait window for Supabase Auth is too short. It gives up before auth comes healthy, which leaveskongandstudioinCreatedstate until you re-rundocker compose up -d. Extend the wait or make the script auto-retry.- Cosmetic warns in healthcheck (Supabase API 401, Studio 307) β both mean βservice worksβ but the assertion in the script is wrong. Update the expected codes.
Environment quirk to investigate
git reflog shows the local shell is auto-running pull origin main and
bouncing HEAD back to main every few seconds. This caused me to
accidentally commit to main mid-session (commit 7aa2e3b5, reverted by
3cc483b5). Likely culprits:
- A shell hook in
.zshrc/.zprofile - An IDE auto-pull setting
- A wrapper script around
cd/git - A Claude Code hook in
~/.claude/settings.json
When you find it, either disable it on this repo or make it skip branches
that donβt match main. Until then, double-check git branch --show-current
before every commit in this repo.
Files changed in this session (all on PR #1019)
| File | Why |
|---|---|
docker-compose.yml | Image tag bumps (Studio, Inbucket); LocalStack pin to 3.8.1 (last free CE); course-map-api β opt-in profile; batch-worker SQS URL β localstack hostname |
infra/supabase/init-db.sh | Wait for supabase_auth_admin before ALTER USER; create schema before table; tolerate INSERT failures |
.github/workflows/deploy-aws.yml | Merged test+deploy jobs; Docker BuildKit GHA cache; tightened path filter to only Lambda-importing packages |
docs/admin/local-dev-status-2026-06-09.md | Status snapshot |
docs/admin/local-dev-resume-2026-06-10.md | This doc |
Files NOT touched in this session
Pre-existing worktree state, left alone:
apps/vpat/src/components/ScoreDashboard.tsx(modified before session)apps/course-map/CLAUDE.md(untracked)apps/course-map/UTA-BSEE-Interactive-Degree-Plan.pdf(untracked)apps/course-map/UTA-BSEE-Semester-Plan.pdf(untracked)apps/course-map/UTResourceList-accessible (2).pdf(untracked)
Decide separately whether any of these should be committed.
Key paths reference
.github/workflows/deploy-aws.yml # AWS deploy (now ~5min vs ~8min)docker-compose.yml # 25+ service stack definitioninfra/supabase/init-db.sh # migrate + role-password aligninfra/localstack/init-aws.sh # SQS/S3 bucket bootstrapscripts/setup-local.sh # one-shot bootstrapscripts/local-healthcheck.sh # 17-check verificationscripts/seed-local.sh # seed data (not yet used)scripts/test-convert.sh # e2e against staging (NEEDS LOCAL PORT)workers/batch/src/sqs-consumer.ts # message types + dispatchworkers/batch/src/log.ts # SupabaseLogger init (env mismatch).env.node-server # API + worker env (gitignored).env.local.example # template