BOHICA-LABS / BOHICA-LABS/vsdd-factory
policy(adversary+test-writer): FULL linter ruleset required, not just eyeballed line-length — recurring gdlint failures in test files
- Dominant language
- Rust
- Stars
- 2
- Forks
- 1
- Avg merge
- 6h 43m
- Merged PRs (30d)
- 29
Description
## Summary
Adversary and test-writer, when asked to validate generated tests, tend to eyeball a **subset** of the project's linter rules (typically line-length, indentation) rather than running the **full** linter. Result: CI catches the failures later, requiring an extra in-PR fix commit. This recurred in ≥4 stories of a single wave.
## Repro (real cycle)
ftc-blue Wave 2 (GDScript / gdlint):
| Story | Rule tripped | Detection | Cost |
|-------|--------------|-----------|------|
| STORY-4.04.005 | function-variable-name (`_name` local) + duplicated inline preload not hoisted to const | CI red on PR | In-PR fix c92036c |
| STORY-9.09.004 | private-method-call-count | CI red on PR | assist_mode_menu.gd rename |
| STORY-12.12.004 | max-line-length in test line 559 | CI red on PR | In-PR wrap fix a655f71 |
| Multiple | Test-file >120 col comments/docstrings | CI red repeatedly | Recurring |
The pattern: adversary reports "gdlint line-length clean" (checked in review). CI runs `gdlint ` and finds an unrelated rule failure. This is a **coverage gap in the adversary's own checks**, not a linter bug.
## Related but distinct issues
- #309: ground-truth capture is test-runner-only; lint-class gates invisible to convergence. That's about **which gates run**. This one is about the **adversary's own compliance-check breadth** during the review pass.
- #297: agents silently relax governance/lint config. That's about **config mutation**. This one is about **incomplete verification** against unmutated config.
## Proposed rule
Amend adversary + test-writer agent prompts:
> **Linter compliance verification.** Before signing off on a review or a test-suite emission, run the project's canonical lint command with ITS DEFAULT RULESET, not a hand-picked subset. On GDScript projects: \`gdlint scripts/ test/\` (or the CLAUDE.md-declared path). On Rust: \`cargo clippy -- -D warnings\` matching CI. If the command emits any diagnostic, treat as a finding at IMPORTANT minimum.
>
> **Rationale:** CI runs the full ruleset; the adversary's review must match CI's judgment, not a shorter checklist. Recurring "green in review, red in CI" indicates the review's linter step is narrower than CI's.
## Detection heuristic
Compare adversary-pass evidence artifacts against CI logs. If CI red on lint after adversary green, log a process-gap.
## Provenance
Wave 2 cycle-001 lessons codification, L-W2-04 (ftc-blue). Tasks #37/#38.
Contributor guide
Assessment
This issue has not been assessed yet.