Context
The full Linux Dylint run for fbuild 2.5.29 fails with 19 ban_std_pathbuf errors in the new crates/fbuild-build-esp/src/esp32/esp32_linker_tests.rs split out by #1509. The test module constructs Esp32Linker, whose existing constructor and fields take raw PathBuf; the production implementation in esp32_linker.rs is already on the legacy lint allowlist. Moving tests to a separate file exposed this existing API boundary. The release-gate fix in #1510 needs a documented exception for this test file, then the exception should be retired by migrating the API.
The risk is real: raw paths can differ in spelling on Windows, affecting cache-key behavior (#436, #437, #282). The tests are currently the narrow place where raw values are necessary to exercise the unchanged linker API.
Proposal
- For the immediate release gate, document and allowlist only
esp32_linker_tests.rs under ban_std_pathbuf, leaving production behavior unchanged.
- Migrate
Esp32Linker owned path inputs/fields and dependent call sites to NormalizedPath where possible; retain raw PathBuf only at genuine OS/FFI edges.
- Remove the temporary test-file allowlist entry when the test constructors can use normalized paths.
Acceptance criteria
Decisions
Related issues
Context
The full Linux Dylint run for fbuild 2.5.29 fails with 19
ban_std_pathbuferrors in the newcrates/fbuild-build-esp/src/esp32/esp32_linker_tests.rssplit out by #1509. The test module constructsEsp32Linker, whose existing constructor and fields take rawPathBuf; the production implementation inesp32_linker.rsis already on the legacy lint allowlist. Moving tests to a separate file exposed this existing API boundary. The release-gate fix in #1510 needs a documented exception for this test file, then the exception should be retired by migrating the API.The risk is real: raw paths can differ in spelling on Windows, affecting cache-key behavior (#436, #437, #282). The tests are currently the narrow place where raw values are necessary to exercise the unchanged linker API.
Proposal
esp32_linker_tests.rsunderban_std_pathbuf, leaving production behavior unchanged.Esp32Linkerowned path inputs/fields and dependent call sites toNormalizedPathwhere possible; retain rawPathBufonly at genuine OS/FFI edges.Acceptance criteria
ban_std_pathbufexception and avoid adding a broad exemption.Decisions
PathBuf; redesigning production path plumbing inside a release-gate PR would broaden risk.Related issues
PathBufmigration plan.