Skip to content

fix: require a delimiter for bare TODO/FIXME markers#144

Merged
REPPL merged 4 commits into
mainfrom
fix/iss-111-marker-false-positives
Jul 26, 2026
Merged

fix: require a delimiter for bare TODO/FIXME markers#144
REPPL merged 4 commits into
mainfrom
fix/iss-111-marker-false-positives

Conversation

@REPPL

@REPPL REPPL commented Jul 26, 2026

Copy link
Copy Markdown
Owner

Fixes ledger issue iss-111 (minor): the open-questions marker pattern matched bare uppercase marker words followed by whitespace, so prose that merely mentions a marker was cited as a work marker — on this repository's durable record (.abcd/development/), 14 such false citations, every one documentation about markers.

Chained PR: base is fix/iss-117-impact-write-paths (#136) — the ledger resolve uses that branch's --impact verb. Only #136 gates this; GitHub retargets on its merge. Sibling PR (the WalkFiles class) shares the same base.

What changed

  • Of the issue's two recorded options, measurement chose dropping the bare-word form for the ambiguous markers only: TODO/FIXME now require a delimiter (: or (), XXX/HACK/BUG keep the bare form. Both options kill the same false-positive class; this one loses strictly less genuine recall (the bare XXX/HACK/BUG spellings survive).
  • Numbers, with scope stated: durable-record false positives 14 → 3; the three survivors literally quote TODO: with its colon and are irreducible under either recorded option (reported to the orchestrator and captured separately). Fixture recall for the conventional spellings is fully preserved; two bare fixtures (# TODO, * FIXME check this) are deliberately reclassified as rejects — they are structurally the false-positive class itself.
  • spc-12's pattern description is amended in the same change (record and surface move together); the amended text is verbatim-identical to the compiled regex, reviewer-checked.
  • The pattern file's own doc-comments were reworded so they contribute zero self-matches when abcd probes this repository.

Verification

  • Test-first: the pinning test's new reject cases and a new integration test (a repo whose CONTRIBUTING.md discusses markers must probe blank) both watched to fail against the old pattern; the integration test drives the real adapter.
  • Independent reviews: security PROMOTE, zero findings (RE2 linear matching, once-compiled pattern, single match per line, all caps intact — the change strictly narrows the match surface). Correctness PROMOTE; its two accuracy NOTES (a non-reproducing figure, self-matching comment examples) were fixed in the third commit and the reviewed code is byte-unchanged.
  • Gate run independently by the orchestrator: make preflight exit 0, record-lint exit 0.
  • iss-111 resolved open/ → resolved/ on this branch with impact: fix.

REPPL added 3 commits July 26, 2026 04:53
The open-questions marker scan grounded evidence/open-questions with a
pattern that admitted a bare uppercase TODO or FIXME followed by
whitespace or end-of-line. On a repository that documents its own
conventions every prose mention of a marker then matched: 18 false
positives across this repo's durable record, all documentation about
markers, none a real work marker.

Split the marker set by trailing boundary: TODO and FIXME now require a
trailing ':' or '(' (the conventional TODO: and TODO(alice): spellings,
how genuine markers are almost always written); XXX, HACK, and BUG keep
their bare-word form, since they are rarely written as bare uppercase
words in prose and dropping it would lose real recall for no measured
precision gain. This kills 100% of the bare-word documentation
false-positive class while preserving every colon-form fixture marker.

spc-12's pattern description moves in the same change. The pinning test
gains the prose-mention reject cases and a probe-level test proving a
repo whose prose merely names markers stays blank.

Assisted-by: Claude:claude-opus-4-8
The marker-pattern false-positive fix landed in the preceding commit;
move the issue to resolved/ with the measured numbers and a fix impact.

Assisted-by: Claude:claude-opus-4-8
Review found two factual-accuracy defects in the iss-111 fix's prose:

1. The "18 false positives" figure did not reproduce. Re-measured the old
   pattern against the base-commit tree, scoped explicitly to the durable
   record (.abcd/development/): 14 before, 3 after. Corrected the figure and
   named the scope in the CHANGELOG entry and the resolved iss-111 note.

2. The new doc-comments naming XXX/HACK/BUG and the TODO: spelling were
   themselves bare-word / delimited marker tokens, so the scan self-cited its
   own prose (the file went 2 -> 3 self-citations). Reworded so the comments
   name the markers only as slice values, not inline; the file's self-match
   count is now 0 (verified by re-running the pattern over the file).

No behaviour change: the pattern, tests, and spec are untouched.

Assisted-by: Claude:claude-opus-4-8
Base automatically changed from fix/iss-117-impact-write-paths to main July 26, 2026 07:49
@REPPL
REPPL merged commit 6d303dd into main Jul 26, 2026
12 checks passed
@REPPL
REPPL deleted the fix/iss-111-marker-false-positives branch July 26, 2026 08:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant