- Added 15 recent fixes to the Bugs Already Fixed table
- Fixed line count (~940 → ~990)
- Fixed stale lysnrai-web → lysnrai-dashboard in architecture diagram
- Fixed test plan service count (27+ → 30+)
- Updated constraint: compose/Dockerfile changes allowed with verification
Each product web app reads different env var names in product-config.ts.
The compose file was using generic NEXT_PUBLIC_BACKEND_URL and
NEXT_PUBLIC_PLATFORM_URL for all 9 web services, but most products
use different names. This caused SSR (server-side rendering) to miss
the correct backend/platform URLs.
Corrected per product:
- lysnrai-dashboard: PLATFORM_SERVICE_URL (server-side, not NEXT_PUBLIC)
- chronomind-web: NEXT_PUBLIC_BACKEND_URL + NEXT_PUBLIC_PLATFORM_SERVICE_URL
- jarvisjr-web: NEXT_PUBLIC_PLATFORM_SERVICE_URL (no backend client)
- flowmonk-web: NEXT_PUBLIC_PLATFORM_URL (backend is hardcoded)
- notelett-web: NEXT_PUBLIC_NOTES_API_URL + NEXT_PUBLIC_PLATFORM_SERVICE_URL
- mindlyst-web: NEXT_PUBLIC_PLATFORM_SERVICE_URL
- nomgap-web: NEXT_PUBLIC_NOMGAP_API_URL + NEXT_PUBLIC_PLATFORM_SERVICE_URL
- actiontrail-web: NEXT_PUBLIC_API_URL + NEXT_PUBLIC_PLATFORM_URL
- localmemgpt-web: already correct (unchanged)
ollama pull piped through tail with set -euo pipefail would abort the
entire 8-phase setup on a slow network or wrong model name. Only
LocalMemGPT needs the model — the other 9 products are unaffected.
1. last_completed_phase now stops at first gap — prevents --resume from
skipping phases when --phase=N created non-sequential markers
2. Phase 7 fails early if .env.ecosystem is missing (points to --phase=6)
3. Warns if compose config JSON cache fails — graceful degradation
1. set -e + pipefail: docker compose up piped through tail would abort
script on partial startup failure before printing summary — add || true
2. Phase 7 marked done even with build failures, so --resume would skip
it — now only marks done when all builds succeed
3. --phase=7 printed 'Phase 7 complete' even with failures — now exits
with code 1 and points to build logs
4. docker compose config --format json called 30 times in build loop —
now cached once (saves ~3s)
5. Build logs now saved per-service to STATE_DIR/builds/<svc>.log for
post-failure debugging
- --resume: auto-detect last completed phase and continue from there
- --resume-from=N: resume from a specific phase
- --phase=N: run only one phase (e.g. --phase=7 to retry deploy)
- --reset: clear phase markers and start fresh
- --status: show completed phases
- Phase 7 now builds each of 27 services individually with progress
- Failed builds are skipped; remaining services still start
- Phase completion markers stored in /opt/bytelyst/.setup-state/
- GITEA_NPM_TOKEN auto-restored from saved state on resume
platform-service had 16/60, extraction-service had 14/60, mcp-server had 34/60.
All three now list all 57 packages + 4 services + 2 dashboards + scripts.
Required for pnpm install --frozen-lockfile to resolve the full workspace.
- Add learning_multimodal_memory_agents to Wave 3 (commit e0461c7)
- Replace stale Follow-up Validation section with completed Gitea registry status
- Update Summary: all 10 product repos + common-plat on pnpm with Gitea registry
New SINGLE_VM_ENHANCED_PLAN.md covers:
- Coolify as self-hosted PaaS (15-min setup vs 6-7hr manual)
- Valkey (Redis fork) for sessions, cache, pub/sub, rate limits
- Uptime Kuma for status page + alerting
- Dozzle for live container logs
- SOPS + age for git-safe encrypted secrets
- Restic for volume backups
- BuildKit cache mounts for faster Docker builds
- Docker Compose profiles for selective startup
- Revised 4.5-hour implementation timeline
Also updates SINGLE_VM_DEPLOYMENT.md §3 prerequisite to reference
resolved Gitea registry migration and new enhanced plan.
- Update validation results: 8 repos migrated, all Docker builds verified
- Update rollout order with completion status
- Update definition of done: 7/10 items checked
- Update next actions: remaining 2 non-standard repos (MindLyst, LysnrAI)
- Mark gaps section: mobile stays on file: refs, CI queue sequential