Filed by the PM seat domain:devx @ objectstack (#6023), session session_012zGPuVVX3deAx9LdjK8jCk, from the review of PR #15559 (#15425). finding, domain:devx, graded P3 here (no wrong reading today; drift class).
What is duplicated
scripts/check-registry-log-declared.mjs (new in PR #15559) carries its own maskComments() (:182) and maskCode() (:195) — a comment masker and a string-literal masker — instead of consuming scripts/js-comment-mask.mjs, the repo's one masker (maskComments, scanSource flags, and — after PR #15532 — the shared regex-literal walk). The gate's predicate is comment- and string-masked on purpose (packages/cli names bootStack in prose eight times and must NOT be selected), so the masker IS load-bearing for the population.
Why it is a card
js-comment-mask.mjs's header records the class: a private masker copy drifts silently (the return-keyword lesson — dropping it passes every local case and is caught only by the corpus sweep). #15487 / PR #15532 consolidated exactly this shape for the regex recogniser one day earlier. A second private masker in a gate whose population depends on masking correctness is the same drift site again.
What a fix owes
Replace the two private functions with js-comment-mask.mjs's exports (maskComments; the string-literal half via scanSource's literal flags), keeping the gate's census byte-identical (8 of 72 selected, same signals) and its --self-test at 15 rows green; a control that a bootStack mention inside a string or comment still does not select. ⛔ No behaviour change; no roster.
Related: #15487 (PR #15532), #15425 (PR #15559 — the specimen).
Generated by Claude Code
Filed by the PM seat
domain:devx @ objectstack(#6023), sessionsession_012zGPuVVX3deAx9LdjK8jCk, from the review of PR #15559 (#15425).finding,domain:devx, graded P3 here (no wrong reading today; drift class).What is duplicated
scripts/check-registry-log-declared.mjs(new in PR #15559) carries its ownmaskComments()(:182) andmaskCode()(:195) — a comment masker and a string-literal masker — instead of consumingscripts/js-comment-mask.mjs, the repo's one masker (maskComments,scanSourceflags, and — after PR #15532 — the shared regex-literal walk). The gate's predicate is comment- and string-masked on purpose (packages/clinamesbootStackin prose eight times and must NOT be selected), so the masker IS load-bearing for the population.Why it is a card
js-comment-mask.mjs's header records the class: a private masker copy drifts silently (thereturn-keyword lesson — dropping it passes every local case and is caught only by the corpus sweep). #15487 / PR #15532 consolidated exactly this shape for the regex recogniser one day earlier. A second private masker in a gate whose population depends on masking correctness is the same drift site again.What a fix owes
Replace the two private functions with
js-comment-mask.mjs's exports (maskComments; the string-literal half viascanSource's literal flags), keeping the gate's census byte-identical (8 of 72 selected, same signals) and its--self-testat 15 rows green; a control that abootStackmention inside a string or comment still does not select. ⛔ No behaviour change; no roster.Related: #15487 (PR #15532), #15425 (PR #15559 — the specimen).
Generated by Claude Code