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

   ## Summary
   
   Adds two mandatory pre-classification steps to `security-issue-triage`:
   
   - **Step 2.5 — Apply the Security Model verbatim**: the classifier must 
quote the relevant 2-3 sentences of the project's Security Model and explain 
how the tracker maps to (or escapes) that wording. A trust-boundary cheat-sheet 
codifies the common attacker/target combinations into default dispositions, so 
the classifier cannot skip the boundary analysis silently.
   - **Step 2.6 — Closed-tracker precedent search**: extends the existing 
fuzzy-dup search to look for closed-as-invalid and closed-as-not-CVE-worthy 
precedents (today the search only finds open-tracker dedup candidates). A 
STRONG rejection precedent lowers proposal confidence and often swings the 
disposition.
   
   ## Motivation
   
   In a 2026-05-14 triage sweep against `airflow-s/airflow-s`, the first-pass 
classification got 8 of 9 trackers wrong — proposed VALID/DEFENSE-IN-DEPTH for 
cases that had direct NOT-CVE-WORTHY precedents (e.g. airflow-s#258 for the 
`__classname__ → import_string` pattern, airflow-s#215 / #237 for 
cross-DAG-read via Execution API). The misclassifications were caught after a 
second round of human pushback ("check past similar issues; read the Security 
Model deeply"). This PR codifies "read the Security Model deeply" and "check 
past similar issues" as mandatory steps in the skill instead of relying on the 
human to push back.
   
   ## Test plan
   
   - [ ] Re-run `/security-issue-triage` against airflow-s#404-#412 (the cases 
that originally tripped this) and confirm the new Step 2.5 trust-boundary 
cheat-sheet produces the correct first-pass dispositions for each.
   - [ ] Confirm Step 2.6 finds airflow-s#258 when triaging a new report 
describing `import_string()` with attacker-controlled classnames inside the 
Triggerer / parser / worker pool.
   - [ ] Run `gh search issues` against a closed tracker label that doesn't 
exist (e.g. `closed:invalid`-but-no-matches) to confirm the empty case is 
handled cleanly.
   - [ ] Budget check: total `gh search` calls per tracker stay within the 
documented ≤5 envelope (the new closed search shares the same 5-call cap with 
the existing open search).
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   


-- 
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