Commit b19a40c
ci(notice): a red DAST nightly notified nobody, and the issue body named the wrong workflow (BACKLOG #318)
#318 carries this as a tracked follow-up rather than deferred scope: `dast.yml` has NO
`pull_request` trigger, deliberately, and is not a required context, so every finding
from the authenticated authorization sweep surfaced in the Actions tab and nowhere else.
An authenticated security sweep reporting into the void is the exact shape
`nightly-notice.yml` exists to end -- it just was not watching it.
Widened `workflows:` to include DAST, which is the fix the item names.
ALSO FIXED, because widening made it worse rather than introducing it: the issue BODY
opened with a hardcoded "Nightly (scheduled) CI failed." whatever had actually run. The
TITLE was already derived from $WF_NAME; the body was not, so a red Security run has been
opening an issue whose first line names CI. With a third watched workflow that is a
reader deciding what broke from a wrong sentence. It now reads from the same $WF_NAME the
title does.
NEW GUARD, one level up from the item. A watched name that no workflow answers to, or one
whose workflow has no `schedule:` trigger, can never match: the notice job fires only when
the completed run's event was `schedule`, so such an entry sits in the list looking like
protection and matches nothing, forever, silently. That is the notice's own failure mode
turned on itself. `test_every_watched_workflow_exists_and_can_actually_fire` asserts both
arms for EVERY watched name, so a fourth workflow added later cannot be added wrongly. Its
scan carries a positive control, because an empty name map would make every assertion in
it vacuous.
The module docstring claimed it "pins the three ways" the notice could stop working; there
were already six tests. A count in prose has no checker and has to be maintained by
whoever adds the next test, so it now states the kind rather than the number (SDS-3.6).
Four mutants, all killed: drop DAST from the list; watch a name no workflow answers to;
watch a real workflow that has no cron; restore the hardcoded CI in the body. Every mutant
asserted a unique anchor and a changed file hash before scoring, and every restore was
byte-identical. Two share a test by design -- they are its two arms -- and their failure
messages were checked to differ, the typo case listing every name actually present.
Scope: the nightly-notice widening only. Increment 2 of #318 (schema-driven breadth, the
MLLP/TCP/X12 ingress fuzzing, the /ui plane, a TLS black-box target) is untouched.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent 71e559a commit b19a40c
2 files changed
Lines changed: 92 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
28 | 37 | | |
29 | 38 | | |
30 | | - | |
| 39 | + | |
31 | 40 | | |
32 | 41 | | |
33 | 42 | | |
| |||
93 | 102 | | |
94 | 103 | | |
95 | 104 | | |
96 | | - | |
| 105 | + | |
97 | 106 | | |
98 | 107 | | |
99 | 108 | | |
| |||
102 | 111 | | |
103 | 112 | | |
104 | 113 | | |
105 | | - | |
| 114 | + | |
| 115 | + | |
106 | 116 | | |
107 | 117 | | |
108 | 118 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
73 | 146 | | |
74 | 147 | | |
75 | 148 | | |
| |||
0 commit comments