Skip to content

feat(ci): add test count guard to prevent AI agents from deleting tests#41

Closed
diberry wants to merge 24 commits intodevfrom
squad/39-test-integrity-guards
Closed

feat(ci): add test count guard to prevent AI agents from deleting tests#41
diberry wants to merge 24 commits intodevfrom
squad/39-test-integrity-guards

Conversation

@diberry
Copy link
Copy Markdown
Owner

@diberry diberry commented Mar 26, 2026

feat(ci): Add test count guard to prevent AI agents from deleting tests

Closes #39

Problem

AI coding agents sometimes delete or weaken tests to make failing code pass — the "green bar at any cost" anti-pattern. This is the same class of destructive shortcut that caused #631 on bradygaster/squad (361 files deleted by @copilot).

Solution

Three defense layers:

1. Test Count Guard (CI)

.github/scripts/test-count-guard.mjs — compares actual test count against baseline:

  • Pass: actual >= baseline
  • Fail: actual < baseline (prints delta and blocks PR)
  • Warn: baseline file missing (graceful first run)

Added as a CI step in squad-ci.yml after "Run tests".

2. Test Baseline

.github/test-baseline.json — stores expected minimum test count (4,662 tests). Can only be updated with explicit human approval.

3. Copilot Instructions Directive

Added "Test Integrity" section to .github/copilot-instructions.md:

  • Never delete, skip, or weaken existing tests
  • Never add .skip or change assertions to weaker forms
  • If a test fails, fix the CODE, not the test
  • Report failures in PR — don't suppress them

Tests

8 tests in test/ci/test-count-guard.test.ts covering:

  • Pass when count equals/exceeds baseline
  • Fail when count decreases (with delta message)
  • Warning when baseline missing
  • Malformed baseline handling
  • Edge cases (zero baseline)

Files Changed (5)

File What
.github/scripts/test-count-guard.mjs Guard script (88 lines)
.github/test-baseline.json Baseline: 4,662 tests
.github/workflows/squad-ci.yml CI step added
.github/copilot-instructions.md Test integrity directive
test/ci/test-count-guard.test.ts 8 tests for guard logic

bradygaster and others added 15 commits March 25, 2026 23:32
…ygaster#590) (bradygaster#620)

* chore(.squad): session wrap-up — inbox merge, logs, history updates

Merged 12 decision inbox entries into decisions.md. Logged mega-session
covering release recovery, docs fix, 10 PR merges, discussion triage,
and release hardening. Updated agent histories with session learnings.

Deleted inbox files after merge:
- booster-ci-audit.md, booster-ci-cleanup.md
- copilot-directive-2026-03-23T09-56.md, copilot-directive-2026-03-23T10-08.md
- copilot-directive-no-npx.md
- eecom-version-cmd.md
- pao-discussion-triage-2026-03-23.md, pao-npx-purge.md, pao-readme-slim.md
- pao-v090-blog.md
- surgeon-v090-changelog.md, surgeon-v091-retrospective.md

Updated files:
- .squad/decisions.md (12 decision entries merged)
- .squad/identity/now.md (current state updated)
- .squad/log/2026-03-23T22-00-00Z-mega-session-wrapup.md (new)
- .squad/agents/flight/history.md (issue filing patterns, governance directives)
- .squad/agents/eecom/history.md (CLI version subcommand pattern)
- .squad/agents/booster/history.md (CI audit and preflight patterns)
- .squad/agents/surgeon/history.md (release governance rules, retrospective)
- .squad/agents/pao/history.md (discussion triage patterns, Teams MCP urgency)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs: add v0.9.0 and v0.9.1 releases to What's New

- v0.9.1 (Current Release): Bug fixes and hardening
  - Shell agent name extraction with multi-pattern fallback
  - Init scaffolding for typed casting files
  - Personal squad global mode support
  - Release CI/docs hardening
  - Doctor command improvements

- v0.9.0 (Major Feature): 6 major features + stability fixes
  - Personal Squad Governance Layer (isolated developer workspaces)
  - Worktree Spawning & Distributed Work (parallel agent orchestration)
  - Machine Capability Discovery (auto-detect tools/models/hardware)
  - Cooperative Rate Limiting (predictive circuit breaker + economy mode)
  - Telemetry & Infrastructure (auto-wire, KEDA, session recovery)
  - Docs, Stability & Distribution (Astro enhancements, npm-only)

- v0.8.2: Renamed from 'Current Release' to historic entry

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): triage session — 14 issues triaged, 10 PRs reviewed

- Flight triaged 14 untriaged GitHub issues, created prioritized work plan
- FIDO reviewed 10 open PRs, identified 3 duplicate/overlap pairs
- Merged 2 decisions from inbox to decisions.md
- Updated Flight and FIDO agent history with team updates
- Orchestration logs: 2026-03-25T15-23-flight.md, 2026-03-25T15-23-fido.md
- Session log: 2026-03-25T15-23-triage-session.md

Work session priority established:
- bradygaster#610 → PAO (broken link, 5 min fix, unblocks bradygaster#611)
- bradygaster#590 → EECOM (getPersonalSquadRoot bug, P0)
- bradygaster#592, bradygaster#611 → Flight review
- bradygaster#588 → Procedures (model list update)

PR deduplication: 10 PRs consolidate to 7
- Merge: bradygaster#607, bradygaster#603, bradygaster#606
- Close as duplicates: bradygaster#605, bradygaster#604, bradygaster#602

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(prompts): update model catalog to current platform offerings (bradygaster#588)

Update all model references in squad.agent.md to match the current
Copilot platform catalog:

- Remove stale models: claude-opus-4.6-fast, gpt-5 (standalone)
- Add new models: claude-sonnet-4.6, claude-opus-4.6-1m, gpt-5.4,
  gpt-5.3-codex, gpt-5.4-mini
- Bump code-writing defaults from claude-sonnet-4.5 to claude-sonnet-4.6
- Bump code specialist from gpt-5.2-codex to gpt-5.3-codex
- Update fallback chains with new models in sensible positions
- Propagate via sync-templates to all 4 derived copies

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs: update procedures history and decision for model catalog refresh

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(sdk): getPersonalSquadRoot resolves to personal-squad dir (bradygaster#590)

getPersonalSquadRoot() was hardcoded to append '.squad' to the global
squad directory, causing it to resolve to a nonexistent path. All users
running squad consult entered Init Mode and lost their personal agents.

Changed the subdirectory from '.squad' to 'personal-squad' to match
the actual layout used by resolvePersonalSquadDir() and
ensurePersonalSquadDir().

Added two tests verifying the correct resolution path.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(cli): fix remaining personal-squad path in shell init (bradygaster#590)

The shell's runShell() first-run check was looking for '.squad' inside the
global squad directory instead of 'personal-squad', mirroring the bug EECOM
already fixed in consult.ts. Also updated the matching test assertions in
cli-global.test.ts.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…bradygaster#627)

* chore(.squad): session wrap-up — inbox merge, logs, history updates

Merged 12 decision inbox entries into decisions.md. Logged mega-session
covering release recovery, docs fix, 10 PR merges, discussion triage,
and release hardening. Updated agent histories with session learnings.

Deleted inbox files after merge:
- booster-ci-audit.md, booster-ci-cleanup.md
- copilot-directive-2026-03-23T09-56.md, copilot-directive-2026-03-23T10-08.md
- copilot-directive-no-npx.md
- eecom-version-cmd.md
- pao-discussion-triage-2026-03-23.md, pao-npx-purge.md, pao-readme-slim.md
- pao-v090-blog.md
- surgeon-v090-changelog.md, surgeon-v091-retrospective.md

Updated files:
- .squad/decisions.md (12 decision entries merged)
- .squad/identity/now.md (current state updated)
- .squad/log/2026-03-23T22-00-00Z-mega-session-wrapup.md (new)
- .squad/agents/flight/history.md (issue filing patterns, governance directives)
- .squad/agents/eecom/history.md (CLI version subcommand pattern)
- .squad/agents/booster/history.md (CI audit and preflight patterns)
- .squad/agents/surgeon/history.md (release governance rules, retrospective)
- .squad/agents/pao/history.md (discussion triage patterns, Teams MCP urgency)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs: add v0.9.0 and v0.9.1 releases to What's New

- v0.9.1 (Current Release): Bug fixes and hardening
  - Shell agent name extraction with multi-pattern fallback
  - Init scaffolding for typed casting files
  - Personal squad global mode support
  - Release CI/docs hardening
  - Doctor command improvements

- v0.9.0 (Major Feature): 6 major features + stability fixes
  - Personal Squad Governance Layer (isolated developer workspaces)
  - Worktree Spawning & Distributed Work (parallel agent orchestration)
  - Machine Capability Discovery (auto-detect tools/models/hardware)
  - Cooperative Rate Limiting (predictive circuit breaker + economy mode)
  - Telemetry & Infrastructure (auto-wire, KEDA, session recovery)
  - Docs, Stability & Distribution (Astro enhancements, npm-only)

- v0.8.2: Renamed from 'Current Release' to historic entry

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): triage session — 14 issues triaged, 10 PRs reviewed

- Flight triaged 14 untriaged GitHub issues, created prioritized work plan
- FIDO reviewed 10 open PRs, identified 3 duplicate/overlap pairs
- Merged 2 decisions from inbox to decisions.md
- Updated Flight and FIDO agent history with team updates
- Orchestration logs: 2026-03-25T15-23-flight.md, 2026-03-25T15-23-fido.md
- Session log: 2026-03-25T15-23-triage-session.md

Work session priority established:
- bradygaster#610 → PAO (broken link, 5 min fix, unblocks bradygaster#611)
- bradygaster#590 → EECOM (getPersonalSquadRoot bug, P0)
- bradygaster#592, bradygaster#611 → Flight review
- bradygaster#588 → Procedures (model list update)

PR deduplication: 10 PRs consolidate to 7
- Merge: bradygaster#607, bradygaster#603, bradygaster#606
- Close as duplicates: bradygaster#605, bradygaster#604, bradygaster#602

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): log work session — triage, fixes, research

Round 1 outcomes:
- PAO: bradygaster#610 docs link already resolved
- EECOM: bradygaster#590 personal squad path fix (getPersonalSquadRoot)
- Procedures: bradygaster#588 model catalog updated to current platform
- Flight: bradygaster#612 community issue filed on routing regression
- CAPCOM: CLI platform research — identified 8 releases (1.0.4→1.0.11) with 3 high-impact changes
- GNC: Squad codebase research — routing regression caused by v0.9.0 prompt saturation + missing name param

Round 2: Code review & quality gate
- FIDO: Found same bug in shell/index.ts, enforced revision
- CONTROL: Full sweep of bradygaster#590 fix, awaiting FIDO re-review

Merged decisions:
1. Personal squad path canonicalization (personal-squad/)
2. Model catalog refresh (claude-sonnet-4.6, gpt-5.3-codex defaults)
3. CLI platform analysis (monorepo discovery, idle hiding, hook injection)
4. Squad regression analysis (prompt saturation, workstream replacement, missing name param)

Logs created:
- 6 orchestration logs (one per agent)
- 1 session synthesis log with research synthesis
- 4 agent history updates (team update annotations)

All inbox decision files merged and deleted.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Merge: VS Code routing enforcement fix proposal (bradygaster#613)

- Merged procedures-vscode-routing-fix.md from inbox to decisions.md
- Cleared decision inbox after merge
- Logged session finalization work

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: add count-based fallback to archiveDecisions() (bradygaster#626)

archiveDecisions() silently returned null when all entries were <30 days
old, allowing decisions.md to grow unboundedly. Active projects hit
145KB+ (35K tokens burned per agent spawn).

Added count-based fallback: when all entries are recent but total size
exceeds 20KB, archive the oldest recent entries to stay under threshold.
Undated entries are preserved (not archived) per Procedures' guidance.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs: update EECOM history with bradygaster#626 learnings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…gaster#613) (bradygaster#624)

* chore(.squad): session wrap-up — inbox merge, logs, history updates

Merged 12 decision inbox entries into decisions.md. Logged mega-session
covering release recovery, docs fix, 10 PR merges, discussion triage,
and release hardening. Updated agent histories with session learnings.

Deleted inbox files after merge:
- booster-ci-audit.md, booster-ci-cleanup.md
- copilot-directive-2026-03-23T09-56.md, copilot-directive-2026-03-23T10-08.md
- copilot-directive-no-npx.md
- eecom-version-cmd.md
- pao-discussion-triage-2026-03-23.md, pao-npx-purge.md, pao-readme-slim.md
- pao-v090-blog.md
- surgeon-v090-changelog.md, surgeon-v091-retrospective.md

Updated files:
- .squad/decisions.md (12 decision entries merged)
- .squad/identity/now.md (current state updated)
- .squad/log/2026-03-23T22-00-00Z-mega-session-wrapup.md (new)
- .squad/agents/flight/history.md (issue filing patterns, governance directives)
- .squad/agents/eecom/history.md (CLI version subcommand pattern)
- .squad/agents/booster/history.md (CI audit and preflight patterns)
- .squad/agents/surgeon/history.md (release governance rules, retrospective)
- .squad/agents/pao/history.md (discussion triage patterns, Teams MCP urgency)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs: add v0.9.0 and v0.9.1 releases to What's New

- v0.9.1 (Current Release): Bug fixes and hardening
  - Shell agent name extraction with multi-pattern fallback
  - Init scaffolding for typed casting files
  - Personal squad global mode support
  - Release CI/docs hardening
  - Doctor command improvements

- v0.9.0 (Major Feature): 6 major features + stability fixes
  - Personal Squad Governance Layer (isolated developer workspaces)
  - Worktree Spawning & Distributed Work (parallel agent orchestration)
  - Machine Capability Discovery (auto-detect tools/models/hardware)
  - Cooperative Rate Limiting (predictive circuit breaker + economy mode)
  - Telemetry & Infrastructure (auto-wire, KEDA, session recovery)
  - Docs, Stability & Distribution (Astro enhancements, npm-only)

- v0.8.2: Renamed from 'Current Release' to historic entry

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): triage session — 14 issues triaged, 10 PRs reviewed

- Flight triaged 14 untriaged GitHub issues, created prioritized work plan
- FIDO reviewed 10 open PRs, identified 3 duplicate/overlap pairs
- Merged 2 decisions from inbox to decisions.md
- Updated Flight and FIDO agent history with team updates
- Orchestration logs: 2026-03-25T15-23-flight.md, 2026-03-25T15-23-fido.md
- Session log: 2026-03-25T15-23-triage-session.md

Work session priority established:
- bradygaster#610 → PAO (broken link, 5 min fix, unblocks bradygaster#611)
- bradygaster#590 → EECOM (getPersonalSquadRoot bug, P0)
- bradygaster#592, bradygaster#611 → Flight review
- bradygaster#588 → Procedures (model list update)

PR deduplication: 10 PRs consolidate to 7
- Merge: bradygaster#607, bradygaster#603, bradygaster#606
- Close as duplicates: bradygaster#605, bradygaster#604, bradygaster#602

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): log work session — triage, fixes, research

Round 1 outcomes:
- PAO: bradygaster#610 docs link already resolved
- EECOM: bradygaster#590 personal squad path fix (getPersonalSquadRoot)
- Procedures: bradygaster#588 model catalog updated to current platform
- Flight: bradygaster#612 community issue filed on routing regression
- CAPCOM: CLI platform research — identified 8 releases (1.0.4→1.0.11) with 3 high-impact changes
- GNC: Squad codebase research — routing regression caused by v0.9.0 prompt saturation + missing name param

Round 2: Code review & quality gate
- FIDO: Found same bug in shell/index.ts, enforced revision
- CONTROL: Full sweep of bradygaster#590 fix, awaiting FIDO re-review

Merged decisions:
1. Personal squad path canonicalization (personal-squad/)
2. Model catalog refresh (claude-sonnet-4.6, gpt-5.3-codex defaults)
3. CLI platform analysis (monorepo discovery, idle hiding, hook injection)
4. Squad regression analysis (prompt saturation, workstream replacement, missing name param)

Logs created:
- 6 orchestration logs (one per agent)
- 1 session synthesis log with research synthesis
- 4 agent history updates (team update annotations)

All inbox decision files merged and deleted.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Merge: VS Code routing enforcement fix proposal (bradygaster#613)

- Merged procedures-vscode-routing-fix.md from inbox to decisions.md
- Cleared decision inbox after merge
- Logged session finalization work

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: rename template copies to prevent CLI instruction merging (bradygaster#613)

Copilot CLI 1.0.11 discovers all *.agent.md files from cwd to git root
and merges them into the coordinator prompt. Squad had 3 template copies
that were being discovered and merged, causing 4x instruction duplication.

Renamed template copies to .agent.md.template so only the active copy
at .github/agents/squad.agent.md is discovered by the CLI.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* scribe: Record spawn manifest session — template rename completion

Orchestration logs:
- CONTROL: Template rename (3 copies squad.agent.md → .agent.md.template)
- FIDO: QA approval of template rename work
- Coordinator: 3 PRs opened (bradygaster#624, bradygaster#620, bradygaster#619)

Session log: Spawn manifest execution summary
- Template duplication risk eliminated
- Zero stale references found
- Build + test: zero new failures
- All work ready for merge coordination

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ygaster#611)

- TypeDoc config (packages/squad-sdk/typedoc.json) targeting src/index.ts
- Generation script (scripts/generate-api-docs.mjs) — produces API pages
- Build integration: npm run docs:api generates markdown
- Playwright tests (docs/tests/api-reference.spec.mjs) — 8 tests covering
  landing, classes, functions, interfaces, nav, search
- Nav crosslinks: sidebar labels (SDK Guide + API Reference)
- Research docs: PRD and research analysis
- API reference screenshots (6 detail pages)
- PR screenshots capture skill + script

Review fixes applied:
- Crosslink banner added to sdk.md (PAO)
- Nav URL simplified to reference/api (PAO)
- CI/CD build order clarified in nav plan (PAO)
- Hardcoded export count replaced with > 100 assertion (Flight)
- Local typedoc binary instead of npx (Flight)
- TypeDoc pinned to ~0.28.18 (Flight)
- Error handling added to generation + screenshot scripts (FIDO)

Generated docs are NOT committed — they are built at CI/deploy time.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… (bradygaster#617)

* chore(.squad): session wrap-up — inbox merge, logs, history updates

Merged 12 decision inbox entries into decisions.md. Logged mega-session
covering release recovery, docs fix, 10 PR merges, discussion triage,
and release hardening. Updated agent histories with session learnings.

Deleted inbox files after merge:
- booster-ci-audit.md, booster-ci-cleanup.md
- copilot-directive-2026-03-23T09-56.md, copilot-directive-2026-03-23T10-08.md
- copilot-directive-no-npx.md
- eecom-version-cmd.md
- pao-discussion-triage-2026-03-23.md, pao-npx-purge.md, pao-readme-slim.md
- pao-v090-blog.md
- surgeon-v090-changelog.md, surgeon-v091-retrospective.md

Updated files:
- .squad/decisions.md (12 decision entries merged)
- .squad/identity/now.md (current state updated)
- .squad/log/2026-03-23T22-00-00Z-mega-session-wrapup.md (new)
- .squad/agents/flight/history.md (issue filing patterns, governance directives)
- .squad/agents/eecom/history.md (CLI version subcommand pattern)
- .squad/agents/booster/history.md (CI audit and preflight patterns)
- .squad/agents/surgeon/history.md (release governance rules, retrospective)
- .squad/agents/pao/history.md (discussion triage patterns, Teams MCP urgency)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs: add v0.9.0 and v0.9.1 releases to What's New

- v0.9.1 (Current Release): Bug fixes and hardening
  - Shell agent name extraction with multi-pattern fallback
  - Init scaffolding for typed casting files
  - Personal squad global mode support
  - Release CI/docs hardening
  - Doctor command improvements

- v0.9.0 (Major Feature): 6 major features + stability fixes
  - Personal Squad Governance Layer (isolated developer workspaces)
  - Worktree Spawning & Distributed Work (parallel agent orchestration)
  - Machine Capability Discovery (auto-detect tools/models/hardware)
  - Cooperative Rate Limiting (predictive circuit breaker + economy mode)
  - Telemetry & Infrastructure (auto-wire, KEDA, session recovery)
  - Docs, Stability & Distribution (Astro enhancements, npm-only)

- v0.8.2: Renamed from 'Current Release' to historic entry

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): triage session — 14 issues triaged, 10 PRs reviewed

- Flight triaged 14 untriaged GitHub issues, created prioritized work plan
- FIDO reviewed 10 open PRs, identified 3 duplicate/overlap pairs
- Merged 2 decisions from inbox to decisions.md
- Updated Flight and FIDO agent history with team updates
- Orchestration logs: 2026-03-25T15-23-flight.md, 2026-03-25T15-23-fido.md
- Session log: 2026-03-25T15-23-triage-session.md

Work session priority established:
- bradygaster#610 → PAO (broken link, 5 min fix, unblocks bradygaster#611)
- bradygaster#590 → EECOM (getPersonalSquadRoot bug, P0)
- bradygaster#592, bradygaster#611 → Flight review
- bradygaster#588 → Procedures (model list update)

PR deduplication: 10 PRs consolidate to 7
- Merge: bradygaster#607, bradygaster#603, bradygaster#606
- Close as duplicates: bradygaster#605, bradygaster#604, bradygaster#602

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): log work session — triage, fixes, research

Round 1 outcomes:
- PAO: bradygaster#610 docs link already resolved
- EECOM: bradygaster#590 personal squad path fix (getPersonalSquadRoot)
- Procedures: bradygaster#588 model catalog updated to current platform
- Flight: bradygaster#612 community issue filed on routing regression
- CAPCOM: CLI platform research — identified 8 releases (1.0.4→1.0.11) with 3 high-impact changes
- GNC: Squad codebase research — routing regression caused by v0.9.0 prompt saturation + missing name param

Round 2: Code review & quality gate
- FIDO: Found same bug in shell/index.ts, enforced revision
- CONTROL: Full sweep of bradygaster#590 fix, awaiting FIDO re-review

Merged decisions:
1. Personal squad path canonicalization (personal-squad/)
2. Model catalog refresh (claude-sonnet-4.6, gpt-5.3-codex defaults)
3. CLI platform analysis (monorepo discovery, idle hiding, hook injection)
4. Squad regression analysis (prompt saturation, workstream replacement, missing name param)

Logs created:
- 6 orchestration logs (one per agent)
- 1 session synthesis log with research synthesis
- 4 agent history updates (team update annotations)

All inbox decision files merged and deleted.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Merge: VS Code routing enforcement fix proposal (bradygaster#613)

- Merged procedures-vscode-routing-fix.md from inbox to decisions.md
- Cleared decision inbox after merge
- Logged session finalization work

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: platform-neutral routing enforcement for VS Code (bradygaster#613)

- Rewrite CRITICAL RULE to be platform-neutral (task + runSubagent)
- Update all enforcement references to mention both dispatch mechanisms
- Add routing reinforcement reminder at prompt boundary
- Addresses VS Code Autopilot routing bypass reported in bradygaster#613

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs: update Procedures history with bradygaster#613 fix implementation

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…radygaster#588) (bradygaster#619)

Update all model references in squad.agent.md to match the current
Copilot platform catalog:

- Remove stale models: claude-opus-4.6-fast, gpt-5 (standalone)
- Add new models: claude-sonnet-4.6, claude-opus-4.6-1m, gpt-5.4,
  gpt-5.3-codex, gpt-5.4-mini
- Bump code-writing defaults from claude-sonnet-4.5 to claude-sonnet-4.6
- Bump code specialist from gpt-5.2-codex to gpt-5.3-codex
- Update fallback chains with new models in sensible positions
- Propagate via sync-templates to all 4 derived copies

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ng to prevent alert fatigue (bradygaster#625)

* feat(skills): add notification-routing skill -- multi-channel pub-sub routing for agent notifications

* chore: remove incorrectly placed skill file

* feat(skills): add notification-routing skill -- multi-channel pub-sub routing for agent notifications

* feat(skills): add notification-routing skill to squad-sdk templates

* chore: add changeset for notification-routing skill

* chore: fix changeset package names for notification-routing skill

---------

Co-authored-by: Brady Gaster <41929050+bradygaster@users.noreply.github.com>
…r#608)

Updated the security policy to include reporting guidelines and disclosure expectations.
Round 1 (Audit & Baseline):
- Flight audited PR/issue state after CLI crash
- FIDO verified baseline: 5,038 tests passing, dev green
- Scribe merged stale decision inbox

Round 2 (Execution):
- Flight closed duplicate PRs bradygaster#605, bradygaster#604, bradygaster#602
- Procedures rebased & merged PR bradygaster#619 (model catalog)
- FIDO reviewed 9 community PRs: approved 3, change-requested 6

Round 3 (Community Merges):
- Coordinator merged 3 approved community PRs (bradygaster#625, bradygaster#603, bradygaster#608)

Outcomes:
- 10 PRs merged total (6 merge-plan, 3 community, 1 legacy)
- 3 PRs closed as duplicates
- 6 PRs awaiting author changes
- Dev green: 5,038 tests passing
- All 6 original merge-plan PRs complete
- Decision inbox merged & deleted

Artifacts:
- Orchestration logs for Flight, Procedures, FIDO
- Session log: 2026-03-26T06:41:00Z-crash-recovery.md
- Team history updated (Flight, FIDO, Procedures)
- Decisions merged to decisions.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…init-scaffold-*

consult.test.ts creates .test-setup-{hash}/ dirs in cwd and
init-scaffolding.test.ts creates .test-init-scaffold-{hash}/ dirs.
If tests crash before afterEach cleanup, these get left behind.
One .test-setup-* dir was accidentally committed and tracked.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ifact, consolidate .gitignore

Removed:
- publish-0.8.21.ps1, publish-0.8.22.ps1 (version-pinned one-off release helpers)
- PUBLISH-README.md (companion to publish scripts)
- squad-export.json (generated export snapshot, not needed in repo)

.gitignore: Consolidated 3 specific .test-* patterns into single .test-* glob
to cover all 15+ test artifact naming patterns that create temp dirs in cwd.

Also pruned 3 dead git worktrees (squad-337, squad-348, squad-356).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
lychee v0.23.0 renamed --exclude-mail to --include-mail (inverted).
Mail links are excluded by default now, so the flag is unnecessary.
This caused the link checker to crash with an argument error, creating
false positive issue bradygaster#554.

Closes bradygaster#554

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ter#618) (bradygaster#628)

* chore(squad): crash recovery complete — 10 PRs merged, 3 dupes closed

Round 1 (Audit & Baseline):
- Flight audited PR/issue state after CLI crash
- FIDO verified baseline: 5,038 tests passing, dev green
- Scribe merged stale decision inbox

Round 2 (Execution):
- Flight closed duplicate PRs bradygaster#605, bradygaster#604, bradygaster#602
- Procedures rebased & merged PR bradygaster#619 (model catalog)
- FIDO reviewed 9 community PRs: approved 3, change-requested 6

Round 3 (Community Merges):
- Coordinator merged 3 approved community PRs (bradygaster#625, bradygaster#603, bradygaster#608)

Outcomes:
- 10 PRs merged total (6 merge-plan, 3 community, 1 legacy)
- 3 PRs closed as duplicates
- 6 PRs awaiting author changes
- Dev green: 5,038 tests passing
- All 6 original merge-plan PRs complete
- Decision inbox merged & deleted

Artifacts:
- Orchestration logs for Flight, Procedures, FIDO
- Session log: 2026-03-26T06:41:00Z-crash-recovery.md
- Team history updated (Flight, FIDO, Procedures)
- Decisions merged to decisions.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore: remove leaked test fixture, gitignore .test-setup-* and .test-init-scaffold-*

consult.test.ts creates .test-setup-{hash}/ dirs in cwd and
init-scaffolding.test.ts creates .test-init-scaffold-{hash}/ dirs.
If tests crash before afterEach cleanup, these get left behind.
One .test-setup-* dir was accidentally committed and tracked.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore: repo root cleanup — remove one-off publish scripts, export artifact, consolidate .gitignore

Removed:
- publish-0.8.21.ps1, publish-0.8.22.ps1 (version-pinned one-off release helpers)
- PUBLISH-README.md (companion to publish scripts)
- squad-export.json (generated export snapshot, not needed in repo)

.gitignore: Consolidated 3 specific .test-* patterns into single .test-* glob
to cover all 15+ test artifact naming patterns that create temp dirs in cwd.

Also pruned 3 dead git worktrees (squad-337, squad-348, squad-356).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat(cli): add squad config model command for model pinning (bradygaster#618)

Add a new 'squad config' CLI command with 'model' subcommand that lets
users manage model configuration:

- squad config model              — show current model config
- squad config model <name>       — set default model for all agents
- squad config model <name> --agent <a> — pin model to specific agent
- squad config model --clear      — clear default model override
- squad config model --clear --agent <a> — clear agent override

Validates model names against MODEL_CATALOG and agent names against
the .squad/agents/ directory. Uses existing SDK functions for all
config read/write operations.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: add @latest to npm install commands in cli.js and package README (bradygaster#597)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Crash recovery: merged 10 PRs, closed 3 duplicates
- Repo hygiene: removed test artifacts, consolidated .gitignore, cleaned garbage files, pruned 21 local + 31 remote branches
- Issue triage: 12+ issues routed and closed
- PR management: merged bradygaster#628 (model config), reviewed bradygaster#629, routed Tamir PRs to dev branch pending proposals

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…sion.md

Closes bradygaster#610

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bradygaster and others added 8 commits March 26, 2026 10:14
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…#631)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…gaster#631)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…rds, git safety rules

Incident bradygaster#631 complete closure:
- Surgeon reverted problematic commit 1ab2f5c on dev (restored 361 files)
- Booster added CI deletion guards & canary checks to squad-ci.yml
- RETRO documented Git Safety mandatory rules in copilot-instructions.md
- PRs created and ready for merge (squad/631-ci-deletion-guard, squad/631-copilot-git-safety)
- Issue bradygaster#631 closed with incident summary

Team memory updated:
- Orchestration log: 2026-03-26T17-28-631-closure.md
- Session log: 2026-03-26T17-28-631-closure.md

Incident response: Full parallel execution by Surgeon, Booster, RETRO agents.
Resolution: EMU auth restrictions resolved, manual coordination by Coordinator.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CI: Add source tree canary and large deletion guard
…s.md

Add git safety rules to copilot-instructions.md
@diberry diberry force-pushed the squad/39-test-integrity-guards branch from 9d947f6 to 238b139 Compare March 26, 2026 18:37
Adds a CI step that compares the current test count against a baseline
stored in .github/test-baseline.json. PRs that reduce the test count
below baseline are rejected.

Also updates copilot-instructions.md with explicit 'never delete tests'
directive for @copilot and other AI agents.

Closes #39

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@diberry diberry force-pushed the squad/39-test-integrity-guards branch from 238b139 to 8d8c4f6 Compare March 26, 2026 19:29
@diberry
Copy link
Copy Markdown
Owner Author

diberry commented Mar 26, 2026

Retargeted to bradygaster/squad — upstream PR open.

@diberry diberry closed this Mar 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants