Skip to content

fix(gh-aw): restore hosted E2E and migrate package identity - #2410

Draft
tamirdresher wants to merge 1 commit into
devfrom
squad/2403-gh-aw-identity-hosted-e2e
Draft

tamirdresher wants to merge 1 commit into
devfrom
squad/2403-gh-aw-identity-hosted-e2e

Conversation

@tamirdresher

Copy link
Copy Markdown
Collaborator

What

  • Restores the hosted gh-aw E2E, which was silently skipped after the transfer. Its guard now checks the repository ID (1151205052) instead of the owner name.
  • Makes github/squad/workflows the canonical gh-aw package identity. Existing bradygaster/squad/workflows installs keep verifying (exact allowlist), and mixed identities or duplicate ownership records fail with guidance.
  • Points uses: at github/squad/.github/actions/squad-init (same pinned SHA 5c662ba…) and sets the action's default release repository to github/squad.
  • Every runnable gh aw add block (3 in the enlistment skill and its 4 mirrors, 3 in the gh-aw guide, 1 in README.md) first reads workflows/squad-workflows.manifest.json at the chosen revision. It stops unless the manifest declares github/squad/workflows. .github/agents.md and workflows/README.md state the same rule.
  • Regenerated the package through 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 only bradygaster/squad/workflows, so a consumer who installed github/squad/workflows@<sha> failed --verify-install. GitHub Actions doesn't follow repository redirects for uses:.

Closes #2403

How

Identity

  • gh aw add bradygaster/squad/workflows@<sha> still works through the redirect. gh-aw records the identity exactly as typed (.github/aw/packages/github-squad-workflows-23a7638f599e.json for the new one).
  • The verifier accepts only the exact identities github/squad/workflows (canonical) and bradygaster/squad/workflows (legacy). Case variants, other owners, and wildcards are rejected.
  • github/squad/workflows verifies only at revisions whose workflows/squad-workflows.manifest.json declares it. For an older revision, the check says to install as bradygaster/squad/workflows. If the manifest can't be read, it gives a separate hint.

Upgrading

  • Run gh aw add "github/squad/workflows@SHA" --force, then remove .github/aw/packages/bradygaster-squad-workflows-3632054824e8.json.
  • If both ownership records exist, the verifier fails with guidance.
  • Rollback is forward-fix only.

Review

  • architect rejected the first round because the docs didn't say which revisions the new identity works at. That's fixed, and the follow-up review approved.

After merge

  • Bump the squad-init pin to a commit that has the new default.
  • Run the identity check against the merge SHA before announcing it.

Size (>20 files): 34 files:

  • 7 source files, counting the canonical skill
  • 4 mirrors of that skill, kept identical by the sync script and its tests
  • 5 regenerated workflows/package files and the manifest
  • 11 test files and fixtures
  • 5 docs files
  • a changeset

Three of the docs files (README.md, gh-aw.md, standalone-install.md) carry only their gh-aw hunks. Their link fixes are in #2405.

Validation: these suites need gh-aw v0.91.5 and jq. They ran in an LF clone of this branch, with a checksum-verified gh-aw v0.91.5 binary (SQUAD_GH_AW_BIN) and jq 1.7.1:

Command Result
node workflows/shared/squad-install-verifier.mjs --check-source --root . ✅ manifest and digests are current
npm run gh-aw:integrity:check ✅ manifest and digests are current
npx 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.ts 1185 passed, 6 failed: 5 timeouts while running in parallel, 1 symlink test (see below)
Rerun of the 5 timed-out tests with no parallel load ✅ 4 passed. "bounds staged reads" passes once its in-test 30 s limit is raised (Windows file I/O); the limit wasn't changed in this PR
rejects symlinked manifest leaves and runtime parents ⚠️ EPERM: this Windows machine can't create symlinks. Needs Linux CI
Red proofs ✅ 21 in the first round and 16 after the architect revision. Each one turns a test red

The other repo-move PRs are #2406, #2407, #2405, and #2404 (issues).


⚠️ Quick Check

  • If SDK/CLI source files changed: completed the applicable Changeset step below (npx changeset add / .changeset/*.md, direct CHANGELOG.md entry for maintainers, or skip-changelog label for no user-facing changes)

PR Readiness Checklist

The PR readiness bot will validate these automatically after push.
Check each item before requesting review. See CONTRIBUTING.md for full details.

Branch & Commit

  • Branch created from dev (not main)
  • Branch is up to date with dev (git fetch upstream && git rebase upstream/dev)
  • Verified diff contains only intended changes (git diff --cached --stat)
  • PR is not in draft mode (mark ready when checks pass)
  • Commit history is clean (squash fixups before review)

Build & Test

  • npm run build passes: no package source changes (build verified on the combined repo-move tree)
  • npm test passes (all tests green): targeted suites above; the full suite runs in CI
  • npm run lint passes (type check clean)
  • npm run lint:eslint passes
  • For migration PRs (>20 files): include test output summary in PR description

Changeset

  • Changeset added via npx changeset add (if packages/squad-sdk/src/ or packages/squad-cli/src/ changed): .changeset/repo-move-github-squad-gh-aw-identity.md (covers the shipped skill template)
  • Or direct CHANGELOG.md entry (maintainers only — write-protected for external contributors)
  • Or skip-changelog label applied (if no user-facing changes)

Docs

  • README section updated (if new feature/module)
  • Docs feature page (if new user-facing capability): gh-aw guide install and upgrade sections

Exports

  • package.json subpath exports updated (if new module): N/A

Breaking Changes

None for existing installs: the bradygaster/squad/workflows identity still verifies. New installs at revisions that include this change should use github/squad/workflows; the upgrade path is documented.

Waivers

None.

- 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>
@github-actions

github-actions Bot commented Nov 8, 2026

Copy link
Copy Markdown
Contributor

🛫 PR Readiness Check

ℹ️ This comment updates on each push. Last checked: commit 91c0da5

PR Scope: 🔧 Infrastructure

⚠️ 3 item(s) to address before review

Status Check Details
✅ Single commit 1 commit — clean history
❌ Not in draft PR is still in draft — mark as ready for review when done
✅ 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 No Copilot review threads
❌ CI passing 2 check(s) failing: test, Verify exact SHA and build evidence

Files Changed (34 files, +1666 −221)

File +/−
.changeset/repo-move-github-squad-gh-aw-identity.md +6 −0
.github/actions/squad-init/action.yml +2 −2
.github/agents.md +7 −1
.github/workflows/squad-gh-aw-hosted-e2e.yml +3 −1
.squad-templates/skills/gh-aw-enlistment/SKILL.md +109 −8
README.md +20 −1
docs/src/content/docs/features/standalone-install.md +1 −1
docs/src/content/docs/guide/gh-aw.md +108 −14
packages/squad-cli/templates/skills/gh-aw-enlistment/SKILL.md +109 −8
packages/squad-sdk/templates/skills/gh-aw-enlistment/SKILL.md +109 −8
scripts/gh-aw-hosted-e2e.mjs +11 −7
templates/skills/gh-aw-enlistment/SKILL.md +109 −8
test/fixtures/squad-init-approved.json +1 −1
test/gh-aw-enlistment-skill.test.ts +313 −14
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 +92 −10
test/gh-aw-quality.test.ts +187 −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 +2 −2
workflows/README.md +13 −1
workflows/package/squad-bootstrap.md +1 −1
workflows/package/squad-deps-worker.md +1 −1
workflows/package/squad-implement-worker.md +1 −1
workflows/package/squad-retro.md +1 −1
workflows/package/squad.md +1 −1
workflows/shared/squad-install-verifier.mjs +148 −32
workflows/shared/squad.md +3 −3
workflows/skills/gh-aw-enlistment/SKILL.md +109 −8
workflows/squad-bootstrap.md +1 −1
workflows/squad-workflows.manifest.json +41 −41

Total: +1666 −221


This check runs automatically on every push. Fix any ❌ items and push again.
See CONTRIBUTING.md and PR Requirements for details.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 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)

fi
exit 1
}
gh aw add "github/squad/workflows@${SQUAD_SHA}" --force
--strict-compile
```

Apply step 5's two-warning check to the compile output above, then stage and verify as in step 7.

This branch has not been deployed

No deployments
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.

Repo move: restore hosted gh-aw E2E and migrate the gh-aw package identity to github/squad/workflows

3 participants