Skip to content

Commit 55d1d82

Browse files
committed
fix: n/a icon, attachment links, literal block-tag escaping, qa-gather discovery
- Replace the `(-)` token with `(off)` for "not applicable" findings: `(-)` renders as a red forbidden icon in Jira and reads as a failure, while the lines it prefixes list intentionally skipped checks. `(off)` renders as a subtle grey switched-off lamp. Aligns comment-template.md examples with the severity.md warning (they contradicted each other). - Sanity scan: add check for unescaped block-markup tags ({code}, {noformat}, {quote}, {panel}) in prose - block tags are never inline; literal mentions must be escaped as \{code\}. - Sanity scan: add check that referenced attachments are linked with [^filename] instead of bare filenames. - qa-gather.sh: also match jira-qa-gather.py - jira-integration >= 3.13 ships the script under that name, so discovery silently fell back to multi-call mode on current installs. Signed-off-by: Sebastian Mendel <github@sebastianmendel.de>
1 parent bb61f0e commit 55d1d82

3 files changed

Lines changed: 13 additions & 11 deletions

File tree

skills/peer-qa-review/references/comment-template.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ h4. Inventory / linked artefacts
9999
100100
h4. Guardrails
101101
(/) G1: adjacent components {A}, {B} spot-checked, unchanged
102-
(-) G2: n/a — not a shared-layer change
102+
(off) G2: n/a — not a shared-layer change
103103
(/) G3: default-path of {flag/config} still behaves as before
104104
105105
h4. Documentation
@@ -111,7 +111,7 @@ h4. Rollback / backout
111111
(/) Backout path documented: {how}
112112
113113
h4. Communication
114-
(-) n/a — internal-only change | (/) Announced in {channel} | (!) Customer-affecting; no announcement found
114+
(off) n/a — internal-only change | (/) Announced in {channel} | (!) Customer-affecting; no announcement found
115115
116116
h4. Process compliance
117117
(/) Comments in {code} blocks throughout
@@ -128,7 +128,7 @@ Ready to {transition-name-from-your-system}.
128128

129129
The **verdict line** must match your ticket system's actual transition name *and* the routing rule. For example, in a system where "QA passed" transitions to a customer-acceptance status, do not write "Ready to transition to QA passed" if the verdict is "internal-resolve" — that's a contradiction. Use the literal transition name that matches the routing decision (e.g. "Resolve" for internal-resolve, "QA passed" only when the next stop really is customer acceptance).
130130

131-
Keep it tight. Skip pillars that don't apply (e.g. omit "Communication" if `(-)` n/a). Don't pad with `(/)` for every check — list `(/)` items only when they're load-bearing or non-obvious.
131+
Keep it tight. Skip pillars that don't apply (e.g. omit "Communication" if `(off)` n/a). Don't pad with `(/)` for every check — list `(/)` items only when they're load-bearing or non-obvious.
132132

133133
## Sanity scan before posting
134134

@@ -140,6 +140,8 @@ Re-read your own comment before clicking *Add*. Common self-introduced bugs:
140140
4. **Transition-name vs verdict mismatch** — the verdict's *meaning* and the *literal transition name* must agree (see above).
141141
5. **Pillar P claims vs actual content** — if your P-pillar says "comments use `{code}` blocks" while your comment uses `{{monospace}}` for commands, that's the very contradiction the runbook is meant to prevent.
142142
6. **Link audit on your own references** — every issue key, MR/PR, commit, or external URL you introduce must also exist as a structural link (issue link or web link), not just inline. See F4a (reviewer-side). *Anti-pattern:* "filed as NEW-TICKET" without the link.
143+
7. **Unescaped block-markup tags in prose** — writing *about* `{code}` (or `{noformat}`, `{quote}`, `{panel}`) opens a real block right there in the rendered comment and swallows the rest of the line. These tags are block markup; any inline occurrence in prose is a smell. Escape as `\{code\}` when you mean the literal tag.
144+
8. **Attachment mentioned but not linked** — when your comment references an attached file (session log, screenshot, report), link it with `[^filename.log]` so the reader gets a one-click open. A bare filename forces a scroll-and-hunt through the attachment list.
143145

144146
## Example 1 — Pass (NRS-4365 shape)
145147

@@ -170,8 +172,8 @@ h4. Inventory / linked artefacts
170172
171173
h4. Guardrails
172174
(/) G1: vault role's two adjacent callers (consul, exocortex bootstrap) spot-checked, unchanged
173-
(-) G2: n/a — not a shared-layer change
174-
(-) G3: n/a — no config defaults touched
175+
(off) G2: n/a — not a shared-layer change
176+
(off) G3: n/a — no config defaults touched
175177
176178
h4. Documentation
177179
(!) README "Currently supported platforms" still says Debian 12 only
@@ -181,7 +183,7 @@ h4. Rollback / backout
181183
(/) Single-line template change; rollback = revert tag bump in requirements.yml + re-run ansible. Documented implicitly via git history.
182184
183185
h4. Communication
184-
(-) n/a — internal-only change to internal infrastructure
186+
(off) n/a — internal-only change to internal infrastructure
185187
186188
h4. Process compliance
187189
(/) Comments in {code} blocks throughout

skills/peer-qa-review/references/severity.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ Reuse the standard Atlassian / Jira-wiki icon set. Do **not** invent new categor
1111
| `(!)` | `(!)` | **SHOULD**: real issue, non-blocking *for this ticket* | document; create follow-up if structural |
1212
| `(i)` | `(i)` | **HINT**: improvement suggestion / next-time nice-to-have | document; no action required |
1313
| `(?)` | `(?)` | open question for implementer | block on answer |
14-
| `(-)` | *literal text* `n/a` | not applicable here | none — explicit "we considered this and it doesn't apply" |
14+
| `(off)` | `(off)` | not applicable here | none — explicit "we considered this and it doesn't apply" |
1515

1616
In rendered Jira these become coloured icons. In other systems (GitHub, GitLab, Markdown), use the literal strings — they read clearly even unrendered.
1717

18-
**Watch out for `(-)` specifically**: in Jira wiki the `(-)` token renders as a *forbidden* / *no-entry* icon (🚫), not as "n/a". The forbidden icon visually says "blocked / denied", which is wrong for "not applicable here". Use **literal text** like `*n/a*` or write *"n/a — reason"* instead of the `(-)` token in Jira comments. The other tokens (`(/) (x) (!) (i) (?)`) render with semantically-correct icons.
18+
**Never use `(-)` for "n/a"**: in Jira wiki the `(-)` token renders as a *red* forbidden / no-entry icon, which visually screams "error / blocked / denied" — readers scan it as a failure even though the line lists something that was *considered and intentionally skipped*. Use `(off)` instead: it renders as a subtle grey switched-off lamp, which reads as "nothing active here" without alarm colour. The other tokens (`(/) (x) (!) (i) (?)`) render with semantically-correct icons.
1919

2020
Also avoid using `(/)`, `(x)`, `(!)`, `(i)`, `(?)` literally in *prose* when you mean to *refer to* a finding by its severity. Jira will render the icon mid-sentence, which is visually confusing. Write "the SHOULD-fix finding" or "the warning above" instead of "the `(!)`".
2121

@@ -57,9 +57,9 @@ If you can't decide between `(!)` and `(i)`: ask whether the issue would still b
5757

5858
> *(?) Was the OPNsense config snapshot taken before the major upgrade? I see the patch-update comment but not a snapshot mention.*
5959
60-
### `(-)` — n/a
60+
### `(off)` — n/a
6161

62-
> *(-) Communication (C1–C3): change is internal-only (CI image refresh), no announcement needed.*
62+
> *(off) Communication (C1–C3): change is internal-only (CI image refresh), no announcement needed.*
6363
6464
## Anti-patterns in severity choice
6565

skills/peer-qa-review/scripts/qa-gather.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ find_qa_gather() {
3535
for p in "${search_paths[@]}"; do
3636
[[ -z "$p" ]] && continue
3737
local found
38-
found=$(find "$p" -maxdepth 6 -path '*/skills/jira-communication/scripts/utility/qa-gather.py' 2>/dev/null | head -n1)
38+
found=$(find "$p" -maxdepth 6 \( -path '*/skills/jira-communication/scripts/utility/jira-qa-gather.py' -o -path '*/skills/jira-communication/scripts/utility/qa-gather.py' \) 2>/dev/null | head -n1)
3939
if [[ -n "$found" ]]; then
4040
echo "$found"
4141
return 0

0 commit comments

Comments
 (0)