Phase 0, task 0.9a — the first piece of the vertical slice.
0.9 is not one PR. The exit criteria need FastAPI + SQLAlchemy/Alembic on SQLite, a CLI, React/Vite with SSE, and one figure from RunSummary. Split:
- 0.9a — provenance records (this issue). Nothing currently implements ADR-006, and the exit criteria say "produces a stored result with full provenance".
- 0.9b — persistence (SQLAlchemy models + the first Alembic migration on SQLite).
- 0.9c — the CLI (
plume-studio run / sweep --plan).
- 0.9d — the API (FastAPI, the Phase-0 endpoint subset, SSE progress).
- 0.9e — the minimal web UI (React + Vite) and one deterministic figure from
RunSummary.
Scope of 0.9a
Per ADR-006, every run records at submit time, immutably:
config_hash — already exists (schema 0.2.0).
- App version —
studio.__version__ plus the SANDBOX commit SHA.
- Model version — the SANDBOX SHA plus the three submodule SHAs (
tuvx-jax, stratchem-jax, tomas-jax), which together pin the model exactly. Dirty working trees are recorded as such and flag the run.
- Dataset identifiers and checksums for every input dataset consulted (none in Phase 0 — the field exists and stays empty rather than being omitted).
- The resolved, post-derivation parameter set — what the model actually received, not the user's inputs.
Constraints
- This is the one place Studio shells out to git. "Not a git checkout" must raise, never record an empty SHA (ADR-005).
- Written before execution begins, so a run that dies still has its provenance.
- The record is never mutated.
- The archived 810-run ensemble has no provenance record and cannot be retrofitted one;
RunSummary already flags that with NO_PROVENANCE_RECORD.
Base branch: studio/dev.
Phase 0, task 0.9a — the first piece of the vertical slice.
0.9 is not one PR. The exit criteria need FastAPI + SQLAlchemy/Alembic on SQLite, a CLI, React/Vite with SSE, and one figure from
RunSummary. Split:plume-studio run/sweep --plan).RunSummary.Scope of 0.9a
Per ADR-006, every run records at submit time, immutably:
config_hash— already exists (schema 0.2.0).studio.__version__plus the SANDBOX commit SHA.tuvx-jax,stratchem-jax,tomas-jax), which together pin the model exactly. Dirty working trees are recorded as such and flag the run.Constraints
RunSummaryalready flags that withNO_PROVENANCE_RECORD.Base branch:
studio/dev.