Skip to content

chore: regenerate tend-mention.yaml#236

Merged
max-sixty merged 1 commit into
mainfrom
tend/update-workflows
Apr 11, 2026
Merged

chore: regenerate tend-mention.yaml#236
max-sixty merged 1 commit into
mainfrom
tend/update-workflows

Conversation

@tend-agent
Copy link
Copy Markdown
Collaborator

Summary

Syncs .github/workflows/tend-mention.yaml with the in-repo generator. The file drifted across #225, #228, #233, and #235 — each updated generator/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:

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:

This PR was generated with uv run --project generator tend init against 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 main and a PyPI bump re-introduces drift that uvx tend@latest init can't see (and can actively regress). A repo-local running-tend skill that overrides Step 5 to use uv run --project generator tend init would 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 init against the PR branch produces no further diff
  • uvx tend@latest init against the PR branch still wants to revert this (expected — the underlying PyPI-lag issue)
  • CI (required checks)

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.
@max-sixty max-sixty merged commit cb6e919 into main Apr 11, 2026
3 checks passed
@max-sixty max-sixty deleted the tend/update-workflows branch April 11, 2026 14:15
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>
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants