CLAUDE LABJP
FABLE 5 — Claude Fable 5 is available again to users worldwide from July 1 after US export controls were liftedSCIENCE — Claude Science, a workbench for researchers, is in beta; the AI for Science credit program is open through July 15CODE — Claude Code adds dynamic workflows (research preview) and raises weekly usage limits by 50% through July 13MODEL — Claude Sonnet 5 is the default across all plans at $2/$10 per million tokens through August 31GATEWAY — A self-hosted Claude apps gateway arrives for Amazon Bedrock and Google Cloud (SSO, policy, cost control)SECURITY — A new cybersecurity classifier ships alongside the Fable 5 redeploymentFABLE 5 — Claude Fable 5 is available again to users worldwide from July 1 after US export controls were liftedSCIENCE — Claude Science, a workbench for researchers, is in beta; the AI for Science credit program is open through July 15CODE — Claude Code adds dynamic workflows (research preview) and raises weekly usage limits by 50% through July 13MODEL — Claude Sonnet 5 is the default across all plans at $2/$10 per million tokens through August 31GATEWAY — A self-hosted Claude apps gateway arrives for Amazon Bedrock and Google Cloud (SSO, policy, cost control)SECURITY — A new cybersecurity classifier ships alongside the Fable 5 redeployment
Articles/Cowork
Cowork/2026-07-05Advanced

The Two Weeks My Web Monitor Said Everything Was Fine — Field Notes on Catching Silent Misses

A competitor monitor built on Cowork and Claude in Chrome can keep reporting no changes while quietly missing them. Here is how I separated fetch success from extraction success and instrumented the silent failures, with the code I actually run.

cowork10claude-in-chrome4web-monitoringobservability15scheduled-tasks4selector-drift

Premium Article

The Two Weeks My Monitor Said Everything Was Fine

I had a task watching a competitor's pricing page. It crawled three times a day and reported any diff. For weeks the log read a calm row of "no changes," and I took that calm as proof that all was well.

Then one day I opened that competitor's page for an unrelated reason and my finger froze on the trackpad. A top-tier plan's price had moved. A new entry plan had appeared. My monitor had not noticed any of it for two weeks.

The monitor had not crashed. It started on schedule every time, fetched the page every time, and concluded "no changes" every time. It was reporting health while seeing nothing, and it had no idea.

These are the notes on how I traced those two silent weeks and what instrumentation I added so it would never happen again — with the code I actually run. As an indie developer running several sites myself, I am writing this for anyone doing competitor monitoring, price tracking, or change detection on Cowork who would rather not learn it the way I did.

Fetch Success and Extraction Success Are Not the Same Thing

The root cause was that my pipeline collapsed two entirely different outcomes into a single notion of "success."

The fetch succeeded: HTTP 200, real body text in hand. But the extraction — pulling prices out of that text — was failing silently. The competitor had rebuilt the page, and the class names wrapping the prices had changed. My extraction selector matched nothing and returned an empty string. Compare empty to empty, and of course you get "no changes."

StageWhat actually happenedHow the monitor read it
Page fetchSuccess (200, body present)Healthy
Element extractionFailed (selector miss, empty)Misread as healthy
Diff compareEmpty vs empty → zero diff"No changes"

Put plainly, the monitor was translating "could not read it" into "it did not change." Those two mean the opposite things. The first is a fault in the monitor; the second is the monitor working correctly. As long as they share a shelf, faults will forever walk past wearing the face of business as usual.

The first thing to fix was to carry a signal for whether extraction succeeded, entirely independent of the comparison.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
Separating fetch success from extraction success and measuring extraction liveness with content anchors
A coverage watcher that treats a too-quiet stretch of zero changes as its own weak alert
Structure fingerprinting to catch selector drift, cutting both false positives and silent misses
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Claude Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

Related Articles

Cowork2026-06-30
Trusting a Three-Day-Old Mirror: Stopping Unattended Tasks from Acting on a Stale Working Copy
A persistent clone reused for speed quietly drifts from the remote. Read 'has this article been fixed yet?' from an out-of-sync tree and your unattended task duplicates work or 'succeeds' against an old world. Here is a HEAD-match plus writability preflight, with a self-healing re-clone, in bash.
Cowork2026-06-27
Logged as success, but it produced nothing — stopping silent failures in Cowork scheduled tasks with end-of-run assertions
A Cowork scheduled task exits 0, yet not a single artifact was produced. Trusting the exit code alone hides this silent failure. Here is how to turn your definition of done into end-of-run assertions that fail loudly with an evidence log.
Cowork2026-05-15
git clone Fails in Cowork Scheduled Tasks — Diagnosing /tmp Permission Errors and Disk Space Issues
When git clone fails with Permission denied or No space left on device in Cowork automated tasks, the root cause is often /tmp directory ownership or disk exhaustion. Learn how to diagnose both and apply a $HOME fallback pattern for reliable automation.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →