Preview fixed VHD creation #12

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

Parent

IODD Tool specification

What to build

Choose a destination and virtual capacity, then preview exact VHD length, required allocation, and creation eligibility before any write.

Acceptance criteria

  • A native creation form applies the resolved units, rounding, capacity bounds, guest initialization, destination, and overwrite policies.
  • The preview distinguishes accepted virtual capacity, exact file length including the 512-byte footer, and cluster-rounded consumption.
  • Preflight compares required consecutive clusters with the actual largest free run and budgets the chosen metadata/recovery workspace.
  • Enough total free space but insufficient contiguous space, invalid sizes, existing destinations, and unsupported targets have distinct outcomes.
  • FAT32 maximum and one-aligned-sector-beyond cases, footer/cluster crossings, and overflow are checked without allocating enormous test files.
  • The approved allocation-failure and prerequisite-movement policy is shown explicitly; preview performs no mutations.
  • A stale snapshot or changed destination invalidates the preview before an execution request can proceed.
  • Operation-boundary tests and thin UI checks independently verify the accepted capacity and displayed explanation.

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 Choose a destination and virtual capacity, then preview exact VHD length, required allocation, and creation eligibility before any write. ## Acceptance criteria - [ ] A native creation form applies the resolved units, rounding, capacity bounds, guest initialization, destination, and overwrite policies. - [ ] The preview distinguishes accepted virtual capacity, exact file length including the 512-byte footer, and cluster-rounded consumption. - [ ] Preflight compares required consecutive clusters with the actual largest free run and budgets the chosen metadata/recovery workspace. - [ ] Enough total free space but insufficient contiguous space, invalid sizes, existing destinations, and unsupported targets have distinct outcomes. - [ ] FAT32 maximum and one-aligned-sector-beyond cases, footer/cluster crossings, and overflow are checked without allocating enormous test files. - [ ] The approved allocation-failure and prerequisite-movement policy is shown explicitly; preview performs no mutations. - [ ] A stale snapshot or changed destination invalidates the preview before an execution request can proceed. - [ ] Operation-boundary tests and thin UI checks independently verify the accepted capacity and displayed explanation. ## Blocked by - [Analyze a FAT32 image](https://git.s1q.dev/phg/iodd-tool/issues/8) - [Define fixed VHD creation and allocation failure behavior](https://git.s1q.dev/phg/iodd-tool/issues/3) ## 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 10:26:50 +00:00
Author
Owner

Resolution — fixed VHD creation preview implemented

Implemented on implement/iodd-tool-spec-7, implementation f251bf8, integration merge a133e4d.

The native creation form and public preview API apply exact binary MiB/GiB decimal arithmetic, alignment/minimum/ceiling/FAT32 limits, explicit corrections, footer-inclusive EOF and cluster allocation. Existing directory records, actual FAT32/exFAT collation and short-alias reservations implement create-only destination checks. The preview reserves one complete image run plus separate supported directory/metadata allocation and conservative serialized/replay recovery workspace on the Mac. Total-space/run/workspace/collision/unsupported/stale outcomes are distinct; preview performs no writes. Compact remains a separate reviewed operation followed by fresh analysis and a renewed Create request.

Validation: all61 integrated public-operation tests pass on Xcode27.0/27A266a Swift6.4, including exact fraction/overflow/limit/one-sector-beyond/footer-crossing boundaries without enormous files, directory growth/collisions and unchanged image hashes. Independent literal reservations and native read-only collation checks agree. Native macOS26.6.2/25G83 checks exercise default1GiB exactC/L/A/32769-cluster explanation, byte-preserving MiB/GiB switches, misalignment correction with explicit renewed preview, create-only collisions, policy/guest explanation and stale invalidation. Release executable is arm64; plist and binary minimumOS15.0 are verified.

Reproducible evidence and native screenshot. The disabled execution control accurately reflects the remaining image execution/recovery slices13/14. Actual exclusive revalidation, complete zero initialization/readback and publication remain those tickets; baseline/current-stable release qualification remains the later gate.

## Resolution — fixed VHD creation preview implemented Implemented on [implement/iodd-tool-spec-7](https://git.s1q.dev/phg/iodd-tool/src/branch/implement/iodd-tool-spec-7), implementation [f251bf8](https://git.s1q.dev/phg/iodd-tool/commit/f251bf8), integration merge [a133e4d](https://git.s1q.dev/phg/iodd-tool/commit/a133e4dad695e394d0acba34dcf2979b47f02035). The native creation form and public preview API apply exact binary MiB/GiB decimal arithmetic, alignment/minimum/ceiling/FAT32 limits, explicit corrections, footer-inclusive EOF and cluster allocation. Existing directory records, actual FAT32/exFAT collation and short-alias reservations implement create-only destination checks. The preview reserves one complete image run plus separate supported directory/metadata allocation and conservative serialized/replay recovery workspace on the Mac. Total-space/run/workspace/collision/unsupported/stale outcomes are distinct; preview performs no writes. Compact remains a separate reviewed operation followed by fresh analysis and a renewed Create request. Validation: all61 integrated public-operation tests pass on Xcode27.0/27A266a Swift6.4, including exact fraction/overflow/limit/one-sector-beyond/footer-crossing boundaries without enormous files, directory growth/collisions and unchanged image hashes. Independent literal reservations and native read-only collation checks agree. Native macOS26.6.2/25G83 checks exercise default1GiB exactC/L/A/32769-cluster explanation, byte-preserving MiB/GiB switches, misalignment correction with explicit renewed preview, create-only collisions, policy/guest explanation and stale invalidation. Release executable is arm64; plist and binary minimumOS15.0 are verified. [Reproducible evidence and native screenshot](https://git.s1q.dev/phg/iodd-tool/src/commit/a133e4dad695e394d0acba34dcf2979b47f02035/docs/validation/creation-preview.md). The disabled execution control accurately reflects the remaining image execution/recovery slices13/14. Actual exclusive revalidation, complete zero initialization/readback and publication remain those tickets; baseline/current-stable release qualification remains the later gate.
phg closed this issue 2026-10-13 11:16:11 +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#12
No description provided.