Problem
finverify-terminal/backend/Dockerfile currently runs COPY app/ ./app/ as its only source copy step. Since the backend refactor, app/main.py and its dependencies import from core.engine, core.models, fcg.constraint_engine, fcg.normalizer, providers.registry, ingestion.sec_edgar, ingestion.transcripts, and rag.pipeline — none of which live under app/. The Dockerfile does not copy any of these directories, nor config/ or data/, into the image.
Why this matters
A container built from this Dockerfile will fail at import time (ModuleNotFoundError) the moment any request hits a route that touches the financial reasoning engine, FCG, RAG, or ingestion paths — which is most of the API surface. This is the single highest-risk gap in the deployment pipeline: it can pass a naive docker build (since Python won't complain until the modules are actually imported/executed) while being broken for real traffic. Anyone deploying from a fresh clone, or CI validating the image, needs this fixed before relying on the container for anything beyond /health.
Acceptance Criteria
Files likely to modify
finverify-terminal/backend/Dockerfile
finverify-terminal/backend/README_HF.md
Skills required
Docker, Python packaging, FastAPI
Estimated difficulty
3/5
Estimated effort
3–5 hours
Problem
finverify-terminal/backend/Dockerfile currently runs COPY app/ ./app/ as its only source copy step. Since the backend refactor, app/main.py and its dependencies import from core.engine, core.models, fcg.constraint_engine, fcg.normalizer, providers.registry, ingestion.sec_edgar, ingestion.transcripts, and rag.pipeline — none of which live under app/. The Dockerfile does not copy any of these directories, nor config/ or data/, into the image.
Why this matters
A container built from this Dockerfile will fail at import time (ModuleNotFoundError) the moment any request hits a route that touches the financial reasoning engine, FCG, RAG, or ingestion paths — which is most of the API surface. This is the single highest-risk gap in the deployment pipeline: it can pass a naive docker build (since Python won't complain until the modules are actually imported/executed) while being broken for real traffic. Anyone deploying from a fresh clone, or CI validating the image, needs this fixed before relying on the container for anything beyond /health.
Acceptance Criteria
The Dockerfile copies core/, providers/, ingestion/, rag/, fcg/, and config/ alongside app/
A local docker build followed by docker run and a request to /v1/fcg/verify or /v1/rag/query succeeds without import errors
The data/ directory is handled deliberately — either copied with a clear comment explaining why, or explicitly excluded with the app configured to create it at runtime
.dockerignore (once added, see related issue) and this COPY list are cross-checked against each other so nothing needed at runtime is excluded
Tests added where appropriate — a smoke-test script or CI step that builds the image and curls a non-trivial endpoint
Documentation updated if necessary — README_HF.md build/run instructions reflect the corrected copy step
Files likely to modify
finverify-terminal/backend/Dockerfile
finverify-terminal/backend/README_HF.md
Skills required
Docker, Python packaging, FastAPI
Estimated difficulty
3/5
Estimated effort
3–5 hours