fix(preflight): host-PATH gate handles path-like binaries (./gradlew) + review cleanups - #90
Conversation
…dant import; tighten migration test (review follow-ups) Three non-blocking advisories from the split dogfood PRs #88/#89: (1) check_stack_reality's container-note gate used shutil.which(b), which always returns None for a path-like binary like ./gradlew (a project-local wrapper, never on PATH) — so a Gradle-wrapper project with a Dockerfile and no root build.gradle got a spurious "toolchain in container" note. The gate now file-checks path-like binaries ((target_dir / b).exists()) and only consults shutil.which for bare names. (2) the inline `import shutil` inside check_stack_reality was redundant (shutil is imported at module top) and is removed. (3) test-sessionstart-matcher-migration.sh case 2 now asserts the marker-clear migrates OUT of a user's mixed matcherless group (exactly once, under startup|clear), not merely that the user hook survives — and the F1 CHANGELOG bullet's stale "subset" description is corrected to the shipped placement-set pre-pass. New ./gradlew case in test-stack-reality-preflight.sh. No behavior change for non-path stacks. --check clean, 105/105 fixtures. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
VERDICT: PASS PR adds three post-merge advisory cleanups from the same review round (#88/#89): (1) fixes a false-positive container note for path-like binaries like Reviewed all four changed files. The |
What
Rolls up the three non-blocking advisories the AI reviewer left on the now-merged split dogfood PRs (#88 F1, #89 F2). One logical change: post-merge review cleanups for the stack-reality work. No new feature.
Changes
./gradlewfalse-positive (real, narrow).check_stack_reality's container-note gate usedshutil.which(b), which always returnsNonefor a path-like binary like./gradlew(a project-local wrapper, never on PATH). A Gradle-wrapper project with aDockerfile/compose and no rootbuild.gradletherefore got a spurious "toolchain lives in the container" note. The gate now file-checks path-like binaries ((target_dir / b).exists()) and only consultsshutil.whichfor bare names.shutilis imported at module top; the inlineimport shutilincheck_stack_realityis removed.test/retrofit-hooks/test-sessionstart-matcher-migration.shcase 2 now asserts the marker-clear migrates out of a user's mixed matcherless group (exactly once, understartup|clear) — the surgical behavior the shipped placement-set migration actually has — rather than only checking the user hook survives. The F1 CHANGELOG bullet's stale "subset / left untouched" description (written against my first migration attempt) is corrected to the shipped placement-set pre-pass. New./gradlewcase intest/cc-manifest/test-stack-reality-preflight.sh.Verification
configure.py --checkclean; 105/105 fixtures; dry-run repro of[ STACK WARNINGS ]unaffected for the normal pnpm path (positive=1, negative=0). No behavior change for non-path stacks.Scope
fix-only cleanup; notested_up_to/CC_VERSIONbump.🤖 Generated with Claude Code