Repository navigation
Reset issue triggers to declared defaults, not snapshot ids - #118
Merged
Merged
Conversation
Closes the trigger half of #28 and fixes #117. The snapshot recorded trigger ids and only deleted, so it adopted a rewritten default as pristine, never recreated a deleted one, and in CI adopted whatever the last job left. All three happened to the delivery default alerting-001 is built around; since 19 August the scenario ran with no delivery trigger. DEFAULT_ISSUE_TRIGGERS lists the four triggers project creation makes, by content, muted. Every reset keeps the oldest trigger of each type and rewrites it to that content, creates any missing, and deletes the rest. A failed trigger reset fails the acquire, like the rest of the reset. The Outpost gateway guard now also checks the gateway key's live ids, because restored triggers get new ids a persisted snapshot lacks. Verified against evals-ci: the missing delivery default was created, a rewritten one was restored in place, and a second pass wrote nothing. This changes what alerting-001 starts from: an enabled, wildcard delivery trigger with no channel. Results either side are not comparable. Co-Authored-By: Claude Opus 5.5 <[email protected]>
From review of #118. The API lists triggers newest first and every fixture listed the oldest first, so removing the sort passed every test; a fixture now lists them newest first, and fails without it. A trigger type DEFAULT_ISSUE_TRIGGERS does not declare is most likely a new default, which an id snapshot would have kept; the reset now warns when it deletes one. The Outpost guard's live-id path gets a test, and its warning and AGENTS.md say "snapshot or live state". README no longer says triggers stay as they were. Timestamps compare with < rather than localeCompare. Co-Authored-By: Claude Opus 5.5 <[email protected]>
leggetter
marked this pull request as ready for review
November 6, 2026 15:41
This was referenced Nov 6, 2026
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.
Fixes #117, and the issue-trigger half of #28.
evals-cihad no delivery issue trigger from 19 August, soalerting-001has been measuring "create an alert from nothing" instead of what it was designed around. The cause is in the reset: the pristine snapshot records trigger ids and only deletes, so it:What changes
DEFAULT_ISSUE_TRIGGERSdeclares the four triggers project creation makes, by content, read from the Event Gateway implementation. They carrychannels: {}, per Mute issue trigger notifications on every reset #116.resetIssueTriggersToDefaultskeeps the oldest trigger of each type and rewrites it to that content (configs, channels, name, enabled), creates any type that is missing, and deletes every other trigger.Verified against
evals-ciit_IEjWYWmhlQUMPd,first_attempt,*,channels: {}).final_attemptand disabled by hand, then restored in place by one reset.The project now holds exactly the four defaults, muted.
This is an instrument change for
alerting-001The agent now starts from an enabled, wildcard delivery trigger with no channel: configured and silent, which is the failure the scenario exists to catch. Before 19 August it started from a rewritten trigger, and since then from none. Results either side are not comparable. It needs a three-attempt re-run across all six experiments before anything about it is published.
Review
An independent review found nothing blocking, and confirmed the declared configs field for field against the Event Gateway implementation. Fixed from it:
Checks
pnpm -r test: all pass (hookdeck 70)pnpm typecheck,pnpm -r build,biome check .: clean🤖 Generated with Claude Code