feat(fs): own temporary-directory lifecycle behind the facade - #183
Conversation
Refs #182. Validate bounded prefixes, create owner-only Unix directories, retain explicit cleanup and ownership transfer semantics.
|
FastLED adoption is committed and pushed as FastLED/cli@be756d6 in draft PR FastLED/cli#242. Full application Rust tests, strict all-target Clippy, Python 28 passed/1 skipped, Ruff and formatting pass. The same reviewer checked the upstream API, application adoption and documentation with no findings. Upstream compilation-boundary RED -> GREEN graph checks also pass. Extracted fs package verification hit a terminal Soldr relay failure while compiling libc; retry is running, so package verification is not yet claimed. |
|
Extracted-package verification retry completed successfully: soldr cargo package --locked --features fs -j1, 241 files, 3.0 MiB / 763.5 KiB compressed. No source workaround was required after the first terminal Soldr relay failure. Publication and native Windows temporary-directory validation remain pending. |
Scope
Refs #182. Adds an fs-gated facade-owned TemporaryDirectory with bounded prefix validation, private tempfile backend, restrictive Unix creation permissions, absolute cleanup paths, explicit close and persistence. Native creation and recursive cleanup are synchronous and have no wall-clock deadline; drop cleanup is best-effort. No backend types escape.
Validation
Observed RED missing API, then RED Unix permissions before fixing permissions at creation. Five Linux integration tests including a cwd-changing subprocess pass. Full fs suite passes serially, strict all-target Clippy and formatting pass, and default-feature cargo check passes. Native Windows exclusive-handle cleanup regression is included for CI, not claimed locally. One pre-push reviewer found no findings.
Coordination
Coordinated with FastLED/cli#242. Depends on #181; stacked until entropy lands. FastLED has migrated production callers and fixtures and removed direct tempfile; its full workspace tests, strict Clippy and Python tests pass locally. Application cache-publication and download policy remain downstream. Both issue acceptance and removal of the migration path patch require an exact usable published release.