Define fixed VHD creation and allocation failure behavior #3
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#3
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
Context
The confirmed scope is a native Swift app for macOS 15+ on Apple Silicon, all external FAT32/exFAT disks including fixed media, and IODD mini/newer image-capable devices. Fixed VHD creation requires a valid container and verified complete-file contiguous allocation. Current work is planning and ticket publication only; implementation is a later effort. The public volume-operation API against disposable images is the confirmed main testing boundary.
Type: grilling
Mode: HITL
Question
What should a user-sized fixed VHD creation operation accept, produce, and report, including enough total space but no sufficiently large free run?
Decide virtual capacity versus host file size in the UI, decimal/binary units, alignment/rounding, filesystem/device limits, filename/destination, overwrite behavior, zero-filled/uninitialized versus partitioned/formatted guest contents, and footer validation. Require contiguous host allocation for the complete VHD and an independent final extent check.
Choose failure behavior when a VHD fits total free space but not the largest free run: refuse with a useful explanation, offer a separately previewed compaction operation, or another evidence-backed workflow. Decide whether existing data may ever be moved as part of Create, and what explicit user intent is required. Define estimates, progress/cancellation, partial-file publication/cleanup, retry, recovery, and final remount/verification outcomes using the chosen transaction contract.
Resolve with the user using concrete size/allocation examples. A structurally valid but internally unpartitioned VHD is distinct from an image containing a ready-to-use guest filesystem.
Blocked by
Record ownership
This Forgejo issue governs the live implementation prerequisite. The original local planning question and its history are retained; the implementation publication index links both records. This HITL decision remains open until the user resolves it. Publication does not resolve the original decision or approve production disk writes.
Interview checkpoint — capacity entry, guest contents, free-run failure, and destination
phg agreed to all four recommendations in the first interview round on 12 October 2026:
These are agreed interview choices, not the final resolution. Capacity bounds/defaults, estimates/progress, detailed allocation examples, outcome/retry presentation, and the final shared-understanding check remain. The engine/recovery prerequisite continues to govern publication, commit, cleanup, and interruption. Planning-only scope is unchanged.
Interview checkpoint — capacity bounds, progress, and interrupted creation
phg agreed to all three recommendations in the second interview round on 12 October 2026:
All seven interview choices are agreed. The final shared-understanding check remains pending, including the footer-crossing example and metadata/workspace budget inherited from the engine contract. This checkpoint does not close the ticket or authorize implementation or physical-media writes.
Resolution — fixed VHD creation and allocation failure behavior
Confirmed by phg on 12 October 2026 through seven agreed interview choices and the final shared-understanding check. This hosted resolution is the authoritative creation contract; maps and retained local records link here rather than duplicating it.
Current scope remains planning and specification only. The later implementation follows the supported envelope in Set the supported volume and device contract and the ownership, journal, commit, recovery, and remount contract in Choose the filesystem engine and recoverable mutation contract.
Capacity entry and limits
Preview and allocation arithmetic
For accepted virtual capacity C and host cluster size K, use checked arithmetic:
Concrete boundary examples agreed during the interview:
Destination and guest contents
Fixed format and independent final verification
Insufficient space and prerequisite compaction
Progress and time estimates
Publication, cancellation, recovery, and retry
Completion and remount outcomes
Remaining route and evidence
No new decision ticket is needed. Compaction policy belongs in Define analysis, defrag, and compaction success criteria; concrete creation/progress/recovery presentation belongs in Validate the native analysis and VHD creation workflows; exact validation/performance gates and implementation staging belong in Set validation gates and the implementation handoff. No production build or physical-media test is authorized here.
The retained format, IODD compatibility and engine/recovery research supply evidence, not universal firmware guarantees. The first two interview checkpoint comments retain the seven choices; phg then confirmed the combined contract, including the footer-crossing/workspace example, before this resolution was published. The glossary records uninitialized guest disk separately from container validity and contiguous host allocation.