Rust implementation of an OpenTaxSolver-style pipeline using:
- a DSL parser for legacy form inputs,
- declarative TOML rule schemas,
- a DAG execution runtime with pluggable hooks,
- and a stable text renderer.
Build the CLI binary named ots:
cargo build --release --bin otsRun a return:
target/release/ots run US1040 test/example_us_1040.txt [--year 2025]Default year behavior: if --year is omitted, the CLI uses current year - 1.
src/main.rs: CLI orchestration (run <form-name> <file-path> [--year]).crates/ots-core: shared domain model, schema loading, DAG construction, and DAG execution runtime.crates/ots-dsl: parser/tokenizer and cursor helpers for OTS-style input files.crates/ots-forms: form/year registry and hook implementations (currentlyUS1040for2025).crates/ots-render: output formatting for line/value emission.crates/ots-import: placeholder crate for prior-return imports.crates/ots-pdf-markup: placeholder crate for MarkupPDF parsing/serialization.crates/ots-tax-tables: placeholder crate for loading tax tables.
- Parse DSL input into generic
FormState. - Resolve form/year and load rules TOML.
- Build execution DAG from schema.
- Register schema hooks and form-specific runtime hooks.
- Execute DAG to compute derived values.
- Render all schema fields in canonical output format.
data/2025/us1040.rules.toml: declarative fields/rules/hooks schema.data/2025/us1040.toml: constants consumed by form hooks.
- Implemented: end-to-end
US10402025 run flow viaots run. - In progress: additional forms/years and fuller feature parity with legacy OTS behavior.