Run Defrag All with accurate outcomes #17

Closed
opened 2026-10-11 19:10:46 +00:00 by phg · 1 comment
Owner

Parent

IODD Tool specification

What to build

Preview and run the agreed set of fragmented files on a fixture volume, reporting each file and the true final state after completion or Stop.

Acceptance criteria

  • Defrag All follows the approved selection/prioritization policy and presents its intended work and skipped files before execution.
  • The batch composes already verified single-file transactions for both supported filesystems.
  • Per-file successful, skipped, failed, cancelled, and recovery-required outcomes remain visible after the batch.
  • A recovery-required transaction halts further mutation and its evidence cannot be overwritten by a later successful file.
  • Stop starts no further transaction after the safe boundary and distinguishes no-change from partial completion.
  • A fresh analysis reflects actual disk allocation after success, partial success, or safe cancellation.
  • Public-operation tests independently verify contents and allocation across mixed-result and interrupted batches.

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.

## Parent [IODD Tool specification](https://git.s1q.dev/phg/iodd-tool/issues/7) ## What to build Preview and run the agreed set of fragmented files on a fixture volume, reporting each file and the true final state after completion or Stop. ## Acceptance criteria - [ ] Defrag All follows the approved selection/prioritization policy and presents its intended work and skipped files before execution. - [ ] The batch composes already verified single-file transactions for both supported filesystems. - [ ] Per-file successful, skipped, failed, cancelled, and recovery-required outcomes remain visible after the batch. - [ ] A recovery-required transaction halts further mutation and its evidence cannot be overwritten by a later successful file. - [ ] Stop starts no further transaction after the safe boundary and distinguishes no-change from partial completion. - [ ] A fresh analysis reflects actual disk allocation after success, partial success, or safe cancellation. - [ ] Public-operation tests independently verify contents and allocation across mixed-result and interrupted batches. ## Blocked by - [Defragment a file on an exFAT image](https://git.s1q.dev/phg/iodd-tool/issues/16) ## Validation contract Completion requires the applicable independently checked software evidence in [Set validation gates and the implementation handoff](https://git.s1q.dev/phg/iodd-tool/issues/6). 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.
phg self-assigned this 2026-10-13 17:45:37 +00:00
Author
Owner

Resolution — reviewed Defrag All with accurate outcomes implemented

Implemented on implement/iodd-tool-spec-7, completed branch b6bc6e5, integration merge cbc9aef.

The public operation API and native image workflow freeze the full-volume movable fragmented candidate set, independently of display filters or IODD annotations, ordered by descending allocated bytes with stable pathname ties. Review discloses exact simulated destinations and no-change/pinned skips; one explicit backup acknowledgement applies to the reviewed operation. Execution regenerates the complete plan and revalidates each remaining file and allocation after earlier verified moves. Predictable nonmutating destination-space skips continue; actual I/O, stale identity/content, verification or recovery failures halt. Stop starts no later transaction after safe rollback/forward completion. Per-file completed/skipped/failed/cancelled/recovery/not-started results and authoritative evidence remain visible. A failed final rescan reports failed/unverified instead of false completion.

Final corrected source b1c5ffe passed all 166 tests in 782.627 seconds with ordinary release optimization on pinned Xcode27.0/27A266a. This includes mixed skips/success, allocated-size/path ties and hidden/read-only files, pre/postcommit/between-file Stop, external changes, second-file recovery, closure I/O failure that still halts after retry, subsequent evidence-blocked batches and inherited geometry/fault/replay suites. Independent oracles verify full logical/allocation hashes, exFAT ValidDataLength, preserved metadata and literal destinations. The shared FAT32 copied-slack false-success and postcommit cancellation regressions are reproduced and fixed: new relocation journals bind complete allocation, while old nil-witness version-1 journals retain their prior compatibility.

Integration preserves exact qualified Sources/Tests/package/build scripts. Fresh merged checks pass 10 tests/44 cases in 3.915 seconds; arm64 app/worker release builds, plist and macOS15.0 minimum checks pass. Corrected-source native FAT32/exFAT completion and actual Copying/Stop on a greater-than-4-GiB exFAT file pass independent content/allocation/VDL/literal-placement oracles and nonrepairing checkers with unchanged checker input hashes. All owned apps exited and the host GUI lock was released.

Reproducible validation, complete logs, both regression fixes and native evidence. This qualifies disposable image workflows. Native raw-write, complete recovery UI and final distribution gates remain their later tickets. Existing unresolved and default recovery evidence is preserved. The user-requested pause applies after the remaining current Compact ticket completes; no new frontier has been started.

## Resolution — reviewed Defrag All with accurate outcomes implemented Implemented on [implement/iodd-tool-spec-7](https://git.s1q.dev/phg/iodd-tool/src/branch/implement/iodd-tool-spec-7), completed branch [b6bc6e5](https://git.s1q.dev/phg/iodd-tool/commit/b6bc6e52dce1baa2244b62afc01b6e60b3d36869), integration merge [cbc9aef](https://git.s1q.dev/phg/iodd-tool/commit/cbc9aef4cdd87e5e1e2e8799bcd8623dceb6eaf9). The public operation API and native image workflow freeze the full-volume movable fragmented candidate set, independently of display filters or IODD annotations, ordered by descending allocated bytes with stable pathname ties. Review discloses exact simulated destinations and no-change/pinned skips; one explicit backup acknowledgement applies to the reviewed operation. Execution regenerates the complete plan and revalidates each remaining file and allocation after earlier verified moves. Predictable nonmutating destination-space skips continue; actual I/O, stale identity/content, verification or recovery failures halt. Stop starts no later transaction after safe rollback/forward completion. Per-file completed/skipped/failed/cancelled/recovery/not-started results and authoritative evidence remain visible. A failed final rescan reports failed/unverified instead of false completion. Final corrected source b1c5ffe passed all 166 tests in 782.627 seconds with ordinary release optimization on pinned Xcode27.0/27A266a. This includes mixed skips/success, allocated-size/path ties and hidden/read-only files, pre/postcommit/between-file Stop, external changes, second-file recovery, closure I/O failure that still halts after retry, subsequent evidence-blocked batches and inherited geometry/fault/replay suites. Independent oracles verify full logical/allocation hashes, exFAT ValidDataLength, preserved metadata and literal destinations. The shared FAT32 copied-slack false-success and postcommit cancellation regressions are reproduced and fixed: new relocation journals bind complete allocation, while old nil-witness version-1 journals retain their prior compatibility. Integration preserves exact qualified Sources/Tests/package/build scripts. Fresh merged checks pass 10 tests/44 cases in 3.915 seconds; arm64 app/worker release builds, plist and macOS15.0 minimum checks pass. Corrected-source native FAT32/exFAT completion and actual Copying/Stop on a greater-than-4-GiB exFAT file pass independent content/allocation/VDL/literal-placement oracles and nonrepairing checkers with unchanged checker input hashes. All owned apps exited and the host GUI lock was released. [Reproducible validation, complete logs, both regression fixes and native evidence](https://git.s1q.dev/phg/iodd-tool/src/commit/cbc9aef4cdd87e5e1e2e8799bcd8623dceb6eaf9/docs/validation/defrag-all.md). This qualifies disposable image workflows. Native raw-write, complete recovery UI and final distribution gates remain their later tickets. Existing unresolved and default recovery evidence is preserved. The user-requested pause applies after the remaining current Compact ticket completes; no new frontier has been started.
phg closed this issue 2026-10-13 19:02:59 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
phg/iodd-tool#17
No description provided.