feat(compliance): change-management evidence export (CC8.1) - #208
Merged
Conversation
First build task of R8 soc2-groundwork. A repo-governance tool that produces
auditable SOC 2 CC8.1 evidence: for every landing on `main` in a window, the
required checks that gated the PR, the approver(s), and the resulting `main`
commit — with any control exception FLAGGED not omitted, and a disclosed
self-approval recorded as NOT independent (never laundered into review).
Design (frozen contract sha256:6dad0c27):
- PURE core `build_evidence(source, ...)` over a `ChangeSource` port — no IO,
no clock-now, no network; identical source output => identical evidence.
- IO adapter `GitHubChangeSource` is the ONLY thing that touches GitHub;
design-for-failure: per-call timeout, bounded-backoff retry, full pagination,
and a truncated/rate-limited fetch raises IncompleteFetch so a partial window
can never be emitted as complete.
- Squash-honest: this repo squash-merges, so `main` is a NEW sha with no checks
of its own; evidence credits the PR's required-check conclusions and records
BOTH the tested-head sha and the resulting `main` sha — never invents a run on
the squashed sha.
Lives in scripts/soc2/ (repo tooling, NOT the gateway wheel; imports nothing from
gateway.*). 9 red-first tests in the gateway suite drive the pure core through a
zero-network fake, binding M1-M6 and every reject/edge:
clean merge · missing-context flagged · self-approval not independent · direct
push flagged · IncompleteFetch propagates · half-open window · pure+deterministic
· squash records both shas · payload/secret-free summary.
ADD gate PASS (receipt runs/1.md, process authority). ruff check+format clean; no
gateway runtime touched. Human four-eyes owed at this PR gate.
author: Tin Dang
pilotspacex-byte
approved these changes
Aug 14, 2026
pilotspacex-byte
left a comment
Contributor
There was a problem hiding this comment.
Operator-directed approval via pilotspacex-byte to satisfy the required-review gate on a solo-maintainer repo. DISCLOSED and NOT independent four-eyes: same operator who authored the change, second GitHub account. Evidences a green required check on the merged artifact, not a genuine second reviewer. Fittingly self-referential: this PR ships the very tool (change-management-evidence-export) that FLAGS a self-approval as non-independent. Added to the auditor sample set (#117/#118/#199-#208); still owes a real second human before the SOC 2 audit — R8 independent-review-control is the fix.
This was referenced Aug 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
feat(compliance): change-management evidence export (CC8.1)
First build task of R8
soc2-groundwork(contract frozensha256:6dad0c27, ADD gate PASS).A repo-governance tool that produces auditable SOC 2 CC8.1 evidence: for every landing on
mainin a window — the required checks that gated the PR, the approver(s), and the resultingmaincommit — with any control exception flagged, never omitted, and a disclosed self-approval recorded as not independent (never laundered into review).Design
build_evidence(source, …)over aChangeSourceport — no IO, no clock-now, no network; identical source output ⇒ identical evidence (M2).GitHubChangeSourceis the only thing that touches GitHub — design-for-failure: per-call timeout, bounded-backoff retry, full pagination, and a truncated/rate-limited fetch raisesIncompleteFetchso a partial window can never be emitted as complete (M6).M1): this repo squash-merges, somainis a new sha with no checks of its own. Evidence credits the PR's required-check conclusions and records both the tested-head sha and the resultingmainsha — never invents a run on the squashed sha (R:UNTESTED_MERGE).scripts/soc2/(repo tooling, not the gateway wheel; imports nothing fromgateway.*).Tests — 9 red-first, in the gateway suite via a zero-network fake
clean merge · missing-context flagged · self-approval not independent · direct-push flagged ·
IncompleteFetchpropagates · half-open window · pure+deterministic · squash records both shas · payload/secret-free summary. Every Must/Reject/Edge/probed-A bound.ruff check+formatclean; no gateway runtime touched (isolated new files) so the full suite is a pure regression floor.⚠ Four-eyes
The
GitHubChangeSource.merges()live walk is left as a documentedNotImplementedError(the pure evidence semantics are what this task freezes + tests); wiring it to the live API is an operator step. And per this milestone's own theme: merging this via byte-approval adds to the tallyindependent-review-controlexists to retire — recorded honestly.