Correct scanner accounting and verify release packaging #2
@@ -0,0 +1,90 @@
|
||||
# Live queue
|
||||
|
||||
## Current scope
|
||||
|
||||
Harden Sized for reuse by the native SpaceMonger-inspired SizeQueen project.
|
||||
The user authorized fixes and updates discovered during that investigation.
|
||||
Keep the existing CLI useful and preserve the GPL-3.0-only license.
|
||||
|
||||
- [x] Correct allocated-size totals for hard links; retain apparent per-path
|
||||
sizes and define deterministic ownership within each scan.
|
||||
- [x] Preserve scan errors and expose incomplete results instead of silently
|
||||
treating missing paths as accessible empty directories.
|
||||
- [x] Expose cancellable scans, progress counters, per-scan worker selection,
|
||||
and an optional filesystem boundary for the native UI.
|
||||
- [x] Add accounting and control regressions; run the existing CLI tests and
|
||||
compare bounded release-build scan measurements.
|
||||
- [x] Run reproducible Linux ARM64 and AMD64 Docker checks as an unprivileged
|
||||
user, including actual mount boundaries, strict Clippy and a release smoke test.
|
||||
- [x] Commit the scanner hardening and Linux check tooling; push the existing
|
||||
`sizequeen-scan-hardening` review branch. Remote equality is verified.
|
||||
Open a PR when ready; release/tag/package publication remains separate.
|
||||
|
||||
## Proposed next work
|
||||
|
||||
SizeQueen now includes a byte-identical scanner snapshot in a small core crate,
|
||||
removing terminal dependencies and allowing independent builds. Extract that
|
||||
shared core upstream in a separate PR after the behaviour changes are reviewed;
|
||||
terminal formatting is already separate from scan logic.
|
||||
Windows allocation support and very-large/deep-tree tuning need separate evidence.
|
||||
README/MANUAL/Cargo metadata still contain legacy GitLab addresses; reconcile
|
||||
them against available Gitea releases before changing distribution instructions.
|
||||
Before producing release assets, fix and verify `scripts/release.sh`: it currently
|
||||
creates the tarball before copying the executable into its input directory.
|
||||
Do not release/tag/publish automatically. The requested review-branch push is
|
||||
authorized; see `SHIPMENT.md` for source review and the separate release process.
|
||||
|
||||
## Resume note
|
||||
|
||||
Linux validation and the requested remote review branch are complete.
|
||||
Scanner hardening is `8b177e2`; repeatable Linux checks and equivalent format
|
||||
interpolations are `988aad9`. Both implementation commits are pushed to
|
||||
`origin/sizequeen-scan-hardening`; SSH verified remote/local equality at
|
||||
`988aad99510c0424cf0db5a116d9086183da74a5`. Gitea main remains `9c8d1d4`.
|
||||
The repository was already public (`private: false`); visibility is unchanged.
|
||||
No PR, merge, tag, package publication or release occurred.
|
||||
|
||||
`scripts/check-linux.sh` owns the container workflow. Linux ARM64 (native in
|
||||
Docker's VM) and AMD64 (emulated on this Mac) each passed 23 tests as UID 65532:
|
||||
5 library, 6 CLI, 11 scan integrations and one explicitly enabled real-mount
|
||||
integration. `tests/linux_mount.rs` checks two distinct tmpfs devices through
|
||||
the library and CLI, with boundaries enabled and disabled. Formatting, strict
|
||||
all-target Clippy and an optimized-binary fixture smoke test passed on both.
|
||||
Mac passed its 22 applicable tests, formatting and strict Clippy. Commands are
|
||||
documented in README/SHIPMENT; full local logs are in ignored
|
||||
`target/linux-checks/{arm64,amd64}.log`. Cargo.lock and unrelated `.DS_Store`
|
||||
hashes are unchanged; only source inputs and owned fixtures enter the checks.
|
||||
|
||||
Rust 1.88 Clippy identified format-string style warnings; equivalent
|
||||
interpolations fix those without suppressions. SizeQueen's included scanner
|
||||
still matches `8b177e2` exactly; the follow-up changes only one scanner Display
|
||||
format string, not scan behaviour. SizeQueen itself was unchanged in this pass.
|
||||
Next: open/review a PR against main, calling out CLI partial-scan status and
|
||||
library/API changes. Keep shared-core extraction as the following proposed PR,
|
||||
then choose a release version and repair/verify packaging when release work
|
||||
is authorized. These checks do not prove desktop X11/Wayland interaction,
|
||||
Windows allocation or performance on very large/cold/remote trees.
|
||||
|
||||
Previous local checkpoint: baseline `9c8d1d4` matched Gitea main;
|
||||
branch `sizequeen-scan-hardening`.
|
||||
All six baseline tests passed. SizeQueen's independent probe reproduced
|
||||
hard-link overcount and missing-path misclassification, and confirmed sparse
|
||||
allocation, symlink leaf handling, and hidden-file inclusion. Source inspection
|
||||
found discarded walker errors and no scan control API. These scoped corrections
|
||||
are implemented locally, with no push, tag, or release. `cargo test --locked`
|
||||
passed 22 tests (5 library, 6 CLI, 11 scan integrations); strict all-target
|
||||
Clippy passed. The independent SizeQueen probe passed 6 accounting tests.
|
||||
Man page was regenerated. Cargo.lock is unchanged and unrelated `.DS_Store`
|
||||
was preserved.
|
||||
|
||||
Release probes on the Mac took 49–56ms for 20,000 files; sorting, identity
|
||||
tracking, diagnostics and control cost more than the baseline (29–39ms for
|
||||
the grouped tree). Inline Node size grew from 88 to 136 bytes; whole-process
|
||||
peak RSS was about 8.2MiB grouped / 16.7MiB wide. These are bounded warm-metadata
|
||||
fixtures, not evidence for million-entry, cold-disk, or remote-filesystem speed.
|
||||
Cancellation is cooperative between filesystem calls. Allocation is reported
|
||||
blocks, not guaranteed bytes recoverable from shared extents or snapshots.
|
||||
|
||||
Detailed audit and bounded probes are maintained in the sibling SizeQueen
|
||||
project at `../sizequeen/research/SIZED-AUDIT.md`; that project's product queue
|
||||
remains separate from this backend's fix queue.
|
||||
Reference in New Issue
Block a user