docs(comments-clean): bound what the audit is allowed to destroy
The audit deletes comments, and nothing stopped it from taking live code or the operator index along. A line filter over nginx.conf.j2 removed a lone `#}`; the still-open `{#` then swallowed both map directives the edit was meant to add, the comment lint reported `2 passed` over the result, and Jinja parsed it without complaint. Two green signals, one silently disabled config.
Block-comment languages are now excluded from line filtering, with a delimiter count and a re-parse when a block is removed by hand. Verification moves from "the lint is green" to a diff against `git show HEAD:<path>`, because a swallowed block stays syntactically valid. Staging is no longer a precondition for running a check: only an untracked NEW file is invisible to a `git ls-files` walk, so staging a tracked, modified file changes nothing except an index the operator then has to undo.
The re-stage clause from the old step 3 survives at the end of step 5, now scoped to exactly the files that were staged before the audit.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
f06979ea7f
commit
b89fc4097a
1 file changed
+20
-3
@@ -23,9 +23,26 @@ added lines only) and delete every explanatory comment:
|
|||||||
2. Keep only: parameter/exit-code docs, nocheck/noqa/shellcheck directives,
|
2. Keep only: parameter/exit-code docs, nocheck/noqa/shellcheck directives,
|
||||||
and project-sanctioned exception markers that name a concrete trip-wire.
|
and project-sanctioned exception markers that name a concrete trip-wire.
|
||||||
A relabeled narration is not an exception; delete it instead.
|
A relabeled narration is not an exception; delete it instead.
|
||||||
3. Re-run the project's comment lint if one exists and re-stage the files
|
3. Block-comment languages are not line-oriented. In Jinja (`{# … #}`), C-like
|
||||||
that were already staged.
|
(`/* … */`), HTML (`<!-- … -->`) and their kin, a closing delimiter alone on
|
||||||
4. Penalty: if this audit finds anything you wrote yourself, admit it in
|
its own line looks exactly like a comment line and gets deleted with the
|
||||||
|
rest — after which the opening delimiter swallows every live statement down
|
||||||
|
to the next closer. Never strip these languages with a line filter. Delete
|
||||||
|
the whole block by hand, then count the delimiters (`grep -c '{#'` against
|
||||||
|
`grep -c '#}'`) and re-parse the file.
|
||||||
|
4. Re-run the project's comment lint if one exists. A green lint does NOT prove
|
||||||
|
the deletion was safe: a swallowed block is still syntactically valid, so
|
||||||
|
both the lint and the language parser can pass over code that no longer
|
||||||
|
executes. Diff against the pre-edit revision (`git show HEAD:<path>`) and
|
||||||
|
confirm that only comment lines left.
|
||||||
|
5. Do not stage in order to run a check. Repository lints that enumerate through
|
||||||
|
`git ls-files` already see every tracked file and read its worktree content;
|
||||||
|
only an untracked NEW file is invisible to them and needs `git add`. Staging
|
||||||
|
a tracked, modified file before a lint changes nothing except the operator's
|
||||||
|
index, which they then have to undo. Stage only what a requested bundle
|
||||||
|
contains, and re-stage after the audit exactly the files that were staged
|
||||||
|
before it.
|
||||||
|
6. Penalty: if this audit finds anything you wrote yourself, admit it in
|
||||||
the report (file and count, no excuses), lower your confidence numbers
|
the report (file and count, no excuses), lower your confidence numbers
|
||||||
for the affected bundle, and write the incident to persistent agent
|
for the affected bundle, and write the incident to persistent agent
|
||||||
memory (extend the existing minimal-comments feedback entry with the
|
memory (extend the existing minimal-comments feedback entry with the
|
||||||
|
|||||||
Reference in new issue
Block a user