Compact small files with measured outcomes #18
Labels
No labels
needs-info
needs-triage
ready-for-agent
ready-for-human
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
phg/iodd-tool#18
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent
IODD Tool specification
What to build
Preview and perform small-file compaction on fixture volumes, showing the agreed objective, moved files, limits, and actual free-run result.
Acceptance criteria
Blocked by
Validation contract
Completion requires the applicable independently checked software evidence in Set validation gates and the implementation handoff. A closed policy decision does not establish that implementation tests have passed. Use disposable images/virtual volumes and controlled faults; no hardware-trial or performance gate applies.
Scope
This ticket belongs to the later implementation effort. All planning decisions are resolved; current work covers tracker and documentation updates. The parent specification indexes the authoritative product and software-validation contracts. Forgejo governs live updates; retained local files record the handoff.
Resolution — bounded small-file Compact implemented
Implemented on implement/iodd-tool-spec-7, completed branch 391b463, integration merge 6f6a9b3.
The public operation API and native image workflow preview a bounded beneficial compaction plan, including already-contiguous and fragmented eligible files. Defaults are an inclusive 1 MiB logical threshold and 100 committed moves; reviewed allocation-byte caps and cluster-rounded targets are supported. The declared search considers at most 2048 eligible files, 4096 placement evaluations, the first 4096 free runs for placement proposals and depth 128. Every committed prefix preserves the initial largest free run, and the complete plan must increase it. No-benefit and work-limit results state the bounds without claiming global impossibility. A staging move can commit with zero measured growth; moved files and achieved benefit remain distinct.
Execution retains one exclusive image descriptor, regenerates the full reviewed plan and revalidates remaining identities after each commit. It uses the shared FAT32/exFAT recipe, journal and replay owner. Actual I/O, identity, verification or recovery failures halt subsequent work. Stop completes a safe rollback/forward result before stopping. Per-file results survive final rescan failures; unavailable final metrics are reported as unverified. Create requires its own fresh preview and explicit retry.
The exact final combined source
f9b42d4passed all 182 tests in 820.770 seconds, exit zero, on pinned Xcode27.0/27A266a with ordinary release optimization. Complete Sources and Tests match the evidence-only completed branch. Boundary, mixed-file/metadata, physical write-unit, stale-review, Stop, second-file fault/repeated recovery, legacy nil-witness compatibility and malformed/mismatched full-allocation-witness cases pass. Shared copied-slack and postcommit Stop regressions are reproduced and corrected. Fresh merged checks pass all 26 focused tests/79 cases in 21.498 seconds; release app/worker builds, arm64, plist and both binary macOS15.0 minimum checks pass.Same-source native FAT32/exFAT completion moved two files/1024 allocated bytes and increased the largest run from 10 to 12 clusters. Material review changes required renewed preview/backup acknowledgement. Actual Copying/Stop on a coherent approximately 1.1 GiB FAT32 source, with an explicitly raised reviewed threshold, committed zero moves and preserved the largest run. Independent complete logical/allocation hashes, identities, metadata and free intervals match; nonrepairing checkers exit zero without changing their input image hashes. All owned apps exited and the GUI lock was released.
Reproducible qualification, exact source/artifact record, full logs and native evidence. This qualifies disposable image workflows. External writes, the complete recovery UI and final signed/notarized distribution remain their later tickets. The requested pause begins after this resolution; no new frontier ticket has been started.