Skip to content

feat(sdk): StorageProvider — complete migration + example providers (#481)#18

Closed
diberry wants to merge 24 commits intodevfrom
diberry/storage-abstraction-squashed
Closed

feat(sdk): StorageProvider — complete migration + example providers (#481)#18
diberry wants to merge 24 commits intodevfrom
diberry/storage-abstraction-squashed

Conversation

@diberry
Copy link
Copy Markdown
Owner

@diberry diberry commented Mar 24, 2026

StorageProvider Abstraction — Complete Migration

PRD bradygaster#481 — ~95% complete

115 files changed (+12457, -964) — single squashed commit.


StorageProvider API

The StorageProvider interface defines 24 methods — 12 async + 12 sync (deprecated):

Surface Methods Status
Async (12) read, write, append, exists, list, delete, deleteDir, isDirectory, mkdir, rename, copy, stat ✅ Primary API
Sync (12) readSync, writeSync, appendSync, existsSync, listSync, deleteSync, deleteDirSync, isDirectorySync, mkdirSync, statSync, renameSync, copySync ⚠️ Deprecated — removed in Wave 2

Built-in providers (FS, InMemory, SQLite) implement all 24 methods. The Azure Blob sample implements async only — sync methods throw with a clear deprecation message since cloud I/O cannot be synchronous.

All Waves Complete

Wave Scope Files Status
Phase 0-2 Interface + 3 providers + SquadState facade 19 ✅ Approved
3b (Shell) Shell subsystem 5 ✅ Approved
3a (Core Infra) 6 sync methods + 12 core files 16 ✅ Approved
3c (CLI Commands) deleteDirSync + 19 commands 20 ✅ Approved
4 (SDK) 26 SDK module files 26 ✅ Approved
Samples SQLite + Azure Blob 9 ✅ Approved

Intentional fs Retentions (6 total)

  • CLI: createReadStream in rc.ts + start.ts (HTTP streaming)
  • SDK: createWriteStream (bridge.ts), realpathSync (skill-script-loader.ts), cpSync (consult.ts), watch/FSWatcher (squad-observer.ts)

All outside StorageProvider scope — streaming, symlinks, dir copy, file watching.

Test Results

  • 389 storage/contract tests pass
  • 24/24 interface methods covered across 3 providers
  • Pre-existing failures unchanged (see CI comment for details)

Example Providers

SQLite:

cd samples/storage-provider-sqlite && npm install && npm run demo

Azure Blob Storage:

# With Azurite (local emulator)
cd samples/storage-provider-azure && npm install
npm run azurite    # Terminal 1 — stores data in ./azurite/
npm run demo:emulator  # Terminal 2

# With real Azure
npm run azure:create   # Creates RG + storage account
export AZURE_STORAGE_CONNECTION_STRING="..."
npm run demo
npm run azure:delete   # Tear down when done

Both samples support --keep flag to preserve data for inspection, and npm run clean for cleanup.

CI Failures

  • Fixed: ENOTDIR in agent listing (isDirectory guard), EACCES/EPERM cross-platform (accept both)
  • Pre-existing on dev: ~20 async/await cascade failures from Wave 3b (see CI comment)

Remaining (separate PR)

  • Wave 2: Remove deprecated sync methods (breaking change — async cascade across 50+ call sites)

@diberry diberry force-pushed the diberry/storage-abstraction-squashed branch 4 times, most recently from 582aaec to 2a912ba Compare March 25, 2026 03:33
@diberry diberry changed the title feat(sdk): StorageProvider Phases 0-2 — interface, providers, SquadSt… feat(sdk): StorageProvider Phases 0-3 — interface, providers, SquadState facade, API expansion (#481) Mar 25, 2026
@diberry diberry force-pushed the diberry/storage-abstraction-squashed branch from 2a912ba to 40e83b5 Compare March 25, 2026 03:55
@diberry diberry force-pushed the diberry/storage-abstraction-squashed branch from 40e83b5 to aa7e813 Compare March 25, 2026 15:40
@diberry diberry changed the title feat(sdk): StorageProvider Phases 0-3 — interface, providers, SquadState facade, API expansion (#481) feat(sdk): StorageProvider Phases 0-3 + Wave 3a — interface, providers, SquadState facade, core infra migration (#481) Mar 25, 2026
@diberry diberry force-pushed the diberry/storage-abstraction-squashed branch from aa7e813 to 1e673b7 Compare March 25, 2026 16:46
@diberry diberry changed the title feat(sdk): StorageProvider Phases 0-3 + Wave 3a — interface, providers, SquadState facade, core infra migration (#481) feat(sdk): StorageProvider Phases 0-3 + Waves 3a/3b/3c — full CLI migration (#481) Mar 25, 2026
@diberry diberry changed the title feat(sdk): StorageProvider Phases 0-3 + Waves 3a/3b/3c — full CLI migration (#481) feat(sdk): StorageProvider full CLI migration (#481) Mar 25, 2026
@diberry diberry force-pushed the diberry/storage-abstraction-squashed branch from 1e673b7 to 2a4a39c Compare March 25, 2026 17:36
@diberry diberry changed the title feat(sdk): StorageProvider full CLI migration (#481) feat(sdk): StorageProvider Phases 0-3 + Waves 3a/3b/3c + example providers (#481) Mar 25, 2026
@diberry diberry force-pushed the diberry/storage-abstraction-squashed branch from 2a4a39c to 05013b6 Compare March 25, 2026 19:11
@diberry diberry changed the title feat(sdk): StorageProvider Phases 0-3 + Waves 3a/3b/3c + example providers (#481) feat(sdk): StorageProvider — complete migration + example providers (#481) Mar 25, 2026
@diberry diberry force-pushed the diberry/storage-abstraction-squashed branch from 05013b6 to b918ac7 Compare March 25, 2026 22:40
@diberry
Copy link
Copy Markdown
Owner Author

diberry commented Mar 25, 2026

CI Failure Analysis (commit b918ac7)

✅ Fixed in this push (PR-caused)

  1. ENOTDIR in �gent-source.ts and personal.ts — When listing agents, files (not directories) in the agents/ folder caused FSStorageProvider.read to throw ENOTDIR when trying to read README.md/charter.md. Fixed by adding isDirectory() check before reading charter.

  2. EACCES vs EPERM in storage-provider.test.ts:465 — Linux returns EACCES for readonly file writes, Windows returns EPERM. Test now accepts both: expect(['EPERM', 'EACCES']).toContain(code).

⚠️ Pre-existing on dev (NOT caused by this PR)

The remaining ~20 test failures are all the async/await cascade from Wave 3b (sync→async migration). Pattern: expected [] to include 'X' — a Promise object is treated as an empty iterable because test call sites were not updated with await.

Affected files (all pre-existing on dev):

  • cli-shell-comprehensive.test.ts — 10 failures
  • shell.test.ts — 7 failures
  • repl-ux-fixes.test.ts — 5 failures

These tests fail identically on dev without this PR's changes. They will be fixed in a separate PR addressing the Wave 3b async test migration.

@diberry diberry force-pushed the diberry/storage-abstraction-squashed branch from b918ac7 to a8beed8 Compare March 25, 2026 23:46
bradygaster and others added 10 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>
Copilot bot and others added 5 commits March 26, 2026 00:36
…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 9 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
…rs (bradygaster#481)

Complete StorageProvider migration:
- Phase 0: Interface (24 methods: 12 async + 12 sync deprecated)
- Phase 1: FSStorageProvider, InMemoryStorageProvider, SQLiteStorageProvider
- Phase 2: SquadState facade + collections wiring
- Phase 3 Waves 3a/3b/3c: Full CLI migration (31 files)
- Wave 4: Full SDK migration (26 files)
- Example providers: SQLite usage sample + Azure Blob StorageProvider

Only 4 intentional fs retentions in SDK (createWriteStream, realpathSync, cpSync, watch).
Only 2 in CLI (createReadStream in rc.ts + start.ts).

389 storage/contract tests pass. All waves reviewed and approved.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@diberry
Copy link
Copy Markdown
Owner Author

diberry commented Mar 26, 2026

Rebased onto upstream/dev (328e1df) and retargeted to bradygaster/squad — see upstream PR bradygaster#640 (bradygaster#640)

@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.

4 participants