oxiproj-engine 0.1.2

Proj-string parser, operation dispatch, and transformation pipelines for OxiProj.
Documentation
# oxiproj-engine — TODO

## Status

This crate is the proj-string engine — tokenizer/parser, operation dispatch, `prepare`/`finalize`, and transformation pipelines; it is feature-complete for the v0.1.x PROJ 9.8.0 port.

## Completed (v0.1.x)

- [x] Proj-string tokenizer/parser: `parse`, `ParamList`, `ParamView`.
- [x] `Context` (errno, ellipsoid/datum resolution, `TmercAlgo`) and `setup_ellipsoid` (derive ellipsoid params from any valid axis/flattening combination).
- [x] `prepare`/`finalize`: lon/lat scaling, `x0`/`y0`/`k0`/`lon_0` handling.
- [x] Operation dispatch (`create`): resolves a proj-string to a concrete `Pj` chaining projections and transformations.
- [x] Pipeline (`Pipeline`): `+proj=pipeline +step` with per-step `+inv`, plus `push`/`pop`.
- [x] Entry points: `create` / `trans` / `trans_array`.
- [x] `proj_factors` (numeric) accessor via `Pj::factors`.

## Residual PROJ-parity gaps

- [x] **T2.P1** (0.1.1 · Medium) — per-step `+omit_fwd` / `+omit_inv` pipeline flags (not currently parsed). See root T2.P1.
- [x] **Q1** (0.1.1 · Easy) — remove stale `TODO(v0.2)` comments in `pj.rs` / `setup.rs`; the datum-shift functionality is in fact delivered via `create.rs` pipeline injection, so the comments are misleading. See root Q1.
- [x] **T3.P1** (0.1.1 · Medium) — wire `+nadgrids=` single-op grid datum-shift on the `create` path. See root T3.P1.

## Beyond PROJ

- [x] **T2.4** (0.1.1 · Hard) — Fused/compiled pipelines: `pipeline_opt.rs` implements two optimizer rules — (1) complete-noop removal (steps with both `omit_fwd+omit_inv` dropped), (2) adjacent `axisswap` pair cancellation (identical wrapper params, no selective omits). `op_name: String` added to `Pj`. Identity Helmert detection is deliberately deferred (Helmert params live inside `Box<dyn Operation>`, not in `Pj` wrapper fields; the all-zero guard already exists in `build_datum_shift_pipeline`). See root T2.4.
- [x] **T2.3** (0.1.1 · Medium) — Const-eval projection setup: ellipsoid constants in `oxiproj-core::const_params`. See root T2.3.
- [ ] **T3.1** (0.1.1 · Hard) — Epoch-aware pipeline construction (auto time-Helmert + PMM + epoch propagation). **flagship**. See root T3.1.
- [x] **T7.1** (0.1.1 · Hard) — `Pj::factors_exact()` implemented: builds 2×2 Jacobian via `Dual1<2>` AD through `ProjectGenericBox`, feeds `FactorsExact::from_jacobian()` for exact Tissot h/k/s/ω/γ. See root T7.1.

## See also

- Root roadmap: [`../../TODO.md`](../../TODO.md)
- Crate overview: [`README.md`](README.md)