Files
sized/TODO.md
T
gamertan 67fe175ec7
Sized Linux checks / Linux AMD64 / Rust 1.88.0 (push) Failing after 5s
Run Sized Linux checks on the existing Gitea runner
2026-10-09 18:46:33 -04:00

6.1 KiB
Raw Blame History

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.

  • Correct allocated-size totals for hard links; retain apparent per-path sizes and define deterministic ownership within each scan.
  • Preserve scan errors and expose incomplete results instead of silently treating missing paths as accessible empty directories.
  • Expose cancellable scans, progress counters, per-scan worker selection, and an optional filesystem boundary for the native UI.
  • Add accounting and control regressions; run the existing CLI tests and compare bounded release-build scan measurements.
  • Run reproducible Linux ARM64 and AMD64 Docker checks as an unprivileged user, including actual mount boundaries, strict Clippy and a release smoke test.
  • 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.
  • Enable repository Actions and run the same Linux checks on the existing cliff-mads runner. Keep its container isolation and other jobs unchanged; verify a real workflow result before treating CI as proven.

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

Current CI checkpoint: repository Actions is enabled. The existing cliff-mads runner is healthy (gitea-runner v3.1.0, native AMD64). The workflow reuses its himesan-node24 label and a separately built Rust/Node image; runner configuration, other jobs and repository visibility are unchanged. The image bootstrap probe verified UID 65532, workspace-volume ownership, Rust 1.88.0/Node 24.19.0 and distinct tmpfs devices. Actual Gitea checkout/check execution is still pending; do not call CI proven until the real workflow completes.

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.