E14 · F11 — A code base ready for curves
Benefit hypothesis: the debt E01 left — repeated test helpers, two path writers, a folder of 50 model files, functions without a property test — is paid before curves add a second kind of point, so that E14 builds on one structure instead of two.
Written at RET-001 (2026-10-13), at the Product Owner's request: plan the clean-up and the folder structure before the next epic. Its stories are drafts; the Product Owner sets them ready.
Acceptance criteria
- The test helpers repeated across files (typing in a field, reading a text, mounting the playground, building a rectangle, the shoelace area) live once, in shared test modules.
- The library has one writer of path data;
contourToPathDataand its separators are gone or are the writer's oracle only, declared once. - A rounded contour computes each corner's triple and turning angle once.
- The folders of
src/andplayground/follow the layout chosen by SP-010, written indocs/conventions/files.md; no folder holds more than the limit it sets. - Every function of
src/math/andsrc/geometry/has a property test: the list oftests/fitness.test.tsis empty. - Behavior is unchanged: every existing test passes, with the same values.
Stories
In delivery order.
| ID | Type | Title | Status |
|---|---|---|---|
| SP-010 | Spike | Research for F11: folder layouts and test placement | draft |
| EN-020 | Enabler | Property tests for the nine functions without one | draft |
| EN-021 | Enabler | Shared test helpers, one path writer, one pass per corner | draft |
| CHK-010 | Checkpoint | Checkpoint in the middle of F11 | draft |
| EN-022 | Enabler | Folders of the library and the playground | draft |
| AUD-010 | Audit | Audit F11 | draft |
| VAL-010 | Validation | Validate F11 | draft |
Feature plan
| Acceptance criterion | Realized by | Verified by |
|---|---|---|
| F11.AC1 | EN-021 | AUD-010 |
| F11.AC2 | EN-021 | AUD-010 |
| F11.AC3 | EN-021 | AUD-010 |
| F11.AC4 | SP-010, EN-022 | AUD-010 |
| F11.AC5 | EN-020 | tests/fitness.test.ts |
| F11.AC6 | every story | npm run check:all |