mirror of
https://github.com/langchain-ai/deepagents.git
synced 2026-08-27 02:41:20 -04:00
1bb7deee17
On PRs that don't touch `libs/talon`, failing `lint-talon` / `test-talon` jobs no longer block merge — the `ci_success` waiver added in #5808 now actually fires, instead of being unreachable because the `talon` path filter also matched `libs/code/**`. --- The waiver from #5808 was unreachable for its target population. `ci.yml` passed `TALON_CHANGED: ${{ needs.changes.outputs.talon }}`, but the `talon` filter is deliberately broad — it watches `libs/talon/**` **plus** `libs/deepagents/**`, `libs/code/**`, and the workflow files, because talon editable-installs `deepagents-code` and its CI must run when those change. Reusing that signal as "PR touches talon" meant every libs/code PR got `talon == 'true'` and the gate stayed strict. Confirmed on #5773 (run 32866932914): the gate logged `TALON_CHANGED: true`, `"waived": []`, and failed on `lint-talon`/`test-talon` even though the PR only touched `libs/code`. The fix decouples "run talon CI" from "PR touches talon sources": a new `talon-src` path-filter output tracks only `libs/talon/**`, and both the `ci_success` gate (`TALON_CHANGED`) and the `talon-failure-advisory` job's `if:` condition read it. The broad `talon` filter is untouched — it still controls which jobs run. `ci_gate.py` is unchanged; it takes the flag as a plain string, and its unit tests (run in `check-release-options`) pass unmodified. **Expected gate outcomes** (reasoned through, since the filter wiring itself isn't unit-testable without simulating the YAML): - **(a) PR touching only `libs/code`** — talon jobs run (broad filter), `talon-src` is not `'true'`, so talon failures are waived and the advisory comment posts. This is the population the waiver was written for. - **(b) PR touching `libs/talon`** — `talon-src` is `'true'`, gate stays strict; talon failures block. - **(c) PR touching only `libs/deepagents`** — talon jobs run (the broad filter includes `libs/deepagents/**`), but `talon-src` is not `'true'`, so talon failures are **waived**. Note: this differs from the "deepagents-core changes stay strict" behavior described when this fix was scoped — under `talon-src: ['libs/talon/**']` only genuine talon-source PRs are strict. If maintainers want deepagents-only PRs to stay strict (a core change that breaks talon blocks), I can add `libs/deepagents/**` to `talon-src`; the trade-off is that a deepagents PR could then be blocked by pre-existing talon breakage unrelated to its change. Please confirm which is intended. - **(d) Push to main** — everything strict regardless of filter outputs (the waiver requires `event == 'pull_request'`).