potiuk opened a new pull request, #367:
URL: https://github.com/apache/airflow-steward/pull/367

   ## Summary
   
   The `Affected versions` body field on tracker issues holds version 
expressions like `>= 3.0.0, < 3.2.2`. Without surrounding backticks the leading 
`>` is interpreted by GitHub as a markdown blockquote, so the rendered field 
shows as a quoted single line. Maintainers editing via the issue-form UI then 
see the visible (un-quoted) text and "fix" it by removing the `>=` prefix, 
silently turning a bounded range into a misleading single-version entry like 
`3.2.1` — and the CVE record that follows publishes with the wrong affected 
range.
   
   This was observed in the wild during the 2026-05-28 bulk sync against 
`airflow-s/airflow-s`: multiple trackers had their `Affected versions` field 
re-rendered as a blockquote, then edited down to a bare single version, then 
regenerated into CVE JSON with `{ "version": "3.2.1" }` — instead of `{ 
"lessThan": "3.2.2", "version": "3.0.0", "versionType": "semver" }`.
   
   ## Changes
   
   Two complementary additions to `security-issue-sync`:
   
   1. **Step 1d signal table** — add a row for *"Affected versions field has a 
value but it is not backtick-wrapped"* so sync surfaces and auto-proposes the 
wrap on every run that finds one, even when no other body update is being 
proposed for the tracker.
   
   2. **Step 2b body-field emitter** — add a sentence to the *"Affected 
versions"* derivation rule reminding the emitter to wrap the proposed value in 
backticks, with a cross-reference to the new signal row for the underlying 
reason.
   
   The `generate-cve-json` parser already strips backticks at parse time 
(`cleaned = value.strip().strip("\`").strip()` — `cve_json.py:651`), so this is 
a pure-cosmetic + edit-resilience fix with no semantic change to existing 
trackers or CVE JSON output. The fail-loud parser introduced in #362 continues 
to refuse genuinely un-parseable input; this PR makes the input less likely to 
drift into that state.
   
   ## Test plan
   
   - [x] Skill markdown lints (no new tools / capabilities / yaml schema 
changes, so `skill-and-tool-validate` is the only relevant hook).
   - [x] No code change to the generator → existing parser tests unchanged.
   - [ ] Manual end-to-end: next `/security-issue-sync` invocation against a 
tracker with an un-wrapped `Affected versions` value should surface the wrap as 
a proposed body-field change (verified out-of-band when this lands).
   
   ## Follow-up
   
   The issue template (`.github/ISSUE_TEMPLATE/...`) lives in the adopter repo, 
not in `airflow-steward`. A companion PR against `airflow-s/airflow-s` will 
update the template's placeholder example and add an inline note to the field 
description so reporters and triagers start the value in the right shape.
   
   ##### Was generative AI tooling used to co-author this PR?
   
   - [x] Yes — Claude Opus 4.7 (1M context)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to