Skip to content

fix(ego-review): add NOT-a-signal exception to ai-slop item #4#4

Merged
ZviBaratz merged 17 commits intomainfrom
fix/ai-slop-item4-false-positive
Feb 28, 2026
Merged

fix(ego-review): add NOT-a-signal exception to ai-slop item #4#4
ZviBaratz merged 17 commits intomainfrom
fix/ai-slop-item4-false-positive

Conversation

@ZviBaratz
Copy link
Copy Markdown
Owner

Summary

  • Adds a "NOT a signal" exception to ai-slop checklist item fix(ego-review): add NOT-a-signal exception to ai-slop item #4 #4 (_pendingDestroy + _initializing coordination)
  • Distinguishes re-entrancy guards (_destroyed + _initializing) from the over-engineered _pendingDestroy coordination pattern
  • Prevents false positives during ego-simulate runs against extensions using the standard _destroyed flag alongside a simple _initializing guard

Closes #1

Test plan

  • bash tests/run-tests.sh — all 373 assertions pass (Tier 3 checklist change, no automated tests affected)
  • Manual: re-read item fix(ego-review): add NOT-a-signal exception to ai-slop item #4 #4 in skills/ego-review/references/ai-slop-checklist.md and confirm the exception clearly distinguishes re-entrancy guards from deferred-cleanup coordination

🤖 Generated with Claude Code

ZviBaratz and others added 17 commits February 27, 2026 09:16
Restructure README to lead with quick start and ego-lint CLI usage.
Add "For Reviewers" section explaining what ego-lint automates and
what it doesn't do. Rename lint.sh to ego-lint (proper CLI name).
Add --help flag. Add CI integration docs (GitHub Actions + GitLab CI).
Add respectful acknowledgment in reviewer persona. Fix broken links
in RESEARCH-SUMMARY.md and de-personalize attribution.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add ego-lint CLI usage section, document top-level wrapper in plugin
structure, add docs/ci-integration.md reference.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Front-load deterministic trust signal, add bundled fixture demo,
reframe For Reviewers with receiver-focused framing, add test
coverage stats, replace authority claims with data-backed language.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reduce hara-hachi-bu warnings from 90 to 29 (68% reduction) through
six categories of changes:

- Remove baseless checks (error-message-verbosity, compiled-schemas-dir)
- Raise thresholds (notification 3→5, complexity 1000→1500, LOC-scaled logging)
- Trim R-PREFS-04b to 13 widgets with real Adw alternatives, move ListBox to advisory
- Add pattern deduplication (R-SEC-20 emits one summary instead of per-file)
- Improve heuristics: empty-catch cleanup suppression, module-state null-reset,
  mock try/catch import guard, constructor Adw rows + destroy() skip,
  cancellable parameter detection in async checks
- Add ego-lint-ignore inline suppression for both Tier 1 and Tier 2 rules
- Scope gettext check to entry points only (extension.js, prefs.js)
- Downgrade non-gjs-scripts to PASS when pkexec detected

362 tests passing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reduce false positives (90→17 warnings on hara-hachi-bu baseline):
- Deduplicate R-PREFS-04b and remove Gtk.Box from pattern
- Raise file-complexity threshold to 2000 for prefs.js
- Add GSettings operations to empty-catch suppression
- Adjust logging-volume ratio from 1:100 to 1:70

Add community framing and contributor tooling:
- Reframe README for review queue value proposition
- Add GOVERNANCE.md for rule authority and co-maintainer recruitment
- Add "For Reviewers: Add a Check in 5 Minutes" to CONTRIBUTING.md
- Add scripts/new-rule.sh interactive rule scaffolder
- Add scripts/validate-fixture.sh fixture validator

Add professional polish:
- GitHub Actions CI (.github/workflows/test.yml)
- Issue templates (false-positive, new-rule) and PR template
- docs/ARCHITECTURE.md with three-tier system overview

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ent-aware catches, and _destroyed recognition

- Add `replacement-pattern` field to apply-patterns.py: suppresses match when
  replacement also exists in same file (used by R-VER48-07 for dual CSS selectors)
- Skip commented catch blocks in check-quality.py (documented empty catches are
  intentional per the AI slop checklist)
- Suppress async/missing-cancellable for files using `_destroyed` pattern in
  check-async.py (alternative async safety mechanism)
- Check package.sh for mock filename exclusions in check-quality.py before
  warning on mock-in-production
- Add 4 test fixtures and 8 new assertions (372 total, up from 364)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add "Why AI Is Only in Tier 3" section to ARCHITECTURE.md explaining the
deliberate AI boundary (reproducibility, auditability, trust, offline).
Consolidate false-positive-reduction.md into gap-analysis.md as a structured
table of 10 known false positives. Expand README with "For EGO Reviewers"
section, author context, roadmap, and updated counts (142 fixtures, 372
assertions). Add version-gating and replacement-pattern docs to rules/README.md
with worked examples and complete category prefix table. Deduplicate
CONTRIBUTING.md field reference via link to rules/README.md. Add plugin.json
metadata (author, homepage, repository, license, keywords). Create CHANGELOG.md
for v0.1.0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…private-api, fix verdict counting

- Remove R-SEC-07 (St.Clipboard pattern) — redundant with quality/clipboard-disclosure
  which already detects clipboard usage AND verifies metadata description disclosure
- Consolidate quality/private-api output from up to 6 WARN lines to single consolidated line
- Fix verdict to count unique check IDs instead of raw WARN lines; raise threshold to >8
- Narrow R-SEC-20 (pkexec) scope from ["*.js", "*.sh"] to ["*.js"]
- Fix gettext-pattern advice from wrong this.gettext() to correct module import pattern
- Update rule count 114→113 across docs, update test assertions and regression checks

hara-hachi-bu result: "MAY PASS WITH COMMENTS: 8 checks flagged" (was "LIKELY REJECTED: 14 warnings")

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… criteria, help-wanted

Add First Contribution Workflow, Where to Find Sources, When Advisory
Becomes Blocking, and License sections to CONTRIBUTING.md. Broaden PR
template to cover non-rule contributions. Expand GOVERNANCE.md with
co-maintainer onboarding path. Add Help Wanted subsection to README
surfacing self-contained gaps from gap-analysis.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…oting

Expand CONTRIBUTING.md Option 2 with a script selection table covering
all 13 check scripts, output contract details, and function signature
pattern. Add troubleshooting section to rules/README.md covering YAML
escaping, fixture validation, multi-line pattern limitations, and quick
regex testing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add --validate flag to apply-patterns.py that checks for duplicate rule
IDs, missing required fields, invalid severity values, and regex
compilation errors. Reuses existing parse_rules() for consistency.

Add category prefix prompt to new-rule.sh that scans patterns.yaml for
the highest existing ID and suggests the next available number.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…e analysis

Consolidate all changes into v0.1.0 CHANGELOG (no separate v0.1.1).
Fix rule count 114→113 in ARCHITECTURE.md. Update assertion count to
373 in GOVERNANCE.md and README.md. Remove resolved roadmap item
(false-positive reduction). Archive false-positive analysis to
docs/research/ with resolution header.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove named attribution of specific reviewers from simulation persona
and skill checklists. Keep the opening acknowledgment block in
reviewer-persona.md (standard attribution) but remove behavioral
modeling of individuals: working conditions, review volume claims, and
queue pressure estimates. Rephrase remaining references to cite "the
EGO AI policy blog post (December 2025)" rather than naming the author.

Files changed:
- skills/ego-simulate/references/reviewer-persona.md
- skills/ego-review/references/ai-slop-checklist.md
- skills/ego-review/references/code-quality-checklist.md
- skills/ego-lint/references/rules-reference.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add blocking/advisory rule calibration (64 blocking, 49 advisory)
- Ground "AI slop" terminology with link to December 2025 GNOME blog post
- Reframe Claude Code plugin section as "Advanced (Optional)"
- Soften ego-simulate description: "estimates readiness" not "predicts verdict"
- Author section: "submitted to EGO" instead of "currently in EGO review"
- Fix RESEARCH-SUMMARY.md pattern rule count: 114 → 113

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Change SKILL.md description and framing from "predicts reviewer
response" to "assesses review readiness against published criteria."
The tool evaluates against documented rules, not a person's behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Change accusatory phrasing to diagnostic:
- R-SLOP-18: "Comment reads like an LLM prompt" →
  "Imperative comment pattern draws reviewer scrutiny"
- R-SLOP-30: "AI-generated pattern" →
  "reviewers flag this pattern"

Rule IDs, severity, and patterns are unchanged.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The `_destroyed + _initializing` pattern was falsely flagged as BLOCKING
during ego-simulate runs. The `_initializing` flag serving as a
re-entrancy guard is legitimate — the red flag targets `_pendingDestroy`
coordination, not simple re-entrancy prevention.

Closes #1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@ZviBaratz ZviBaratz merged commit 74885f8 into main Feb 28, 2026
2 checks passed
@ZviBaratz ZviBaratz deleted the fix/ai-slop-item4-false-positive branch February 28, 2026 12:40
@ZviBaratz ZviBaratz added ego-review Related to ego-review skill false-positive Rule fires incorrectly labels Mar 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ego-review Related to ego-review skill false-positive Rule fires incorrectly

Projects

None yet

Development

Successfully merging this pull request may close these issues.

AI slop checklist item #4: false positive on _destroyed + _initializing

1 participant