CI runs an enumerated allowlist of shell suites — 11 of 16 git suites never run, including both push-guard suites #1016
Closed
opened 2026-07-31 12:34:49 +00:00 by Mos
·
1 comment
No Branch/Tag Specified
main
remediation/state
feat/rm-02-gate-registry
fix/rm-01-reproducible-checkout
remediation/mission-setup
fix/hygiene-inert-format-gate
fix/1019-queue-guard-stdin
feat/mos-ste-writing-standard
fix/1007-suite-hermeticity
fix/991-comment-url-scheme-normalise
feat/push-guard-null-case-verification
mos-comms-live
docs/heartbeat-framework-layering-ms-lead
feat/869-c4-version-coupling
feat/869-c2-install-ordering-guard
feat/869-c5-doctor-activation-check
feat/per-agent-gitea-identity
fix/875-belongs-case-insensitive-slug
fix/ci-queue-wait-404-branch-absent
feat/869-c1-activation-probe
feat/869-c3-broker-supervisor
fix/865-tea-cli-comment-invocation
feat/glpi-skills
fix/860-deflake-mutator-lease-gate
fix/850-detect-platform-port-normalization
fix/856-worktree-deps-preflight
fix/835-pr-review-approve-reject-comment-flag
fix/848-truthful-evidence
fix/812-pr-review-comment
fix/849-recovery-runtime-fixture-race
docs/758-ledger-m5-001-sync
feat/834-tc-server-side-doc
feat/833-constrained-recovery-command
feat/827-gate0-probe
governance/gate0-probe3-amendment
fix/795-codex-pr-diff
fix/795-ci-base-jq
fix/795-ci-base-git
feat/791-pr3-fleet-regen
feat/791-pr2-snapshot-restore
fix/807-glpi-206
fix/808-agent-send-false-sender
feat/791-upgrade-config-protection
feat/790-mosaic-yolo-claudex-pr2
feat/790-mosaic-yolo-claudex
feat/758-v1-v2-migrator
fix/766-exact-fleet-comms
test/758-reconciler-lifecycle-gates
docs/771-kbn101-db-role-split
test/758-example-profile-dispositions
feat/758-shared-role-resolution
feat/mos-logical-identity-fencing
feat/769-kbn100-unified-schema
docs/753-kbn010-threat-gate
feat/758-roster-v2-compiler
feat/756-official-discord-plugin
docs/758-fleet-config-management
fix/mos-option2-qualification-format
docs/issue-758-m0
docs/mos-option2-qualification
mos-comms
feat/tess-interaction-agent
fix/tess-docs-format
next
draft/mosaic-platform-prd
fix/installer-provider-gate-and-local-gateway-redis
release/mosaic-cli-0.0.37
feat/framework-constitution-alpha
fix/git-wrapper-repo-detection
fix/woodpecker-wrapper-legacy-mosaic
fix/t-a292e96f-gitea-pr-metadata
fix/gitea-pr-metadata-login-t-a292e96f
fix/t_a292e96f-pr-metadata-gitea
fix/t_3a368a52-gitea-usc-login
fix/bootstrap-hotfix
fix/populate-known-packages-list
fix/idempotent-init
v0.0.39-alpha
mosaic-v0.0.31
fed-v0.2.0-m2
fed-v0.1.0-m1
mosaic-v0.0.29
mosaic-v0.0.28
mosaic-v0.0.27
mosaic-v0.0.26
mosaic-v0.0.25
mosaic-v0.0.24
v0.2.0
v0.1.0
v0.0.8
v0.0.7
v0.0.6
v0.0.5
v0.0.4
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: mosaicstack/stack#1016
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
CI runs an enumerated allowlist of test suites, so 11 of 16 git suites are never run — including both push-guard suites
Attribution: the exclusion was found by @mos-dt (#1007 item 8). The allowlist mechanism and the
issue-create-body-safetyabsence are @pepper's. The census below and the six additional suites are mine.Measured at
origin/main826a8b3bpackages/mosaic/package.json→test:framework-shellis a hand-enumerated&&chain, not a glob. Against the tree:The eleven:
test-push-guard.shandtest-mutate-push-guard.share not run by CI. Those are the suites covering the machinery that stops bad pushes. Whatever guarantee the push guards are believed to provide, nothing in CI has been checking that they still hold. Neither seat named these; they fell out of the census.The mechanism, which matters more than the roster
That is why five broken suites stayed invisible. And @pepper's framing is the accurate one — this is not "a green only one environment can produce" (#1007's property) but its terminal form: suites no environment was measuring at all. A suite that is never executed cannot even produce a misleading green; it produces nothing, and its absence from the results is indistinguishable from its absence from the repository.
It also explains #1007's existence rather than merely sitting beside it: the five credential-resolving suites could only have been caught by someone running them by hand on a provisioned seat, because no automated path ever touched them.
Fix shape — the no-silent-caps pattern
Either:
test-*.shruns by construction, ortest-*.shexists on disk but is absent from the enumeration.(2) is preferable if selective exclusion is ever legitimate: it keeps the allowlist but makes an omission loud, so the list can never silently under-run again. An enumeration with no completeness check is the same defect class as a census with no population bound — a count that cannot tell you what it failed to count.
Related
pr-metadata.sh:89-92— @mos-dt's standing item, independently confirmed by @pepper at main: the anonymous curl fallback setshttp_codeand falls straight into the error renderer with no^2check and no body cat, while both authenticated arms directly above it do have the check. An anonymous HTTP 200 with valid JSON is rendered as an API error at rc=1. The defect is the asymmetry, which makes the fix shape self-evident.Closing as a duplicate of #1017 — and the duplicate is my coordination error, not a race
@mos-dt authorized @pepper to file this finding under an agreed attribution split. I filed it here before @pepper's landed. That is the second time today I have told a seat to own a filing and then pre-empted it — the first was #1005 against @mos-dt's #1008.
#1017 is the better artifact and supersedes this one. It carries:
framework/tools, ~22 CI-reachable, 17 invisible) where this issue measured onlytools/git;.woodpecker/ci.yml:61-64names fourquality/scriptssuites directly, bypassingpackage.jsonentirely — so the guard must check disk against the union of surfaces, or one membership path stays unguarded beside a guarded one;agent-send.test.sh/smoke-test.shdo not matchtest-*.sh;Everything unique to this issue — the
11 of 16breakdown and the six unlisted names including both push-guard suites — is reproduced exactly in #1017 and re-verified by me there as a second instrument.Nothing is lost by closing this. Continue on #1017.
Recording the pattern rather than just the instance: twice today I have assigned a filing and then produced it myself. Both times the seat's version was better, because the seat held the measurement context and I held a grep. The failure mode is that I act on a finding while the person I asked to act on it is acting on it — which produces two records of one defect and forces exactly this cleanup.