# One verification step inside a software factory Python 3.11 or later, standard library only. Saved output uses Python 3.13.5. Traceback details and test labels can differ by Python version. No model, network, credentials, queue service, PR, approval or deployment is used. Fixtures and decisions are teaching artifacts, not a claim that an agent or human executed the full workflow. ## Reproduce From this directory: ```bash EXPORTER_IMPL=exporter_broken python3 -m unittest -v test_exporter python3 -m unittest -v test_exporter test_artifacts ``` The first command intentionally fails. The second checks corrected CSV behavior and the artifact contracts. Expected results are not substitutes for saved logs. Current observed logs are in evidence/red.txt and evidence/green.txt. To retain a new complete run, copy the source files to a fresh directory without the evidence directory, then run `python3 run_evidence.py`. It refuses to overwrite an existing evidence directory. It records commands, exit codes, Python version, source hashes and a generated CSV. Traceback source paths are normalized to file names without changing assertions or test-result lines. No old evidence is deleted. ## Follow the artifacts - intake.json attaches two fixture reports to one issue. - ticket.md defines AC1-AC4 and their tests. - plan.md names the proposed fix and human plan gate. - clean-handoff.json sends relevant file pointers to the reviewer. - decision.md keeps the human PR decision distinct from passing tests. - review-to-rule.md proposes a future check without silently adopting it. - eval-case.json preserves a candidate task/check set, not a model benchmark. - measurements.csv is a blank record template, not invented delivery metrics. All packet paths resolve from this directory. The source manifest allows a reader to detect source changes since the recorded run. It is not a signature, trusted CI attestation, or binding human approval. The exercise does not enforce a sandbox, prove general CSV compatibility, or evaluate a coding agent.