Change record, carbon copy for the auditor
Paper Trail: evidence-gated MR pipeline
Shipped and held- Ticket
- https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/24678947/showcase/-/work_items/2
- Risk
- high
- Commit
e4690cb76b0e96111aebaf8fcaae31c57d7fd096- Filed
- 2026-10-18T00:41:53.426084Z
- By
- paper-trail 0.1.0
Paper Trail collects the evidence. Whether it satisfies a control is the auditor's decision.
02Risk score
- +40 sensitive_path:pricing app/tax.py
- +40 sensitive_path:pipeline .gitlab-ci.yml, .gitlab/duo/agent-config.yml, .gitlab/duo/chat-rules.md, .gitlab/duo/flows/README.md, .gitlab/duo/flows/paper-trail-intake.yaml, .gitlab/duo/mr-review-instructions.yaml, .gitlab/duo/prompts/fix-pipeline.md, .gitlab/duo/prompts/incident.md, .gitlab/duo/prompts/release-notes.md, .gitlab/duo/prompts/review-correctness.md, .gitlab/duo/prompts/review-risk.md, .gitlab/duo/prompts/security-triage.md, templates/evidence/template.yml
- +40 sensitive_path:policy policy/risk-policy.yml
- +40 sensitive_path:evidence paper_trail/__init__.py, paper_trail/__main__.py, paper_trail/cli.py, paper_trail/controls.py, paper_trail/evidence.py, paper_trail/findings.py, paper_trail/gates.py, paper_trail/html_report.py, paper_trail/monitor.py, paper_trail/policy.py, paper_trail/report.py, paper_trail/risk.py, schema/evidence.schema.json
- +25 dependency_change pyproject.toml, requirements-dev.txt, requirements.txt
- +30 infra_change Dockerfile, deploy/__init__.py, deploy/build_examples.py, deploy/cloudrun.sh, deploy/fetch-mr-evidence.sh, deploy/record.sh, infra/main.tf
- +25 size 5805 lines changed
- +10 file_count 100 files
03Merge request
04Review agents
- approveduo-review-correctness
All five acceptance criteria from issue #2 have meaningful tests and 51 pass; tax math, gates, risk scoring, evidence pack, and monitor logic are correct. One test assertion (must-not-appear) is trivially true but the underlying protection is real and not a correctness bug.
- approveduo-review-risk
This is a greenfield initial commit: no auth changes, no data migrations, money math in app/tax.py uses integer-cent rounding correctly, gates and policy are introduced at full strength with no weakening, and the pipeline enforces canary rollout with automated rollback. Traffic rollback fully undoes the change because no schema migrations or persistent state mutations are introduced.
05Tests
green51 passed, 0 failed, 0 errors, 0 skipped.
06Security scans
07Package
sha256:d47b414fd9405aa1016d438f3785c32ce83125bf8d31206f5d10f379f38a3f7508Release
Nothing was filed for this section. An auditor will ask for it; rerun the pipeline job that writes it before closing the change.
09Deployment
paper-trail-00003-cigpaper-trail-00002-wlz- 10%to
paper-trail-00003-cig - 50%to
paper-trail-00003-cig - 100%to
paper-trail-00003-cig
10Post-deploy check
heldwithin limits at every step
11Rollback
not recordeddrill passedTraffic moved back to paper-trail-00002-wlz and forward to paper-trail-00003-cig in 17s.
Controls this record answers
- SOC 2 (AICPA Trust Services Criteria 2017, rev. 2022) CC8.1
The entity authorizes, designs, develops or acquires, configures, documents, tests, approves, and implements changes to infrastructure, data, software, and procedures to meet its objectives.
Evidence on file: Ticket, Risk score, Merge request, Review agents, Tests, Security scans, Package, Deployment, Post-deploy check, Rollback
- ISO/IEC 27001:2022 Annex A A.8.32
Changes to information processing facilities and information systems shall be subject to change management procedures.
Evidence on file: Ticket, Risk score, Merge request, Review agents, Tests, Deployment, Post-deploy check, Rollback