Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
ac4e952
docs: plan for ingest streaming and maintainability
HarlanHeilman Apr 16, 2026
47666a6
perf(ingest): bulk-read FITS pixels in read_image_i32
HarlanHeilman Apr 16, 2026
726cf24
perf(ingest): drop duplicate /processed zarr array in write_frame_raw
HarlanHeilman Apr 16, 2026
8216275
perf(ingest): use RETURNING instead of SELECT-after-INSERT in catalog…
HarlanHeilman Apr 16, 2026
4f5f0fa
perf(ingest): batch catalog transactions with small-scan coalescing
HarlanHeilman Apr 16, 2026
5470a34
refactor(ingest): clean up T4 review findings
HarlanHeilman Apr 16, 2026
778d836
perf(ingest): stream zarr phase with bounded-parallel read->write
HarlanHeilman Apr 16, 2026
b582a26
perf(ingest): parallelize headers phase per-file instead of per-scan
HarlanHeilman Apr 16, 2026
196d443
refactor(io): unify bulk BITPIX=16 pixel reader in src/io/raw_pixels.rs
HarlanHeilman Apr 16, 2026
b44b104
refactor(catalog): move flatten_fits_error to catalog/mod.rs and docu…
HarlanHeilman Apr 16, 2026
b64e1ba
refactor(ingest): replace stringly-typed phase labels with IngestPhas…
HarlanHeilman Apr 16, 2026
d3378bf
refactor(ingest): idiomatic IngestPhase::as_str + stronger wire-forma…
HarlanHeilman Apr 16, 2026
93501c6
refactor(ingest): split ingest_beamtime_inner into phase functions wi…
HarlanHeilman Apr 16, 2026
e2c1926
refactor(ingest): extract catalog-phase helpers and add is_cancelled …
HarlanHeilman Apr 16, 2026
db88dbd
test(ingest): synthetic-beamtime test harness + bench script (T10)
HarlanHeilman Apr 16, 2026
fc92dda
fix(bench): remove --use-default-paths escape hatch per T10 spec
HarlanHeilman Apr 16, 2026
83d0bfe
refactor(t10): tighten synthetic beamtime fidelity and type hints
HarlanHeilman Apr 16, 2026
85b066d
test(catalog): drop per-phase-label assertions from progress callback…
HarlanHeilman Apr 16, 2026
d7dc39e
feat(cli): add pyref Typer app and ingest watcher integration
HarlanHeilman Apr 17, 2026
d0a03a5
feat(catalog): per-scan Zarr uint16 stacks, migration tool, and confi…
HarlanHeilman Apr 20, 2026
cb366e6
perf: streaming ingest, catalog schema (header_values, pruned frames)…
HarlanHeilman Apr 22, 2026
148ee4c
docs: organize prototyping API and workflow specs
HarlanHeilman Apr 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 78 additions & 40 deletions AGENTS.md

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 9 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,13 @@ name = "browser"
path = "src/bin/browser.rs"
required-features = ["tui"]

[[bin]]
name = "migrate-zarr-3d"
path = "src/bin/migrate_zarr_3d.rs"
required-features = ["catalog"]

[features]
default = ["bindings", "catalog", "parallel_ingest"]
default = ["bindings", "catalog", "parallel_ingest", "watch"]
bindings = ["dep:pyo3", "dep:pyo3-polars", "dep:numpy"]
extension-module = ["bindings", "pyo3/extension-module", "pyo3/generate-import-lib"]
catalog = [
Expand All @@ -30,6 +35,7 @@ catalog = [
"dep:walkdir",
"dep:zarrs",
"dep:crossbeam-channel",
"dep:zstd",
]
parallel_ingest = ["catalog"]
zarr = ["catalog"]
Expand Down Expand Up @@ -61,7 +67,8 @@ directories = {version = "6", optional = true}
notify-debouncer-mini = {version = "0.4", optional = true}
log = {version = "0.4", optional = true}
eframe = {version = "0.28", optional = true, default-features = true}
zarrs = {version = "0.23", optional = true, default-features = false, features = ["filesystem", "ndarray"]}
zarrs = {version = "0.23", optional = true, default-features = false, features = ["filesystem", "ndarray", "zstd", "sharding", "crc32c"]}
zstd = {version = "0.13", optional = true, default-features = false}
diesel = { version = "2.2", optional = true, features = ["sqlite", "returning_clauses_for_sqlite_3_35", "32-column-tables"] }
diesel_migrations = {version = "2.2", optional = true, features = ["sqlite"]}
libsqlite3-sys = {version = "0.28", optional = true, features = ["bundled"]}
Expand Down
37 changes: 37 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Documentation Index

## Prototyping and Development

Current prototyping and development guidance lives under:

- `docs/prototyping/README.md`
- `docs/prototyping/comprehensive_implementation_plan.md`
- `docs/prototyping/development_documentation_guidelines.md`

## Workflow and API Specifications

The active workflow/API specs are maintained under `docs/prototyping/`:

### API Design

- `docs/prototyping/api-design/api_flow_design.md`
- `docs/prototyping/api-design/catalog_api_reference.md`
- `docs/prototyping/api-design/header_normalization_spec.md`

### References

- `docs/prototyping/references/header_summary_rules_schema.md`

### Workflows

- `docs/prototyping/workflows/cell_01_catalog_and_selection.md`
- `docs/prototyping/workflows/cell_02_profile_split.md`
- `docs/prototyping/workflows/cell_03_classify_and_i0_linking.md`
- `docs/prototyping/workflows/cell_04_mask_and_beamspot.md`
- `docs/prototyping/workflows/cell_05_persist_mask_and_spot_overrides.md`
- `docs/prototyping/workflows/cell_06_reduction_and_uncertainty.md`
- `docs/prototyping/workflows/cell_07_role_diagnostics.md`
- `docs/prototyping/workflows/cell_08_stitch_compute.md`
- `docs/prototyping/workflows/cell_09_profile_comparison_and_export.md`
- `docs/prototyping/workflows/just_process_flow.md`
- `docs/prototyping/workflows/lazy_refresh_with_watcher.md`
53 changes: 53 additions & 0 deletions docs/prototyping/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Prototyping and Development Documentation

## Purpose

This section is the canonical planning surface for the catalog-first PRSoXR API and notebook-driven prototyping pipeline.

All agents and contributors should start here before proposing implementation changes.

## Primary Documents

- `docs/prototyping/comprehensive_implementation_plan.md`
- `docs/prototyping/development_documentation_guidelines.md`

## Workflow Specifications

### API Design

- `docs/prototyping/api-design/api_flow_design.md`
- `docs/prototyping/api-design/catalog_api_reference.md`
- `docs/prototyping/api-design/header_normalization_spec.md`

### References

- `docs/prototyping/references/header_summary_rules_schema.md`

### Workflows

- `docs/prototyping/workflows/cell_01_catalog_and_selection.md`
- `docs/prototyping/workflows/cell_02_profile_split.md`
- `docs/prototyping/workflows/cell_03_classify_and_i0_linking.md`
- `docs/prototyping/workflows/cell_04_mask_and_beamspot.md`
- `docs/prototyping/workflows/cell_05_persist_mask_and_spot_overrides.md`
- `docs/prototyping/workflows/cell_06_reduction_and_uncertainty.md`
- `docs/prototyping/workflows/cell_07_role_diagnostics.md`
- `docs/prototyping/workflows/cell_08_stitch_compute.md`
- `docs/prototyping/workflows/cell_09_profile_comparison_and_export.md`
- `docs/prototyping/workflows/just_process_flow.md`
- `docs/prototyping/workflows/lazy_refresh_with_watcher.md`

## Notebook Prototyping Targets

The `notebooks` directory should contain one prototype notebook per workflow stage:

- `notebooks/00_catalog_backend_and_migration.ipynb`
- `notebooks/01_beamtime_scan_sample_views.ipynb`
- `notebooks/02_profile_split_and_header_normalization.ipynb`
- `notebooks/03_classification_and_i0_linking.ipynb`
- `notebooks/04_mask_and_beamspot_interactive.ipynb`
- `notebooks/05_reduction_and_uncertainty_budget.ipynb`
- `notebooks/06_role_qc_and_bad_point_flagging.ipynb`
- `notebooks/07_stitch_factors_and_propagation.ipynb`
- `notebooks/08_profile_comparison_and_export.ipynb`
- `notebooks/09_just_process_end_to_end.ipynb`
Loading
Loading