From 845e3143ab4c5afcee6155d0eab0011f9d82e263 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Thu, 6 Aug 2026 17:40:07 -0500 Subject: [PATCH] ci: enumerate the issue-close regression on the sanitization surface check-test-enumeration.sh failed the previous push: the new test existed on disk but was on no CI surface and not signed in the exclusions file. That guard is correct and caught exactly what it exists to catch -- a test that would never have run. Registered on the sanitization step rather than the exclusions file, because this test is hermetic: it mocks tea and curl onto PATH and sandboxes a throwaway git repo, so it resolves no real credentials. The tools/git tests in the exclusions file are there precisely because they do. Guard now: population 51, enumerated 32, excluded 19, all surfaces present. Refs #1081 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01Amf1Neca162odgcbCWMk1y --- .woodpecker/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.woodpecker/ci.yml b/.woodpecker/ci.yml index c02f3f1c..63fb349d 100644 --- a/.woodpecker/ci.yml +++ b/.woodpecker/ci.yml @@ -46,6 +46,10 @@ steps: # [0] of the pnpm chain, so severing that chain would silence it together # with everything it guards; this direct line keeps one instrument running. - bash packages/mosaic/framework/tools/quality/scripts/check-test-enumeration.sh + # Hermetic regression for issue-close.sh (#1081): mocks tea/curl onto PATH + # and sandboxes a throwaway git repo, so it resolves no real credentials and + # joins CI directly rather than the exclusions file. + - bash packages/mosaic/framework/tools/git/test-issue-close-fail-closed.sh # Blocking gate (#791): a framework upgrade must never write or delete an # operator-owned path. The HARD GATE proves an unanticipated operator sentinel