An acceptance fixture for Ato's Dynamic Compute Process lane.
A small expense API: FastAPI, uvicorn, and the standard library's sqlite3.
GET /health → 200, and touches the database
GET /expenses → the list
POST /expenses → {"label": "Coffee", "amount": 1280}
It exists to demonstrate that an ordinary GitHub Python project can be
formed into a Compute and run — not that a repository prepared for Ato can.
So it deliberately contains no capsule.toml, no Dockerfile, and no
Ato-specific setup script. If it needed any of those, the thing being tested
would not have been demonstrated.
A Docker variant for the OCI lane belongs in a separate repository: adding
a Dockerfile here would let a detector route this fixture down the OCI lane
instead of the Process lane, and the same acceptance would quietly stop
testing what it was written for.
pip install -r requirements.txt
APP_DB_PATH=/data/app.sqlite uvicorn main:app --host 0.0.0.0 --port 8000APP_DB_PATH is read at import time and its parent directory is created if
missing, so the database can live on an attached volume that starts empty.
That separation is the point: the workspace is rebuilt from the schema on
every run and would take the data with it, while the state volume is what
survives sleep and wake.