Skip to content

war-followup: redaction lint (CI + new gate wrapper) never walks docs/learnings/archive/ — ~104 committed lessons unlinted #1135

Description

@Ljferrer

Surfaced by the correctness seat auditing Task 1.1 of plan 5 (#1130), phase-1 tip c663340. Disposition: follow-up (auditor-stated: not absorbable — needs a decision, not a mechanical edit).

Problem

cmdLint's directory branch is fs.readdirSync(t).filter(f => f.endsWith('.md'))one level, no recursion (skills/_shared/war-memory.mjs, cmdLint). git ls-tree HEAD docs/learnings/archive/ lists ~104 committed lesson files that neither CI nor the newly-landed gate wrapper ever lints — while memory-audit.yml's trigger is docs/learnings/**, so an archive-only PR fires the workflow and reports green vacuously.

The task's new prose ("PRE-MERGE enforcement of this same lint") is literally accurate — the wrapper's invocation is byte-identical to CI's — so this is not a false claim. But the anti-vacuity intent the existence guard serves is only partly met: the guard catches a moved target, not an unlinted subtree.

Grounded, non-blocking: git log -S/Users/ -- docs/learnings and -Sghp_ are both empty across all history, so no live violation hides there today.

Why it wasn't absorbed

Closing it requires either a cmdLint walk change (war-memory.mjs — outside spec §4.1's "no logic beyond path resolution") or a second target arg in the wrapper. Either diverges the gate from CI unless memory-audit.yml's run: step changes in lock-step, which plan 5's End state 8 freezes byte-identical apart from comments.

Suggested fix

Decide whether docs/learnings/archive/ should be linted. If yes, fix at the source — make cmdLint's walk recursive — so CI and the wrapper stay one invocation, rather than adding a second target only to the wrapper.

Close when the archive-lint question is decided and (if linted) the recursive walk lands with CI and wrapper still sharing one invocation.

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions