3.6 KiB
Gate Registry Operations
Routine verification
Run pnpm gate:verify from a dependency-installed checkout. Exit zero means registry observations matched their declared actual values; it does not assert required-behavior conformance while deltas remain. Open DEFECT records are checked descriptions of current behavior with tracked owners, never successful gate outcomes.
Investigate any of these immediately:
GATE VERIFY FAILED— registry structure, observed behavior, provenance, claim binding, source/deployment identity, or negative-control detection changed. The verifier aggregates independent phase failures, so repair the responsible stable-ID diagnostics as well as any accompanying stale-fixture error; do not treat the generic error as a substitute.unregistered gate— an executable appeared under a declared gate root without a registry entry.no negative control— a gate has no must-fail case.DEPLOYED IDENTITY UNAVAILABLE— the runner cannot reach the installed enforcing copy. The pinned observation is checked, but live equality is not asserted.PROVIDER EVIDENCE ... ABSENT— retained external history was unavailable; do not infer merge-time success.
Updating a gate
- Add or change the criterion, its exact criterion-side
caseRefs, and matching case-sidecriterionIds. - Observe the must-fail case fail for its own stated reason; moving the binding to any undeclared case must fail verification.
- Declare an exact inerting mutation and observe the verifier detect it.
- If required and actual behavior differ, add a tracked remediation owner and justification.
- If meaning changed, append provenance; never replace the original silently.
- For an installed counterpart, verify live byte identity and update the observed digest only from measured evidence.
- Run focused verifier tests,
pnpm gate:verify, and the repository baseline gates.
Do not add an ownerless exception or describe an open delta as pass/green/OK.
CI behavior
Woodpecker runs gate-verify on every pull request and protected-main push without path filtering. This is deliberate: changes outside gate files can make a gate inert. The step unshallows the checkout so activation ancestry and historical manifest provenance can be checked; a shallow boundary must never be interpreted as non-ancestry.
Provider evidence input is an optional JSON array of normalized pipeline records containing commit, unique integer pipeline number, pipeline status, and a gate-verify step status. The highest numbered rerun is authoritative; ambiguous duplicates fail. Its retention window is provider-controlled and is not overstated by this repository.
PR CI executes current-tree verification only, unprivileged and fail-closed. It does not execute isolated own-tree replay: RM-60 must provide a protected launcher or runner-level rootless sandbox before any PR-controlled executable/configuration is evaluated. Repo-only code cannot safely grant itself the capability intended to contain itself.
The deferred replay implementation remains hard-fail when its sandbox cannot be established; it is not silently skipped as a successful replay. Tests recognize unavailability only from parent-generated Bubblewrap-launch provenance combined with proof that the sandbox entry command did not run. A denial-looking string from child-controlled output is not evidence. When RM-60 activates replay under protected authority, it uses frozen own-tree dependencies, namespace/environment isolation, and archived-file identity checks. A post-merge failure triggers quarantine and revert. This is detection, not pre-merge prevention.