A capstone that keeps forward deployed engagements honest. Each engagement record needs five fields: customer, pain, constraint, metric and refusal. If any of the last four is missing, POST /engagements keeps the status at draft and names the gap; a complete record becomes ready_for_readout. The live flag stays false, so the form can never mark a customer live. A /v1 ops API adds workspaces, tenant isolation, job approval and audit records.
- Built with: Python, pytest, Docker, Docker Compose, GitHub Actions
- Scope: Local capstone lab with tests; it tracks engagement readiness only and refuses production apply.
Project architecture · Interview questions and answers
Use the architecture document for the component diagram, implementation boundaries, and verification entry points. The interview guide includes source-backed answers and project walkthroughs.
| Component | Responsibility |
|---|---|
src/fdeplatform/main.py |
HTTP handlers: POST /engagements, GET /engagements |
src/fdeplatform/ops.py |
HTTP handlers: GET /readyz, POST /workspaces, GET /workspaces, POST /workspaces/{workspace_id}/jobs, GET /jobs/{job_id} |
requirements.txt |
Implementation or supporting configuration |
Dockerfile |
Container build/service configuration |
Makefile |
Implementation or supporting configuration |
docker-compose.yml |
Container build/service configuration |
tests/test_engagement.py |
Executable checks and regression examples |
tests/test_ops.py |
Executable checks and regression examples |
.github/workflows/ci.yml |
GitHub Actions job definitions |
README.md |
Project explanations or operating notes |
docs/ARCHITECTURE.md |
Project explanations or operating notes |
From the repository root (the commands follow the checked-in manifests):
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python -m pytest -qTo serve the FastAPI application locally, install the server separately if it is not already available:
python -m pip install uvicorn
PYTHONPATH=src python -m uvicorn fdeplatform.main:app --reloadLevel: Capstone
Skills: Customer engineering, a constraint, a metric, an API
An engagement needs five fields: customer, pain, constraint, metric, and refusal. Missing any of the last four keeps the status at draft and names the gap.
A complete record is ready_for_readout. live stays false. The platform does not mark a customer live from this form.
pip install -r requirements.txt
pytest -qWorkspaces, tenant isolation, job approval, and audit live under /v1. Production apply is refused. See docs/ARCHITECTURE.md.
Project architecture, interview guides, and local source links are checked automatically on pushes and pull requests. Run the same check locally:
python3 .github/scripts/validate_project_docs.py