Commit Graph

3 Commits

Author SHA1 Message Date
Michael Sitarzewski 217a63b8b6 Derive originality check's division set from divisions.json (#659)
check-agent-originality.sh hardcoded its own copy of the division list
(AGENT_DIRS) in the Python heredoc — a 5th copy that check-divisions.sh's
bash-array parser never saw, so it drifted: it was missing `gis` and
`security` and still carried the retired `strategy`. The practical effect
was that every gis/ and security/ agent — including newly added ones —
skipped the duplicate-detection scan entirely.

Read divisions.json directly instead of hardcoding, so this check can
never drift from the catalog again. Now scans all 16 divisions; verified
green in full-audit mode.

Supersedes #649/#650, which patch the hardcoded constants rather than
removing them.


Claude-Session: https://claude.ai/code/session_01WKnDRWM4izsB8WAXKszhsq

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 12:52:12 -05:00
Michael Sitarzewski 384dbbd2a8 docs: add tool-integration checklist + stop hardcoding roster counts (#663)
Two related drift traps, both from hand-typed numbers/lists that no guard
watches:

1. CONTRIBUTING had no "how to add a tool" checklist, and its wording
   ("all output is gitignored") implied gitignoring was automatic — so
   tool contributors kept committing generated integrations/<tool>/ output.
2. The division set and agent/division counts were hardcoded in prose in
   several places and had already gone stale (CONTRIBUTING said "16" and
   omitted healthcare; EXECUTIVE-BRIEF said "9 divisions").

Changes:
- Add an "Adding a Tool Integration" checklist to CONTRIBUTING (discuss-first,
  reuse an existing `format`, the ~5-file touch list incl. the required
  .gitignore rule, run check-tools.sh). Harmonize the "committed build
  output" policy line to point at it.
- De-hardcode the division list in CONTRIBUTING — defer to divisions.json.
- Stop scattering roster counts: strategy/EXECUTIVE-BRIEF ("9 divisions") and
  check-agent-originality.sh ("184-agent library") drop the number entirely;
  README keeps a showcase stat but softens "232 across 16" to "230+ across
  every division" so it never becomes a lie as the roster grows.


Claude-Session: https://claude.ai/code/session_01WKnDRWM4izsB8WAXKszhsq

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 12:45:36 -05:00
Michael Sitarzewski 5032f7e75c feat: add agent originality check (script + CI + docs) (#560)
Adds scripts/check-agent-originality.sh, which flags new agents that
substantially duplicate an existing one. It compares each candidate
against the whole roster (and other files in the same change set) using
entity-neutralized 8-word shingle overlap, so a find-replace "re-skin"
that only swaps a country/platform name can't slip past review.

- CI: new "Check agent originality" step in lint-agents.yml runs it on
  changed agent files; a >=40% match fails the build.
- Docs: CONTRIBUTING.md gains a self-run "before submitting" step, a
  checklist item, and a "things we'll always close" bullet for re-skins.

Calibration: across the existing 184-agent library the worst same-pair
similarity is ~1.5% (median 0%), so the WARN >=20% / FAIL >=40% defaults
leave a wide margin against false positives.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 12:08:28 -05:00