Follow-up from /page-gm 2026-07-13 (see #112 / PR #113).
scripts/doc-policy-lint.mjs:30 uses PLACEHOLDER_RE = /\b(?:TODO|TBD|N\/A)\b/i via allLineMatches (line ~308) to emit active_placeholder findings on active docs. Same false-positive class as #112: legitimate prose in an active doc (e.g. "the migration step is not applicable here") produces a spurious finding.
Severity is lower than #112: doc-policy-lint is report-only (warnings, never a blocking gate), so this is advisory noise rather than a round-trip cost. Filed so it is tracked and not dropped (the sibling in this class previously sat unactioned in a friction log for two days before re-biting).
Suggested fix: reuse the line-anchoring approach from #112 (leading-token / whole-line) so mid-sentence prose passes.
Also worth a look while here: scripts/agent/lib.mjs ISSUE_PLACEHOLDER_RES (issue-body placeholder detection) — verify it is not anywhere-matching the same way.
Follow-up from /page-gm 2026-07-13 (see #112 / PR #113).
scripts/doc-policy-lint.mjs:30usesPLACEHOLDER_RE = /\b(?:TODO|TBD|N\/A)\b/iviaallLineMatches(line ~308) to emitactive_placeholderfindings on active docs. Same false-positive class as #112: legitimate prose in an active doc (e.g. "the migration step is not applicable here") produces a spurious finding.Severity is lower than #112: doc-policy-lint is report-only (warnings, never a blocking gate), so this is advisory noise rather than a round-trip cost. Filed so it is tracked and not dropped (the sibling in this class previously sat unactioned in a friction log for two days before re-biting).
Suggested fix: reuse the line-anchoring approach from #112 (leading-token / whole-line) so mid-sentence prose passes.
Also worth a look while here:
scripts/agent/lib.mjsISSUE_PLACEHOLDER_RES(issue-body placeholder detection) — verify it is not anywhere-matching the same way.