Annotated config template, plus a status.md progress-count fix - #41
Merged
Conversation
docs/planning/roadmap.md's status-line parser expects the literal marker `**Status: Done, DATE.**`, but TASK-028/029/030 had drifted to `**Status:** Done, DATE.` (bold only around "Status:"), and TASK-027 was missing a status marker entirely. The generator's regex silently treated all four as not-done, so docs/planning/status.md reported 29/41 tasks (71%) and Stage 4 as 5/9, even though all four tasks are implemented, tested, and merged. Normalized the four markers to the established format; status.md now correctly reports 33/41 (80%) and Stage 4 as 9/9. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
pyflow generate-config (TASK-039) already produces a loadable default config, but PyYAML's safe_dump cannot emit comments, so it carries no explanation of why a value is accepted or rejected. Requested directly by a user reading schema.py section by section to answer "what can I configure and what values does it accept." Add tools/generators/generate_config_template.py, which walks the live PyFlowConfig dataclass tree and renders docs/implementation/config-template.yaml: every field, with a comment above it stating what counts as a valid value and what does not, using the schema's own defaults so the file stays a real, loadable config rather than a set of placeholder tokens. Wire it into the same generated-and-gated pattern every other repository document already follows: `make config-template` to regenerate, `make check-config-template` (now part of `make ci`) to fail on staleness, and a completeness check (test_every_live_config_field_has_a_comment) that fails a plain `make test` the moment a field exists with no matching comment, independent of whether anyone remembered to regenerate the committed file. The "keep it current" obligation this was explicitly asked for is written into src/pyflow/configuration/CLAUDE.md, alongside the two mechanisms that enforce it. Update every document this touches per the Blast Radius rule: root CLAUDE.md and the Makefile's `make ci` target list, tools/generators/ CLAUDE.md and docs/implementation/CLAUDE.md (the new generator and its output), the repository manifest and inventory, and the roadmap's own test-count paragraph (606 -> 614, from this change's own test suite). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
TASK-023 through TASK-026's Status markers are immediately followed by their own artifact path, so generate_status_report.py's "first backtick after Status" heuristic finds the real implementing file. TASK-027/028/ 029/030's Status lines had no such inline path, so the same heuristic fell through to the nearest unrelated backtick reference inside the Intent/Design prose (docs/practices.md, in every case) -- invisible until the prior commit fixed those four tasks' Status markers enough to even be parsed as Done. Add the same inline artifact reference the earlier tasks already use: pressure_coupling.py (PISO)/gradient.py/divergence.py for TASK-027, boundary_condition.py (Dirichlet/NeumannBoundaryCondition) for TASK-028/ 029, and mesh.py's wrapped_neighbour_cell for TASK-030, which bypasses BoundaryCondition entirely. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
docs/planning/status.mdundercounting Stage 4 progress by 4 tasks (29/41 -> 33/41):roadmap.md's status-line parser expects**Status: Done, DATE.**, but TASK-028/029/030 had drifted to**Status:** Done, DATE.and TASK-027 was missing a marker entirely, so all four silently parsed as "Not started" despite being implemented and merged.docs/implementation/config-template.yaml: everyPyFlowConfigfield with a comment stating what's valid and what isn't, generated by a newtools/generators/generate_config_template.pyfrom the live schema (pyflow generate-configalready produces a loadable scaffold, butPyYAMLcan't emit comments). Wired intomake config-template/make check-config-template(now part ofmake ci), with a completeness test that failsmake testthe moment a config field has no matching comment.status.md's Artifact column for TASK-027/028/029/030, which was showing an unrelateddocs/practices.mdreference instead of the real implementing file, once the first fix made those four tasks parse as Done in the first place.Test plan
make cigreen locally (614 tests, all generators/validators pass)Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com