Repository navigation
fix: accept documented rules plan gate only with complete evidence - #494
Merged
Merged
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
Wibias
marked this pull request as ready for review
November 8, 2026 03:33
Owner
Author
[GD] Verdict: approve-commentTLDR
Full verdictSemantic propagation
UsefulnessBefore this head, Bugs / correctness
Security
Spec / standards
Reviews
Base / CI
Gate
|
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.
Problem
ship-gate-snapshottreated every non-404 failure from the repository-rules endpoints as incomplete evidence. For a private repository on a plan without protected branches or rulesets, GitHub returns HTTP 403 withUpgrade to GitHub Pro or make this repository public to enable this feature.from/rulesets,/rules/branches/{branch}, and/branches/{branch}/protection. The gate therefore could never produce a non-unknown decision on Wibias/streamer-content.Change
The snapshot now attempts an authoritative plan/feature-unavailable classification only when the rules read fails. It accepts that boundary only when all of the following agree:
private: true,visibility: "private";protected: false, protection disabled, enforcement off, and no required status checks or contexts;branchProtectionRulescomplete and empty.Everything else stays fail-closed: permission-denied 403, 401, 404, 5xx, mixed or ambiguous probes, malformed bodies, message variants, public repositories, protected branches, existing rules, and boundary drift during capture. The snapshot is still captured; the rules boundary is re-probed at the final boundary and must match. Existing rules and required checks continue to be derived and enforced, and snapshot replay revalidates the carried evidence before trusting it.
Evidence
node scripts/ship-gate-snapshot.mjs Wibias/streamer-content 863-> complete snapshot;activeRules.complete=truewith plan-feature evidence.node scripts/ship-gate.mjs Wibias/streamer-content 863->decision: blocked(draft),unknowns: []; the rules boundary no longer forces unknown.Scope
Only the rules boundary capture, its evaluation guard, pagination failure passthrough, and the new regression tests change. No GitHub plan, visibility, permission, protection, required-check, or threshold changes.