Root cause: Worker used SQLITE_DATABASE_URL causing "no such table: incidents"
because each Pod had isolated SQLite file, not shared PostgreSQL.
Fixes:
- db/base.py: Use DATABASE_URL (PostgreSQL) instead of SQLITE_DATABASE_URL
- Added SQLite prohibition guard with logging
- Added pool_size and pool_pre_ping for production stability
New: packages/lewooogo-data PgMemoryProvider (Phase 6.4d)
- Episodic Memory implementation for PostgreSQL
- init_pg_engine() with auto table creation
- SQLite forbidden by Commander's decree
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New packages:
- packages/lewooogo-brain: AI reasoning & decision engine
- IProposalEngine interface (ABC)
- IIncidentProcessor interface (ABC)
- Pydantic models: Proposal, Guardrails, Incident, Signal
- packages/lewooogo-data: Memory provider abstraction
- IMemoryProvider interface (ABC)
- IDualMemoryProvider for Working + Episodic memory
- Generic type support for flexible data models
Documentation:
- ADR-008: Python modular packages architecture decision
- ARCHITECTURE_MEMORY.md: Module map index for AI developers
- LOGBOOK.md: Updated milestones and Phase 6.4 status
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>