|
D-137 tier 3 (VALIDITY) BUILT: cross-copy sha256 provenance
Closes the gap the plan names: creds-audit PARSES declared provenance and never verifies it, so SEC-020's stale-trap warning has been unchecked prose and its sha256 equality was a ONE-TIME manual act on 2026-07-25. sha256sum runs as an EXTERNAL command on both sides so only a 64-hex digest enters the checker -- hashing bytes in Python would meet the letter of "never transfer content" and not the spirit. RESULT: 4 groups compared, all byte-identical, INCLUDING the SEC-020 pair (maas-region-admin, region source-of-record vs jumphost copy). Now machine-verified instead of remembered. The [ok] line names the groups. TWO FALSE POSITIVES IN MY OWN DRAFT, caught by verifying before reporting. Keying digests by (role, site) let an identity's DISTINCT artifacts at one scope overwrite each other, so it compared unrelated files and reported drift on maas-region-admin and dc1-svc-key. Manual sha256sum showed both IDENTICAL. Reporting that would have raised a false credential-rotation alarm. Root cause was a schema gap: nothing expressed which rows are byte-copies. custody gains `verbatim-copy` [OPS]. V1 now compares only rows sharing (id, filename) across scopes, or a source-of-record row against declared verbatim-copy rows -- SEC-020's exact shape. Everything else is skipped with a reason: a pair we cannot justify comparing is not a pair we may report drift on. verbatim-copy is manifest-bearing; it asserts byte-identity, it does not move the file. Harness 44 -> 52: T47/T48 regression-lock both false positives; T49 keeps SEC-020's case from falling into T48's skip; T51 asserts the digest path uses sha256sum and that no content-transfer verb exists anywhere in the checker. NOT built: tier 3's behavioural probes. Liveness, expiry, revocation state and grant/scope drift remain unverified. Gauntlet ALL GREEN (80), repo-lint 0-fail, finding-class baseline unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HvCyrwvYTTcDYnRErfMsNf |
|---|
|
|
| creds-matrix.tsv |
|---|
| docs/CURRENT-STATE.md |
|---|
| docs/audit/d137-tier3-provenance-20260726.txt 0 → 100644 |
|---|
| docs/changelog-20260726-d137-tier1.md |
|---|
| scripts/creds-matrix.py |
|---|
| tests/creds-matrix/run-tests.sh |
|---|