This plan tracks the staged implementation for asdf-firefly, focused on Roman Space Telescope ASDF products. Update it whenever scope or status changes.
Not Started: no implementation yet.Planned: design is documented and ready to build.In Progress: code is being implemented.Blocked: waiting on a decision, dependency, or external behavior.Done: implemented, tested, and documented.
The project currently has documentation, an initial SPEC.md, and a completed package scaffold. The documented scope is Roman WFI ASDF inspection, efficient local and remote source access, and Firefly handoff.
Project spec:
- Status:
Planned SPEC.mdcaptures goals, constraints, CLI interfaces, invariants, tasks, and bug table in caveman format.FORMAT.mdis not present; spec formatting currently follows the installedcavemanskill grammar.
Status: Done
Deliverables:
pyproject.tomlwith package metadata, console script, dependencies, and optional extras.src/asdf_firefly/package layout.tests/layout with minimal generated fixtures.- Basic CI-ready commands for
pytest,ruff check, andruff format --check.
Acceptance criteria:
asdf-firefly --helpruns.pytestdiscovers the test suite.- Documentation commands reflect the actual package name, CLI entry point, and Roman product examples.
Status: Done
Deliverables:
- Shared ASDF source resolver for local paths, HTTP(S) URLs, and S3 URIs.
infocommand.treecommand with--depth,--types,--arrays, and--find.getcommand with slash-separated path resolution.validatecommand using ASDF validation APIs.
Relevant docs:
README.md: command examples.DEVELOPER.md: ASDF navigation and core rules.
Acceptance criteria:
- Commands open ASDF files through context managers.
- S3 sources are opened through
fsspec/s3fsfile-like objects when theremoteextra is installed. - Missing remote dependencies produce a clear install hint.
- Large arrays are summarized, not printed.
- Metadata-only remote commands avoid whole-object downloads where a seekable stream is available.
- Missing paths return the documented path-not-found exit code.
Status: Planned
Deliverables:
- Tree walker for scalar, mapping, array, table, and unsupported object classification.
tablescommand.imagescommand.- Conservative WCS metadata detection.
Acceptance criteria:
- Astropy tables and structured NumPy arrays are listed as table-like.
- 2D arrays are listed as image-like.
- Unsupported candidates include a reason.
Status: Planned
Deliverables:
table show.table export.table open.- Output formats: ECSV, CSV, FITS table, VOTable, and Parquet where optional dependencies are installed.
Relevant docs:
- Astropy Table unified I/O.
- Firefly table documentation.
Acceptance criteria:
- Terminal previews are row-limited by default.
- ECSV export preserves table metadata where Astropy supports it.
- Unsupported format and optional dependency errors are clear.
- Firefly handoff uses an exported temporary table file.
Status: Planned
Deliverables:
image export.image open.- FITS export for 2D arrays.
- Initial
--planesupport for 3D cubes. - Best-effort FITS WCS/header preservation.
Relevant docs:
- Astropy FITS I/O.
- Firefly FITS visualization documentation.
Acceptance criteria:
- Exported FITS files can be opened by Astropy.
- Firefly handoff uses a readable FITS file.
- Warnings are emitted for metadata that cannot be represented in FITS.
Status: Planned
Deliverables:
- Config file loading from
~/.config/asdf-firefly/config.toml. ASDF_FIREFLY_URLandASDF_FIREFLY_KEEP_TEMPenvironment variable support.- Local and remote Firefly URL handling.
- Temporary file retention with
--keep-temp.
Acceptance criteria:
- A configured Firefly URL is used consistently by
table openandimage open. - Temporary files are cleaned up by default.
--keep-tempprints the retained file path.
Status: Planned
Deliverables:
- Version command.
- Build metadata.
- Optional
remoteextra for S3 URI dependencies. - Release notes template.
- Contributor workflow documented.
Acceptance criteria:
- Package builds locally.
- Installation exposes the console script.
- README installation instructions match the package metadata.
- Roman ASDF files can contain mission-specific tagged objects that require optional extension packages.
- WCS conversion from ASDF/GWCS to FITS headers may be partial or impossible for some data products.
- Firefly handoff behavior depends on deployment configuration and may require server-side file access or URL-accessible files.
- Large arrays and tables can cause accidental memory pressure if previews or exports are not bounded.
- Remote ASDF performance depends on ASDF block layout, seek behavior, cache configuration, object-store latency, and whether the command needs to materialize selected data.
asdf-astropy,gwcs, androman-datamodelsare optional Roman extras for now; revisit if core commands require typed Roman objects instead of raw fallback metadata.- Decide the exact Firefly open mechanism for local files: Python wrapper, URL launch, upload endpoint, or deployment-specific plugin.
- Decide whether
fits-headershould inspect only embedded FITS metadata or also synthesized FITS headers from ASDF metadata. - Decide which remote authentication profiles, beyond the default S3/AWS provider chain, should be documented.
- Context7 lookup for
/asdf-format/asdf,/astropy/astropy, and/textualize/rich. - Web search and upstream docs for ASDF overview and standard.
- ASDF Python
asdf.open(...)API docs confirming file-like object and HTTP URI support. - fsspec and s3fs docs confirming protocol-prefixed file opening and seekable S3 file-like objects.
- Upstream Roman ASDF data model and extension package documentation.
- GitHub and upstream docs for
Caltech-IPAC/firefly, including FITS visualization, table display, and Python wrapper references.