generated from john/python-template
This commit is contained in:
@@ -50,7 +50,7 @@ wins if this file drifts from it.
|
||||
post-parse `model_dump()` and call the result transport evidence.
|
||||
- Reset per-call capture state at the start of every call. Without it, a connection failure can
|
||||
attach the *previous* call's response as evidence for this one. Guarded by
|
||||
`tests/test_v42_evidence.py::test_openrouter_does_not_reuse_prior_response_on_connection_failure`.
|
||||
`tests/test_evidence_provenance.py::test_openrouter_does_not_reuse_prior_response_on_connection_failure`.
|
||||
- Keep transport capture scoped to the call, not the adapter instance. Concurrent `transcribe()`
|
||||
calls on one adapter must not be able to overwrite each other's response evidence.
|
||||
- Handle the streamed-body case (`httpx.ResponseNotRead`) rather than assuming `response.content`
|
||||
@@ -118,5 +118,5 @@ If capture behavior, evidence schema, or the header allowlist changes:
|
||||
1. Update `docs/invariant/ai_evidence_and_provenance.md` only if the durable preservation contract
|
||||
itself is changing — that revision is deliberate and reviewed, not incidental.
|
||||
2. Update `docs/schema.md` when persisted evidence fields change.
|
||||
3. Update or add tests in the same change (`tests/providers/`, `tests/test_v42_evidence.py`).
|
||||
3. Update or add tests in the same change (`tests/providers/`, `tests/test_evidence_provenance.py`).
|
||||
4. Bump the affected evidence `schema_version` when a field's meaning changes.
|
||||
|
||||
@@ -71,7 +71,7 @@ Where **Enforced by** reads *unenforced*, recommending a deterministic test is i
|
||||
| 1 | **Service boundary rule:** no service-to-service imports | `tests/test_service_boundaries.py` |
|
||||
| 2 | **UI boundary rule:** pages/components do not perform persistence access | `tests/test_ui_boundaries.py` |
|
||||
| 3 | **Status vocabulary conformance:** `JobStatus`/`JobSourceStatus`/`JobPurpose` usage matches current enums in `src/transcription/db/models.py`; no stringly-typed status literals | `tests/test_model_contract_guards.py` |
|
||||
| 4 | **Evidence ownership conformance:** append-only attempt history is preserved and projection writes are not mistaken for history mutation (`src/transcription/services/sources.py`, `src/transcription/services/evidence.py`) | `tests/test_v42_evidence.py::test_attempts_are_append_only_and_exported_with_integrity` |
|
||||
| 4 | **Evidence ownership conformance:** append-only attempt history is preserved and projection writes are not mistaken for history mutation (`src/transcription/services/sources.py`, `src/transcription/services/evidence.py`) | `tests/test_evidence_provenance.py::test_attempts_are_append_only_and_exported_with_integrity` |
|
||||
| 5 | **Canonical authority:** findings must resolve against `docs/*` first | `tests/test_meta_contract_guards.py::test_canonical_authority_references_are_present` |
|
||||
| 6 | **Schema contract fidelity:** when model/persistence behavior changes, `docs/schema.md` remains field-accurate with `src/transcription/db/models.py` | `tests/test_model_contract_guards.py` (field names, ordering, enum members, table coverage), `tests/test_meta_contract_guards.py` (presence and references) |
|
||||
| 7 | **Media boundary conformance:** print/export media is record-validated and UI media URL generation uses controlled resolver paths | `tests/test_media_path_safety.py`, `tests/ui/test_media_urls.py` |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
name: Quality Gate
|
||||
|
||||
# V4.7 Phase 6 / review log [40]. Before this, ruff, ty and pytest were enforced
|
||||
# only by .pre-commit-config.yaml, and only for developers who had actually run
|
||||
# Repository quality gate. Before this workflow existed, ruff, ty, and pytest were
|
||||
# enforced only by .pre-commit-config.yaml for developers who had run
|
||||
# `pre-commit install`.
|
||||
|
||||
on:
|
||||
|
||||
Reference in New Issue
Block a user