feat(v2): add validated runtime and metadata store

This commit is contained in:
2026-07-27 19:24:49 +02:00
parent 8f784848d7
commit 8d1de81f2b
14 changed files with 1225 additions and 4 deletions
+43
View File
@@ -0,0 +1,43 @@
# M1 Runtime and Metadata Evidence
## RED
Commit: `8f78484 test(v2): define runtime and metadata contracts`
Command:
```bash
.venv/bin/python -m pytest tests/unit/test_config.py tests/integration/test_migrations.py -q
```
Observed result: exit 2 during collection because `backup_tool.clock` did not exist. This proves the test-only commit preceded runtime implementation.
## GREEN
Migration gate executed against a disposable absolute SQLite database:
```bash
cd backend
BACKUP_TOOL_DATABASE_URL=sqlite+aiosqlite:////absolute/path/.m1-gate.db ../.venv/bin/python -m alembic upgrade head
BACKUP_TOOL_DATABASE_URL=sqlite+aiosqlite:////absolute/path/.m1-gate.db ../.venv/bin/python -m alembic downgrade base
BACKUP_TOOL_DATABASE_URL=sqlite+aiosqlite:////absolute/path/.m1-gate.db ../.venv/bin/python -m alembic upgrade head
../.venv/bin/python -m pytest ../tests/unit/test_config.py ../tests/integration/test_migrations.py -q
cd ..
make check
```
Observed results:
- Alembic upgrade, downgrade, and second upgrade each exited 0.
- Focused M1 suite: `13 passed`.
- Fast unit/contract suite: `28 passed`.
- Ruff check/format and strict mypy: passed.
- Frontend typecheck/build: passed.
- Disposable database removed after verification.
## Hand Review
- Baseline revision contains explicit `op.create_table`, constraints, foreign keys, and indexes for all 14 v2 entities; it does not call `create_all`.
- SQLite connections enable foreign keys, WAL, and a bounded busy timeout.
- Startup compares the database Alembic revision with the current script head and rejects unmigrated databases.
- Runtime roles are explicit CLI subcommands; no role starts another role in M1.