Defragment a file on an exFAT image #16
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#16
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
Extend the selected-file defrag workflow to exFAT images while preserving bitmap, FAT, stream, and entry-set correctness.
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 — exFAT image defragmentation implemented
Implemented on implement/iodd-tool-spec-7, completed branch 4ff6393, integration merge a4ec902.
The native reviewed defrag workflow and public operation API now relocate complete exFAT allocation through the existing bounded journal, destination-only writes, checked durable commit, rollback/forward replay, registry and retirement protocol. Bitmap/FAT ownership, NoFatChain publication, spanning entry checksums, DataLength/ValidDataLength, supported vendor allocations and opaque benign secondaries are revalidated and preserved. Complete allocated bytes, including slack and the raw ValidDataLength tail, are streamed and verified. Physical-unit-aware destinations and imported recovery recipes refuse outside permitted geometry/allocation. Padded bitmap scans pin the complete declared FAT chain while buffering only meaningful bits; known vendor entries enforce their actual flag semantics. Budget-exhausted or malformed scans withhold global claims and write authority.
Validation: final source
bbe6601passed all 124 tests in 843.200s with ordinary release optimization on pinned Xcode 27.0/27A266a. This includes all 62 rich/spanning geometry pairs, a greater-than-4-GiB 9,001-cluster file, 1,022 initial/torn/repeated-replay fault cases, short transfers, Stop, foreign/corrupt/missing evidence, expanded physical units, bitmap resource limits and valid/invalid/unknown secondary cases, plus FAT32 regression. Completed4ff6393and integrationa4ec902preserve the exact qualified Sources/Tests/scripts trees. Fresh integration smoke passes 5 named tests / 18 cases; arm64 release, plist and minimum macOS 15 checks pass.Native image workflow evidence covers explicit preparation/backup/review/Confirm, progress, verified completion and safe Stop. The supplemental native matrix records 66 completed image-backed moves, 21 nonrepairing checker passes and 45 explicit driver sector-mismatch refusals; these refusals are not native geometry passes. Independent content/bitmap oracles are separate from optional full-container checker hashes. Root also executed the final-source standalone public probe on pristine macOS 15.6.1/24G90 arm64: all three files retained logical and full allocated hashes, lengths/ValidDataLength/attributes/entry offsets; the reviewed literal clusters 7–9 form one extent and independent bitmap ownership passes. Its supplemental report is retained in the shared execution context for final release validation.
Reproducible validation, complete logs, native evidence and qualification limits. Qualification covers disposable regular images and internal recovery storage. Raw-device access, physical-media behavior and final signed/notarized release remain separate tickets. Existing recovery evidence is preserved.