# Tasks: Wood Joist Analysis Ordered, dependency-ordered plan. Each task has a spec in `tasks/NNN_name.md`. | # | Task | Files | Status | Depends on | |---|---|---|---|---| | 001 | Numerical core: `calc.py` + `input.yaml` + `results.json` | calcs/wood-joist/calc.py, calcs/wood-joist/input.yaml, calcs/wood-joist/results.json | DONE | — | | 002 | Numerical lock: `test_wood_joist.py` (compute() only) | calcs/wood-joist/test_wood_joist.py | DONE | 001 | | 003 | Presentation: `beam.typ` + compile + Typst metadata test | calcs/wood-joist/beam.typ, calcs/wood-joist/generated/wood-joist.pdf, calcs/wood-joist/test_wood_joist.py (append) | DONE | 001, 002 | | 004 | Documentation refresh: `README.md` + `codemap.md` | README.md, codemap.md | DONE | 003 | | 005 | Reviewer pass on the whole calculation | review notes only | DONE | 004 | | 006 | `check_service` + move load determination to Typst | lib/sheet.typ, calcs/wood-joist/input.yaml, calcs/wood-joist/calc.py, calcs/wood-joist/beam.typ, calcs/wood-joist/results.json | DONE | 001–005 | | 007 | Test updates + Typst load-demand reconciliation | calcs/wood-joist/test_wood_joist.py | DONE | 006 | | 008 | Docs refresh (`README.md` + `codemap.md`) + reviewer pass | README.md, codemap.md | DONE | 006, 007 | ## Notes - Task 001 is the numerical single source of truth; it pins every `results.json` value name and the exact equations. Tasks 002–005 depend on that contract. - The Typst metadata test (steel-beam query pattern) lives with Task 003 because it needs `beam.typ` to exist; Task 002 is purely numerical to keep the dependency graph acyclic. - `generated/` may not exist yet; Task 003 creates it before compiling. - Tasks 006–008 implement the user-approved "move load determination to Typst" change. Task 006 changes the shared `lib/sheet.typ` (additive `check_service` only) and the wood-joist contract; Task 007 adapts the tests and adds the `` reconciliation test; Task 008 refreshes docs and runs the reviewer pass verifying deterministic benchmark evidence. The Pompano Beach benchmark values must stay identical.