Skip to content

deps: Bump GitHub.Copilot.SDK from 1.0.13 to 1.0.14 - #2060

Merged
bradygaster merged 2 commits into
devfrom
dependabot/nuget/GitHub.Copilot.SDK-1.0.14
Sep 24, 2026
Merged

bradygaster merged 2 commits into
devfrom
dependabot/nuget/GitHub.Copilot.SDK-1.0.14

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 21, 2026

Copy link
Copy Markdown
Contributor

Updated GitHub.Copilot.SDK from 1.0.13 to 1.0.14.

Release notes

Sourced from GitHub.Copilot.SDK's releases.

1.0.14

Feature: typed message provenance for user, system, and agent sources

Messages sent through the SDK can now carry typed source provenance, distinguishing human user input, internal system injections, and identified agent- senders, so recipients can reliably tell agent input from human authorization. (#​2573)

await session.send("Looks good to me.", { source: "agent-reviewer" });
await session.send("Looks good to me.", source=AgentMessageSource("reviewer"))

Feature: Auto model routing Fast tier

Sessions using auto model routing can now select the fast tier alongside the existing efficiency, balance, and intelligence tiers, giving integrators a latency-focused routing preset across all six SDKs. (#​2669)

await session.setAutoTier("fast");

Feature: force-refresh managed settings cache

The new managedSettings.clearCache RPC method wipes the persistent server-policy cache and drops the runtime's in-memory retained policy, giving hosts a primitive for a "force refresh account policy" action. (#​2438)

await client.rpc.managedSettings.clearCache();
await client.Rpc.ManagedSettings.ClearCacheAsync();

Feature: Rust SDK model allowlists

SessionConfig and ResumeSessionConfig in the Rust SDK now accept an optional allowed_models list, letting hosts restrict which model IDs a session may use without duplicating runtime validation. (#​2512)

let config = SessionConfig::default().with_allowed_models(["gpt-4o", "claude-3.7-sonnet"]);

Other changes

  • feature: [Core] add factory pause checkpoints for the Node.js Agent Factories API, letting a paused run resume without losing invocation limits or execution identity (#​2537)
  • feature: forward the optional host OAuth client metadata URL across all six SDKs on session create and resume (#​2258)
  • feature: [TypeScript] add max_output_tokens to the model capabilities override, previously unreachable without an unsafe cast (#​2569)
  • bugfix: [.NET] include Copilot CLI runtime assets in PackAsTool packages so dotnet pack --no-build produces a working tool (#​2557)
  • bugfix: apply the runtime's connection_close callback-quiescence contract consistently across all six in-process C ABI adapters, preventing races with freed callback state during disposal (#​2610, #​2622)
  • bugfix: [Rust] fix codegen for CLI 1.0.84 schemas, correctly mapping the CatalogTrustEligibility unknown value and re-exporting shared session-event types (#​2631)
  • bugfix: [C#] fix codegen for runtime schema unions, unblocking single-variant anyOf/oneOf handling (#​2656)
  • bugfix: [Rust] isolate the hostless in-process runtime cache from the bundled CLI cache to prevent cross-deletion of a shared executable (#​2659)
    ... (truncated)

1.0.14-preview.1

Feature: pause and resume durable factory runs at checkpoints

Agent Factories can now pause deliberately instead of only stopping at hard limits. Call ctx.pause(key) inside a factory body to register a durable, one-shot checkpoint that ends the current attempt; resuming replays the journal and returns from that checkpoint instead of redoing prior work. Callers can also pause a running attempt from outside the factory body. (#​2537)

await ctx.step("prepare", prepareInput);
await ctx.pause("review-ready");
await ctx.agent("Review the prepared input");
const paused = await session.factory.pause(runId);

[!WARNING]

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • github.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "github.com"

See Network Configuration for more information.

Generated by Release Changelog Generator · copilot · auto · 52.5 AIC · ⌖ 5.57 AIC · ⊞ 10.3K

1.0.14-preview.0

Feature: typed message provenance across all SDKs

Sending a message can now declare its source as user, system, or an identified agent (serialized as agent-<id>), so recipients can reliably distinguish human input from system injections and forwarded agent output. Ordinary sends remain unaffected: source stays omitted unless the caller opts in. (#​2573)

await session.send({ prompt: "Reviewed and approved.", source: "agent-reviewer" });
await session.send(prompt="Reviewed and approved.", source=AgentMessageSource("reviewer"))
session.Send(ctx, copilot.SendOptions{Source: copilot.MessageSourceAgent("reviewer")})
  • C#: Source = MessageSource.Agent("reviewer")
  • Java: .setSource(MessageSource.agent("reviewer"))
  • Rust: .with_source(MessageSource::Agent("reviewer".into()))

Feature: force-refresh enterprise managed settings

A new managedSettings.clearCache RPC wipes the persistent server-policy cache and drops the runtime's in-memory retained policy, so hosts can wire up a "sync account policy" action (for example VS Code's Developer: Sync Account Policy command). It's available in TypeScript, C#, Python, Go, and Rust; Java support follows once the underlying CLI release is pinned. (#​2438)

await client.rpc.managedSettings.clearCache();

Other changes

  • feature: [TypeScript] allow setting max_output_tokens on model capability overrides (#​2569)
  • feature: forward an optional host OAuth client metadata document URL across all six SDKs (#​2258)
  • bugfix: [.NET] include Copilot CLI runtime assets in PackAsTool publish output so packed tools install correctly (#​2557)
  • bugfix: [Rust] isolate GitHub token callbacks from the request-routing loop so a callback panic can no longer stall session requests (#​2567)
  • bugfix: [Python, Node.js] serialize concurrent client startup so racing callers reuse the same connection instead of launching duplicate runtimes (#​2570)
  • bugfix: [.NET] fix a vulnerable transitive SourceLink dependency (#​2587)
  • bugfix: fix in-process callback reclamation and FFI close responsiveness across all six SDKs to prevent use-after-free races and event-loop stalls during disposal (#​2610, #​2622)
  • bugfix: [Rust] fix codegen for CLI 1.0.84 schemas (#​2631)

[!WARNING]

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • github.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

... (truncated)

Commits viewable in compare view.

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

---
updated-dependencies:
- dependency-name: GitHub.Copilot.SDK
  dependency-version: 1.0.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added the dependencies Pull requests that update a dependency file label Sep 21, 2026
@dependabot dependabot Bot added the dependencies Pull requests that update a dependency file label Sep 21, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🟢 Impact Analysis — PR #2060

Risk tier: 🟢 LOW

📊 Summary

Metric Count
Files changed 1
Files added 0
Files modified 1
Files deleted 0
Modules touched 1

🎯 Risk Factors

  • 1 files changed (≤5 → LOW)
  • 1 module(s) touched (≤1 → LOW)

📦 Modules Affected

root (1 file)
  • Directory.Build.props

This report is generated automatically for every PR. See #733 for details.

@github-actions

github-actions Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

🛫 PR Readiness Check

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

PR Scope: 🔧 Infrastructure

⚠️ 4 item(s) to address before review

Status Check Details
❌ Single commit 2 commits — consider squashing before review
✅ Not in draft Ready for review
❌ Branch up to date dev is 1 commit(s) ahead — rebase recommended
❌ Copilot review No Copilot review yet — it may still be processing
✅ Changeset present No source files changed — changeset not required
✅ Scope clean No .squad/ or docs/proposals/ files
✅ No merge conflicts Merge status unknown — GitHub is still computing
✅ Copilot threads resolved No Copilot review threads
❌ CI passing 1 check(s) still running

Files Changed (1 file, +1 −1)

File +/−
Directory.Build.props +1 −1

Total: +1 −1


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

@bradygaster
bradygaster merged commit 8c52109 into dev Sep 24, 2026
20 checks passed
@dependabot
dependabot Bot deleted the dependabot/nuget/GitHub.Copilot.SDK-1.0.14 branch September 24, 2026 19:23
bradygaster added a commit that referenced this pull request Oct 20, 2026
* deps: Bump devalue from 5.8.1 to 5.9.2 in /docs (#2055)

Bumps [devalue](https://github.com/sveltejs/devalue) from 5.8.1 to 5.9.2.
- [Release notes](https://github.com/sveltejs/devalue/releases)
- [Changelog](https://github.com/sveltejs/devalue/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/devalue/compare/v5.8.1...v5.9.2)

---
updated-dependencies:
- dependency-name: devalue
  dependency-version: 5.9.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Brady Gaster <41929050+bradygaster@users.noreply.github.com>

* deps: Bump the minor-patch group across 1 directory with 2 updates (#2058)

Bumps the minor-patch group with 2 updates in the /docs directory: [@astrojs/markdown-remark](https://github.com/withastro/astro/tree/HEAD/packages/markdown/remark) and [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro).


Updates `@astrojs/markdown-remark` from 7.3.0 to 7.3.1
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/markdown/remark/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/markdown-remark@7.3.1/packages/markdown/remark)

Updates `astro` from 7.3.1 to 7.3.3
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@7.3.3/packages/astro)

---
updated-dependencies:
- dependency-name: "@astrojs/markdown-remark"
  dependency-version: 7.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: astro
  dependency-version: 7.3.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Brady Gaster <41929050+bradygaster@users.noreply.github.com>

* deps: Bump the microsoft-packages group with 2 updates (#2059)

Bumps Microsoft.Agents.AI.GitHub.Copilot from 1.20.0 to 1.22.0
Bumps Microsoft.Extensions.AI from 10.9.0 to 10.10.0

---
updated-dependencies:
- dependency-name: Microsoft.Agents.AI.GitHub.Copilot
  dependency-version: 1.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: microsoft-packages
- dependency-name: Microsoft.Extensions.AI
  dependency-version: 10.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: microsoft-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Brady Gaster <41929050+bradygaster@users.noreply.github.com>

* deps: Bump GitHub.Copilot.SDK from 1.0.13 to 1.0.14 (#2060)

---
updated-dependencies:
- dependency-name: GitHub.Copilot.SDK
  dependency-version: 1.0.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Brady Gaster <41929050+bradygaster@users.noreply.github.com>

* deps: Bump the minor-patch group across 1 directory with 6 updates (#2062)

Bumps the minor-patch group with 6 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [cspell](https://github.com/streetsidesoftware/cspell/tree/HEAD/packages/cspell) | `10.2.2` | `10.3.3` |
| [markdown-it](https://github.com/markdown-it/markdown-it) | `15.0.1` | `15.0.2` |
| [react](https://github.com/react/react/tree/HEAD/packages/react) | `19.2.8` | `19.3.0` |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `19.2.18` | `19.3.0` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `26.5.0` | `26.6.1` |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `19.2.18` | `19.3.0` |
| [@github/copilot-sdk](https://github.com/github/copilot-sdk) | `1.0.13` | `1.0.14` |



Updates `cspell` from 10.2.2 to 10.3.3
- [Release notes](https://github.com/streetsidesoftware/cspell/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell/blob/main/packages/cspell/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell/commits/v10.3.3/packages/cspell)

Updates `markdown-it` from 15.0.1 to 15.0.2
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/15.0.1...15.0.2)

Updates `react` from 19.2.8 to 19.3.0
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.3.0/packages/react)

Updates `@types/react` from 19.2.18 to 19.3.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `@types/node` from 26.5.0 to 26.6.1
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@types/react` from 19.2.18 to 19.3.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `@github/copilot-sdk` from 1.0.13 to 1.0.14
- [Release notes](https://github.com/github/copilot-sdk/releases)
- [Changelog](https://github.com/github/copilot-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/copilot-sdk/compare/v1.0.13...v1.0.14)

---
updated-dependencies:
- dependency-name: cspell
  dependency-version: 10.3.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: markdown-it
  dependency-version: 15.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: react
  dependency-version: 19.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@types/react"
  dependency-version: 19.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@types/node"
  dependency-version: 26.6.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@types/react"
  dependency-version: 19.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@github/copilot-sdk"
  dependency-version: 1.0.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Brady Gaster <41929050+bradygaster@users.noreply.github.com>

* docs: require Issues before gh-aw install

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

* docs: add gh-aw enlistment changeset

Add patch release metadata for the CLI and SDK templates changed by PR #2072.

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

* docs: fail closed when enabling Issues

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

* docs: deduplicate gh-aw Issues changeset

Keep the fail-closed CLI and SDK release note from the review-fix commit as the single changeset for this documentation update.

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

* Harden gh-aw workflow distribution integrity

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

* test: add hosted gh-aw bootstrap e2e harness

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

* test: align hosted e2e with bundle manifest

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

* test: consume native gh-aw bundle contract

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

* test: bind hosted e2e to resolved source

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

* fix: normalize generated workflow whitespace

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

* fix: harden native gh-aw package

Closes #2075

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

* fix: capture gh-aw version output

Closes #2075

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

* fix: use public registries for locked packages

Closes #2075

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

* fix: narrow native gh-aw hardening scope

Keep the revision focused on the seven reviewed blockers and generate resource-free package workflow sources so remote gh-aw v0.89.21 installs the exact 7/15/1 topology without duplicate resources.\n\nCloses #2075\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix: verify remote package ownership

Normalize gh-aw's immutable source annotation when checking installed workflow bytes and match v0.89.21's 23-entry ownership record while verifying the skill separately.\n\nCloses #2075\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix: accept pinned gh-aw source annotations

Normalize only the two immutable source annotations emitted by gh-aw v0.89.21 before comparing installed workflow bytes to canonical digests.\n\nCloses #2075\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix: normalize installer trailing newline

Allow gh-aw v0.89.21's downloaded workflow representation to omit the canonical source's single final newline while preserving exact content verification.\n\nCloses #2075\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix: restore stable workspace lock dependency

Remove the build-generated prerelease SDK dependency floor from package-lock.json so the stable workspace policy remains satisfied.\n\nCloses #2075\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* test: align native package expectations

Replace stale six-workflow, ambient-version, and top-level Markdown assumptions with the current nested seven-workflow package contract.\n\nCloses #2075\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* test: delegate native install proof to CI

Replace the duplicate ambient-compiler install test with assertions for the exact nested package and pinned v0.89.21 strict-compile job.\n\nCloses #2075\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix: harden package trust boundaries

Reject symlinked manifest/runtime paths and require explicit credential-bearing child processes, including separation of source-read and mutation tokens.\n\nCloses #2075\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix: bind hosted bootstrap evidence (Part of #2075)

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

* fix: bind bootstrap outputs to run provenance

Part of #2075

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

* fix(gh-aw): protect dependency changelog

Closes #2091

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

* ci: add repo-health PR-head shadow harness

Add a read-only pull_request shadow that exercises proposed scanners and the real reporter contract without mutating GitHub. Document the authoritative post-merge hostile-filename canary and label production comments by evidence level.

Closes #1800

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

* fix: align repo-health fixtures with git transport

Closes #1800

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

* fix: allow gh-aw cast genesis state

Closes #2067

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

* fix(repo-health): decode Git-quoted leakage paths

Closes #1800

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

* fix(gh-aw): fail closed on rejected squad commands

Closes #1824

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

* fix(gh-aw): route commands outside start position

Closes #1824

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

* test(gh-aw): include command router in CI topology

Closes #1824

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

* chore(gh-aw): keep command fix within review scope

Closes #1824

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

* fix(gh-aw): enforce independent Squad review and gate epic relay

Closes #1734

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

* test(gh-aw): reconcile reviewed topology after final restack

Closes #1734

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

* fix(gh-aw): make review guard first-install safe

Closes #2103

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

* fix(gh-aw): fail closed on missing installed review guard

Closes #2103

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

* fix(gh-aw): bind first-install review identity

Part of #2103

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

* fix(gh-aw): verify clean-install package bytes

Bind reserved first-install identities to immutable canonical package content, exact installed ownership bytes, and normalized compiled lock digests. Add live-loader mutation coverage for source, lock, canonical-content, and fetch failures.\n\nRefs #2103\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(gh-aw): stabilize local install verification

Rebind local-package workflow sources before compilation and normalize only compiler-declared repository-scattered schedules in trusted lock digests.

Refs #2103

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

* fix(gh-aw): make first install a human trust boundary

Part of #2103

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

* fix(gh-aw): harden hosted strict compile fixture

Part of #2103

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

* fix(gh-aw): bind review to automatic PR runs

Part of #2105

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

* fix(gh-aw): attest review from base context

Part of #2103

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

* test(gh-aw): expose installed lock digest mismatch

Part of #2103

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

* fix(gh-aw): dedicate review check identity

Part of #2103

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

* chore: record dedicated review app change

Part of #2103

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

* fix(gh-aw): normalize compiler setup pin

Closes #2103

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

* fix(ci): align gh-aw compiler pin

Closes #2103

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

* test(ci): enforce structural gh-aw compiler pins

Closes #2103

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

* test(ci): reject continued and dynamic compiler installers

Closes #2103

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

* fix(gh-aw): replace reviewer App with native review authority (#2109)

Removes the dedicated reviewer App, private-key secret, environment, token minting, and custom Checks API publisher. Uses the base-controlled native GitHub Actions/gh-aw review job and exact-run relay binding, with context-only merge enforcement explicitly advisory unless source-bound policy is available.\n\nCloses #2103\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(gh-aw): verify native package source digest variants (#2111)

Supports both legitimate native installer provenance forms with complete source-selected digests and deterministic immutable gh-aw toolchain action pins. Integrity normalization and installed-byte verification remain unchanged.\n\nCloses #2103\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(gh-aw): submit bootstrap chunks without agent transcription (#2115)

* fix(gh-aw): submit bootstrap chunks without agent transcription

Closes #2112

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

* fix(ci): seed immutable actions in native workflow consumer

Closes #2112

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

---------

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

* fix(gh-aw): preserve ownership staging with bounded index verification (#2116)

* fix(gh-aw): verify ownership metadata in staged installs

Handoff for independent revision: staged-tree enumeration still requires the reviewer-requested large-consumer correction before PR creation.

Closes #2113

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

* fix(gh-aw): bound staged install queries to required paths

Independently revise the rejected ownership staging handoff. Avoid recursive consumer-tree enumeration and preserve exact staged type and digest checks. Cover 20,000 unrelated tracked files, unchanged staging, bounded blob reads, index locks, and substituted directories.

Closes #2113

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

* docs(changeset): record verified gh-aw ownership staging

Add the coordinator-authorized patch changeset for both template-shipping packages to satisfy the hosted changelog gate.

Closes #2113

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

---------

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

* fix(gh-aw): correct exact enlistment compiler warning gate (#2118)

* fix(gh-aw): correct exact enlistment warning gate

Closes #2117

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

* docs(gh-aw): retain bot-trigger explanation

Closes #2117

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

---------

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

* Enforce coordinator scope and tracked behavior changes (#2110)

* fix: enforce coordinator scope boundaries

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

* fix: address scope control review

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

---------

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

* fix(gh-aw): harden hosted canary contracts (#2120)

* fix(gh-aw): harden hosted canary contracts

Validate bootstrap output in isolation before trusted writes, authorize mutating command dispatches, and bind review relays to the latest exact base-controlled run attempt.

Closes #2103

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

* fix(gh-aw): close review authorization gaps

Closes #2103

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

* fix: ignore CommonMark tab-indented commands

Closes #2103

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

---------

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

* fix(gh-aw): read committed cast registry from the checkout when validating an isolated bootstrap candidate

The materialize step copies the checkout into a .git-less candidate (#2120),
but committedRegistry() ran git rev-parse/ls-tree/show in that candidate, so
every bootstrap failed with 'registry base: committed HEAD is unavailable'.
Thread an optional gitRoot (default root) through validateBootstrapPayload ->
validateCastTree -> parseRegistry, and pass gitRoot: checkout from the
materializer. Adds a regression test.

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

* test(gh-aw): refresh pinned squad lock digests for the updated cast validator

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

* fix(gh-aw): require 0.89.22 for central ops

Closes octodemo/zava-social-cao-ops-20260929111840#18

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

* feat(gh-aw): opt-in committed research scope for bootstrap

Adds .squad/research-scope.json (squad-research-scope/v1). When committed at HEAD, every bootstrap proposal must cite evidence under a declared root. Uncommitted scope files are ignored.

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

* fix(gh-aw): preserve bootstrap candidate isolation

Validate candidate bytes from the isolated tree while resolving committed Cast provenance from the trusted checkout. Adds regression coverage for CAO integration issue octodemo/zava-social-cao-ops-20260929111840#26.

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

* fix(gh-aw): preserve review provenance marker

Describe the implementation marker without a literal HTML comment so gh-aw retains the exact regex in compiled reviewer prompts. Adds compiled-artifact regression coverage for octodemo/zava-social-cao-ops-20260929111840#20.

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

* fix(gh-aw): require exact enlistment compiler

Closes #2129

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

* fix(gh-aw): create bootstrap candidate payload parent

Part of #2128

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

* fix(test): raise Aspire dashboard health-check timeout to absorb CI runner contention (#2132)

* fix(test): pin Aspire dashboard image to verified-good 13.5.2 build

Root cause of the #2123/#2132 Aspire integration test CI failures was
NOT CPU contention: `mcr.microsoft.com/dotnet/aspire-dashboard:latest`
(and the major-version tag `:13`, confirmed to currently resolve to
the identical freshly-published `13.6.0` build/digest) is broken — the
container exits immediately (exitCode=145) because
/app/Aspire.Dashboard.dll is missing from the image, so the dashboard
health check can never succeed no matter the timeout.

Fix: pin docker pull/run to `:13.5.2`, a distinct ~3-week-older build
(different layer digests, verified via the MCR manifest API) that
predates the broken `13.6.0` release and does not exhibit the
missing-DLL problem.

Diagnostics hardening made while chasing this down (kept, as they are
independently valuable for any future flake in this suite):
- Removed --rm from the dashboard `docker run` so a crashed container
  survives long enough for failure-path `docker inspect`/`docker logs`
  diagnostics to run (relying on existing explicit removeContainer()
  cleanup instead).
- Captured container stderr in the `docker logs` diagnostics call
  (`2>&1`), since .NET unhandled-exception output goes to stderr and
  was previously silently dropped, hiding the real crash reason.
- Raised isDockerAvailable()'s `docker info` timeout from 5s to 20s to
  prevent false-skip of the whole Docker-dependent suite under CI CPU
  contention (which would otherwise look like a false pass).
- Raised the dashboard health-check timeout to 120s as defense-in-depth
  against genuine contention-induced slow starts, independent of the
  image-pinning fix above.

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

* fix(test): widen beforeAll hook budget for diagnostics margin

Addresses reviewer feedback on PR #2132:
- The 240s beforeAll hook budget had zero margin above the bounded
  120s docker-pull timeout + 120s health-check timeout, so Vitest
  could abort the hook with a generic timeout before
  waitForHealthy's more informative crash diagnostics could be
  thrown. Widened to 300s (~60s margin for container startup,
  diagnostics collection, and Playwright browser launch).
- The --rm-vs-diagnostics concern on the same thread was already
  resolved in a prior commit (docker run no longer passes --rm);
  no further change needed there.

Also trims two overly verbose/speculative inline comments (image-pin
rationale, health-check rationale) down to the essential facts.

Closes #2133

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

---------

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

* test: harden Aspire dashboard startup (#2134)

Pin the dashboard fixture to the verified 13.5.2 manifest and diagnose startup exits immediately with bounded container state and logs. Add deterministic regression coverage for the missing-DLL exit and hung health-request paths.

Closes #2133

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

* deps: Bump Microsoft.NET.Test.Sdk from 18.10.0 to 18.10.1 (#2073)

---
updated-dependencies:
- dependency-name: Microsoft.NET.Test.Sdk
  dependency-version: 18.10.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tamir Dresher <tamir.dresher@gmail.com>

* ci: Bump the github-actions group across 1 directory with 2 updates (#2087)

Bumps the github-actions group with 2 updates in the / directory: [github/gh-aw-actions/setup](https://github.com/github/gh-aw-actions) and [github/gh-aw-actions/setup-cli](https://github.com/github/gh-aw-actions).


Updates `github/gh-aw-actions/setup` from 0.89.17 to 0.90.0
- [Release notes](https://github.com/github/gh-aw-actions/releases)
- [Changelog](https://github.com/github/gh-aw-actions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/gh-aw-actions/compare/f3b81cdb3070066a47faa9bdf440f4f1dc78b1f0...a65c3ae1e11016c37f426bb3847a6f5e1a7d58df)

Updates `github/gh-aw-actions/setup-cli` from 0.89.17 to 0.90.0
- [Release notes](https://github.com/github/gh-aw-actions/releases)
- [Changelog](https://github.com/github/gh-aw-actions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/gh-aw-actions/compare/f3b81cdb3070066a47faa9bdf440f4f1dc78b1f0...a65c3ae1e11016c37f426bb3847a6f5e1a7d58df)

---
updated-dependencies:
- dependency-name: github/gh-aw-actions/setup
  dependency-version: 0.89.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: github/gh-aw-actions/setup-cli
  dependency-version: 0.89.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tamir Dresher <tamir.dresher@gmail.com>

* chore(deps): Bump @grpc/grpc-js in /samples/autonomous-pipeline (#2127)

Bumps [@grpc/grpc-js](https://github.com/grpc/grpc-node) from 1.14.3 to 1.14.5.
- [Release notes](https://github.com/grpc/grpc-node/releases)
- [Commits](https://github.com/grpc/grpc-node/compare/@grpc/grpc-js@1.14.3...@grpc/grpc-js@1.14.5)

---
updated-dependencies:
- dependency-name: "@grpc/grpc-js"
  dependency-version: 1.14.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tamir Dresher <tamir.dresher@gmail.com>

* deps: Bump fast-uri from 3.1.7 to 3.1.8 (#2126)

Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.7 to 3.1.8.
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.7...v3.1.8)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tamir Dresher <tamir.dresher@gmail.com>

* deps: Bump brace-expansion from 5.0.7 to 5.0.12 (#2125)

Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 5.0.7 to 5.0.12.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v5.0.7...v5.0.12)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 5.0.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tamir Dresher <tamir.dresher@gmail.com>

* deps: Bump undici from 8.10.0 to 8.11.2 in /docs (#2097)

Bumps [undici](https://github.com/nodejs/undici) from 8.10.0 to 8.11.2.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v8.10.0...v8.11.2)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 8.11.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tamir Dresher <tamir.dresher@gmail.com>

* deps: Bump astro in /docs in the astro-minor-patch group (#2086)

Bumps the astro-minor-patch group in /docs with 1 update: [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro).


Updates `astro` from 7.3.3 to 7.3.5
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@7.3.5/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-version: 7.3.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: astro-minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tamir Dresher <tamir.dresher@gmail.com>

* deps: Bump ip-address from 10.4.0 to 10.7.2 (#2098)

Bumps [ip-address](https://github.com/beaugunderson/ip-address) from 10.4.0 to 10.7.2.
- [Release notes](https://github.com/beaugunderson/ip-address/releases)
- [Commits](https://github.com/beaugunderson/ip-address/compare/v10.4.0...v10.7.2)

---
updated-dependencies:
- dependency-name: ip-address
  dependency-version: 10.7.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tamir Dresher <tamir.dresher@gmail.com>

* deps: Bump js-yaml and markdownlint-cli2 (#2108)

Bumps [js-yaml](https://github.com/nodeca/js-yaml) to 5.4.1 and updates ancestor dependency [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2). These dependencies need to be updated together.


Updates `js-yaml` from 5.2.2 to 5.4.1
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/5.2.2...5.4.1)

Updates `markdownlint-cli2` from 0.23.2 to 0.23.3
- [Changelog](https://github.com/DavidAnson/markdownlint-cli2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/DavidAnson/markdownlint-cli2/compare/v0.23.2...v0.23.3)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 5.4.1
  dependency-type: indirect
- dependency-name: markdownlint-cli2
  dependency-version: 0.23.3
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(gh-aw): relay normalized squad commands through dispatch (#2136)

* fix(gh-aw): relay normalized squad commands through dispatch

Fixes three command-routing defects reported against source SHA
261d140679b158888f1a3c4d9a5a3e74eb55b633
(octodemo/zava-social-backend-20261001184422#1):

1. The lifecycle-repair fallback in the shared squad.md coordinator only
   recognized exact, /squad-prefixed issue-comment bodies. A command
   normalized and relayed by squad-command-router.md via workflow_dispatch
   (e.g. the bare "activate" dispatch input for a /squad activate comment)
   skipped repair entirely. Repair gating and the effective command are now
   derived identically for both the issue_comment and workflow_dispatch
   event paths (CANONICAL_BY_BARE_COMMAND normalization).

2. squad-command-router.md omitted `roles: all`, so gh-aw's default
   write-role activation gate blocked the router from running at all for
   non-write actors -- including modes the router intentionally allows
   anyone to invoke. Added `roles: all`; the router's own in-script,
   per-command authorization for mutating modes is unchanged.

3. The router's relayed dispatch dropped originating comment provenance, so
   an embedded /squad approve-improvement could never supply a real
   approval_comment_id and was rejected outright. The router now forwards
   an aw_context pointer (item type/number + originating comment id)
   through the dispatch, and squad-improvement-gate.mjs's
   validateApprovalDispatchRelay re-fetches and validates that live comment,
   binding permission to its own author -- never the dispatch actor -- so
   approval binding is not weakened.

Package/lock/manifest regenerated via the standard
`node workflows/shared/squad-install-verifier.mjs --write-source` pipeline;
strict `gh aw compile --strict` passes with only the two documented
warnings. Added test/gh-aw-command-router-relay.test.ts (true end-to-end
router -> repair-job relay via real extracted step scripts, plus a
normalization mutation-kill test), and extended
test/gh-aw-command-parse.test.ts / test/gh-aw-improvement-worker.test.ts
with regression coverage for all three findings.

Local npm install is broken in this environment (missing transitive deps
such as fdir), so vitest/eslint cannot run locally; every new/changed
assertion was independently verified by direct Node/vm execution of the
real production modules and scripts, and by compiled-lock diffing. Hosted
CI at the PR head is the authoritative suite result.

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

* fix(gh-aw): update compiled-digest golden hashes for relay fix

The roles: all / aw_context changes to squad.md and
squad-command-router.md legitimately alter the compiled squad.lock.yml
content. Update the three hardcoded golden SHA-256 digests in
test/gh-aw-quality.test.ts's canonical package integrity contract
suite to match, following the same pattern as commit b5455084.

Independently recomputed via direct execution of the real
compileWithPinnedActions/normalizeCompiledLock helpers (node
--experimental-strip-types, bypassing the broken local vitest
install) and confirmed to match hosted CI's reported values exactly.

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

* fix(gh-aw): forward real item identity across the squad.md -> squad-improvement-worker relay hop

Fixes a downstream defect in the command-routing relay chain (flagged by
copilot-pull-request-reviewer[bot] against PR #2136, which fixed the three
originally-scoped findings from source SHA
261d140679b158888f1a3c4d9a5a3e74eb55b633,
octodemo/zava-social-backend-20261001184422#1).

Root cause: gh-aw's own dispatch_workflow safe-output engine
unconditionally overwrites any agent-supplied aw_context input with its
own buildAwContext() whenever a dispatch's target workflow declares an
aw_context workflow_dispatch input. buildAwContext() derives
item_type/item_number/comment_id solely from the CURRENT run's own event
payload -- never inherited across a hop. When a relayed (workflow_dispatch
-triggered) squad.md run dispatches to squad-improvement-worker via the
squad-approve-improvement skill, that dispatch goes through gh-aw's real
dispatch_workflow handler, so the engine always overwrites squad.md's
aw_context with its own context -- which, because squad.md's own run is a
workflow_dispatch event with no issue/comment payload, always carries empty
item_type/item_number/comment_id. collectImprovementContext's existing
strict exact-match check (correct for the native direct-comment path, where
the engine's own context genuinely is accurate) therefore always rejected
every relayed /squad approve-improvement, independent of any event_type
widening.

Fix (no gh-aw change; pure squad.md-side plumbing):
- squad-improvement-worker.md: declare a new, non-colliding
  squad_approval_relay workflow_dispatch input (distinct name from
  aw_context, so gh-aw's engine never auto-overwrites it) and wire a
  parallel SQUAD_IMPROVE_RELAY_CONTEXT env var at both existing call sites.
- squad.md: the squad-approve-improvement skill now always forwards
  squad_approval_relay: {event_type, item_type, item_number, comment_id}
  alongside the existing issue_number/approval_comment_id inputs, reusing
  the same already-resolved values.
- squad-improvement-gate.mjs: collectImprovementContext keeps the
  unconditional repo/workflow_id provenance check against the engine's own
  (always-accurate) context, then branches: native path (event_type ===
  issue_comment) validates item identity against the engine context
  unchanged; relayed path (any other event_type) validates with identical
  exact-match strictness against the new SQUAD_IMPROVE_RELAY_CONTEXT
  instead. No approval-binding check is weakened on either path; all
  unconditional live re-verification (comment/permission/revocation/
  revision/linked-PR checks) is untouched.

Regenerated workflows/package/*.md and workflows/squad-workflows.manifest.json
via `node workflows/shared/squad-install-verifier.mjs --write-source`.

Tests (test/gh-aw-improvement-worker.test.ts):
- Extends the skill-JSON-shape assertion for the new relay field.
- New describe block covering: relayed-path authorization success, repo/
  workflow_id forgery still rejected, mutation-kill coverage (tampered
  comment_id/item_number/item_type/event_type each independently rejected),
  malformed/missing relay context rejected (no silent fallback to the
  engine's empty item fields), native-path non-regression, source wiring
  assertions, and a compiled-artifact assertion (gh aw compile --strict)
  proving both the worker's lock.yml declares/wires the new input and
  squad.lock.yml's compiled dispatch step actually emits
  squad_approval_relay.

Verified locally: standalone Node execution of collectImprovementContext's
new branch logic (native path, relayed success, 4 mutation-kill cases, 3
malformed/missing-context cases, repo/workflow_id forgery); gh aw compile
--strict across all 8 installed workflows produces exactly the two
documented warnings (Compiled 8 workflows: 8 succeeded, 2 warnings);
per-workflow strict compiles of squad and squad-improvement-worker confirm
the new input/env/dispatch-field wiring in the generated lock.yml files.

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

* test(gh-aw): update stale compiled-lock golden digests after relay-context fix

Updating workflows/squad.md's squad-approve-improvement dispatch payload
(and squad-improvement-worker.md's new input/env wiring) changes the
compiled squad.lock.yml / squad-improvement-worker.lock.yml content, which
shifts the normalized SHA-256 digests asserted by the canonical package
integrity contract tests in test/gh-aw-quality.test.ts (tamper-mutation
fixtures recomputed over the new baseline compiled output).

Re-derived both digest pairs from the actual compiled output (workflow and
package source bindings) and updated the three assertions that pinned the
stale values. No test logic changed; this is a golden-value refresh
consistent with the same pattern applied for the three originally-scoped
fixes earlier in this PR.

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

---------

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

* fix(gh-aw): bind router commands to text author (#2141)

Fixes octodemo/zava-social-queue-worker-20261001211503#1

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

* fix(gh-aw): harden GA-review-blocked source contract (9 findings)

Fixes 9 confirmed GH-AW GA review blockers as one coherent source-contract
hardening pass:

1. squad-improvement-gate.mjs: added regression/mutation test coverage for
   rejecting a content-only modification of an already-tracked executable
   (100755) Markdown improvement target (production ALLOWED_FILE_MODE guard
   was already correct; the defect was a test-coverage gap).
2. squad_approval_relay: unambiguous JSON-string contract end-to-end between
   squad.md and squad-improvement-worker.md/gate, preserving the distinct
   input name since gh-aw overwrites aw_context.
3. squad-review-guard.mjs: added regression tests confirming override
   candidates are authorized before cardinality/record validation, so
   malformed or unauthorized markers fail closed.
4. squad-planning-ontology.md: normalized `Result: ✅ PASS` to the exact
   `RESULT: PASS` string downstream parsers require.
5. squad-install-verifier.mjs: confirmed verifyInstalledBytes() normalizes
   only the one documented injected source: binding before hashing and
   fails on any other tamper; existing mutation-test table already covers
   this (no source change needed).
6. Numeric issue/comment IDs from issue_comment events are canonicalized to
   safe-integer strings before comparison against workflow_dispatch string
   inputs; invalid forms are rejected. Direct and relayed coverage added.
7. squad-command-router.md: block replay of bot-authored standalone /squad
   issue/comment command text while preserving trusted workflow_dispatch
   continuation and documented bot behavior, for created/edited events.
8. can_approve_pull_request_reviews: proved via gh-aw source this is a
   single combined toggle gating both GITHUB_TOKEN PR creation and PR-review
   approval (cannot be split via job permissions). Per least-privilege
   policy and the mandatory independent-human-approval requirement, flipped
   true->false across all public/enlistment/setup copies and added a
   fallback-to-issue mechanism (manual compare-URL link) to
   squad-bootstrap.md for when push succeeds but PR creation is blocked.
9. Eliminated unbounded mutable commits/dev channel resolution; GA install
   guidance now requires an explicit, pre-validated 40-character SQUAD_SHA,
   synced across public/enlistment docs and skill mirrors. Exact-SHA
   fixture testing is unaffected; no release is published.

Verification:
- All 28 gh-aw-prefixed test files pass (1849/1849 tests), including the
  previously-failing test/gh-aw-install-staging.test.ts (15/15) after
  regenerating workflows/squad-workflows.manifest.json via
  `npm run gh-aw:integrity:write` to pick up the item 8/9 SKILL.md edits.
- packages/squad-sdk and packages/squad-cli both build cleanly
  (tsc --noEmit reports zero warnings/errors for both).
- Real (non-mocked) `gh aw compile --strict` against the canonical
  workflows/*.md sources compiles all 8 workflows successfully and
  produces exactly the two documented/allowed warnings (pull_request_target
  advisory on squad-review.md; bot-trigger advisory on squad.md).
- Independent security review found no high-confidence issues.
- No package.json/package-lock.json drift anywhere in the tree.

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

* fix(gh-aw): avoid false-positive security scan on bootstrap fallback marker

gh-aw's --strict compile security scanner flags any unclosed '<!--' token
because it scans forward to the nearest subsequent '-->' anywhere in the
file (a hidden-content/prompt-injection detection heuristic). The item-8
bootstrap PR-fallback marker intentionally stored only the opening '<!--'
as a module constant and appended the closing '-->' later via string
interpolation, which made the scanner capture ~240 lines of unrelated JS
as a single 'HTML comment' and reject it as suspicious content.

Fix: build the complete marker (open + close delimiters together) in a
single template literal inside bootstrapPrFallbackIssueMarker(), exactly
mirroring the existing (already-safe) BOOTSTRAP_ISSUE_MARKER shape. The
runtime marker text is byte-identical (verified via direct invocation);
only the constant's exported value lost its leading '<!-- ' (now built at
call time instead).

Regenerated the pinned SHA-256 digest for squad-bootstrap-validator.mjs
via 'npm run gh-aw:integrity:write' (workflows/squad-bootstrap.md,
workflows/package/squad-bootstrap.md, workflows/squad-workflows.manifest.json).

Verified:
- node workflows/shared/squad-install-verifier.mjs --check-source: current
- npx vitest run test/gh-aw-bootstrap-workflow.test.ts: 33/33 passed
- npx vitest run test/gh-aw-*.test.ts (28 files): 1849/1849 passed
- Real (non-mocked) 'gh aw compile --strict --no-check-update' against a
  scratch materialized .github/workflows/ tree: security scan passes,
  8/8 workflows compile, exactly 2 allowed warnings (pull_request_target
  advisory + slash_command/bots advisory) — matching CI's failing job.

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

* fix(gh-aw): trusted signed-provenance fallback for manual bootstrap PR

Replace the dead-end manual-PR-fallback boundary flagged in Copilot
auto-review with a narrowly-scoped trusted path: the bootstrap
workflow now stamps a signed, machine-readable provenance line
(repo/run/base branch/head branch/head SHA/compare URL) into the
fallback issue body it files when GITHUB_TOKEN cannot open the Cast
PR itself. squad-review-guard validates a human-opened Cast PR
against that provenance record end-to-end (aggregate fields, compare
URL, run binding, issue-created-before-PR ordering) before granting
@squad/base-controlled-bootstrap / @squad/base-controlled-review
roles, with every other provenance/review/content/head check
unchanged and malformed/forged records still failing closed.

- workflows/shared/squad-bootstrap-validator.mjs: add
  buildBootstrapPrFallbackProvenanceLine/parseBootstrapPrFallbackProvenance/
  buildBootstrapPrFallbackCompareUrl; buildBootstrapPrFallbackIssueBody
  now requires a signed provenanceLine argument.
- workflows/shared/squad-review-guard.mjs: add
  validateBootstrapPrFallbackAttribution, wired ahead of the existing
  bot-authored bootstrap-PR path so a verified fallback PR is treated
  identically (including the bootstrap-run-success gate).
- workflows/squad-bootstrap.md (+ generated package copy): thread the
  signed provenance line into the fallback issue body.
- test/gh-aw-review-guard.test.ts: full new fallback-scenario suite
  (valid fallback incl. enforceReviewOutputs parity, run-success
  gating, unrelated/ambiguous-issue rejection, and a 15-case mutation
  table for forged/edited/malformed provenance) — mutation-verified by
  independently neutering each of the 4 requireThat checks in
  validateBootstrapPrFallbackAttribution.
- test/gh-aw-bootstrap-workflow.test.ts: update VM-sandboxed
  stateModule mock and fixtures for the new provenance-line export and
  strict 40-hex-char head-SHA validation.
- docs/src/content/docs/guide/gh-aw.md: document the new
  signed-provenance trust model and its exact matching requirements.
- workflows/squad-command-router.md (+ generated package copy),
  gh-aw-enlistment SKILL.md copies, scripts/gh-aw-hosted-e2e.mjs,
  test/gh-aw-hosted-e2e.test.ts, workflows/squad-workflows.manifest.json:
  carry-through updates for findings 7-9 (bot-authored command
  blocking, can_approve_pull_request_reviews=false default, explicit
  SHA-pinned enlistment) already validated earlier this PR; this
  commit regenerates the manifest/package artifacts to match.

Verified: npx vitest run test/gh-aw-*.test.ts (28 files, 1884 tests,
all passing); npm run lint (tsc --noEmit, both packages, clean); real
scratch-consumer gh aw compile --strict across all 8 package
workflows with exactly the 2 previously-allowed warnings preserved;
npm run gh-aw:integrity:write regenerated manifest/package artifacts
cleanly.

Addresses PR #2142 review finding Medium #3 (bootstrap PR fallback
cannot satisfy provenance checks), per coordinator-approved redesign.

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

* docs(changeset): note signed-provenance bootstrap-PR fallback redesign

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

* fix(gh-aw): harden bootstrap-PR-fallback trust and command-router bot block (8 review findings)

Addresses the 8 fresh Copilot auto-review findings from the review on
commit 9b45d116 (after the signed-provenance fallback redesign):

- squad-bootstrap-validator.mjs: filter fallback-issue dedupe/ambiguity
  candidates by bot-authorship + title + valid-provenance *before*
  counting/matching, closing a decoy-issue forgery/DoS gap.
- squad-review-guard.mjs: bind the fallback provenance path's cited
  bootstrap run to the exact base commit (run.head_sha === pr.base.sha),
  matching the bot-authored path's existing binding.
- scripts/gh-aw-hosted-e2e.mjs: validate the full signed provenance
  record (independently re-implemented, not imported) instead of a
  plain-text marker/compare-URL substring check, so the hosted E2E can
  no longer report success for a fallback issue production would reject.
- squad-command-router.md: add direct test coverage (user.type /
  payload.sender.type fixtures, previously never populated) proving the
  existing bot-authorship block is reachable and enforced for both
  created and edited events, with mutation-kill tests.
- Updated docs/src/content/docs/guide/gh-aw.md, .github/agents.md,
  README.md (removed a stale @dev-tracking note contradicting the
  explicit-SQUAD_SHA policy), and all 5 synchronized copies of
  skills/gh-aw-enlistment/SKILL.md to describe the fallback-issue-first
  Cast PR flow.

Verified: full test/gh-aw-*.test.ts suite (28 files, 1896 tests) passes;
npm run lint (tsc --noEmit, both packages) clean; a real scratch-consumer
`gh aw compile --strict` against workflows/package/*.md produces exactly
the two documented warnings. No stable release published.

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

* docs(gh-aw): close remaining stale automatic-Cast-PR passages (review threads 1-8)

Follow-up to f1084ec1: fixed two stale passages a second hosted-review
pass on the same commit flagged:
- skills/gh-aw-enlistment/SKILL.md anti-pattern list still said
  'automatic Cast PR' unconditionally.
- docs/src/content/docs/guide/gh-aw.md activation-canary/automatic-
  bootstrap checklist rows still described only the unconditional-
  automatic case, including research-proposals-issue creation timing.

Both now cover the manual-fallback path and its provenance
requirement. Regenerated workflows/squad-workflows.manifest.json via
npm run gh-aw:integrity:write (SKILL.md digest only).

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

* fix(gh-aw): resolve fresh Copilot review findings on PR #2142 (7 fixes)

Fresh hosted Copilot review on commit 3bf5c01f surfaced 1 new Medium finding
plus 6 previously-missed findings. All 7 are fixed/tested:

- squad-bootstrap-validator.mjs: edited-fallback-issue dedupe bug (Medium) -
  findExistingBootstrapPrFallbackIssue now requires unedited created_at ===
  updated_at timestamps, mirroring validateBootstrapPrFallbackAttribution's
  review-time requirement exactly.
- gh-aw-hosted-e2e.mjs: selectBootstrapFallback now mirrors the same
  open-state and unedited-timestamp lifecycle checks production enforces.
- squad-review-guard.mjs: validateBootstrapPrFallbackAttribution tightened
  from `!== 'Bot'` to `=== 'User'` so non-Bot, non-User account types
  (Organization, Mannequin) can no longer pass fallback-PR authorship.
- squad-review-guard.mjs: assertClearingReview now caches collaborator
  permission lookups per login for the duration of one evaluation.
- squad-improvement-gate.mjs: added direct test coverage for sameNumericId's
  cross-type normalization and malformed/overflow rejection at the nested
  origin.item_number/relay.item_number level (production was already
  correct; this closed a test-only gap).
- squad-planning-ontology.md: added a regression test pinning the exact
  RESULT: <PASS | FAIL> template text (production doc was already correct;
  test-only gap).
- squad-bootstrap-validator.mjs: buildBootstrapPrFallbackIssueBody now tells
  the human to manually re-run the workflow if they want the linked
  research-proposals issue before merging the fallback-opened Cast PR, since
  no GitHub event re-triggers bootstrap until the next default-branch push.
  Proved via a scratch gh aw compile --strict run that adding a
  pull_request_target trigger instead would both require an unacceptable
  checkout: false security posture change and break the documented
  'exactly two compile warnings' contract - a missing instruction, not a
  missing trigger, was the actual defect.

Regenerated workflows/squad-workflows.manifest.json and the generated
workflows/package/squad-bootstrap.md copy via npm run gh-aw:integrity:write
to pick up the new source digests. Synced the 4 enlistment SKILL.md mirror
copies via npm run sync-templates.

All 28 gh-aw-*.test.ts files / 1919 tests pass. npm run lint clean. The
enlistment-skill compile-warning-allowlist contract (exactly two warnings)
remains intact.

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

* fix(gh-aw): close bootstrap-fallback dedupe staleness, title-check, and notification gaps (review on 1a9c4081)

- squad-bootstrap-validator.mjs: add base_sha staleness binding to the
  fallback-issue provenance record so an old fallback issue is no longer
  silently reused once the default branch advances past it.
- squad-review-guard.mjs: require the canonical Cast-PR title on the
  fallback review path too, matching the bot-authored path.
- squad-bootstrap.md: reword the run-success notification to be accurate
  when only the fallback issue (not a Cast PR) exists.
- Regenerate workflows/package/squad-bootstrap.md and
  squad-workflows.manifest.json via npm run gh-aw:integrity:write.
- Update docs/src/content/docs/guide/gh-aw.md fallback-provenance section.
- Add regression + mutation coverage across
  gh-aw-bootstrap-workflow.test.ts, gh-aw-review-guard.test.ts, and
  gh-aw-hosted-e2e.test.ts (staleness, malformed-argument, title-rejection
  cases).

Validated: targeted test files (308/308), full gh-aw suite
(28 files / 1921 tests), npm run lint (tsc), npm run lint:eslint
(0 errors), npm run build.

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

* fix(gh-aw): close workflow_dispatch fallback dead-end and E2E fallback-terminal gap

Fresh Copilot review on commit e024db94 surfaced two findings:

- High (workflows/squad-bootstrap.md): a workflow_dispatch run could open a
  bootstrap-PR-fallback issue that squad-review-guard.mjs's
  validateBootstrapPrFallbackAttribution can never authorize (it requires
  event === 'push'), and dedupe matching would keep reusing that permanently
  dead-end issue forever. Now fails closed with an actionable error instead.

- Medium (scripts/gh-aw-hosted-e2e.mjs): the hosted E2E's fallback outcome
  reported terminal success the moment bootstrap opened the fallback issue,
  without ever exercising the Cast-PR-fallback review/attribution path. The
  obvious fix (E2E opens the Cast PR itself with its own PAT) was rejected:
  that would substitute automation for the human-in-the-loop step
  can_approve_pull_request_reviews=false exists to require. Instead the
  fallback outcome is now non-terminal (awaiting_manual_pr); a new read-only
  selectManualFallbackCastPr independently re-derives production's
  authorization logic to observe (never create) a human-opened PR, and a new
  resume-fallback command + squad-gh-aw-hosted-e2e-resume dispatch trigger
  let a later run resume from the original run's persisted baseline identity
  to validate that PR through to the same base-controlled Squad Review
  canary the bot-authored path exercises.

Added regression/mutation coverage for both findings and regenerated the
installed package mirror/manifest digests via
`npm run gh-aw:integrity:write`.

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

* docs(gh-aw): document and prove resume-fallback token scoping

Addresses a sibling-session scope-gate follow-up on the resume-fallback job
added for the hosted-E2E Medium-finding redesign: audit confirmed the job's
`secrets.SQUAD_GH_AW_E2E_TOKEN` usage never creates, approves, or mutates the
Cast fallback pull request. It is reused (not removable) only because no
separate read-only PAT exists for the external target fixture repository and
`github.token` cannot reach a repository outside this one.

Documents each job's token scoping separately in the workflow comments, and
adds a transitive-call-graph test proving every function `resumeFallback` can
reach (`bootstrapOutputs`, the `githubAdapter` block,
`selectManualFallbackCastPr`, `waitForManualFallbackCastPr`,
`waitForBaseControlledReviewCanary`) issues only GET `gh api` calls -- no
`pr create`/`pr merge`/`pr review`/write `--method` call anywhere in that
reachable graph.

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

* fix(gh-aw): remove cross-repo secret from bootstrap-PR fallback continuation

Architectural correction to the hosted-E2E fallback redesign: no credential
(PAT, GitHub App token, or repository/environment secret) may ever be used to
observe or validate the manually opened Cast PR, even read-only. A
workflow-held credential capable of reading that PR's state undermines the
can_approve_pull_request_reviews=false trust boundary, which exists
specifically so a human must act outside of any CI-held credential.

- Reverted .github/workflows/squad-gh-aw-hosted-e2e.yml to its pre-existing
  baseline: removes the resume-fallback job, its squad-gh-aw-hosted-e2e-resume
  dispatch trigger, and the action-gating added for it. File is now byte-
  identical to origin/dev (zero net diff).
- hosted()'s fallback branch no longer calls bootstrapOutputs()/
  selectManualFallbackCastPr()/waitForBaseControlledReviewCanary() inline and
  makes zero further GitHub API calls. It now parses the fallback issue's own
  already-fetched provenance body (parseBootstrapPrFallbackProvenance, a pure
  string-parsing function) and terminates immediately, non-terminally, at
  status: 'awaiting_manual_pr' with complete evidence (target, fallback issue,
  head/base branch+SHA, compare URL, next_step instructions).
- The target repository's own installed Squad Review workflow validates the
  human-opened PR locally, using that repository's own GITHUB_TOKEN/gh-aw
  authority -- no cross-repository read by this controller is needed.
- resumeFallback() is retained unchanged internally (still provably GET-only
  via the existing transitive call-graph test) but is now framed exclusively
  as a local, operator-run-only CLI command: never wired to any Actions job
  or repository_dispatch trigger, relying only on the operator's own
  `gh auth login` session, never a repository secret.
- Updated test/gh-aw-hosted-e2e.test.ts: workflow-topology test now asserts a
  single hosted-e2e job/dispatch type and explicit absence of any
  resume-fallback job; added a test asserting hosted()'s fallback branch
  writes complete evidence with none of the removed inline calls present;
  the dispatcher-wiring test now asserts resumeFallback's doc comment states
  it is operator-run-only/never-CI-wired/never-secret-backed and that the
  workflow file contains no reference to it. Removed the now-obsolete
  per-job token-scoping test (the job no longer exists). The existing
  transitive read-only call-graph proof for resumeFallback is unchanged.
- Updated .changeset/gh-aw-ga-review-hardening.md with a new section
  documenting this correction.

Validation:
- npx vitest run test/gh-aw-hosted-e2e.test.ts -> 139/139 pass
- npx vitest run test/gh-aw*.test.ts -> 28 files / 1938 tests pass
- npm run lint (tsc, both packages) -> clean
- npm run lint:eslint -> 0 errors (pre-existing warning baseline only)
- npm run build -> succeeds (prebuild version-bump side effects reverted)
- npm run gh-aw:integrity:check -> current (no canonical workflow source
  touched this round)
- Scratch-consumer gh-aw compile --strict (mirroring squad-ci.yml's
  gh-aw-compile job exactly): 8/8 workflows compile, exactly 2 documented
  warnings (pull_request_target advisory on squad-review.md; bots:/
  slash_command advisory on squad.md); all 8 compile individually with
  --strict; squad-install-verifier.mjs --verify-install --strict-compile
  passes.
- git diff origin/dev -- .github/workflows/squad-gh-aw-hosted-e2e.yml -> empty
  (file content is byte-identical to dev; this path no longer appears in the
  PR's net diff against dev)

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

* fix(gh-aw): close base-sha drift, bootstrap-branch doc, and resume-fallback gaps from fresh review

Fixes 7 Copilot review findings on commit 140ce8eb:

- scripts/gh-aw-hosted-e2e.mjs: next_step instruction for resume-fallback
  was missing its three required CLI flags; now emits a complete
  gh run download + resume-fallback --target/--evidence-in/--evidence
  recipe with interpolated values.
- workflows/shared/squad-review-guard.mjs: the bootstrap-PR fallback
  review path bound to the live, mutable pr.base.sha, making manual
  recovery permanently unrecoverable after any further default-branch
  commit. Replaced with a GitHub Compare API ancestry check
  (identical/ahead) that also binds the response's own resolved
  base_commit/merge_base_commit SHAs back to the immutable
  provenance.base_sha, and fails closed on any compare API error.
  findExistingBootstrapPrFallbackIssue's baseSha is now optional for
  the review-path lookup (push-triggered dedupe caller is unchanged).
- skills/gh-aw-enlistment/SKILL.md (canonical + 4 synced mirrors):
  fixed the automated fallback explanation to name the real Cast
  fallback branch (squad/bootstrap-cast) instead of the unrelated
  human-run install branch (chore/squad-gh-aw-bootstrap).

Regenerated workflows/squad-workflows.manifest.json and the embedded
digest in workflows/squad-bootstrap.md / workflows/package/squad-bootstrap.md
via npm run gh-aw:integrity:write; confirmed clean via
npm run gh-aw:integrity:check.

Added regression + mutation test coverage for all three findings,
including four new binding-mutation tests proving a passing compare
status alone is insufficient without base_commit/merge_base_commit
SHA agreement.

Validation: full test/gh-aw*.test.ts suite (28 files, 1949 tests)
passes; npm run lint (tsc --noEmit, both packages) clean; npm run
build clean. Two pre-existing, unrelated failures (test/cli/copilot.test.ts,
test/acceptance/acceptance.test.ts, one case in test/cli/cast.test.ts)
reproduce identically on the pre-session tree via git stash and are
unaffected by this change.

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

* fix(gh-aw): resolve fresh review findings on bb805b2c (ambiguous fallback matches, merge-trigger claim, open-PR filter)

- squad-bootstrap-validator.mjs: fix a regression this session's own prior
  fix introduced - when baseSha is omitted (review path), multiple genuine
  open fallback-issue matches (stale + fresh across base drift) no longer
  throw "Ambiguous"; they resolve deterministically to the newest match,
  unless they share the identical base_sha (a true unresolvable duplicate),
  which still fails closed regardless of caller.
- squad-bootstrap-validator.mjs + canonical SKILL.md (+4 mirrors): correct
  the false claim that merging a Cast PR automatically retriggers Squad
  Bootstrap - confirmed via squad-bootstrap.md's push trigger paths that
  it never does; manual workflow_dispatch is always required, before or
  after merge.
- gh-aw-hosted-e2e.mjs: selectManualFallbackCastPr now requires
  pr.state === 'open', excluding closed/merged look-alike PRs from the
  manual fallback candidate set.
- docs/guide/gh-aw.md: rewrite the fallb…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant