Skip to content

chore: release v0.9.4 — promote insider to official#1023

Merged
bradygaster merged 15 commits into
mainfrom
release/0.9.4
Apr 21, 2026
Merged

chore: release v0.9.4 — promote insider to official#1023
bradygaster merged 15 commits into
mainfrom
release/0.9.4

Conversation

@tamirdresher
Copy link
Copy Markdown
Collaborator

Summary

Promotes the current insider release (0.9.4-insider.1) to official v0.9.4.

Version Changes

  • squad-sdk: 0.9.4-insider.1 → 0.9.4
  • squad-cli: 0.9.4-insider.1 → 0.9.4
  • CLI SDK dependency: pinned 0.9.4-insider.1 → 0.9.4
  • CHANGELOG: [Unreleased] → [0.9.4] - 2026-04-21

What's in 0.9.4

New Features:

Fixes:

Automation

Once merged to main:

  1. \squad-release.yml\ creates git tag v0.9.4 + GitHub Release
  2. \squad-npm-publish.yml\ publishes both packages to npm with \latest\ tag

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

Copilot AI and others added 5 commits April 5, 2026 14:01
…0.9.4-insider.1

Root cause: CLI depended on SDK via '>=0.9.0' which npm resolves to the
latest stable version (0.9.1) — a build that predates FSStorageProvider.
npm semver rules prevent >=0.9.0 from matching prerelease versions, so
users always got the stale SDK.

Fixes:
1. Pin CLI SDK dep to exact '0.9.4-insider.1'
2. Add workflow step to auto-pin SDK version before every publish
3. Add registry verification wait between SDK and CLI publish
4. Bump both packages to 0.9.4-insider.1

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

* feat(ci): add file list with line stats, scope badge, and check subtitles to PR readiness (#813)

- Add file list table with per-file +additions/-deletions stats
- Add PR scope classification (Product/Infrastructure/Mixed)
- Rename Architectural Review and Security Review checks with descriptive subtitles

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

* ci: scope boundary enforcement for repo-health PRs (#826)

Add CI check that fails when repo-health PRs include product source
code changes under packages/*/src/. Prevents scope creep where
infrastructure PRs accidentally touch product code.

- Add squad-scope-check.yml workflow
- Document PR scope rules in copilot-instructions.md
- Fail loudly on git diff errors instead of silently passing

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

* ci: smart PR nudge for stale PRs (#827)

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

* test: add cross-package export smoke test to catch missing imports

Validates every value import squad-cli uses from squad-sdk resolves to
a defined export at runtime.  Covers 15 SDK subpaths and 50+ named
exports including FSStorageProvider, SquadClient, CastingEngine,
RalphMonitor, and all resolution/config/platform helpers.

Also verifies that every entry in the SDK package.json exports map
points to a file that actually exists on disk.

Motivation: v0.9.3-insider.1 shipped with FSStorageProvider missing
from the SDK barrel — broke users at runtime while all TS-level tests
passed (TypeScript resolves from source, not compiled output).

Refs: #836

---------

Co-authored-by: Dina Berry (MSFT) <diberry@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
* feat(cli): add deprecation warnings for tunnel, rc, and REPL commands

Adds visible deprecation warnings to:
- Interactive REPL shell (squad with no args)
- squad start (and --tunnel flag)
- squad rc / remote-control
- squad rc-tunnel

Phase 1: warnings only — no behavior changes. Commands still work
but now emit a yellow deprecation notice pointing users to the
GitHub Copilot CLI as the replacement.

Help text updated to show [DEPRECATED] tags on affected commands.

Closes #899
Related: #665

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

* chore: add changeset for tunnel/rc/REPL deprecation warnings

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

* fix: shorten deprecation hint to fit 80-char UX gate

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

---------

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

* Add enforcement wiring step to hiring process + workflow wiring guide (#592)

Fixes #591

- Added step 7 (Wire enforcement) to Adding Team Members in squad.agent.md
- Added workflow-wiring-guide.md with configuration surface area, wiring instructions, common mistakes, and verification checklist
- Added appendix walkthroughs for code reviewer (gate pattern) and documenter (follow-up trigger pattern)

Co-authored-by: Jonathan Ben Ami <jbenami@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat(agents): add Challenger / Devil's Advocate agent template + fact-checking skill (#603)

* feat(skills): add fact-checking skill\n\nAdds challenger/fact-checking review pattern.\nVerified against 200+ issues in production squads.\nCloses #598

* feat(agents): add challenger agent charter template\n\nGeneric Devil's Advocate / Challenger template.\nProvides auto-spawn integration pattern for coordinators.\nCloses #598

* feat: add APM integration for skill publishing and installation

Closes #824

## Changes

### New command: squad skill
- squad skill publish [<name>] — exports skill(s) to APM format, generating/updating apm.yml
- squad skill install <source> — installs a skill from APM registry
  - Supports owner/repo, owner/repo/skill-name, and direct URLs
  - Uses GitHub CLI to fetch from repos that have apm.yml or .squad/skills/
  - Writes .apm-source.json metadata to track skill origin
- squad skill list — lists installed skills with source provenance

### Updated: squad init
- Now generates �pm.yml at project root alongside .squad/
- Follows skipExisting semantics (safe to re-run)
- apm.yml includes skills, instructions, and prompts sections

### Updated: squad help
- Added skill command to help text with usage examples

## APM format
apm.yml is the Agent Package Manager manifest — package.json for AI agent context.
See: https://github.com/microsoft/apm

The manifest declares skills, instructions, and prompts in a portable format
that �pm install can deploy to .github/, .claude/, .cursor/ etc.

* chore: add changeset for APM integration

* docs: update CHANGELOG.md with APM integration entry

* fix(skill): use .copilot/skills/ as primary path per #430

The skills unification in #430 migrated skills from .squad/skills/
to .copilot/skills/. This updates the APM skill command to:

- Check .copilot/skills/ first, fall back to .squad/skills/ (backward compat)
- Use resolveSkillsDir() helper matching LocalSkillSource pattern
- Update all user-facing messages and apm.yml template paths
- Fix installSkillsFromSquadDir candidate order

Addresses review feedback from @Meir017.

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

* fix: align CHANGELOG.md with dev branch

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

* fix: add missing fs import in init.ts

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

---------

Co-authored-by: joniba <joniba@users.noreply.github.com>
Co-authored-by: Jonathan Ben Ami <jbenami@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <Copilot@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
… fetch (#920, #923)

* fix(watch): shared issue fetch, Windows shell:true, agentCmd default (#920, #923)

Three fixes for watch capabilities:

1. Shared issue fetch (#923): Fetch issues + PRs ONCE at round start
   via new RoundData on WatchContext. All 4 capabilities that called
   adapter.listWorkItems() independently now read from context.roundData.
   Core triage (runCheck + checkPRs) also uses shared data.
   Reduces API calls from ~6 to 2 per round.

2. Windows execFile + shell:true (#920): Added shell: IS_WINDOWS to
   every execFile/execFileSync call across the watch system, gh-cli.ts,
   and health.ts. Fixes 'spawn EINVAL' on Windows where bare commands
   like 'gh' resolve to .cmd wrappers that require a shell.

3. agentCmd default change: Default agent command changed from
   'gh copilot' (deprecated) to standalone 'copilot'. Extracted
   duplicated buildAgentCommand() and spawnWithTimeout() from 7 files
   into shared agent-spawn.ts module.

Files:
- NEW: watch/agent-spawn.ts — shared buildAgentCommand, spawnWithTimeout, spawnAgent, IS_WINDOWS
- watch/types.ts — added RoundData interface + roundData field on WatchContext
- watch/index.ts — fetch once in executeRound(), pass roundData through
- watch/capabilities/{decision-hygiene,monitor-teams,monitor-email,retro}.ts — use agent-spawn.ts
- watch/capabilities/{execute,wave-dispatch}.ts — use agent-spawn.ts + roundData
- watch/capabilities/{fleet-dispatch,two-pass}.ts — use roundData + shell:IS_WINDOWS
- watch/capabilities/{board,self-pull}.ts — shell:IS_WINDOWS on all execFile calls
- watch/health.ts — shell:IS_WINDOWS on gh auth check
- core/gh-cli.ts — shell:IS_WINDOWS on all 6 execFileAsync calls

* test: update buildAgentCommand tests for copilot default

The default agent command changed from 'gh copilot' to standalone
'copilot' CLI. Updated test expectations accordingly.

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

* chore: add changeset for watch Windows fixes

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

* fix(watch): runtime copilot CLI detection with gh fallback

Add resolveCopilotCmd() that tries standalone 'copilot' first, falls
back to 'gh copilot' if not found. Result is cached per process.

Addresses Q's review of PR #927: hardcoded 'copilot' default could
break users without the standalone CLI installed.

Both buildAgentCommand (shared) and buildAgentCommand (legacy compat)
now use the same detection logic.

Tests updated to accept either resolved command.

* fix(watch): remove unused _cp variable, use resolveCopilotCmd in fleet-dispatch

- Remove unnecessary ChildProcess assignment in spawnAgent
- Fleet-dispatch now uses runtime copilot detection instead of hardcoding

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

---------

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

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Promotes the current insider build to the official v0.9.4 release by updating package versions/dependencies and release notes, while also landing the related watch/Windows improvements, APM “skill” command integration, and new CI/automation workflows.

Changes:

  • Bump @bradygaster/squad-sdk / @bradygaster/squad-cli to 0.9.4 and update the changelog for the release date.
  • Improve squad watch execution reliability on Windows and reduce API usage via shared round-level fetch + shared agent spawn utilities.
  • Add APM integration (squad skill ...) + apm.yml generation during squad init, plus new workflows/tests to harden release and PR hygiene.

Reviewed changes

Copilot reviewed 32 out of 33 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
test/cross-package-exports.test.ts Adds runtime export smoke tests to catch SDK export regressions used by the CLI.
test/cli/watch-execute.test.ts Updates tests to match new copilot command detection and message flag usage.
packages/squad-sdk/package.json Bumps SDK version to 0.9.4.
packages/squad-cli/src/cli/index.ts Re-exports new skill command and generateApmYml helper.
packages/squad-cli/src/cli/core/init.ts Generates apm.yml during squad init (skip-if-exists semantics).
packages/squad-cli/src/cli/core/gh-cli.ts Uses shell on Windows for gh invocations to avoid spawn/PATH issues.
packages/squad-cli/src/cli/commands/watch/types.ts Introduces RoundData shared fetch contract for watch capabilities.
packages/squad-cli/src/cli/commands/watch/index.ts Implements round-level shared fetch, Windows shell fixes, and agent command detection integration.
packages/squad-cli/src/cli/commands/watch/health.ts Updates gh auth probing approach and uses shared Windows shell behavior.
packages/squad-cli/src/cli/commands/watch/capabilities/wave-dispatch.ts Switches to shared agent spawn utilities + uses roundData when available.
packages/squad-cli/src/cli/commands/watch/capabilities/two-pass.ts Uses roundData and adds Windows shell handling for gh issue view.
packages/squad-cli/src/cli/commands/watch/capabilities/self-pull.ts Adds Windows shell handling to git exec calls.
packages/squad-cli/src/cli/commands/watch/capabilities/retro.ts Uses shared agent spawn utilities.
packages/squad-cli/src/cli/commands/watch/capabilities/monitor-teams.ts Uses shared agent spawn utilities.
packages/squad-cli/src/cli/commands/watch/capabilities/monitor-email.ts Uses shared agent spawn utilities.
packages/squad-cli/src/cli/commands/watch/capabilities/fleet-dispatch.ts Uses shared copilot resolution + Windows shell handling + roundData.
packages/squad-cli/src/cli/commands/watch/capabilities/execute.ts Uses shared agent spawn utilities + Windows shell handling + roundData.
packages/squad-cli/src/cli/commands/watch/capabilities/decision-hygiene.ts Uses shared agent spawn utilities.
packages/squad-cli/src/cli/commands/watch/capabilities/board.ts Adds shared Windows shell option to gh project and related calls.
packages/squad-cli/src/cli/commands/watch/agent-spawn.ts New shared agent spawn module (copilot detection + Windows-safe exec).
packages/squad-cli/src/cli/commands/skill.ts New squad skill publish/install/list command for APM integration.
packages/squad-cli/src/cli-entry.ts Wires up skill command and updates help/deprecation notices.
packages/squad-cli/package.json Bumps CLI version to 0.9.4 and pins SDK dependency to 0.9.4.
package-lock.json Updates lockfile entries (currently inconsistent with release versions).
CONTRIBUTING.md Documents readiness check comment including file list/stats.
CHANGELOG.md Promotes [Unreleased] to [0.9.4] - 2026-04-21.
.github/workflows/squad-scope-check.yml Adds workflow to enforce repo-health PR scope boundaries.
.github/workflows/squad-pr-nudge.yml Adds scheduled workflow to nudge stale PRs with actionable diagnostics.
.github/workflows/squad-insider-publish.yml Hardens insider publish (pins SDK dep, registry verification).
.github/copilot-instructions.md Documents the new PR nudge workflow behavior.
.changeset/fix-watch-windows-shared-fetch.md Changeset for watch Windows/shared-fetch fixes.
.changeset/deprecate-tunnel-rc-repl.md Changeset for deprecation warnings.
.changeset/apm-integration.md Changeset intended for APM integration (currently targets a non-existent package name).

Comment thread packages/squad-cli/src/cli/commands/skill.ts Outdated
Comment thread .github/workflows/squad-insider-publish.yml Outdated
Comment thread .github/workflows/squad-pr-nudge.yml Outdated
Comment thread CHANGELOG.md
Comment thread packages/squad-cli/src/cli/commands/watch/index.ts
Comment thread packages/squad-cli/src/cli/commands/skill.ts Outdated
Comment thread packages/squad-cli/src/cli/commands/watch/health.ts
Comment thread .changeset/apm-integration.md Outdated
Copy link
Copy Markdown
Owner

@bradygaster bradygaster left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will do a little deeper review, have also asked copilot to review.

Comment thread .github/workflows/squad-pr-nudge.yml
@tamirdresher tamirdresher added the skip-changelog Skip changelog enforcement for this PR label Apr 21, 2026
Copilot and others added 2 commits April 21, 2026 12:21
# Conflicts:
#	.github/workflows/squad-repo-health.yml
#	packages/squad-cli/src/cli-entry.ts
#	packages/squad-cli/src/cli/commands/watch/capabilities/decision-hygiene.ts
#	packages/squad-cli/src/cli/commands/watch/capabilities/execute.ts
#	packages/squad-cli/src/cli/commands/watch/capabilities/monitor-email.ts
#	packages/squad-cli/src/cli/commands/watch/capabilities/monitor-teams.ts
#	packages/squad-cli/src/cli/commands/watch/capabilities/retro.ts
#	packages/squad-cli/src/cli/commands/watch/capabilities/wave-dispatch.ts
#	packages/squad-cli/src/cli/commands/watch/health.ts
#	packages/squad-cli/src/cli/commands/watch/index.ts
#	packages/squad-cli/src/cli/commands/watch/types.ts
#	scripts/pr-readiness.mjs
#	test/cli/watch-execute.test.ts
#	test/pr-readiness.test.ts
- squad-sdk: 0.9.4-insider.1 → 0.9.4
- squad-cli: 0.9.4-insider.1 → 0.9.4
- CHANGELOG: [Unreleased] → [0.9.4] - 2026-04-21

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot and others added 7 commits April 21, 2026 12:26
The CHANGELOG Write Protection gate blocks non-approved authors.
Leave CHANGELOG as-is from insider; the release workflow will
stamp the version.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The CI gate blocks non-approved authors from modifying CHANGELOG.md.
Using main's version since this PR targets main.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Files from insider branch that were deleted on main need to be
preserved for the promotion. Restores scripts/, workflows, and
test files that were lost in the merge resolution.

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

security-review-skills.test.ts was added to main by PR #882 but references
scanSkillContent which was subsequently removed. This test fails on main too.
Removing from promotion branch since it's not part of insider.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The test expected '-p' but agent-spawn.ts uses '--message' since insider.
Aligns test assertion with the current implementation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reverts all source, test, template, workflow, and doc files to match
the insider branch exactly. Only version bumps (0.9.4) and CHANGELOG
remain as intentional diffs.

The merge of main into the release branch had incorrectly brought in
main's divergent code (monorepo init, rate-limit detection, cast tests,
etc.) which caused 24+ test failures in CI. A promotion PR should
contain insider's tested code, not main's unreleased changes.

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

Hey Brady, saw your comment about doing a deeper review 👍

Copilot left 8 review comments - I looked through them and they're all on code that's coming from insider as-is (this PR is just the version bump promotion). So these are pre-existing in the insider codebase, not something introduced by this PR.

That said, some of them are legit catches worth fixing:

  • ghAvailable() called without await in skill.ts (bug)
  • Missing shell: true for Windows in skill.ts gh calls
  • base/head reversed in compareCommits in pr-nudge workflow
  • Missing timeout on execFileSync in watch health
  • Nested quotes issue in insider-publish workflow
  • Wrong package name in apm changeset

Do you want me to fix these here in this PR, or would you prefer a separate follow-up PR so we can keep this one clean as just the promotion?

- skill.ts: add await to async ghAvailable() call
- skill.ts: add shell: IS_WINDOWS to all execFileAsync('gh') calls
- squad-pr-nudge.yml: fix reversed compareCommits base/head args
- squad-insider-publish.yml: fix nested double-quotes in bash
- watch/health.ts: add timeout to execFileSync call
- apm-integration.md: fix package name to @bradygaster/squad-cli

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

Applied all 6 Copilot review fixes in commit 81f84b5:

  1. skill.ts - Added await to async ghAvailable() call (was silently ignoring the Promise)
  2. skill.ts - Added shell: IS_WINDOWS to all execFileAsync('gh', ...) calls (fixes Windows compat)
  3. squad-pr-nudge.yml - Fixed reversed compareCommits base/head arguments
  4. squad-insider-publish.yml - Fixed nested double-quotes in bash (swapped to single quotes for node -p)
  5. watch/health.ts - Added timeout: 10_000 to execFileSync call (prevents hang)
  6. apm-integration.md - Fixed package name from squad to @bradygaster/squad-cli

CI should be running now.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 151 out of 153 changed files in this pull request and generated 8 comments.

Comment thread packages/squad-sdk/src/platform/types.ts
Comment thread packages/squad-sdk/src/platform/azure-devops.ts
Comment thread packages/squad-cli/src/cli/commands/start.ts
Comment thread packages/squad-cli/src/cli/commands/plugin.ts
Comment thread packages/squad-sdk/src/runtime/scheduler.ts
Comment thread packages/squad-cli/src/cli/core/gh-cli.ts
Comment thread packages/squad-sdk/src/config/init.ts
Comment thread packages/squad-cli/src/cli/commands/cast.ts
@bradygaster bradygaster merged commit 4a08b50 into main Apr 21, 2026
16 checks passed
tamirdresher pushed a commit that referenced this pull request Apr 22, 2026
PR #1023 (insider->main) picked insider's older file versions,
reverting 68 source/test/workflow files to outdated versions and
deleting 13 files that existed on main. This restores all files
to their correct state from dev (which matched pre-merge main).

Affected areas:
- CLI commands (cast, start, loop, plugin, externalize, watch/*)
- SDK (state-backend, scheduler, comms-teams, azure-devops)
- Workflows (release, publish, promote, preview, sync-labels)
- Tests (13 deleted test files restored, 15 reverted tests fixed)
- Templates and config files

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bradygaster added a commit that referenced this pull request Apr 22, 2026
fix: restore 106 files accidentally reverted by PR #1023 merge
bradygaster added a commit that referenced this pull request Apr 25, 2026
Closes the gap from PR #1023 where version was bumped but CHANGELOG wasn't updated.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bradygaster added a commit that referenced this pull request Apr 25, 2026
The release/0.9.4 merge (PR #1023) bumped packages/*/package.json but missed the root.
This caused squad-release.yml to fail on every push to main.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
SabreSE pushed a commit to SabreSE/squad that referenced this pull request May 7, 2026
PR bradygaster#1023 merged insider into main, but insider was behind on docs changes
that had already landed on main via dev (PRs bradygaster#989, bradygaster#953, bradygaster#955, bradygaster#956, bradygaster#906).
The merge resolution picked insider's older versions, reverting 25 docs files.

This restores all affected files from dev:
- David Pine's human-led productivity emphasis (PR bradygaster#989)
- Cross-links between related documentation (PR bradygaster#956)
- Compaction recovery, coordinator restraint, result persistence refs
- Teams async adapter migration guide
- State backends feature doc
- Search/Sidebar component updates
- Landing page content

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-changelog Skip changelog enforcement for this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants