# Roadmap

The roadmap is deliberately staged. Parser correctness and reproducible tests
come before broad format support or mounted writes.

## Milestone 1: parser foundation

Status: complete.

- create the Rust crate and library-first module structure;
- add `clap`, `thiserror`, and `tracing`;
- implement validated 512-byte block reading;
- decode ProDOS filenames and lowercase flags;
- parse volume headers and directory entries;
- read linked directories;
- resolve seedling and sapling files;
- add parser-focused tests using artificial byte arrays;
- document the absence of copyrighted disk images.

The original plan placed FUSE behind this milestone. The repository has since
advanced beyond that placeholder stage.

## Milestone 2: read-only filesystem

Status: implemented, with real mount testing still environment-dependent.

- isolate `fuser` behind the `macfuse` Cargo feature;
- implement inode and attribute mapping;
- implement `lookup`, `getattr`, `readdir`, `open`, `read`, and `statfs`;
- return read-only errors for mutation operations;
- expose ProDOS metadata through read-only xattrs or debug filenames;
- add tree-file and nested-directory parsing.

Mounted writes and Finder metadata writes remain out of scope.

## Milestone 3: offline image inspection

Status: implemented.

- list image contents;
- provide separate Unix-style `ls` and ProDOS-style `catalog` views;
- display detailed ProDOS metadata;
- extract a selected file to a host path or standard output;
- keep inspection independent from FUSE.

Planned additions:

- recursive listings;
- recursive extraction to host directories;
- optional metadata sidecars;
- machine-readable output.

## Milestone 4: conservative offline maintenance

Status: experimental first slice implemented.

- create raw ProDOS-order images;
- create root and nested subdirectories;
- add regular files to the root or existing subdirectories;
- allocate seedling, sapling, and tree storage;
- validate bitmap placement;
- roll back failed in-memory mutations;
- save through temporary-file replacement;
- round-trip written images through the read-only parser.

Before expanding this layer:

- test more fragmented and sparse allocation patterns;
- verify generated images with independent ProDOS tools;
- add freely redistributable compatibility fixtures.

Next operations:

1. grow full directory chains;
2. import and extract directory trees recursively;
3. replace files safely;
4. rename entries;
5. delete entries and release blocks;
6. write and preserve timestamps;
7. infer or preserve Apple II file metadata.

## Milestone 5: broader compatibility

- add write support for extended files and resource forks;
- detect or explicitly handle 2MG containers;
- improve Finder interoperability without accepting mounted writes;
- add filesystem consistency checking and diagnostics;
- consider additional Apple II formats only behind separate adapters.

## Non-goals for the current releases

- writable FUSE mounts;
- pretending unsupported mutations succeeded;
- automatic repair of corrupt images;
- bundling copyrighted disk images;
- claiming full CiderPress format coverage.
