From 4d07efdb70ea9cbb6c471bc126400ddec1639a08 Mon Sep 17 00:00:00 2001 From: Michael Sitarzewski Date: Wed, 17 Jun 2026 22:19:25 -0500 Subject: [PATCH] =?UTF-8?q?Drop=20strategy/=20as=20a=20division=20?= =?UTF-8?q?=E2=80=94=20it's=20playbooks/runbooks,=20not=20agents=20(#595)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit strategy/ holds 16 markdown files and ZERO have agent frontmatter — they're playbooks (playbooks/phase-*.md), runbooks (runbooks/scenario-*.md), and briefs (EXECUTIVE-BRIEF.md, QUICKSTART.md, nexus-strategy.md), not agent definitions. There are 16 real agent divisions, 232 agents; strategy is not one of them. #592 added `strategy` to lint-agents.sh AGENT_DIRS and the lint workflow paths (to match divisions.json), which made CI lint those 16 frontmatter-less docs as agents and fail every one with "missing frontmatter opening ---". So any PR touching strategy/ broke CI. The original lint-agents.sh correctly excluded strategy; #592 misread that deliberate exclusion as drift (same mistake as integrations/ in #593). Fix: remove strategy from convert.sh / lint-agents.sh AGENT_DIRS, the lint workflow, and divisions.json; add it to NON_DIVISION_DIRS in check-divisions.sh. divisions.json is now 16, matching the app's parse_agent count exactly. Also add a content-derived backstop to check-divisions.sh: every division must contain at least one .md with '---' frontmatter, or the build fails. This is what stops a docs/playbook directory from being registered as an empty agent division again — regardless of whether someone remembers the exclude list. check-divisions.sh PASSES at 16; negative-tested that re-adding strategy fails with "division 'strategy' has no agent files". Co-authored-by: Claude Opus 4.8 (1M context) --- .github/workflows/lint-agents.yml | 3 +-- divisions.json | 3 +-- scripts/check-divisions.sh | 26 ++++++++++++++++++++++++-- scripts/convert.sh | 2 +- scripts/lint-agents.sh | 1 - 5 files changed, 27 insertions(+), 8 deletions(-) diff --git a/.github/workflows/lint-agents.yml b/.github/workflows/lint-agents.yml index 57a683be..8616e442 100644 --- a/.github/workflows/lint-agents.yml +++ b/.github/workflows/lint-agents.yml @@ -19,7 +19,6 @@ on: - "support/**" - "spatial-computing/**" - "specialized/**" - - "strategy/**" jobs: lint: @@ -36,7 +35,7 @@ jobs: FILES=$(git diff --name-only --diff-filter=ACMR origin/${{ github.base_ref }}...HEAD -- \ 'academic/**/*.md' 'design/**/*.md' 'engineering/**/*.md' 'finance/**/*.md' 'game-development/**/*.md' 'gis/**/*.md' 'marketing/**/*.md' 'paid-media/**/*.md' 'sales/**/*.md' 'security/**/*.md' 'product/**/*.md' \ 'project-management/**/*.md' 'testing/**/*.md' 'support/**/*.md' \ - 'spatial-computing/**/*.md' 'specialized/**/*.md' 'strategy/**/*.md') + 'spatial-computing/**/*.md' 'specialized/**/*.md') { echo "files</dev/null) + return 1 +} +while IFS= read -r div; do + if [[ ! -d "$div" ]]; then + fail "division '$div' has no directory on disk" + elif ! has_agent_file "$div"; then + fail "division '$div' has no agent files (.md with '---' frontmatter) — not a real division" + fi +done < <(canonical) + # --- result ---------------------------------------------------------------- count="$(canonical | wc -l | tr -d ' ')" diff --git a/scripts/convert.sh b/scripts/convert.sh index 1521015d..1266109d 100755 --- a/scripts/convert.sh +++ b/scripts/convert.sh @@ -68,7 +68,7 @@ TODAY="$(date +%Y-%m-%d)" AGENT_DIRS=( academic design engineering finance game-development gis marketing paid-media product project-management - sales security spatial-computing specialized strategy support testing + sales security spatial-computing specialized support testing ) # --- Usage --- diff --git a/scripts/lint-agents.sh b/scripts/lint-agents.sh index 3b7a7c45..574ca6f1 100755 --- a/scripts/lint-agents.sh +++ b/scripts/lint-agents.sh @@ -26,7 +26,6 @@ AGENT_DIRS=( security spatial-computing specialized - strategy support testing )