You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(wave8): tighten the gates — three advisory surfaces become real gates
Promotes the enforcement surfaces that could not block, each honestly (no
manufactured red noise), each with a red-team proof it CAN fail.
- hypatia-scan-reusable.yml: baseline-aware gate. When a caller commits
.hypatia-baseline.json (+ ships scripts/apply-baseline.sh), findings are
filtered through the baseline and any UNBASELINED finding >= high FAILS the
job (apply-baseline.sh blocking mode — thresholds, expiry, downgrades all
already implemented there). Repos without a baseline keep the honestly-
labelled ADVISORY behaviour; the gate arms itself the moment a baseline
lands (standards#399/#437/#446).
- affinescript-verify.yml: SPLIT GATE replaces the blanket advisory. ADDED
.affine files must compile — a failing added file fails the job (new code
has no excuse); MODIFIED legacy ports stay advisory until the port backlog
clears (LEGACY_BLOCKING flag to flip later); toolchain failures skip LOUDLY
("SKIPPED, not passed" — never a silent green claim). Job-level
continue-on-error removed; verify step guards against a missing compiler
checkout before cd.
- registry-verify.yml: Mustfile enforcement now gates PRs (structural check +
run-mustfile.sh) — previously the invariants executed only on push-to-main,
so a breaking change was caught after merge, not before.
- scripts/tests/wave8-gates-test.sh (11 assertions; Justfile: gates-test):
unbaselined-high blocks / baselined passes / EXPIRED baseline entry stops
suppressing / low severity below threshold; Mustfile gate passes on this
repo and blocks on a failing critical invariant; workflow-shape checks
(job-level continue-on-error gone, blocking branch present, loud skip).
Licence/SPDX untouched (flag-only policy).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0114ps6mY5jAH4SzbGxeuYjc
echo "No committed baseline — gate stays advisory (see next step)."
167
+
fi
168
+
152
169
- name: Check for critical issues (ADVISORY — does not gate)
153
170
if: steps.scan.outputs.critical > 0
154
171
run: |
155
-
# This scan is ADVISORY / fix-forward: it never fails the build. The
156
-
# label and summary state that explicitly so a green check carrying
157
-
# critical findings is not mistaken for "no critical findings".
158
-
# (Promotion to blocking is tracked with the baseline reconciliation,
159
-
# standards#399/#437.)
172
+
# This scan is ADVISORY / fix-forward WHEN NO BASELINE IS COMMITTED
173
+
# (the step above becomes the blocking gate once .hypatia-baseline.json
174
+
# lands). The label and summary state that explicitly so a green check
175
+
# carrying critical findings is not mistaken for "no critical findings".
160
176
echo "::warning title=Hypatia (ADVISORY, non-blocking)::${{ steps.scan.outputs.critical }} critical finding(s). This scan does not gate — review hypatia-findings.json and fix forward."
161
177
{
162
178
echo "### Hypatia scan — ADVISORY (does not gate)"
0 commit comments