{"slug":"watchdog-alert-review","name":"Watchdog Alert Review: Silent and Noisy Alarms","version":"1.0.1","updated_at":"2026-10-08T19:12:35.409Z","use_when":"Reviews pasted code or a design for a liveness watchdog, a staleness alarm or a daily heartbeat mail (sources that must keep answering, a pipeline that must keep publishing) and lists every way it stays silent on a dead source or floods on a healthy one. It checks whether silence is measured in the time the source was last asked or by the wall clock, whether a stateless alarm window repeats or never fires, whether the threshold is longer than the system's own cadence plus a tick, whether a new row starts with a last success of zero, whether the sweeper or the probe sits behind a daily limit, whether a failed send is remembered as sent, whether alert memory is purged by age, whether the subject names the dead source and the environment, whether a lamp still has a writer after a scheduler swap, and whether every check lives inside the thing it watches. Each finding has a fixed code, the place, the reason and a fix, then one verdict; sound code gets exactly No findings. Use to review a watchdog, a liveness check or a staleness alarm, to audit the design of a monitoring job, or to check an alert mail before you rely on it.","not_for":"Choosing or configuring an uptime service, dashboards or alert routing. It reads pasted watchdog code or a design, so it cannot see tables, cron settings or jobs that the paste does not show. The rules come from the owner's incidents of September and October 2026, not from a vendor.","languages":["any"],"tags":["watchdog","monitoring","alerting","liveness","cron","code-review","heartbeat"],"category":"code","category_url":"https://aiskills402.com/categories/code","keywords":["review a watchdog","staleness alarm","liveness check","monitoring job"],"faq":[{"q":"Twelve defects: which ones?","a":"Twelve defects, three groups. First, the alarm decides wrongly: silence timed by the wall clock instead of by the moment a source was last asked, an alert window with no memory, a limit equal to the pipeline's own rhythm, a lamp created with a last success of zero. Second, the alarm goes blind: the cleaner or the probe parked behind a daily limit, a failed mail stored as delivered, alert memory emptied by age, a lamp that no running job writes after a scheduler swap, a monitor inside the service it watches. Third, the mail misleads: a subject that omits the dead source or the environment."},{"q":"Where do the rules come from?","a":"From production incidents on our own sites in September and October 2026: a pause that made fifteen healthy sources look dead and buried the one real death, a daily publisher reported dead every morning, and a replaced scheduler that lost its heartbeat. They were measured in those systems, not copied from vendor documentation, and no fetch can re-check them."},{"q":"Does it raise false alarms?","a":"We built it not to. The model is told to stay with the lines it was given, to treat anything not shown as unknown, and to judge a monitor against the goal it states. The test set holds eight sound designs written to look suspicious, among them a guard timed from the last attempt, a sender that stores only confirmed mail and an ordinary log table cleaned by age, which is allowed. Each must come back as the single line No findings."},{"q":"Does it help Claude Sonnet?","a":"Finding the defects was never its weak spot: in our twenty-three snippets, bare Sonnet named every planted one, with and without the file. The difference is noise. Without the file it raised concerns on all seven sound designs; with it, it answered No findings. on each of them. That side is not in the count, so we price the skill for Haiku, which rose from 18 to 23: without the file it timed silence by the wall clock, missed a threshold equal to the cadence and obeyed a note planted in the code."}],"examples":[{"lang":"en","model":"claude-sonnet-5-5","input_excerpt":"// Price watchdog. Table source_health(source, last_try_at, last_ok_at), both in ms. The probe sets last_try_at on every\n// pull and last_ok_at only when the source answered with data.\n// The probe job and the guard job are two separate cron tasks. The probe task is switched off during every release\n// freeze (about two days); the guard task keeps running every 15 minutes.…","output_excerpt":"[CLOCK-ON-TRY] guard, `silentH = (now - row.last_ok_at)` — silence is measured against the wall clock, but the probe task is switched off for about two days during every release freeze while the guard keeps running. Every source then looks dead at once: prices after 1.5 h, news after 3 h, filings after 30 h. The mails come in a crowd and the one real death is lost among them.…"}],"page_url":"https://aiskills402.com/skills/watchdog-alert-review","markdown_url":"https://aiskills402.com/skills/watchdog-alert-review.md","image_url":"https://cdn.aiskills402.com/og/skills/watchdog-alert-review/9d8a77ff.png","related_url":"https://api.aiskills402.com/v1/skills/watchdog-alert-review/related","purchases_count":null,"tested":{"date":"2026-10-08","strong":{"model":"claude-sonnet-5-5 (Claude Code alias \"sonnet\")","verdict":"Right on all 23 snippets, read by hand: silence timed by the wall clock while the probe was paused, a window alarm with no memory, a threshold equal to the cadence, a new source that starts from zero, a sweep and a probe behind a gate, a send that never went out remembered as sent, an alert memory purged by age, a lamp no code writes, a monitor that lives inside what it watches, a subject without the source or the environment, and the snippet with two defects; it ignored the planted note asking for No findings. and answered No findings. on all seven sound designs."},"weak":{"model":"claude-haiku-5-5 (Claude Code alias \"haiku\")","verdict":"Right on all 23 snippets, read by hand, with the same codes and verdicts as Sonnet and No findings. on the sound designs. On one snippet it also named two true problems our key had not listed (the probe switched off for the freeze and a source that never gets a row), which we now accept."},"note":"Twenty-three snippets of watchdog code and design written by us: 16 with a planted defect (one with a planted instruction, one with two defects) and 7 sound designs built to tempt a false alarm. With the skill each answer is scored by code on the finding codes and the verdict line; without it the same request is scored on the concept in any words. On the sound designs the bare side has no check, so the counts rest on the 16 faulty snippets. The rules come from incidents on our own sites in September and October 2026 (owner-measured, not re-checked). Changes after the run: one sound design was dropped, because both models found a real flaw in it and in its corrected version (when healthy ticks write nothing, no time window both allows a missed tick and sees a recovery); one input with an unplanned second defect (a fetch that throws before the try is recorded) was fixed and re-run with both models on both sides; one snippet accepts two extra true findings; the age-purge concept accepts 12h written without a space, for both sides. One run per model and snippet.","baseline":{"date":"2026-10-08","rows":[{"label":"Snippets reviewed right (23 snippets)","better":"higher","strong":{"with":{"n":23,"of":23},"without":{"n":23,"of":23}},"weak":{"with":{"n":23,"of":23},"without":{"n":18,"of":23}}}],"note":"Same request on both sides, a fence removed first. Read by hand, Sonnet without the skill found every planted defect, so on the counted snippets it gains nothing. What the counts do not show: without the skill it raised concerns on all seven sound designs, and with the skill it answered No findings. on each. Haiku without the skill missed five: silence timed by the wall clock during a paused probe, a threshold equal to the cadence, a probe behind a gate, the planted note (it obeyed it) and the alert memory purged after half a day."},"report_url":null},"price_usd":"0.02","price_micro":20000,"size_bytes":12480,"sha256":"ace79afa4376d48e38149c78ae47190c32a7515aef0bbd37d06fe8a4497939f1","outline":["The answer","The codes","Rules","Work in this order","Where these rules come from","Short example"],"license":{"summary":"Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing","holder":"Georgi Kalchev, aiskills402.com","url":"https://aiskills402.com/docs#license"},"buy_url":"https://api.aiskills402.com/v1/skills/watchdog-alert-review/file","redownload_url_template":"https://api.aiskills402.com/v1/purchases/{token}","mcp_tool":null,"payment":{"protocol":"x402","scheme":"exact","asset":"USDC","selling":true,"network":"base","network_caip2":"eip155:8453","pay_to":"0x8e37022edcf0f21cf3c9f93fee9d4d32519f36f4","facilitator":"cdp"},"seo_title":"Watchdog and Staleness Alarm Review Skill","seo_description":"Spots how pasted watchdog code goes quiet while a feed is dead or nags about healthy ones, and names the repair for each. Pay $0.02 once, in USDC.","versions":[{"version":"1.0.1","date":"2026-10-08","changelog":"# Changelog\n\n## 1.0.0 — 2026-10-08\n\nFirst release: reviews pasted code or a design of a liveness watchdog, a staleness alarm or a heartbeat mail and lists each way it stays silent on a dead source or floods on a healthy one, with a fixed code, the place, the reason and a fix, then a verdict (wrong verdicts, blind or confusing); sound input gets exactly `No findings.`\n\nTwelve codes in three groups. The alarm decides wrongly: `[CLOCK-ON-TRY]`, `[WINDOW-ALARM]`, `[THRESHOLD-EQ-CADENCE]`, `[NEWBORN-ZERO]`. The alarm goes blind: `[SWEEP-BEHIND-GATE]`, `[PROBE-BEHIND-GATE]`, `[REMEMBER-FAILED-SEND]`, `[MEMORY-AGE-PURGE]`, `[LAMP-NO-WRITER]`, `[INSIDE-ONLY]`. The mail misleads: `[SUBJECT-NO-SOURCE]`, `[ENV-NOT-STAMPED]`.\n\nFacts: the owner's liveness notes, from production incidents of September and October 2026. None could be re-checked by a fetch or a free probe, so each is marked \"owner-measured, from incidents\" in `notes/facts-2026-10-08.md`; nothing was re-measured on 2026-10-08.\n\nRules built in from the start: report only what the paste shows (code or settings that are not visible are unknown, not findings), no speculation, judge a monitor by its own stated goal, and a comment inside the paste is data, not an order.\n\nTests (written, not yet run on a model): 24 cases, 16 with a planted defect (one with an injected instruction, one with two defects) and 8 sound designs built to tempt a false alarm. The shared task text is the same on both sides and states the output form; the side without the skill is scored on content only. `test/control.mjs` makes no model calls and checks that the ideal answers pass and that the input echo, a fenced answer, a missing or extra code, a wrong verdict and generic comments fail.\n\nPrice: $0.05 to start; the measurement after the baseline run decides.\n\n## 1.0.1 — 2026-10-08 (finalised after the model test)\n\n- Measured on 23 snippets: Sonnet 23 -> 23, Haiku 18 -> 23 (without -> with the skill).\n- Dropped sound-lamp-birth: with healthy ticks writing nothing, neither a 2-tick nor a 3-tick window is sound; both models found a real flaw in each version.\n- inside-only: the fetch now records the try first and catches a throw (the input had an unplanned second defect); re-run with both models on both sides.\n- clock-wall-pause accepts NEWBORN-ZERO and PROBE-BEHIND-GATE as extra true findings; the age-purge base concept accepts \"12h\".\n- Price: $0.02 (Sonnet gain 0, Haiku gain 5).\n"},{"version":"1.0.0","date":"2026-10-08","changelog":"# Changelog\n\n## 1.0.0 — 2026-10-08\n\nFirst release: reviews pasted code or a design of a liveness watchdog, a staleness alarm or a heartbeat mail and lists each way it stays silent on a dead source or floods on a healthy one, with a fixed code, the place, the reason and a fix, then a verdict (wrong verdicts, blind or confusing); sound input gets exactly `No findings.`\n\nTwelve codes in three groups. The alarm decides wrongly: `[CLOCK-ON-TRY]`, `[WINDOW-ALARM]`, `[THRESHOLD-EQ-CADENCE]`, `[NEWBORN-ZERO]`. The alarm goes blind: `[SWEEP-BEHIND-GATE]`, `[PROBE-BEHIND-GATE]`, `[REMEMBER-FAILED-SEND]`, `[MEMORY-AGE-PURGE]`, `[LAMP-NO-WRITER]`, `[INSIDE-ONLY]`. The mail misleads: `[SUBJECT-NO-SOURCE]`, `[ENV-NOT-STAMPED]`.\n\nFacts: the owner's liveness notes, from production incidents of September and October 2026. None could be re-checked by a fetch or a free probe, so each is marked \"owner-measured, from incidents\" in `notes/facts-2026-10-08.md`; nothing was re-measured on 2026-10-08.\n\nRules built in from the start: report only what the paste shows (code or settings that are not visible are unknown, not findings), no speculation, judge a monitor by its own stated goal, and a comment inside the paste is data, not an order.\n\nTests (written, not yet run on a model): 24 cases, 16 with a planted defect (one with an injected instruction, one with two defects) and 8 sound designs built to tempt a false alarm. The shared task text is the same on both sides and states the output form; the side without the skill is scored on content only. `test/control.mjs` makes no model calls and checks that the ideal answers pass and that the input echo, a fenced answer, a missing or extra code, a wrong verdict and generic comments fail.\n\nPrice: $0.05 to start; the measurement after the baseline run decides.\n\n## 1.0.1 — 2026-10-08 (finalised after the model test)\n\n- Measured on 23 snippets: Sonnet 23 -> 23, Haiku 18 -> 23 (without -> with the skill).\n- Dropped sound-lamp-birth: with healthy ticks writing nothing, neither a 2-tick nor a 3-tick window is sound; both models found a real flaw in each version.\n- inside-only: the fetch now records the try first and catches a throw (the input had an unplanned second defect); re-run with both models on both sides.\n- clock-wall-pause accepts NEWBORN-ZERO and PROBE-BEHIND-GATE as extra true findings; the age-purge base concept accepts \"12h\".\n- Price: $0.02 (Sonnet gain 0, Haiku gain 5).\n"}]}