By: Michael Lynch <git@mtlynch.io>
Validate grocery sections with typed values Add a Section type that trims leading and trailing whitespace and rejects empty section names. Move section-bearing handler and store APIs to use typed section values, converting to raw strings only at user-input, rendering, and SQLite boundaries. Add a SQLite migration that trims legacy section names across grocery items, item-section mappings, stored list items, and section ordering. The migration rebuilds section_ordering through a temporary table keyed by the trimmed name so entries that collide after trimming collapse to the earliest sort order. Testing: - ./dev-scripts/run-go-tests - ./dev-scripts/git-hooks/pre-commit - nix flake check
| Time to Start | Worker time | Duration | Time to finish | |
| Config | 2s | 8s | 8s | 11s |
| Eval | 8s | 1m23s | 1m23s | 1m32s |
| Build | 28s | 12m12s | 19m13s | 19m41s |
| Suite | 2s | 13m44s | 19m39s | 19m41s |