# Task 004 — Documentation refresh: README.md + codemap.md ## Goal Index the new concentric footing calculation in the shared documentation so the next engineer can discover and compile it without reading source. ## Background Depends on footing.typ existing. This task is typst-builder-local (documentation only). Conventions per PROJECT_STATE.md: compile with --root ., hybrid pattern, no modification to existing calcs. ## Files to Modify - `README.md` — the shared worksheets readme that lists calcs. At present this file lives at `calcs/wood-joist/README.md` which serves as the de-facto worksheets README (it documents all sheets). Also check for `README.md` at `worksheets/` root if it exists. Update whichever exists; if both exist update both with same concentric-footing entry. If only `calcs/wood-joist/README.md` exists, that is the file to edit. - `codemap.md` — update at `worksheets/codemap.md` (and copy to `calcs/concentric-footing/codemap.md` if the per-calc map is expected). Regenerate the whole map rather than editing in place per codemap rules. ## Implementation ### 1. README.md Add a new section `## Concentric footing` after the Wood joist section, following the same style. Include: - One-sentence description: "Square concentric spread footing under axial load per ACI 318-19 — soil bearing, one-way/two-way shear, flexure, minimum steel, concrete bearing." - Compile commands: ``` python calcs/concentric-footing/calc.py typst compile --root . calcs/concentric-footing/footing.typ calcs/concentric-footing/generated/footing.pdf python -m pytest calcs/concentric-footing/test_concentric_footing.py ``` - Stdout variant: ``` python calcs/concentric-footing/calc.py --input calcs/concentric-footing/input.yaml --stdout ``` and `--output` note. - Note on load derivation: `input.yaml` supplies checked `Ps`/`Pu` (Pint quantities) and footing geometry/materials; `footing.typ` derives `Ps`/`Pu` inline from `DLr=10psf, LLr=20psf, Br=18.9ft, Lr=27.5ft, column 14in×14ft @145pcf` and reconciles via `` query; bearing plate width `bp=6in` governs `A1`. - Update the top index code block to add line: ``` calcs/concentric-footing/ YAML quantities → Pint → JSON → Typst (ACI 318-19) ``` - Ensure the 5-step New calculation list remains unchanged. If editing `worksheets/README.md` vs `calcs/wood-joist/README.md`, keep both in sync; prefer editing the file that actually exists and then copying the change to the other if both are present. ### 2. codemap.md Regenerate at `worksheets/codemap.md` (and also write copy to `calcs/concentric-footing/codemap.md` if needed for per-calc root check): - Re-run classification for all 37+ files including the new `calcs/concentric-footing/calc.py [logic]`, `input.yaml [config]`, `footing.typ [logic]`, `test_concentric_footing.py [test]`, `results.json [state]`, `generated/footing.pdf [doc]`, `CONCENTRIC-FOOTING.pdf [doc]`. - The layout section must now show `calcs/concentric-footing/` expanded with its 5 planned + 3 reference entries. - Hot Spots must now include `calcs/concentric-footing/calc.py` as single source of truth. - Conventions section must mention the new sheet's hybrid Pint pattern and Typst load derivation. - Timestamp updated to now, Files indexed incremented. Do not write summaries from imagination; if uncertain read first 20 lines. ## Acceptance Criteria 1. `README.md` contains a new `## Concentric footing` section with compile, stdout, and load-derivation notes; top index code block lists the new calc. 2. `codemap.md` at `worksheets/codemap.md` exists, is well-formed markdown with header, layout, hot spots, conventions; it lists `calcs/concentric-footing/` and its files. 3. `python -m pytest calcs/concentric-footing/test_concentric_footing.py -v` still passes (12 tests). 4. No existing calc logic files modified; only docs/maps changed. ## Tests ``` python -m pytest calcs/concentric-footing/test_concentric_footing.py -v typst compile --root . calcs/concentric-footing/footing.typ calcs/concentric-footing/generated/footing.pdf ``` Both succeed; PDF still compiles. ## Dependencies Task 003 must be DONE.