Repository navigation
fix(gh-aw): restore hosted E2E and migrate package identity - #2410
Conversation
🛫 PR Readiness Check
PR Scope: 🔧 Infrastructure
|
| Status | Check | Details |
|---|---|---|
| ❌ | Single commit | 6 commits — consider squashing before review |
| ✅ | Not in draft | Ready for review |
| ✅ | Branch up to date | Up to date with dev |
| ❌ | Copilot review | No Copilot review yet — it may still be processing |
| ✅ | Changeset present | Changeset file found |
| ✅ | Scope clean | No .squad/ or docs/proposals/ files |
| ✅ | No merge conflicts | No merge conflicts |
| ✅ | Copilot threads resolved | 4 active Copilot thread(s) resolved (7 outdated skipped) |
| ❌ | CI passing | 9 check(s) failing: docs-quality, test, Policy Gates, samples-build, sdk-exports-validation, Changeset Drift, gh-aw strict compile, Shebang EOL, changes |
Files Changed (34 files, +3158 −283)
| File | +/− |
|---|---|
.changeset/repo-move-github-squad-gh-aw-identity.md |
+6 −0 |
.github/actions/squad-init/action.yml |
+3 −2 |
.github/agents.md |
+10 −1 |
.github/workflows/squad-gh-aw-hosted-e2e.yml |
+3 −1 |
.squad-templates/skills/gh-aw-enlistment/SKILL.md |
+171 −14 |
README.md |
+26 −1 |
docs/src/content/docs/features/standalone-install.md |
+3 −2 |
docs/src/content/docs/guide/gh-aw.md |
+195 −19 |
packages/squad-cli/templates/skills/gh-aw-enlistment/SKILL.md |
+171 −14 |
packages/squad-sdk/templates/skills/gh-aw-enlistment/SKILL.md |
+171 −14 |
scripts/gh-aw-hosted-e2e.mjs |
+11 −7 |
templates/skills/gh-aw-enlistment/SKILL.md |
+171 −14 |
test/fixtures/squad-init-approved.json |
+1 −1 |
test/gh-aw-enlistment-skill.test.ts |
+970 −19 |
test/gh-aw-hosted-e2e.test.ts |
+101 −6 |
test/gh-aw-implement-workflow.test.ts |
+3 −2 |
test/gh-aw-install-staging.test.ts |
+243 −13 |
test/gh-aw-quality.test.ts |
+306 −20 |
test/gh-aw-review-workflow.test.ts |
+17 −4 |
test/gh-aw-verify-resource.test.ts |
+22 −4 |
test/helpers/gh-aw-install-fixture.ts |
+12 −6 |
test/helpers/refresh-squad-init-fixture.mjs |
+2 −2 |
test/squad-cli-latest.test.ts |
+90 −12 |
workflows/README.md |
+14 −1 |
workflows/package/squad-bootstrap.md |
+1 −1 |
workflows/package/squad-deps-worker.md |
+2 −1 |
workflows/package/squad-implement-worker.md |
+2 −1 |
workflows/package/squad-retro.md |
+2 −1 |
workflows/package/squad.md |
+2 −1 |
workflows/shared/squad-install-verifier.mjs |
+208 −40 |
workflows/shared/squad.md |
+6 −3 |
workflows/skills/gh-aw-enlistment/SKILL.md |
+171 −14 |
workflows/squad-bootstrap.md |
+1 −1 |
workflows/squad-workflows.manifest.json |
+41 −41 |
Total: +3158 −283
This check runs automatically on every push. Fix any ❌ items and push again.
See CONTRIBUTING.md and PR Requirements for details.
There was a problem hiding this comment.
🟡 Changes recommended
The upgrade flow can delete legacy verification metadata after a failed reinstall, and its warning limit blocks valid migrations with committed legacy locks.
2 open issues
What changed in this PR
Updates Squad’s gh-aw distribution for the move to github/squad, restoring hosted end-to-end coverage and migrating package identity while retaining legacy-install compatibility.
Changes:
- Restores hosted E2E execution using the immutable repository ID and updated trusted-source identity.
- Adds canonical and legacy package verification, ownership-migration checks, and regenerated integrity digests.
- Updates action references, installation guides, shipped skills, and regression coverage.
| File | Description |
|---|---|
workflows/squad-workflows.manifest.json |
Updates canonical package identity and integrity digests. |
workflows/squad-bootstrap.md |
Refreshes the verifier integrity digest. |
workflows/skills/gh-aw-enlistment/SKILL.md |
Updates distributed installation and migration guidance. |
workflows/shared/squad.md |
Points the pinned squad-init action at the new owner. |
workflows/shared/squad-install-verifier.mjs |
Adds legacy identity compatibility and migration checks. |
workflows/README.md |
Documents identity support by revision and migration cleanup. |
workflows/package/squad.md |
Regenerates the squad-init action reference. |
workflows/package/squad-retro.md |
Regenerates the squad-init action reference. |
workflows/package/squad-implement-worker.md |
Regenerates the squad-init action reference. |
workflows/package/squad-deps-worker.md |
Regenerates the squad-init action reference. |
workflows/package/squad-bootstrap.md |
Refreshes the generated verifier digest. |
test/squad-cli-latest.test.ts |
Updates action-reference and fixture-source expectations. |
test/helpers/refresh-squad-init-fixture.mjs |
Retrieves pinned fixtures from the new repository. |
test/helpers/gh-aw-install-fixture.ts |
Supports fixtures for either package identity. |
test/gh-aw-verify-resource.test.ts |
Covers legacy installs and cross-identity rejection. |
test/gh-aw-review-workflow.test.ts |
Checks canonical identity across installation surfaces. |
test/gh-aw-quality.test.ts |
Covers identity normalization, ownership, and integrity checks. |
test/gh-aw-install-staging.test.ts |
Covers ownership staging, migration residue, and notices. |
test/gh-aw-implement-workflow.test.ts |
Updates documented installation expectations. |
test/gh-aw-hosted-e2e.test.ts |
Covers repository-ID guards and updated source identity. |
test/gh-aw-enlistment-skill.test.ts |
Covers identity gates and migration instructions. |
test/fixtures/squad-init-approved.json |
Updates source metadata; pinned action bytes remain unchanged. |
templates/skills/gh-aw-enlistment/SKILL.md |
Synchronizes the root skill mirror. |
scripts/gh-aw-hosted-e2e.mjs |
Updates trusted identity and requires canonical hosted installs. |
README.md |
Adds a manifest identity check before installation. |
packages/squad-sdk/templates/skills/gh-aw-enlistment/SKILL.md |
Synchronizes the SDK skill mirror. |
packages/squad-cli/templates/skills/gh-aw-enlistment/SKILL.md |
Synchronizes the CLI skill mirror. |
docs/src/content/docs/guide/gh-aw.md |
Documents revision checks, migration, and lock normalization. |
docs/src/content/docs/features/standalone-install.md |
Updates the squad-init usage example. |
.squad-templates/skills/gh-aw-enlistment/SKILL.md |
Updates canonical enlistment and upgrade instructions. |
.github/workflows/squad-gh-aw-hosted-e2e.yml |
Replaces the owner-name guard with the repository ID. |
.github/agents.md |
Updates package references and revision requirements. |
.github/actions/squad-init/action.yml |
Changes the default release repository and usage example. |
.changeset/repo-move-github-squad-gh-aw-identity.md |
Records patch releases for the shipped skill updates. |
Review effort: Max (auto)
Address two Copilot review findings on #2410. Stop the upgrade before any cleanup when the forced reinstall fails. The upgrade block in the gh-aw-enlistment skill, its four mirrors and the gh-aw guide deleted the legacy .github/aw/packages/bradygaster-squad-workflows-3632054824e8.json ownership record even when `gh aw add --force` failed, leaving the previous installation without its verification metadata. The block now stops with a STOP message before removing anything. The verifier prints its recovery and legacy-move commands as one && chain, so a failed reinstall stops them too, and its staged-tree message says to delete the legacy record only after the reinstall succeeds. Allow the four squad-init replacement warnings only during the legacy-identity migration. gh-aw v0.91.5 compares safe updates against the locks committed at HEAD. While legacy locks are committed, every strict compile, even after --approve, reports the bradygaster/squad -> github/squad squad-init owner change once each in squad.md, squad-implement-worker.md, squad-deps-worker.md and squad-retro.md (8 succeeded, 6 warnings), so the two-warning gate stopped a valid migration before it could be committed. The skill and the guide now allowlist exactly those four diagnostics and their exact change list during that migration only. Any other warning, change, duplicate or summary still stops the flow. Tests run each upgrade block and the verifier's printed commands with a failing and a succeeding stubbed `gh aw add`, and apply each document's warning gate to real gh-aw v0.91.5 output from a repository with committed legacy locks: with --approve, without it, and after the upgrade commit. Mutation tests reject a widened migration allowlist. Regenerate the package manifest and bootstrap verifier digest, and extend the changeset. Refs #2403 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
91c0da5 to
46e3181
Compare
🟠 Impact Analysis — PR #2410Risk tier: 🟠 HIGH 📊 Summary
🎯 Risk Factors
📦 Modules Affectedci-workflows (3 files)
docs (2 files)
root (14 files)
scripts (1 file)
squad-cli (1 file)
squad-sdk (1 file)
templates (1 file)
tests (11 files)
This report is generated automatically for every PR. See #733 for details. |
🏗️ Architectural Review
Automated architectural review — informational only. |
There was a problem hiding this comment.
🟡 Changes recommended
The release action still defaults to the legacy repository, allowing its publisher to supply both executable archives and matching checksums if that repository path is reused.
4 open issues
2 resolved since last review
Review effort: Max (auto)
- The hosted E2E guard keys on the repository ID instead of the owner name, so it runs again and fails loudly after any future rename - github/squad/workflows becomes the canonical package identity; existing bradygaster/squad/workflows installs still verify (exact allowlist), and mixed or duplicate ownership records fail with guidance - Install and upgrade docs check the revision's manifest before gh aw add - uses: github/squad/.github/actions/squad-init (same pinned SHA); the action's default release repository is github/squad - Package regenerated with squad-install-verifier --write-source Closes #2403 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Address two Copilot review findings on #2410. Stop the upgrade before any cleanup when the forced reinstall fails. The upgrade block in the gh-aw-enlistment skill, its four mirrors and the gh-aw guide deleted the legacy .github/aw/packages/bradygaster-squad-workflows-3632054824e8.json ownership record even when `gh aw add --force` failed, leaving the previous installation without its verification metadata. The block now stops with a STOP message before removing anything. The verifier prints its recovery and legacy-move commands as one && chain, so a failed reinstall stops them too, and its staged-tree message says to delete the legacy record only after the reinstall succeeds. Allow the four squad-init replacement warnings only during the legacy-identity migration. gh-aw v0.91.5 compares safe updates against the locks committed at HEAD. While legacy locks are committed, every strict compile, even after --approve, reports the bradygaster/squad -> github/squad squad-init owner change once each in squad.md, squad-implement-worker.md, squad-deps-worker.md and squad-retro.md (8 succeeded, 6 warnings), so the two-warning gate stopped a valid migration before it could be committed. The skill and the guide now allowlist exactly those four diagnostics and their exact change list during that migration only. Any other warning, change, duplicate or summary still stops the flow. Tests run each upgrade block and the verifier's printed commands with a failing and a succeeding stubbed `gh aw add`, and apply each document's warning gate to real gh-aw v0.91.5 output from a repository with committed legacy locks: with --approve, without it, and after the upgrade commit. Mutation tests reject a widened migration allowlist. Regenerate the package manifest and bootstrap verifier digest, and extend the changeset. Refs #2403 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Address four Copilot review findings on #2410. Pass `repository: 'github/squad'` to the pinned squad-init action. At 5c662ba its `repository` input still defaults to bradygaster/squad, the source of the release archive, its SHA256SUMS checksum and the latest-release lookup. The new `uses:` owner did not change that, and the old path is now a fork with no releases, so whoever controls it would supply both the archive and its checksum. Regenerate the four package workflows and the integrity manifest. Stop the guide's Upgrading block and the README install block on a SQUAD_SHA that is not a 40-character lowercase commit SHA, before the manifest contents API call, with the guard and message the other guide blocks already use. The contents API accepts branch names, so `dev` passed the identity check: the upgrade reinstalled and deleted the legacy ownership record before --source-revision rejected it, and the README block installed and pushed the moving ref. The skill and its mirrors were already guarded. Reject an exact ownership record next to a case-variant one. Reinstalling GitHub/Squad/workflows as github/squad/workflows leaves both records, because gh-aw names each by a digest of the identity as typed, and the verifier used the exact one while ignoring the other. The error names both records and the one to delete. Run --materialize-runtime before `gh aw compile --strict` in the printed recovery chain, as the documented install and upgrade sequences do. `gh aw add --force` rewrites only the package-owned runtime copies, so a stale or missing materialized file, such as .github/workflows/shared/squad.md, failed verification again after a successful reinstall. Tests resolve the activation step's squad-init inputs into the pinned-action download harness, run every block that reads the manifest with SQUAD_SHA=dev, verify an install with both records, and run the printed recovery against a stale and a missing materialized file. Each fails with its fix reverted. Refs #2403 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
46e3181 to
c1fca3d
Compare
There was a problem hiding this comment.
🟡 Changes recommended
The legacy install fallback fetches both the CLI and checksum from a separately controlled fork, while staged verification can miss case-variant records that cause clean-checkout verification to fail.
2 open issues
4 resolved since last review
Review effort: Max (auto)
Revisions that declare only bradygaster/squad/workflows install the Squad CLI through squad-init without a repository input, so activation downloads the CLI and its checksum from bradygaster/squad. That repository is now a separately controlled fork with no releases. Stop sending users there: - The identity-gate STOP hint in the skill and its four mirrors, the guide and the README now says to use a revision whose manifest declares github/squad/workflows, or to ask the Squad maintainers for one, and says why older revisions are not an option. - Remove the instructions to install an older revision under the legacy identity or stay on one from the skill, the guide, the README, .github/agents.md and workflows/README.md, and the step-4 and anti-pattern allowance for the legacy squad-init action name outside the migration. - The verifier still accepts existing bradygaster/squad/workflows installs through its exact allowlist, and the documented legacy-to-canonical upgrade is unchanged. Its notice now says the legacy identity is accepted only so installations can move. --verify-staged-install also missed a case-variant ownership record, such as one for GitHub/Squad/workflows, that was deleted only from the working tree. The index still held it, so a clean checkout of the commit failed --verify-install. The staged check now lists .github/aw/packages/ one level deep and rejects any staged record whose package is a case variant of an accepted identity, naming its path. The step-7 deletion gate in the skill, its mirrors and both guide gates admits exactly that deletion: a .github/aw/packages/*.json record whose package at HEAD is a case variant. Regenerate the integrity manifest and bootstrap digests for the verifier and skill changes. Add a contract test that names file:line for any install hint or STOP message that falls back to the legacy identity, gate cases for the case-variant allowance, and a staged-verifier regression test that also verifies a clean checkout. Refs #2403 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
The standalone-install example can run fork-controlled CLI releases in consumer CI with pre-migration pins, while the verifier still directs users to reinstall the retired package identity.
2 open issues
2 resolved since last review
Review effort: Max (auto)
Pinned squad-init revisions from before the action's default changed, such as 5c662ba, still download the Squad CLI and its checksum from bradygaster/squad, now a separately controlled fork. Changing the action owner in a usage example does not change that default. Pass repository: github/squad in the standalone-install example and in the action.yml usage comment, the two examples that lacked it; the package workflows already pass it. A new test scans every squad-init step in tracked Markdown and YAML, including YAML comments, and names the file:line of any that does not pass repository: github/squad. The verifier's ownership diagnostics could steer users back to the legacy identity. With an exact record beside a case-variant record, it said to reinstall as the exact record's identity, which may be bradygaster/squad/workflows. It now always recommends github/squad/workflows and lists a legacy exact record for deletion together with the case variants; a canonical exact record is kept. With both exact identities present, it no longer offers to keep whichever record matches the installed source bindings, which keeps the legacy record while those bindings are still legacy. Regenerate the integrity manifest and bootstrap digests for the verifier change. The case-variant test now covers both the canonical and the legacy exact record. Refs #2403 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
The verifier’s cleanup guidance omits case-variant records and gives incorrect deletion paths for non-native duplicates, so following it can leave verification failing.
1 open issue
2 resolved since last review
Review effort: Max (auto)
When canonical, legacy and case-variant ownership records coexisted, the verifier's advice left out the case variant, so following it still failed verification. A duplicate exact-identity record at a path gh-aw does not write got the computed legacy path instead of its own. findOwnershipRecord now applies one rule whenever more than one Squad record is found: it lists every record with its path and package, then says to delete every listed path except .github/aw/packages/github-squad-workflows-23a7638f599e.json after reinstalling as github/squad/workflows, because that reinstall writes exactly that record. The case-only hint uses the same rule, and records are read in sorted order so the advice is stable on every platform. The staging gate matches the advice. The skill's step-7 gate, its four mirrors and both guide gates replace the separate legacy-path allowance and the case-variant predicate with one rule. A staged deletion of .github/aw/packages/<name>.json passes only if it is not the canonical destination, its HEAD content is JSON, and its package, lowercased, is github/squad/workflows or bradygaster/squad/workflows. The router allowance is unchanged. --verify-staged-install now rejects any still-indexed Squad record other than the verified one, not only case variants. Regenerate the integrity manifest and bootstrap verifier digests. Refs #2403 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🔵 Needs a closer look
The security-sensitive integrity and hosted-execution changes require maintainer-confirmed gh-aw v0.91.5 Linux validation and a real default-branch hosted E2E run, neither of which this snapshot review could verify.
No open issues 🎉
1 resolved since last review
Review effort: Max (auto)



What
1151205052) instead of the owner name.github/squad/workflowsthe canonical gh-aw package identity. Existingbradygaster/squad/workflowsinstalls keep verifying (exact allowlist) so they can move, with a notice that says to move them. Mixed identities or duplicate ownership records fail with guidance.uses:atgithub/squad/.github/actions/squad-init(same pinned SHA5c662ba…) and passes itrepository: 'github/squad'. That pinned revision still downloads releases frombradygaster/squadby default. The action's own default in this repository also becomesgithub/squad. The squad-init example indocs/.../features/standalone-install.mdand the usage comment inaction.ymlalso passrepository: github/squad. A test fails if any squad-init example in the repository's Markdown or YAML files lacks it.gh aw addblock (3 in the enlistment skill and its 4 mirrors, 3 in the gh-aw guide, 1 inREADME.md) first readsworkflows/squad-workflows.manifest.jsonat the chosen revision. It stops unless the manifest declaresgithub/squad/workflows..github/agents.mdandworkflows/README.mdstate the same rule.squad-install-verifier --write-source.Working as agentic-workflows-dev (Agentic Workflows Engineer).
Why
After the move,
github.repository == 'bradygaster/squad'is never true, so the hosted E2E stopped running without any error. The verifier enforced onlybradygaster/squad/workflows, so a consumer who installedgithub/squad/workflows@<sha>failed--verify-install. Old-path references can't rely on a redirect either. Since 2026-11-07,bradygaster/squadhas been a fork ofgithub/squadwith no releases. The pinned squad-init action's release downloads from that path return 404, and anything new published there is controlled by the fork's owner.Closes #2403
How
Identity
bradygaster/squad/workflowsanymore. Pinned revisions still resolve, now through thebradygaster/squadfork, which shares this repository's commits. But their activation downloads the Squad CLI from that fork, which has no releases. Every install hint and STOP message (skill and mirrors, guide,README.md,.github/agents.md,workflows/README.md) now points to a revision that declaresgithub/squad/workflows. A contract test fails if a legacy-install fallback comes back. gh-aw records the identity exactly as typed (.github/aw/packages/github-squad-workflows-23a7638f599e.jsonfor the new one).github/squad/workflows(canonical) andbradygaster/squad/workflows(legacy). Case variants, other owners, and wildcards are rejected. Verification also fails whenever more than one Squad ownership record exists: legacy and canonical together, a duplicate of either identity at another path, or a case variant (for example, after reinstallingGitHub/Squad/workflowsasgithub/squad/workflows). The error lists every record and gives one rule: after reinstalling asgithub/squad/workflows, delete every listed record except.github/aw/packages/github-squad-workflows-23a7638f599e.json.--verify-staged-installfails while any such record is still in the index, which covers a deletion made only in the working tree. The step-7 staging gate allows deleting exactly those records, judged by their HEAD content, and never the canonical one.github/squad/workflowsverifies only at revisions whoseworkflows/squad-workflows.manifest.jsondeclares it. For an older revision, the check says to use a revision that declaresgithub/squad/workflowsor to ask the Squad maintainers. If the manifest can't be read, it gives a separate hint.Release downloads
workflows/shared/squad.mdpassesrepository: 'github/squad'tosquad-init@5c662ba…. The four package workflows, their compiled locks, and the integrity manifest are regenerated. CLI downloads no longer depend on the pinned action's default or on who controls the old path.Upgrading
gh aw add "github/squad/workflows@SHA" --force, then remove.github/aw/packages/bradygaster-squad-workflows-3632054824e8.json. If the forced reinstall fails, the upgrade block stops before it removes anything (the skill, its mirrors and the guide). The recovery and legacy-move commands the verifier prints are one&&chain for the same reason.SQUAD_SHAis a 40-character commit SHA. A branch name such asdevstops before the API call, the reinstall, or any cleanup.--materialize-runtimebeforegh aw compile --strict. That repairs a stale or missing materialized file such as.github/workflows/shared/squad.md, whichgh aw add --forcedoesn't rewrite.github/squad/workflows, then delete the legacy record.HEAD. A strict compile therefore reports four extra warnings, one each forsquad,squad-implement-worker,squad-deps-workerandsquad-retro. Each lists only the squad-init owner change:github/squad/.github/actions/squad-initadded,bradygaster/squad/.github/actions/squad-initremoved. Step 5 of the skill and the guide's warning gate allow exactly those four during this migration (summary6 warnings). Any other warning, change, duplicate or summary still stops.Review
--materialize-runtime.standalone-install.mdsquad-init example, which didn't passrepository;After merge
repositoryexplicitly.Size (>20 files): 34 files:
workflows/packagefiles and the manifestThree of the docs files (
README.md,gh-aw.md,standalone-install.md) carry only their gh-aw hunks, plus the squad-init example'srepositoryline instandalone-install.md. Their link fixes were merged in #2411, and that PR's docs-site guard passes on this branch.Validation: these suites need gh-aw v0.91.5 and
jq. They ran in an LF clone of this branch, with a checksum-verifiedgh-aw v0.91.5binary (SQUAD_GH_AW_BIN) and jq 1.7.1:node workflows/shared/squad-install-verifier.mjs --check-source --root .npm run gh-aw:integrity:checknpx vitest run --testTimeout=120000 --hookTimeout=120000 test/gh-aw-implement-workflow.test.ts test/gh-aw-review-workflow.test.ts test/gh-aw-verify-resource.test.ts test/gh-aw-install-staging.test.ts test/gh-aw-quality.test.ts test/gh-aw-enlistment-skill.test.ts test/gh-aw-hosted-e2e.test.ts test/squad-cli-latest.test.ts test/template-sync.test.tsrejects symlinked manifest leaves and runtime parentsValidation of the review fixes (branch rebased on
dev, LF clone, gh-aw v0.91.5, jq 1.7.1):bradygaster/squad/workflows@bf8136f6, commit it, then upgrade togithub/squad/workflowswith the real gh-aw v0.91.58 succeeded, 6 warnings;--approve2 warnings; strict again 6; after commit 2. The extra four are exactly the squad-init owner change listed abovenpm run gh-aw:integrity:checkvitest run --testTimeout=300000 test/template-sync.test.ts test/repo-links.test.ts test/gh-aw-enlistment-skill.test.tsvitest run --testTimeout=300000 test/gh-aw-install-staging.test.ts -t "printed|recovery|legacy"gh-aw-enlistment-skill: 56 failed, 134 passed, e.g. "gh-aw.mdupgrade block withgh aw add … --forceexiting 1 must keep.github/aw/packages/bradygaster-squad-workflows-3632054824e8.json…" and "undocumented warning:.github/workflows/squad-deps-worker.md… expected summary 2 warnings, found 6". The printed-command tests ingh-aw-install-staging: 5 failed, 2 passed, e.g. "files left by the printed recovery commands with gh aw add exiting 1 … expected []"Validation of the third-round fixes (
c1fca3d5ondev9c6fb7c6, LF clone, gh-aw v0.91.5, jq 1.7.1):npm run gh-aw:integrity:checkvitest run test/squad-cli-latest.test.ts test/docs-site-location.test.ts test/ci/docs-quality.test.ts test/template-sync.test.ts test/repo-links.test.ts test/gh-aw-hosted-e2e.test.tsvitest run test/gh-aw-enlistment-skill.test.tsvitest run test/gh-aw-install-staging.test.ts -t "printed|recovery|legacy|materialized"vitest run test/gh-aw-quality.test.ts -t "case-variant|shell input security"repository: github/squadchecknode --test docs/tests/astro-features.test.mjsgh-aw-install-staging29/30 andgh-aw-quality376/378repository: github/squadin the four package locks, plus the regenerated hashesworkflows/shared/squad.md must pass repository to squad-init@5c662ba…(receivedbradygaster/squad); the guide and README blocks calling the contents API withref=dev; andInstalled digest mismatch for .github/workflows/shared/squad.mdafter the old recovery chainValidation of the fourth-round fixes (
d7dd834condev9c6fb7c6, LF clone, gh-aw v0.91.5, jq 1.7.1):npm run gh-aw:integrity:checkvitest run test/squad-cli-latest.test.ts test/docs-site-location.test.ts test/ci/docs-quality.test.ts test/template-sync.test.ts test/repo-links.test.ts test/gh-aw-hosted-e2e.test.ts test/gh-aw-enlistment-skill.test.tsvitest run test/gh-aw-install-staging.test.ts -t "printed|recovery|legacy|materialized|case-variant|staged"vitest run test/gh-aw-quality.test.ts -t "case-variant|shell input security|legacy|notice"node --test docs/tests/astro-features.test.mjsfile:line, such asSKILL.md:276: legacy install command,gh-aw.md:2636: stay on a legacy revision,README.md:634,.github/agents.md:59andworkflows/README.md:14. Also: the step-7 gate STOPs on the case-variant record's deletion, and--verify-staged-install with …9361b4232957.json (GitHub/Squad/workflows) deleted only from the working tree…: expected 0 to be 1. Five more mutants prove the exact-allowance testsValidation of the fifth-round fixes (
8cba4d9dondev9c6fb7c6, LF clone, gh-aw v0.91.5, jq 1.7.1):npm run gh-aw:integrity:checkvitest run test/squad-cli-latest.test.ts test/docs-site-location.test.ts test/ci/docs-quality.test.ts test/template-sync.test.ts test/repo-links.test.ts test/gh-aw-hosted-e2e.test.ts test/gh-aw-enlistment-skill.test.tsvitest run test/gh-aw-quality.test.ts -t "ownership|case-variant|case-only|notice|identity records|shell input security"vitest run test/gh-aw-install-staging.test.ts -t "printed|recovery|legacy|materialized|case-variant"node --test docs/tests/astro-features.test.mjsstandalone-install.md.github/actions/squad-init/action.yml:12: repository not passedand…/standalone-install.md:134: repository not passed. The legacy-pair test receives "After reinstalling as bradygaster/squad/workflows, delete …", and the both-records test receives the old "Keep only the record whose identity matches…" guidanceValidation of the sixth-round fix (
a83f38dbondev9c6fb7c6, LF clone, gh-aw v0.91.5, jq 1.7.1):npm run gh-aw:integrity:checkvitest run test/squad-cli-latest.test.ts test/docs-site-location.test.ts test/ci/docs-quality.test.ts test/template-sync.test.ts test/repo-links.test.ts test/gh-aw-hosted-e2e.test.ts test/gh-aw-enlistment-skill.test.tsvitest run test/gh-aw-quality.test.ts -t "ownership|case-variant|case-only|notice|identity records|shell input security"vitest run test/gh-aw-install-staging.test.ts -t "printed|recovery|legacy|materialized|case-variant"node --test docs/tests/astro-features.test.mjsThe other repo-move PRs are #2406, #2407, #2405, and #2404 (issues).
npx changeset add/.changeset/*.md, directCHANGELOG.mdentry for maintainers, orskip-changeloglabel for no user-facing changes)PR Readiness Checklist
Branch & Commit
dev(notmain)dev(git fetch upstream && git rebase upstream/dev)git diff --cached --stat)Build & Test
npm run buildpasses: no package source changes (build verified on the combined repo-move tree)npm testpasses (all tests green): targeted suites above; the full suite runs in CInpm run lintpasses (type check clean)npm run lint:eslintpassesChangeset
npx changeset add(ifpackages/squad-sdk/src/orpackages/squad-cli/src/changed):.changeset/repo-move-github-squad-gh-aw-identity.md(covers the shipped skill template)CHANGELOG.mdentry (maintainers only — write-protected for external contributors)skip-changeloglabel applied (if no user-facing changes)Docs
Exports
Breaking Changes
None for existing installs: the
bradygaster/squad/workflowsidentity still verifies so those installs can move, and the verifier prints a notice that says to move them. Installing under the legacy identity is no longer suggested, because those revisions download the Squad CLI from thebradygaster/squadfork, which has no releases. New installs usegithub/squad/workflows, and the upgrade path is documented.Waivers
None.