You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Five new review findings (plus the optional-matcher case from
the third round):
1. matchScope::step — an optional matcher (`repeat.min == 0`)
used to terminate at the first non-matching same-level
heading even when consumed == 0. That made an in-order
optional section after a tolerated extra get flagged as
out-of-order by the leftover pass. The step path now
distinguishes "active run terminated" (consumed > 0) from
"optional not started" (consumed == 0) and, for the latter,
yields to a matching later scope or advances past the
tolerated heading. Test:
TestPlan156_OptionalMatcherSkipsTolerated.
2. matcher.go::resolvePatternForCheck — `fmvar(name)` no longer
passes parse-time validation with a non-CUE-path argument.
`fmvar(my-key)` (unquoted hyphen) now errors at parse with a
pointer at the canonical `fmvar("my-key")` quoting. Test:
TestPlan156_RejectsInvalidFmvarPath.
3. schema_test.go — delete the permanently-skipped
TestParseInline_ContentRejectedOnQuestionMarkHeading. The
`heading: "?"` shape is gone; the test was dead code.
4. acronyms.go::acronymRanges — refresh the function comment so
it matches the repeated-scope behavior the prior round added
(one range per occurrence, not first-match-only).
5. docs/reference/section-schema.md — the "regex: is a CUE
expression" wording oversold what mdsmith actually does. The
resolver handles only `\#(digits)` and `\#(fmvar(...))`;
rewrite the page to describe the helper-only surface.
Known-limitation comment on claimLateScope: out-of-order
recovery still claims one heading and skips repeat/sequential
checks. The in-order matchScope path remains the primary
enforcement surface; non-contiguous run enforcement is tracked
as a separate plan.
https://claude.ai/code/session_012GGH62fZUzLuzP8T4ocGkJ
0 commit comments