|
1 | 1 | # 0.5.15 Slice 10 — Gitleaks secret-scan status |
2 | 2 |
|
3 | | -**Status:** repository-controlled implementation complete locally — 2026-08-15. |
4 | | -GitHub branch-protection and code-owner enforcement are **not active yet**; |
5 | | -authenticated external verification and enforcement are in progress. |
| 3 | +**Status:** implemented and externally enforced — 2026-08-15. GitHub `main` |
| 4 | +now requires `gitleaks / scan` and one CODEOWNERS approval. PR #49 remains |
| 5 | +properly blocked pending that review and its ordinary CI completion. |
6 | 6 |
|
7 | 7 | ## Ratified contract and changed controls |
8 | 8 |
|
@@ -52,26 +52,31 @@ metadata and scanned zero commits. Re-running with that metadata mounted |
52 | 52 | read-only produced the 686-commit clean result above; this was a test-topology |
53 | 53 | correction, not a scanner suppression. |
54 | 54 |
|
55 | | -## Outstanding external acceptance criteria |
56 | | - |
57 | | -The local/repository-control portion is ready for focused commit and push. The |
58 | | -following remains incomplete and must not be represented as active: |
59 | | - |
60 | | -1. A GitHub administrator must configure `main` to require the stable |
61 | | - `gitleaks / scan` check and code-owner review for the three scanner-control |
62 | | - files. |
63 | | -2. A disposable PR must show a redacted CI failure for the synthetic fixture, |
64 | | - then a green result after removal; manual-dispatch, main-push, and fork-PR |
65 | | - behavior must be evidenced without repository secrets or elevated token. |
66 | | -3. The branch rule must prove that a scanner/baseline change cannot merge |
67 | | - without its designated owner. |
68 | | - |
69 | | -Authenticated `gh` inspection confirms that `main` currently has no legacy |
70 | | -branch-protection rule. The only `protect-main` ruleset is disabled and covers |
71 | | -deletion/non-fast-forward only. Apply the narrow required-check/code-owner rule |
72 | | -only after the feature PR has produced the stable `gitleaks / scan` check, then |
73 | | -record the resulting PR/run URLs and branch-rule response before closing Slice |
74 | | -10 as merge-blocking. |
| 55 | +## External enforcement evidence |
| 56 | + |
| 57 | +| Acceptance boundary | Evidence | |
| 58 | +| --- | --- | |
| 59 | +| Green PR scan | [PR #49](https://github.com/coreyt/airlock/pull/49) completed its `gitleaks / scan` job successfully: [run 31917799169](https://github.com/coreyt/airlock/actions/runs/31917799169). | |
| 60 | +| Manual dispatch | The same workflow passed from `workflow_dispatch` on the feature branch: [run 31918015039](https://github.com/coreyt/airlock/actions/runs/31918015039). | |
| 61 | +| Red CI proof | Disposable [PR #50](https://github.com/coreyt/airlock/pull/50) contained only the synthetic non-usable fixture. Its [scan job](https://github.com/coreyt/airlock/actions/runs/31917967497/job/95092956354) failed as expected, while GitHub reported `BLOCKED` and `REVIEW_REQUIRED`. The PR was closed and its remote/local branch and worktree were deleted immediately. | |
| 62 | +| Required check | `main` branch protection now requires strict `gitleaks / scan`; the context is explicitly bound to the Gitleaks check. | |
| 63 | +| Code-owner enforcement | `main` now requires one approving review and `require_code_owner_reviews=true`; the scanner files are owned by `@coreyt`. | |
| 64 | +| Bypass/branch safety | Administrator enforcement is enabled; force pushes and deletion are disabled. The pre-existing disabled deletion/non-fast-forward ruleset was not modified. | |
| 65 | + |
| 66 | +The initial inspection confirmed no active legacy branch-protection rule, so |
| 67 | +this is a narrow new protection rather than a replacement of an existing active |
| 68 | +policy. |
| 69 | + |
| 70 | +## Remaining release evidence |
| 71 | + |
| 72 | +- PR #49 still requires its designated code-owner approval and its ordinary |
| 73 | + Python 3.12 CI completion before merge. The Gitleaks check is already green. |
| 74 | +- A protected `main` push will be evidenced after that reviewed merge. The |
| 75 | + workflow definition contains the required `push: main` trigger, but this |
| 76 | + slice did not bypass protection to manufacture a direct push. |
| 77 | +- A separate public-fork PR was not created. The workflow uses `pull_request`, |
| 78 | + read-only job permissions, and no repository/deployment secrets; retain that |
| 79 | + as a deployment-policy review item if fork execution needs empirical proof. |
75 | 80 |
|
76 | 81 | ## Residual risk and rollback |
77 | 82 |
|
|
0 commit comments