Build1 distinct publisher3 min readUpdated
A reader argued a static check only proves a declaration exists in source control. The canary that replaced it went red on its first manual run against production, and one failure was two days old.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
A static check that reads workflow files can only prove that a schedule is declared in source control, which is what a reader named Mads Hansen told Heinrich Neb after Neb shipped exactly that guard: any script whose own header claims a daily cadence must appear in a workflow file carrying a schedule [1][2]. Hansen's counter-proposal was a deployed canary on the real path, using the same identity, secrets and result sink as production; Neb built one, ran it by hand against production instead of waiting for its first scheduled run, and it went red immediately, then red again for a different reason [3][4][5].
The two failures were wrong permissions on the token and a missing notifier, and both took under a minute to find [6]. Neither is a declaration in a YAML file, so neither was visible to the guard that had just passed [1].
The missing notifier is the part worth borrowing, because the mechanism is ordinary. The probe keeps its history on a separate branch so the main branch does not collect one commit per data point: the step checks that branch out, appends a line, and pushes [7]. That branch contains exactly one file, so checking it out removes every other file from the working tree, including the notifier the next step calls [8]. On the day the step was written the branch did not exist, so the code took the other path, the one that creates an orphan branch and leaves the working tree alone, and the run was green [9]. The next morning the branch existed, the first path ran, the notifier was gone, the daily message stopped arriving, and the only trace was a red run nobody read [10]. That cost two days of silence, on a probe that had been running for weeks [11][5].
The general shape is a create-if-missing path: the first run takes one branch of the code and every later run takes the other, so the version that matters was never the version anyone reviewed [12]. A change that passes the day it ships and fails the day after is the hardest kind to catch, because the review, the test and the memory of it all come from day one [13]. Neb's fix is ordering, not cleverness: move the notification before the push, because a failed push must never be allowed to silence the message [14].
Two of his three checks are mechanical. Find scheduled workflows that also push with `grep -l 'schedule:' .github/workflows/*.yml | xargs grep -l 'git push'`, then read each hit by hand and ask whether any step after that push runs a script from the repo [15]. The third is the one no file can answer: `gh workflow run <name>.yml && gh run watch`, against production, and watch it [16]. Related failure class in the same post: a notifier called through plain curl, where curl exits 0 as soon as the request is made, including a 401 that delivered nothing [17]. Neb's new probe aborts when its API key is missing, before it touches the network, and exits non-zero rather than printing a tidy empty report, on the grounds that found nothing and never asked must not look the same [18].
What to watch on your own pipelines: whether the canary can actually go red. Neb's advice is to break it once on purpose, remove the token or point the notifier at a wrong channel, and confirm both that the run fails and that a human hears about it [19]. His older probe is sending its daily message again, and he knows that because he asked, not because a check told him [20].
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
Neb built a second daily probe and, on Hansen's advice, ran it once by hand against production instead of waiting for its first scheduled run.
The manual run went red immediately, then went red again for a different reason; the second failure was not in the new probe but in an older probe that had been running for weeks.
The two failures were wrong permissions on the token and then the missing notifier, and both took under a minute to find because they happened when Neb asked rather than at 07:00 on some later morning.
The probe writes its history to a separate branch so the main branch does not collect one commit per data point; the step checks that branch out, appends a line, and pushes.
That history branch contains exactly one file, so checking it out removes every other file from the working tree, including the notifier that the next step calls.
On the day the step was written the branch did not exist, so the code took the path that creates an orphan branch, which leaves the working tree alone, and the run was green.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Specific but wholly self-reported
The mechanism is described precisely enough to be checked by a reader — a single-file history branch whose checkout clears the working tree, an orphan-branch path taken only on the first run — and the remediation and failure modes are named concretely. But everything rests on one author's account in one publication, with no run logs, run IDs, repository links or third-party confirmation, and the reader critique that drives the story is paraphrased rather than linked.
One personal repository
Observed adoption is limited to the author's own repository: a static guard shipped days earlier and a canary probe now running on the production path. No other team, organisation, product or downstream user is reported to have applied the guard, the greps or the canary pattern.
Slightly overstated generalisation
The core claims are modest, scoped and self-limiting: the author concedes his guard was insufficient, names the unbuilt durable ledger, and frames the canary as proving only that the path works today. The mild overstatement is in the leap from one incident in one repository to universal prescriptions ('most teams cannot answer that', checks that work 'on any repository with GitHub Actions'), plus a closing promotional pitch for the author's own product attached to an incident narrative.
Author-owned product promotion
The publication is the author's own developer-blog post and ends with an explicit pitch for cachly, his commercial memory service for AI coding assistants, complete with free-tier call to action. The piece also drives traffic to his own prior post and its guard. These are content-marketing incentives that favour a dramatic, self-critical incident narrative; they do not by themselves undermine the technical account, which is checkable by readers.
Coherent single-source account
Internally consistent, mechanically plausible and unusually candid about its own limits, which supports moderate confidence in the narrow technical claims. Confidence is capped by the single publisher, the absence of any artefact or independent corroboration, the paraphrased reader input, and adoption confined to one author's repository.
build
Split Flutter CI from CD, or pay macOS rates on every pull request1 distinct publisher
build
A cleanup commit deleted the sanitizer. Five days later a scanner cashed it in.1 distinct publisher
build
Flat logs cannot explain an agent run, and adding more of them makes it worse1 distinct publisher
build
A Stripe SDK Major Bump Turned One Metadata Lookup Into a Silent Non-Delivery1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 15, 2026