chore: regenerate tend-mention.yaml#236
Merged
Merged
Conversation
Syncs the checked-in workflow file with the in-repo generator. Pulls in changes from #225 (pull_request_review_comment dedup), #233 (drop bot-author filter), #228 (--paginate on gh api), and #235 (move behavioral instructions from prompt to skill). Generated with the local `generator/` source tree rather than `uvx tend@latest init`, because PyPI 0.0.11 lags behind main for these changes — running `uvx tend@latest init` against the current tree would *add* `timeout-minutes: 60` back and drop the mention generator updates.
This was referenced Apr 11, 2026
tend-agent
pushed a commit
that referenced
this pull request
Apr 14, 2026
Pulls in PR #268's `tend-outage` skip guard for `tend-mention` (critical — prevents the outage self-loop) and the freshness-gate / bot-closed-PR-drop from PR #254 for `tend-notifications`. Observed on run 24418078692 (review-reviewers, 2026-04-14T19:13Z): a 3-run cascade hit #267 between 19:14–19:17Z during a brief Anthropic outage. The cascade only stopped because the API recovered; the same pattern produced 95 runs in ~80 minutes during the earlier 2026-04-14T03:03Z outage documented in #268. Tend's own `tend-mention.yaml` was last regenerated at cb6e919 (#236), which predates #268, so the deployed filter still allows `issue_comment` events on the `tend-outage` tracking issue. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2 tasks
max-sixty
pushed a commit
that referenced
this pull request
Apr 14, 2026
## Summary Regenerates `tend-mention.yaml` and `tend-notifications.yaml` with tend 0.0.12 (released earlier today). The critical change is [#268](#268 `tend-outage` skip guard for `tend-mention`, which tend's own deployed workflow has been missing since that fix landed. ## Evidence — outage loop reproduced today [Run 24418078692](https://github.com/max-sixty/tend/actions/runs/24418078692) (review-reviewers, 2026-04-14T19:13:53Z) observed a fresh cascade on [#267](#267): | Time (UTC) | Run | Workflow | Result | |---|---|---|---| | 19:14:48Z | [24418118461](https://github.com/max-sixty/tend/actions/runs/24418118461) | tend-mention | failure → posted to #267 | | 19:15:49Z | [24418164746](https://github.com/max-sixty/tend/actions/runs/24418164746) | tend-mention | failure → posted to #267 | | 19:16:42Z | [24418203215](https://github.com/max-sixty/tend/actions/runs/24418203215) | tend-mention | failure → posted to #267 | | 19:17:43Z | [24418247574](https://github.com/max-sixty/tend/actions/runs/24418247574) | tend-mention | success (Anthropic recovered) | Each failure ran `action.yaml`'s `Report failure` step (`action.yaml:296-358`), which POSTed to the `tend-outage`-labeled #267. That `issue_comment` event re-triggered `tend-mention`, which failed the same way, producing the next run. The cascade stopped only when the Anthropic API came back online — the same pattern that produced 95 runs in ~80 minutes during the 2026-04-14T03:03Z outage documented in [#268](#268). ## Root cause [#268](#268) merged the fix into `generator/src/tend/workflows.py` at 2026-04-14T13:56Z, and [#270](#270) released 0.0.12. But tend's own `.github/workflows/tend-mention.yaml` was last regenerated at cb6e919 ([#236](#236)), which predates #268. The deployed filter is still: ```yaml (github.event_name == 'issue_comment') || ``` which allows every comment on the `tend-outage` issue to re-trigger the workflow. This PR applies the 0.0.12 generator, which emits the guarded form: ```yaml (github.event_name == 'issue_comment' && !contains(github.event.issue.labels.*.name, 'tend-outage')) || ``` ## What's in this regen - `tend-mention.yaml`: [#268](#268) `tend-outage` skip guard. - `tend-notifications.yaml`: [#254](#254) freshness gate (Layer D) + bot-closed-PR drop (Layer C). Already released in 0.0.12; regenerating brings tend's own workflow in line. CLAUDE.md authorizes regenerating to the latest release ("Updating earlier to the latest release (e.g., during a release commit) is fine"); 0.0.12 was released today in [#270](#270). ## Gate assessment - **Classification**: Structural — same conditions reproduce every time. An Anthropic outage lasting ≥ ~2 min triggers the cascade with probability 1 under the current deployed filter. - **Evidence level**: Critical. 1 occurrence this run + 1 historical occurrence (95 runs on 2026-04-14T03:03Z, documented in [#268](#268)). Per `review-gates.md`, a structural failure with a clear critical outcome passes Gate 1 at 1 occurrence. - **Change type**: Mechanical regeneration. No generator or skill changes — only workflow YAML regenerated from already-merged, already-released source. - **Gates**: Pass / Pass. ## Test plan - [ ] CI green on this PR. - [ ] On the next Anthropic outage lasting ≥ 2 minutes, `tend-mention` stays quiet on #267 instead of looping — the cascade can't re-enter because the `issue_comment` filter now excludes `tend-outage`-labeled issues. Co-authored-by: continuous-bot <269947486+continuous-bot@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Syncs
.github/workflows/tend-mention.yamlwith the in-repo generator. The file drifted across #225, #228, #233, and #235 — each updatedgenerator/src/tend/workflows.py(and the regtest snapshots) but none regenerated the checked-in workflow YAML. Result: the generator and the file it supposedly produces no longer matched.Pulled changes:
pull_request_review_commentnarrowed to[edited]only, with the rationale comment in the trigger block (fix(mention): deduplicate review events causing FAILURE rollup #225)$REVIEW_IDto detect first-contact@botmentions inside inline review comments, with theREVIEW_IDenv var wired fromgithub.event.review.id(fix(mention): deduplicate review events causing FAILURE rollup #225)issue_commentclause no longer filters bycomment.user.login \!= bot_name(fix(mention): remove bot-author filter from issue_comment #233) — self-conversation is now handled at the content level by therunning-in-ciskill's Self-conversation Guard--paginateadded to the threegh apicalls used for bot engagement detection (fix(mention): paginate gh api calls in verify job #228)running-in-ci(refactor(mention): move behavioral instructions from prompt to skill #235)Why not
uvx tend@latest init?The nightly skill's regen step is
uvx tend@latest init, which pulls the most recent PyPI release (currently 0.0.11). For tend's own repo that produces the wrong result:timeout-minutes: 60that fix(workflows): drop hardcoded 60-min job timeout #223 / fix(review-reviewers): drop hardcoded 60-min timeout #232 removed from the generator. Runninguvx tend@latest initagainstmainaddstimeout-minutes: 60back to all 8 workflow files — a straight regression.This PR was generated with
uv run --project generator tend initagainst the worktree, which uses the source tree exactly as checked in. That produces a clean, one-file diff (tend-mention.yaml only) — every other workflow was already in sync with the local generator.Follow-up: self-regenerating nightly
The nightly dogfooding loop is structurally broken for tend's own repo: each release lag between a generator change landing on
mainand a PyPI bump re-introduces drift thatuvx tend@latest initcan't see (and can actively regress). A repo-localrunning-tendskill that overrides Step 5 to useuv run --project generator tend initwould make tend's nightly self-consistent. Leaving that out of this PR so the fix stays scoped; happy to open a second PR if a maintainer wants it.Test plan
uv run --project generator tend initagainst the PR branch produces no further diffuvx tend@latest initagainst the PR branch still wants to revert this (expected — the underlying PyPI-lag issue)