fix(tools): apply #1175 casing fix to residual TOOLS/ call sites#1296
Closed
StarksLabs wants to merge 1 commit into
Closed
fix(tools): apply #1175 casing fix to residual TOOLS/ call sites#1296StarksLabs wants to merge 1 commit into
StarksLabs wants to merge 1 commit into
Conversation
Three more path-construction sites use TitleCase directory names where the canonical case is UPPERCASE in v5.0.0. Invisible on macOS APFS (case-insensitive), broken on Linux ext4/btrfs. - TOOLS/DASchedule.ts:18: "Pulse" → "PULSE" - TOOLS/MemoryRetriever.ts:286: "Tools" → "TOOLS" - TOOLS/pai.ts:34: "Tools" → "TOOLS" Same fix class as #1175 / #1259 / #1267 / #1273. Signed-off-by: Gerald Starks <gerald.starks@icloud.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up to #1175 / #1259 / #1267 / #1273. Audit of
Releases/v5.0.0/.claude/PAI/for residual TitleCase directory names in path-construction calls found three more sites — all inTOOLS/. Same root cause, same fix shape, same risk profile as the prior PRs.On macOS HFS+/APFS (case-insensitive default), TitleCase and UPPERCASE resolve to the same directory — bug is invisible. On Linux ext4/btrfs (case-sensitive), each
join()resolves to a non-existent path and the affected feature silently fails.Confirmed canonical casing in v5.0.0
All top-level dirs except
PAI-Installandbinare UPPERCASE.Fix table
TOOLS/DASchedule.tsjoin(PAI_DIR, "Pulse", "state", "da")"PULSE"TOOLS/MemoryRetriever.tspath.join(PAI_DIR, "Tools", "Inference.ts")"TOOLS"TOOLS/pai.tsjoin(homedir(), ".claude", "PAI", "Tools", "Banner.ts")"TOOLS"Total: 3 string changes across 3 files.
User-visible Linux failures pre-patch:
TOOLS/pai.ts:34—BANNER_SCRIPTpoints at non-existentTools/Banner.ts; banner load fails silently when thepaiCLI runs.TOOLS/DASchedule.ts:18— DA scheduled-task state directory not found; scheduling state cannot be read/written.TOOLS/MemoryRetriever.ts:286—Inference.tsfallback path missing; compression takes the substring-truncation degraded path instead of the LLM compression path.Reproduction (against the release tree)
Each
join(PAI_DIR, "Pulse"|"Tools", …)resolves to one of those ENOENT paths on Linux.Audit method
Six hits on current
mainafter the prior PRs landed. Three were false positives and are NOT touched here:PULSE/pulse-old.ts:49— dead code (zero references anywhere in repo).PAI-Install/engine/actions.ts:1405— per-skillTools/subdir convention (TitleCase), distinct from top-levelTOOLS/.TOOLS/ArchitectureSummaryGenerator.ts:27—DOCUMENTATION/Memory/is the legitimate TitleCase subdir ofDOCUMENTATION/.The remaining three are this PR.
Risk
Very low — identical risk profile to #1175.
Optional follow-up — CI lint
This is the fifth PR in the same bug class (after #1175 / #1259 / #1267 / #1273). A CI lint that fails the build when
"Pulse"|"Memory"|"Algorithm"|"Tools"(TitleCase) appears insidejoin()/path.*/resolve()calls would prevent the next round. Out of scope here.