Why
The groom loop logs full issue titles to stderr during evaluation. Log-scan issues may carry PII fragments — email addresses, user IDs, hostnames — in their titles, causing that content to appear in any system capturing process stderr.
Current state
loops/groom.py line 79: log.info("[groom] evaluating #%s: %s", issue_number, issue["title"]). The full unfiltered title is written to stderr for every issue evaluated during a groom run.
Ideal state
- The groom loop logs only the issue number to stderr; titles are not echoed.
- Issue content sourced from error-spike analysis cannot reach stderr through the groom loop.
Starting points
loops/groom.py line 79 — the log.info("[groom] evaluating #%s: %s", issue_number, issue["title"]) call
QA plan
- Run a groom loop invocation and capture stderr.
- Confirm no issue title text appears in the captured output.
- Confirm the issue number still appears.
Done when
groom.py emits no issue title content in any log or stderr output.
Why
The groom loop logs full issue titles to stderr during evaluation. Log-scan issues may carry PII fragments — email addresses, user IDs, hostnames — in their titles, causing that content to appear in any system capturing process stderr.
Current state
loops/groom.pyline 79:log.info("[groom] evaluating #%s: %s", issue_number, issue["title"]). The full unfiltered title is written to stderr for every issue evaluated during a groom run.Ideal state
Starting points
loops/groom.pyline 79 — thelog.info("[groom] evaluating #%s: %s", issue_number, issue["title"])callQA plan
Done when
groom.pyemits no issue title content in any log or stderr output.