Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/squad-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -788,7 +788,7 @@ jobs:
--source-revision "$SQUAD_SOURCE_REVISION"
node .github/workflows/shared/squad-install-verifier.mjs --materialize-runtime
test "$(find .github/workflows -maxdepth 1 -name 'squad*.md' | wc -l | tr -d ' ')" = 8
test "$(find .github/workflows/shared -type f ! -name 'squad-bootstrap-trigger-probe.json' | wc -l | tr -d ' ')" = 19
test "$(find .github/workflows/shared -type f ! -name 'squad-bootstrap-trigger-probe.json' | wc -l | tr -d ' ')" = 20
test -f .github/workflows/squad-agent-binding-check.yml
test "$(find .github/skills/gh-aw-enlistment -type f | wc -l | tr -d ' ')" = 1
node --input-type=module -e '
Expand Down
11 changes: 6 additions & 5 deletions docs/src/content/docs/guide/gh-aw.md
Original file line number Diff line number Diff line change
Expand Up @@ -556,7 +556,7 @@ rm -f .github/skills/agentic-workflows/SKILL.md

The nested `workflows/aw.yml` is the canonical package registration. Its
package boundary prevents unrelated repository skills or agents from being
auto-discovered. It installs exactly eight agentic workflows, twenty runtime
auto-discovered. It installs exactly eight agentic workflows, twenty-one runtime
resources, one integrity manifest, and one enlistment skill from the same
resolved commit. The installed top-level workflow set is:

Expand All @@ -569,7 +569,7 @@ resolved commit. The installed top-level workflow set is:
- `squad-bootstrap.md` and `squad-bootstrap.lock.yml`
- `squad-command-router.md` and `squad-command-router.lock.yml`

The install must also contain these twenty executable, documentation, and
The install must also contain these twenty-one executable, documentation, and
schema runtime resources (manifest-backed — see
`workflows/squad-workflows.manifest.json`'s `shared_runtime` list for the
authoritative source of truth):
Expand All @@ -584,6 +584,7 @@ authoritative source of truth):
- `shared/squad-retro-provenance.mjs`
- `shared/squad-review-guard.mjs`
- `shared/squad-command-contract.mjs`
- `shared/squad-evidence-provider.mjs`
- `shared/squad-install-verifier.mjs`
- `shared/squad-implementation-provenance.mjs`
- `shared/squad.md`
Expand All @@ -600,9 +601,9 @@ allow JavaScript guards under `.github/workflows/shared/` but not Markdown or
JSON at that destination, nor native workflow YAML destinations, the package
stores those remaining exact bytes under `.github/aw/squad/runtime/`. The verifier materializes them to their runtime
paths and rejects any digest mismatch before the bootstrap PR can be opened.
Nineteen resources materialize under `.github/workflows/shared/`; the native
Twenty resources materialize under `.github/workflows/shared/`; the native
binding checker materializes at `.github/workflows/squad-agent-binding-check.yml`.
All twenty are verified against the same contract.
All twenty-one are verified against the same contract.
A differing pre-existing native checker is preserved and blocks materialization;
resolve that file conflict before opening the bootstrap PR.

Expand Down Expand Up @@ -701,7 +702,7 @@ absent. Do not suppress warnings or use `--approve` to bypass this gate.

Verify the complete source/lock surface. Prefer the manifest-backed verifier
over a hand-maintained file list, since it checks every one of the eight
workflows, twenty runtime resources, the integrity manifest, and the
workflows, twenty-one runtime resources, the integrity manifest, and the
enlistment skill against `workflows/squad-workflows.manifest.json`:

```bash
Expand Down
8 changes: 4 additions & 4 deletions scripts/gh-aw-hosted-e2e.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -320,8 +320,8 @@ function matchingPriorRunArtifacts(branches, pullRequests, issues, target) {
}

export function assertPristineTarget(target, defaultBranch, contract, github = githubAdapter, now = Date.now) {
if (contract.workflows.length !== 8 || contract.runtime.length !== 20 || contract.skills.length !== 1) {
throw new Error('Trusted package topology must be exactly 8 workflows, 20 runtime resources, and 1 skill.');
if (contract.workflows.length !== 8 || contract.runtime.length !== 21 || contract.skills.length !== 1) {
throw new Error('Trusted package topology must be exactly 8 workflows, 21 runtime resources, and 1 skill.');
}
const defaultBranchSha = github.getDefaultBranchSha(target, defaultBranch);
assertSha(defaultBranchSha, 'Target default-branch SHA');
Expand Down Expand Up @@ -968,8 +968,8 @@ function hosted(args, repositoryRoot) {
const sourceSha = requireArg(args, 'source_sha');
const evidence = resolve(requireArg(args, 'evidence'));
const contract = loadBundleContract(repositoryRoot);
if (contract.workflows.length !== 8 || contract.runtime.length !== 20 || contract.skills.length !== 1) {
throw new Error('Trusted package topology must be exactly 8 workflows, 20 runtime resources, and 1 skill.');
if (contract.workflows.length !== 8 || contract.runtime.length !== 21 || contract.skills.length !== 1) {
throw new Error('Trusted package topology must be exactly 8 workflows, 21 runtime resources, and 1 skill.');
}
const targetState = authorizeTarget(args, sourceInfo, contract);
mkdirSync(evidence, { recursive: true });
Expand Down
Loading
Loading