Skip to content

fix(degwatch): ignore <synthetic> placeholder model ids#51

Merged
ThinkOffApp merged 1 commit into
mainfrom
fix/degwatch-ignore-synthetic
Jul 20, 2026
Merged

fix(degwatch): ignore <synthetic> placeholder model ids#51
ThinkOffApp merged 1 commit into
mainfrom
fix/degwatch-ignore-synthetic

Conversation

@ThinkOffApp

Copy link
Copy Markdown
Owner

Stops the overnight alert spam (petrus 00:58: "Claudemm you are spamming!") — '' is the harness placeholder on usage-limit turns, not a model slip. Mini watcher already runs the patch; MacBook watcher needs a restart on it after merge (or push kimi3's equivalent local branch).

🤖 Generated with Claude Code

The harness stamps '<synthetic>' as the model on synthetic turns (usage
limit notices etc). The watch treated it as a model slip and re-alerted
every cooldown for as long as the agent sat at its limit - hours of
identical orange alerts in thinkoff-development tonight. A placeholder
is not a degradation; skip it. Real slips (haiku fallback etc) still
alert as before.

Mini watcher already restarted with this patch. Same-shape fix exists
as an unpushed branch in the MacBook clone (kimi3's find) - either
lands the same change.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 85ae332a49

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

// notices, injected system output) - not a real model slip. Alerting on it
// spammed the room every cooldown while an agent sat at its usage limit
// (petrus, 2026-07-20 00:58: "Claudemm you are spamming!").
if (signals.model && accepted.length && signals.model !== '<synthetic>') {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve real model checks after synthetic entries

When the newest transcript entry with a message.model is <synthetic>, latestSignals() has already overwritten the previous real model before this guard runs, so the model check is skipped entirely. In contexts such as a daemon restart or first tick after a usage-limit/injected synthetic turn, a prior non-accepted real model immediately before the synthetic entry will no longer alert until another real model message appears. To ignore placeholders without masking slips, keep the latest non-synthetic model during the transcript scan or otherwise fall back to the previous real model.

Useful? React with 👍 / 👎.

@ThinkOffApp
ThinkOffApp merged commit 5b2261c into main Jul 20, 2026
3 checks passed
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.

1 participant