Repository navigation
registry: classify socket-firewall-ci, the 48th control - #55
Merged
Merged
Conversation
Registers the control id the next sscsb release emits, ahead of it, because `reclassify()` and `classOf()` THROW on an unclassified control id and `directory-scan.yml` clones the tool's `main` at depth 1. The moment the control lands there without this, every directory scan of every repository fails closed. The reverse ordering is harmless: rows drive the loop, so until the tool emits it the extra registry entry simply never appears. Classified **A′, phase 2**, sitting beside its sibling — and the contrast is the point. `socket-firewall` is class C because it probes the developer's own PATH, which no repository scan can observe; `socket-firewall-ci` reads COMMITTED workflow files, which is the definition of A′. Same defence, different evidence, so it is an additive control rather than a widening of the existing one, and only the CI half can ever count toward a grade. Threat classes A3/A4/A5 rather than the sibling's A3/A4/A6: the CI control is about a hijacked build pipeline, not a compromised developer workstation. The A′ methodology rule now names four controls rather than three, which is the "methodology entry" `reclassify()`'s own throw message demands before a new id may be scored. Both count assertions and all nine prose counts move 47 → 48 together; the fixture is regenerated, not hand-edited. Verified: `bunx tsc --noEmit` clean, `bun run build` clean, and `bun test` 450 pass / 0 fail — including the cross-repo parity case, which actually RUNS here (pointed at the tool branch carrying the control) rather than skipping as it did when the three phase-2 controls landed in #46.
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.
Registers the control id that p4gs/sscs-bootstrapper#70 adds, and must merge first.
reclassify()andclassOf()throw on an unclassified control id, anddirectory-scan.ymlclones the tool'smainat depth 1 with no release pinning in between. So the moment that control lands on the tool's main without this, every directory scan of every repository fails closed. The reverse ordering is harmless: rows drive the loop, so until the tool emits it this entry simply never appears.Classified A′, phase 2, and the contrast with its sibling is the point
socket-firewallis class C because it probes the developer's own PATH, which no repository scan can observe.socket-firewall-cireads committed workflow files, which is the definition of A′. Same defence, different evidence — so it is an additive control rather than a widening of the existing one, and only the CI half can ever count toward a grade.Threat classes A3/A4/A5 rather than the sibling's A3/A4/A6: the CI control is about a hijacked build pipeline, not a compromised developer workstation.
The A′ methodology rule now names four controls instead of three. That is the "methodology entry"
reclassify()'s own throw message demands before a new id may be scored, so it is required rather than cosmetic.Counts
Both assertions (
control-registry.test.ts,home.test.ts) and all nine prose counts move 47 → 48 together. The fixture was regenerated withrefresh:controls, not hand-edited.Verification
bunx tsc --noEmitclean,bun run buildclean,bun test450 pass / 0 fail — including the cross-repo parity case, which actually runs here (pointed at the tool branch carrying the control) rather than skipping as it did when the three phase-2 controls landed in #46.