How ProofLane collects evidence, what each check proves, what it cannot prove, and how you can re-verify the evidence yourself. This page is generated from the same check definitions the product runs — if a check changes, this page changes.
Collectors query your connected systems (GitHub, Google Workspace, AWS in v1) on a cadence and store one evidence record per check per run. Three rules are enforced in code, not promised in copy:
artifact_source: fixture on every record and can never be mistaken for live data.The 12 automated checks cover 6 of the 33 Security Trust Services Criteria (18.2%) with automation. The remaining criteria are covered by the manual-evidence task workflow described in section 4 — not by automation we pretend exists.
| Check | Source | Criteria | A PASS proves | A PASS cannot prove |
|---|---|---|---|---|
GitHub org enforces 2FAgh-2fa-enforced | github | CC6.1 | Every org member authenticated with two-factor at collection time. | Does not prove 2FA was enforced for the whole audit period; does not cover non-SSO personal access tokens. |
Default branch requires PR reviewgh-branch-protection | github | CC8.1 | Direct pushes to the default branch are blocked; changes require review. | Does not prove reviews were meaningful; does not cover deploy approvals. |
No stale outside collaboratorsgh-outside-collaborators | github | CC6.2 | Outside collaborators list is current and reviewed. | Does not prove provisioning followed an approval workflow. |
Code repos are privategh-repo-visibility | github | CC6.1, CC6.6 | No production code repo is publicly readable. | Does not prove private repos have correct internal access. |
Google Workspace enforces 2-Step Verificationgw-2sv-enforced | google_workspace | CC6.1 | 2SV enforced for all non-exempt users at collection time. | Does not prove enrollment across the full audit period; exempted users need manual review. |
Super-admin count within limitgw-admin-least-privilege | google_workspace | CC6.2 | Number of super admins is at or below the configured threshold. | Does not prove each admin grant was approved; custom roles need review. |
Terminated users deprovisionedgw-offboarding-current | google_workspace | CC6.3 | No suspended user retains an active license beyond the grace period. | Does not prove deprovisioning happened within 24h of termination; needs HR termination dates for full testing. |
IAM password policy meets baselineaws-password-policy | aws | CC6.1 | Account password policy meets length/complexity/reuse baseline. | Does not cover federated/SSO users; does not prove rotation in practice. |
MFA enabled for all IAM usersaws-mfa-users | aws | CC6.1 | Every active IAM user has an MFA device registered. | Does not prove MFA was used at each sign-in; root account checked separately. |
Root account has MFAaws-root-mfa | aws | CC6.1 | The AWS root user has MFA enabled. | Does not prove root credentials are vaulted or access keys removed. |
CloudTrail multi-region logging enabledaws-cloudtrail | aws | CC7.2 | API activity is logged across regions to a trail. | Does not prove anyone reviews the logs; needs alerting to be a full CC7.2 story. |
S3 public access blocked at account levelaws-s3-public-block | aws | CC6.1, CC6.6 | Account-level S3 Block Public Access is fully enabled. | Does not prove individual bucket policies are least-privilege. |
Every evidence record in a workspace is hash-chained. Each record carries prev_hash and record_hash = SHA-256(prev_hash + canonical JSON of the record), starting from a fixed genesis value. Changing any field, deleting a middle record, or reordering records breaks verification at exactly that position.
GET /api/v1/evidence/verify returns {ok, records, broken_at, head_hash} for your workspace.expires_at, set from its freshness window). An expired record counts as not passing in readiness — stale evidence decays visibly instead of silently passing an audit.Every claim on this page is generated from the same definitions the product runs.
Read the docs