Build1 distinct publisher3 min readUpdated
A shell script that copies Claude Code logs into Obsidian needed sleep prevention, redundant firings and step markers before it ran clean. The timeout numbers still do not add up.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
The number worth staring at in the 2026-06-13 log is not the failure, it is the arithmetic. Every slot recorded the same pair of lines, a 04:55:00 start and a step2 timeout at 05:40:01 [7], which is 45 minutes and one second of wall clock [1] against a limit the writeup calls 40 minutes [6]. The pipeline listing, meanwhile, gives step2a a 1500-second timeout and step2b another 1500 [8], and 1500 seconds is 25 minutes, so the two digest stages between them are allowed 50 [3]. Three numbers for one limit. Whoever reads that log over coffee cannot say which stage died or how close it came, and that gap is the difference between tuning a timeout and guessing at one.
The failure also fed itself. The batch that blew the window was 28 hours of logs [6], four hours more than a day's worth [4], which means the queue was already carrying material some earlier run had not cleared. A retry slot then presents a larger job to the same ceiling. That is why the day failed uniformly rather than intermittently [5]. Re-firing is a remedy for interruption, and a job that is too big is not interrupted.
Sleep has the same shape seen from the other side. `caffeinate -s` holds only on AC power [3], so that layer is conditional on a fact about the room rather than about the script, and the extra slots exist to catch the mornings when the condition did not hold. Of the three remedies listed [9], only the step markers are unconditional. Markers are not exclusion, though. They record what has already been done, which makes a resumed run safe, but they do not make two processes take turns at one Git worktree. The 2026-06-10 conflict was a scheduled firing meeting a human at the keyboard [4], and the published remedy list contains no lock file or pid check [10].
A calendar trigger promises exactly one thing: that something starts at 04:55 [2]. That the run is alone, and that it ends, are properties the script has to supply itself, because launchd will happily start a second copy on top of the first and will wait forever on a subprocess that has stopped returning.
None of the three fixes is clever, and the author is straightforward that none of them came from a design document [15]. That is the case for writing them first rather than last. Redundant slots, a marker file, an explicit and logged timeout: each is small enough to have been in version one of any scheduled job, and the only reason they were not is that nothing had broken yet.
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.
The job was set up as simply 'running a script at 4:55 every day', scheduled by launchd, and produced three distinct kinds of failure once actually run.
The three real failures forced a triple-layered structure: multi-slot re-firing, caffeinate sleep prevention, and idempotent retry via step markers.
A nightly shell script on the author's Mac drains that day's Claude Code conversation logs into an Obsidian vault, commits them to a private repo, and leaves a briefing on the desktop.
The author states the design did not come out of a design document; it accumulated from things that actually broke.
The remedy list published in the writeup does not include a lock file, pid check or other mutual-exclusion mechanism.
When Claude reads hot.md and wiki/ in the next conversation it starts already knowing last week's decisions, the approach that failed once, and the current state of the three projects running in parallel.
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.
Concrete artifacts, single self-reported source, internal contradiction
The account publishes checkable artifacts — a launchd plist excerpt with four slots, the done-marker shell guard, a four-layer pipeline listing with per-stage timeouts, and quoted log lines with dated incidents — which is more than assertion. But everything rests on one author's first-person post with no independent replication, no before/after reliability metrics, and no full script; and the timeout figures inside the article disagree with each other, which caps how far the technical detail can be trusted.
One personal machine, no external uptake
The only disclosed usage is the author's own Mac. Dated changes and incidents show the pipeline genuinely runs in production for that one user, but there is no evidence of any other user, team, repository consumer, install count, or third-party reuse of the pattern.
Framing outruns the published fixes
Positive gap: the title and dek claim a drain that survives sleep, races and timeouts, and the article says it was made reliable, yet the published remedy set has no mutual-exclusion primitive for the race it reports, the timeout budget is stated three inconsistent ways, and no post-fix success record is offered. The gap is moderate rather than severe because the failures themselves are dated, specific, and candidly reported.
Personal-audience incentive, no disclosed commercial stake
The author is writing about their own workflow on a developer community platform, so there is a reputational and audience incentive to present the system as working and the narrative as clean — which plausibly explains the unreconciled timeout figures and the absent post-fix metrics. Offsetting that, no vendor relationship, sponsorship, product for sale, or funding interest is disclosed or implied; the tooling praised (Claude Code, Obsidian, Git, launchd) is not the author's own.
Mechanics credible, outcomes unverified
Moderate confidence. The mechanics — launchd slots, sleep behavior of caffeinate -s, Git contention between overlapping runs, and long agent digests overrunning a wall-clock timeout — are internally consistent with the artifacts shown and are plausible on their face. Confidence is held down by single-source dependence, the unresolved timeout arithmetic, absence of any post-fix reliability evidence, and adoption limited to one machine.
build
26 launchd jobs, one log directory: how scheduled automation rots quietly1 distinct publisher
build
Your reviewing model is reading the diff when it should be reading the session1 distinct publisher
build
Exit 0 is not a health check: three weeks of macOS backups that copied nothing1 distinct publisher
build
41 queued tasks, zero ready to dispatch: the agent bottleneck was judgment1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 23, 2026