Real repo adoption proof (canonical fixture)¶
This is the flagship trust lane for repo adoption proof.
A skeptical maintainer should only need this one path to verify: - what commands ran, - what artifacts were produced, - what passed vs failed, - why those outcomes are trustworthy, - and how local evidence maps to CI evidence.
Canonical fixture¶
Path: examples/adoption/real-repo/
Fixture shape (intentionally small, repo-realistic):
- pyproject.toml
- src/app/__init__.py
- src/app/main.py
- tests/test_main.py
Canonical local replay (exact commands)¶
From repo root:
python -m pip install -e .
cd examples/adoption/real-repo
python -m sdetkit gate fast --format json --stable-json --out build/gate-fast.json ; echo $? > build/gate-fast.rc
python -m sdetkit gate release --format json --out build/release-preflight.json ; echo $? > build/release-preflight.rc
python -m sdetkit doctor --format json --out build/doctor.json ; echo $? > build/doctor.rc
python ../../../scripts/real_repo_adoption_projection.py --fixture-root . --repo-root ../../.. --build-dir build --out build/adoption-proof-summary.json
Canonical artifacts (single evidence pack)¶
Both local replay and CI replay produce the same canonical files:
- build/gate-fast.json
- build/release-preflight.json
- build/doctor.json
- build/gate-fast.rc
- build/release-preflight.rc
- build/doctor.rc
- build/adoption-proof-summary.json
Checked-in golden references live at artifacts/adoption/real-repo-golden/ with the same filenames.
Truthful expected outcomes (not theatrical)¶
For this fixture, intentional first-run triage behavior is part of the trust signal:
| Command | Expected rc |
Expected artifact ok |
Why trustworthy |
|---|---|---|---|
gate fast |
2 |
false |
Fails on missing full-repo policy/test wiring; this is realistic first-run adoption triage. |
gate release |
2 |
false |
Depends on release doctor + fast gate; failure mirrors realistic preflight gating. |
doctor |
0 |
true |
Produces actionable quality checks while command execution still succeeds. |
Use build/adoption-proof-summary.json as the canonical decoder: it records command, artifact contract projection, observed rc/ok, expected rc/ok, and expectation-match booleans.
CI mirror (same story as local)¶
Workflow: .github/workflows/adoption-real-repo-canonical.yml
CI does three things in this exact order:
1. python scripts/regenerate_real_repo_adoption_goldens.py --check (drift guard)
2. replay canonical fixture commands and rc capture
3. upload canonical artifacts as adoption-real-repo-canonical
No separate CI-only evidence format is used; CI uploads the same artifact names as local replay.
Golden freshness and drift guard¶
Check only (no rewrites):
python scripts/regenerate_real_repo_adoption_goldens.py --check
Refresh intentionally (after fixture or gate-contract changes):
python scripts/regenerate_real_repo_adoption_goldens.py
The helper regenerates fixture artifacts, rc files, and the proof summary, then compares projected contracts so path-specific volatility does not create false drift.