Branch protection: de geheimen/SAST-scan is geen verplichte check, en verouderde basis mag mergen #1891
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1891
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
De branch-protection op
mainstaat er, maar hij bewaakt minder dan dedocumentatie doet vermoeden. Uitgelezen via
GET /repos/librekat/ocideck/branch_protections:1.
scansis geen verplichte check.forgejo/workflows/scans.ymldraaitmake check-secrets(gitleaks +trufflehog over de héle historie) en
make sast(semgrep) op élke PR. Hij staatniet in
status_check_contexts. Zijn context zouscans / scans (pull_request)zijn.Gevolg: valt de scan om, of draait hij niet (runner weg, image niet pullbaar,
run afgebroken), dan houdt niets de merge tegen. In de praktijk staat hij groen
— 27 van 27 runs — maar dat is geluk, geen borging.
docs/CHECKS.mdschrijft zelf op waarom juist déze poort niet mag glippen:Dat argument dráágt een verplichte check. Hij is er niet.
2.
block_on_outdated_branch: falseEen PR mag mergen tegen een verouderde basis. Dat is precies het mechanisme
achter #1605, waar een PR met een oude basis vijf alinea's uit
USER_GUIDE.mdterugdraaide die intussen op
mainwaren geland. Geen poort ziet verdwijning;deze instelling is de enige knop die het gedrag zelf tegenhoudt. Hij staat uit.
Ook
static-gateopmain(de post-merge-trigger) bestaat expliciet omdat eenPR-run alleen de voorvertoning van díe ene samenvoeging toetst — zie de
toelichting in
static-gate.yml, die eindigt met "Voorkómen doet hij het niet;dat kan alleen door élke PR vlak vóór de merge opnieuw tegen de actuele
mainte draaien." Dat is letterlijk wat
block_on_outdated_branchdoet.3.
require_signed_commits: falseHet project ondertekent zijn releases (minisign,
make sign-release) enverantwoordt zich op leveringsketen (SBOM, CRA-positie,
security-insights.yml).De commits zelf zijn niet ondertekend. Met meerdere agentsessies die op deze
repo committen is de vraag "wie heeft dit erin gezet" niet triviaal.
Voorstel
scans / scans (pull_request)toevoegen aanstatus_check_contexts. Kosten:de scan duurt seconden; de ontsnappingsroute (regel tijdelijk lichten) staat
al beschreven in
docs/CHECKS.md.block_on_outdated_branch: trueaanzetten. Kosten: bij gelijktijdige PR'smoet er vaker gerebased worden. Baten: #1605 kan niet meer, en de
static-gate-push-run wordt van vangnet weer bevestiging.werkwijze van elke sessie. Wel expliciet vastleggen wat het antwoord is, want
nu is het een niet-gemaakte keuze.
docs/CHECKS.mdbijwerken: er staat nu wél datstatic-gateverplicht is,maar niet dat
scansdat níet is. Die asymmetrie is precies wat iemandverkeerd leest.
Gevonden bij een kritische review van het kwaliteitsbewakingssysteem, 31-08-2026.