# Parallel Work Handoff Current status: Phase 1 is mostly complete. `app.py` is now a `create_app()` factory, `/api/v1` lives in `blueprints/api.py`, and legacy Jinja route groups are split under `routes/`. Runtime verification is still pending because the local environment does not have the full Flask/Postgres stack available. ## Good Parallel Workstreams ### Agent A: Phase 1 Verification + Cleanup - Owns: `app.py`, `run_app.py`, `start_server.py`, `Dockerfile`, README/DEPLOYMENT. - Verify `flask --app app:create_app routes` and startup in a deps-installed environment. - Check Auth0 registration under repeated `create_app()` calls. - Confirm `url_for(...)` endpoints still exist for templates. - Remove stale compatibility notes from `progress.md` once verified. - Avoid changing filter pipeline internals. ### Agent B: Phase 2 Filter Registry - Owns: `filter_pipeline/`, `filter_config.json`, `filtersets.json`. - Add stage/plugin registry and auto-discovery. - Replace hardcoded stage dicts in `filter_pipeline/engine.py`. - Bridge `BaseFilterPlugin` to live `FilterResult` handling. - Avoid editing route modules except for minimal API integration points. ### Agent C: Comment Filtering Consolidation - Owns: `comment_lib.py`, `filter_lib.py`, comment-related pipeline stages. - Port comment tree modes into `filter_pipeline/stages/comment_filter.py`. - Wire filtered comments into `/api/v1/posts/` and `/api/v1/comments/`. - Add small sample-data tests if a test harness is added. - Coordinate with Agent B on registry names and stage contracts. ### Agent D: Phase 3 Data Model Prep - Owns: `models.py`, new migration scripts, DB query services. - Design `Post` and `Comment` SQLAlchemy models matching current JSON schema. - Draft `migrate_content_to_db.py` backfill from `data/posts` and `data/comments`. - Do not switch live reads/writes until Phase 2 route/filter behavior is stable. ### Agent E: Test Harness - Owns: `tests/`, pytest config, lightweight fixtures. - Add app-factory tests that assert route registration and endpoint names. - Add `/api/v1` contract tests with monkeypatched `post_service` and `get_filter_engine`. - Keep tests independent of a live Postgres where possible. ## Serialization Points - Do Phase 1 runtime verification before deleting any more legacy UI behavior. - Phase 2 registry work and comment filtering can happen together, but merge the registry contract first. - Phase 3 database cutover should wait until `/api/v1/posts` and comment filtering behavior is stable. - Phase 4 SPA work can scaffold independently, but feature parity work depends on stable `/api/v1` contracts. ## Shared Cautions - Preserve endpoint names used by templates until the SPA replaces them. - Do not delete Jinja templates in this pass. - Do not remove JSON file reads until Postgres backfill and DB query paths are verified. - Run at least `python -m py_compile` on touched Python files. - Update `progress.md` after each substantial change.