<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: nebulakes</title>
    <description>The latest articles on DEV Community by nebulakes (@nebulakes-prog).</description>
    <link>https://dev.to/nebulakes-prog</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4025649%2F433cdc3d-a46f-44c3-aa74-5670542c1c48.jpg</url>
      <title>DEV Community: nebulakes</title>
      <link>https://dev.to/nebulakes-prog</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nebulakes-prog"/>
    <language>en</language>
    <item>
      <title>My Wise Buddy and I #2: Deciding Less, Twice</title>
      <dc:creator>nebulakes</dc:creator>
      <pubDate>Sun, 02 Aug 2026 21:59:14 +0000</pubDate>
      <link>https://dev.to/nebulakes-prog/my-wise-buddy-and-i-2-deciding-less-twice-42pl</link>
      <guid>https://dev.to/nebulakes-prog/my-wise-buddy-and-i-2-deciding-less-twice-42pl</guid>
      <description>&lt;h1&gt;
  
  
  My Wise Buddy and I #2: Deciding Less, Twice
&lt;/h1&gt;

&lt;p&gt;I have an ordinary office job in the food industry — mostly planning work, no engineering — and I build this AI project in the hours around it. I watched AI from the stands for three years and only opened a terminal for the first time this year. This is the week I found out that my main contribution to my own project had quietly become: being the bottleneck.&lt;/p&gt;

&lt;h2&gt;
  
  
  The sentence I had been reading wrong
&lt;/h2&gt;

&lt;p&gt;"The human is the bottleneck." I'd read that line many times and, honestly, took it as a complaint shaped like a compliment. &lt;em&gt;Look how much depends on me.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Then I looked at where my hours actually went. Reading long AI answers closely. Then either approving something I didn't fully understand, or asking a follow-up question that produced another long answer to read closely. I wasn't steering anything. I was proofreading.&lt;/p&gt;

&lt;p&gt;The thing that clicked: &lt;strong&gt;"the human is the bottleneck" is a diagnosis, not a prescription.&lt;/strong&gt; Removing myself isn't the fix, and neither is reading faster. The fix is to split decisions into two piles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pile 1 — only I can answer this.&lt;/strong&gt; What problem are we solving. What is the goal. What counts as success, and how do we verify it. Who reviews. Where is the irreversible boundary — the thing that must never happen without me. These deserve dense, slow conversation, and they deserve it early.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pile 2 — everything derived from pile 1.&lt;/strong&gt; Usually in a domain I don't know, and usually with no meaningful effect on the outcome. The AI decides, proceeds, and records what it decided.&lt;/p&gt;

&lt;p&gt;Naming the two piles took ten minutes. The hard part is that the border between them drifts — always toward pile 1, because asking me &lt;em&gt;feels&lt;/em&gt; safe to the model and &lt;em&gt;feels&lt;/em&gt; like control to me. So the border needed its own supervision. Two reviewers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;An autonomy gate.&lt;/strong&gt; Given the plan as it stands right now, is it safe to run without a human in the loop? Pass, and the autonomous stretch begins.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A conversation-depth check.&lt;/strong&gt; In the conversation stretch, is the AI asking me things it could have decided itself, or looked up in a file? Is it escalating detail that doesn't need me?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I turned this into a global rule the same day. Its shape:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Two axes&lt;/strong&gt; for every decision point: &lt;em&gt;risk&lt;/em&gt; (if this is wrong, is the final effect irreversible?) and &lt;em&gt;authority/information&lt;/em&gt; (does this need something only I know, or something only I can authorize?).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Four routes&lt;/strong&gt; out of that judgment: AI decides / verify against source material / ask the human / safe stop. The fourth is the one I keep forgetting exists — low confidence plus high impact means stop and report, not guess and proceed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two phases&lt;/strong&gt;: an agreement phase, then an autonomous phase, with the gate between them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A calibration loop&lt;/strong&gt;, which is the part I'm least likely to have gotten right on my own, because it doesn't trust my judgment about my judgment. The border isn't set by feel; it's moved by two measured rates. &lt;em&gt;Autonomous-reversal rate&lt;/em&gt;: how often I overturn decisions the AI made alone — high means pull that area back into conversation. &lt;em&gt;Unnecessary-question rate&lt;/em&gt;: how often it asked me something it could have resolved — high means push that area toward autonomy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A second idea fell out of the same morning: &lt;strong&gt;three notes per project.&lt;/strong&gt; A fact note (what is true, with sources). A decision note (why we chose this, and — the field that matters — &lt;em&gt;who decided&lt;/em&gt;: me, or the AI alone, plus a later verdict: held, overturned, discarded). A prompt note (the history of the conversation). Counting "decisions the AI made" tells you nothing useful. &lt;em&gt;Decisions the AI made × later overturned&lt;/em&gt; gives you a concrete signal about where to review or narrow autonomy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then I built the whole thing twice
&lt;/h2&gt;

&lt;p&gt;Here's the uncomfortable part. That rule was written by the session I'd been working in all morning — the one that had watched every mess that produced the idea. Which is precisely the session you should not let grade its own homework.&lt;/p&gt;

&lt;p&gt;So that afternoon I handed the same prompt to a fresh top-tier session with no context at all. Clean room. Then I put the two versions side by side and merged them.&lt;/p&gt;

&lt;p&gt;I expected one to win. Instead, reading both, &lt;strong&gt;what I found split by layer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In this comparison, the context-holding session was stronger on the core.&lt;/strong&gt; The precision of the gate's pass conditions. The data model — including that decision-maker taxonomy. The hygiene rules about what not to copy where. It reads like it was written by someone who had been burned in specific places, because it was.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The clean-room version added instrumentation, enforcement, and automation&lt;/strong&gt; — four things the other version simply didn't have. A written contract that makes each gate judgment auditable as a document diff. The quantitative calibration loop (those two rates). A JSONL export turning the decision log into training material. A reminder hook that fires &lt;em&gt;right before&lt;/em&gt; the AI asks me a question.&lt;/p&gt;

&lt;p&gt;Look at that list again. The clean room built the machinery that measures whether the rule works. The session that invented the rule couldn't see that gap — it &lt;em&gt;was&lt;/em&gt; the rule. Skin in the game buys precision and charges you perspective.&lt;/p&gt;

&lt;p&gt;Final version: the context session's core, plus the clean room's instrumentation layer.&lt;/p&gt;

&lt;p&gt;If you'd rather read the thing than my description of it, the merged pack is public: &lt;strong&gt;&lt;a href="https://github.com/nebulakes-prog/BehindTheBuild" rel="noopener noreferrer"&gt;BehindTheBuild&lt;/a&gt;&lt;/strong&gt; — the two rules, the gate checklist, the contract template, the reminder hook, and &lt;code&gt;appendix/COMPARISON.md&lt;/code&gt;, which is the actual scorecard between the two versions. Fair warning: I work in Korean, so the pack documents are Korean; the README summarizes each piece in English.&lt;/p&gt;

&lt;h2&gt;
  
  
  Was doing it twice a waste?
&lt;/h2&gt;

&lt;p&gt;Cost: the same work twice, two contexts, one afternoon. Return: a hypothesis about which layer to trust from which condition — one I can now test on the next rule instead of guessing. So it's a working rule of thumb, not a law:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Draft the &lt;strong&gt;core&lt;/strong&gt; in the session that lived through the problem.&lt;/li&gt;
&lt;li&gt;Draft the &lt;strong&gt;measurement and enforcement&lt;/strong&gt; in a session that has never seen it.&lt;/li&gt;
&lt;li&gt;Merge them. Don't pick one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this is a new idea. Separating the author from the reviewer is something every team already knows. What surprised me is that it applies to the &lt;em&gt;tool&lt;/em&gt;, not just to people. I had assumed more context is strictly better. It isn't. Context is a lens — sharper in the middle, curved at the edges.&lt;/p&gt;

&lt;p&gt;And the joke writes itself: I set out to make fewer decisions, and the immediate cost was two extra decisions about how to make fewer decisions. I'd take that trade again.&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>ai</category>
      <category>agents</category>
    </item>
    <item>
      <title>My Wise Buddy and I #1: Confessions of a Link Hoarder</title>
      <dc:creator>nebulakes</dc:creator>
      <pubDate>Sun, 02 Aug 2026 13:58:44 +0000</pubDate>
      <link>https://dev.to/nebulakes-prog/my-wise-buddy-and-i-1-confessions-of-a-link-hoarder-4op5</link>
      <guid>https://dev.to/nebulakes-prog/my-wise-buddy-and-i-1-confessions-of-a-link-hoarder-4op5</guid>
      <description>&lt;h1&gt;
  
  
  My Wise Buddy and I #1: Confessions of a Link Hoarder
&lt;/h1&gt;

&lt;p&gt;I'm an ordinary office worker in a decidedly non-tech industry. Not a developer — I don't write software for a living, or as a hobby, or at all. My relationship with code has always been like my relationship with the gym: deep respect, zero attendance.&lt;/p&gt;

&lt;p&gt;But I've been quietly obsessed with AI since ChatGPT blew up in 2023. Not building anything — just &lt;em&gt;following&lt;/em&gt; it, with the devotion of a sports fan who has never once touched the ball. Newsletters on the commute, social feeds over lunch, YouTube explainers at night. Three years of watching, from the stands, a field that moves faster than anything I've ever seen.&lt;/p&gt;

&lt;p&gt;Then, this year, work gave me an unexpected reason to open a terminal: I got to try AI coding agents — Claude Code and Codex — on real tasks. That's when I discovered these tools have changed what someone like me can actually build. This was a dangerous discovery, and this series is about what I'm doing with it.&lt;/p&gt;

&lt;p&gt;It begins, as all honest projects should, with an embarrassing confession.&lt;/p&gt;

&lt;h2&gt;
  
  
  The write-only archive
&lt;/h2&gt;

&lt;p&gt;For years, my entire "knowledge system" has been a single Telegram chat. Just me, forwarding links to myself. A private museum of everything I ever meant to learn.&lt;/p&gt;

&lt;p&gt;Every useful thing I found — a YouTube video on agent architectures, a prompt technique, a benchmark screenshot, an article on some new model — went into that one chat. Thousands of messages by now.&lt;/p&gt;

&lt;p&gt;Number of times I went back and &lt;em&gt;used&lt;/em&gt; any of it: approximately zero. The museum has no visitors. Including the owner.&lt;/p&gt;

&lt;p&gt;You probably have a version of this. A bookmarks folder you never open. A watch-later list measured in days of runtime. A notes app with one giant note called "misc." Saving &lt;em&gt;feels&lt;/em&gt; productive — every save prints a tiny receipt that says "I'm learning" — but nothing compounds. Information goes in; nothing comes back out.&lt;/p&gt;

&lt;p&gt;I call it a write-only archive. And the failure isn't the collecting — collecting is easy, fun, and frankly I'm excellent at it. The failure is that collecting was the &lt;em&gt;only&lt;/em&gt; step that ever ran.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed
&lt;/h2&gt;

&lt;p&gt;The honest answer: capability, not motivation. Motivation was never the bottleneck — mine has been running at 100% for three years. It just spent all that energy collecting more links.&lt;/p&gt;

&lt;p&gt;I always knew the fix in theory — organize the saves, distill them into notes, connect the notes, review them. Every productivity guru says the same thing. But as a manual process, on top of a full-time job, it's a diet plan: correct in every detail, and abandoned within two weeks.&lt;/p&gt;

&lt;p&gt;Working with Claude Code and Codex showed me a different shape for the problem. These agents can read files, write files, run scripts, and follow written rules — reliably enough to matter. Which means the boring parts of a knowledge system (filing, formatting, summarizing, cross-linking) don't have to be &lt;em&gt;my&lt;/em&gt; habits anymore. They can be &lt;em&gt;someone's job&lt;/em&gt;. The someone doesn't have to be human — which is lucky, because the only human available has a well-documented track record.&lt;/p&gt;

&lt;p&gt;So the project is not "become more disciplined." Three years of evidence says how that one ends. The project is: &lt;strong&gt;build a system where AI agents run the pipeline, and I only do the parts that need my judgment.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Meet WIBBY
&lt;/h2&gt;

&lt;p&gt;I named it WIBBY — short for &lt;strong&gt;Wise Buddy&lt;/strong&gt;. Yes, I gave it a name. If you're going to talk to a thing every day, it deserves one — and it changes the relationship: WIBBY isn't software I &lt;em&gt;use&lt;/em&gt;, it's a colleague I &lt;em&gt;delegate to&lt;/em&gt;. A colleague who works nights, never sighs, and has seen the state of my Telegram chat and stayed anyway.&lt;/p&gt;

&lt;p&gt;WIBBY is not an app I'm going to sell. It's a personal knowledge operation with three components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plain markdown files&lt;/strong&gt; as the single source of truth — an Obsidian vault, organized so both a human and an AI can navigate it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI agents&lt;/strong&gt; that operate the pipeline — capture, file, distill, connect, resurface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Me&lt;/strong&gt; as the audit layer — the agents draft, I spot-check samples and decide what ships&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pipeline WIBBY needs to run, sketched at the altitude I understand it today:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stage&lt;/th&gt;
&lt;th&gt;What happens&lt;/th&gt;
&lt;th&gt;Who does it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Capture&lt;/td&gt;
&lt;td&gt;Saves land in one inbox (yes, Telegram stays — it's where my habit already lives)&lt;/td&gt;
&lt;td&gt;Bot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Organize&lt;/td&gt;
&lt;td&gt;Each item gets filed into the vault with metadata&lt;/td&gt;
&lt;td&gt;Agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Distill&lt;/td&gt;
&lt;td&gt;Long raw saves become short atomic notes in my own words&lt;/td&gt;
&lt;td&gt;Agent saves a draft; I spot-check samples afterward&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Connect&lt;/td&gt;
&lt;td&gt;New notes get linked to related existing notes&lt;/td&gt;
&lt;td&gt;Agent proposes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Surface&lt;/td&gt;
&lt;td&gt;The system brings things &lt;em&gt;back&lt;/em&gt; — briefings, resurfaced ideas&lt;/td&gt;
&lt;td&gt;Agent&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last row is the whole point. A knowledge system that never brings anything back is just a write-only archive with nicer furniture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three rules I'm starting with
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Files over apps.&lt;/strong&gt; Everything lives in plain markdown on my disk. AI agents are shockingly good at grepping and editing text files, and no vendor can take the vault away from me. Apps come and go; a folder of &lt;code&gt;.md&lt;/code&gt; files has no opinion about anyone's business model.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI operates, human approves.&lt;/strong&gt; I don't want to &lt;em&gt;do&lt;/em&gt; the filing, but I also don't want an AI quietly rewriting my notes while I sleep. The default split: agents handle mechanical steps autonomously, and anything that changes meaning lands as a draft that I audit — a random sample every week, not every note. Trust, but verify — especially when the thing you're trusting types faster than you read.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It must survive neglect.&lt;/strong&gt; I have a job. Some weeks I'll have zero spare hours, and the system has to keep running — or at least fail loudly — without me. This rule has already earned its place: after a reboot, a Windows Task Scheduler default silently kept part of this stack from coming back, and I only noticed by accident. I wrote that postmortem &lt;a href="https://dev.to/nebulakes-prog/i-booted-my-laptop-after-six-days-away-and-windows-task-scheduler-silently-refused-to-revive-my-28ii"&gt;here&lt;/a&gt;. Nothing teaches you the value of "failing loudly" like a system that fails in perfect, dignified silence.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where this series is going
&lt;/h2&gt;

&lt;p&gt;The plan, loosely: get WIBBY working as a real assistant first — capture to surfacing, running daily on spare-time maintenance. Then push further. My long-shot ambition is to grow this from a personal assistant into something closer to a one-person AI operation — but that's a later chapter, and I'd rather show it than promise it. The internet already has enough grand plans from people whose main asset is a Telegram chat full of links.&lt;/p&gt;

&lt;p&gt;If you've ever hoarded knowledge you never used, follow along. This series is me finding out how far an ordinary office worker can get — with a wise buddy doing the heavy lifting.&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>ai</category>
      <category>productivity</category>
      <category>obsidian</category>
    </item>
    <item>
      <title>I booted my laptop after six days away — and Windows Task Scheduler silently refused to revive my AI agent</title>
      <dc:creator>nebulakes</dc:creator>
      <pubDate>Fri, 17 Jul 2026 02:36:59 +0000</pubDate>
      <link>https://dev.to/nebulakes-prog/i-booted-my-laptop-after-six-days-away-and-windows-task-scheduler-silently-refused-to-revive-my-28ii</link>
      <guid>https://dev.to/nebulakes-prog/i-booted-my-laptop-after-six-days-away-and-windows-task-scheduler-silently-refused-to-revive-my-28ii</guid>
      <description>&lt;h1&gt;
  
  
  I booted my laptop after six days away — and Windows Task Scheduler silently refused to revive my AI agent
&lt;/h1&gt;

&lt;p&gt;I run a small personal automation stack on a Windows laptop: a Telegram gateway that captures notes into my knowledge base (the "AI agent" of the title), a nightly batch job, a morning briefing job, and a handful of maintenance tasks. All of them are registered in Windows Task Scheduler.&lt;/p&gt;

&lt;p&gt;Work kept me away from this laptop for six days — it sat powered off the whole time. When I finally booted it, I expected the stack to come back up on its own. Instead, the capture bot stayed silent. No crash dump, no error notification, nothing in my own logs. The service hadn't failed — it had simply &lt;strong&gt;never been started&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The investigation
&lt;/h2&gt;

&lt;p&gt;Task Scheduler's history showed the launch attempts ending with result code &lt;code&gt;0x800710E0&lt;/code&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The operator or administrator has refused the request.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That message is spectacularly unhelpful. Nobody had refused anything — I'm the only operator, and I never touched those tasks. It's also a generic code (&lt;code&gt;ERROR_REQUEST_REFUSED&lt;/code&gt;), so it doesn't point at any specific condition by itself.&lt;/p&gt;

&lt;p&gt;In my case, comparing the task's power conditions against the laptop's battery state gave the answer: &lt;strong&gt;the task's own conditions were refusing the launch&lt;/strong&gt;. And the condition responsible was one I had never consciously set.&lt;/p&gt;

&lt;h2&gt;
  
  
  The root cause: two defaults nobody reads
&lt;/h2&gt;

&lt;p&gt;When you register a scheduled task — whether through the GUI or PowerShell's &lt;code&gt;Register-ScheduledTask&lt;/code&gt; — two settings default to the conservative option:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setting&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Effect&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;DisallowStartIfOnBatteries&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;True&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Task will not &lt;strong&gt;start&lt;/strong&gt; while on battery power&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;StopIfGoingOnBatteries&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;True&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Running task is &lt;strong&gt;killed&lt;/strong&gt; when AC power is unplugged&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These defaults make sense for the original use case: heavy maintenance jobs on office PCs, where you don't want a defrag draining someone's battery.&lt;/p&gt;

&lt;p&gt;They make no sense for a laptop that hosts resident services. When I booted mine, it was running on battery — as a laptop usually is when you open it away from a desk. Every scheduled launch was being refused, and no amount of waiting would have changed that: a task whose start condition is never met stays dead indefinitely. Eight of my tasks were in this state — the gateway, the nightly batch, the morning briefing, all of them.&lt;/p&gt;

&lt;p&gt;The worst property of this failure mode is the &lt;strong&gt;silence&lt;/strong&gt;. Your own application logs show nothing, because your application never ran. Unless you routinely open Task Scheduler's history pane (who does?), the first signal is a user noticing that something has been dead for days.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix
&lt;/h2&gt;

&lt;p&gt;Change the two properties on the &lt;em&gt;existing&lt;/em&gt; settings object and save it back:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$task&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Get-ScheduledTask&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-TaskName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"my-resident-service"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nv"&gt;$task&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Settings&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;DisallowStartIfOnBatteries&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nv"&gt;$task&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Settings&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;StopIfGoingOnBatteries&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Set-ScheduledTask&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-InputObject&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$task&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A tempting shortcut — building a fresh settings object with &lt;code&gt;New-ScheduledTaskSettingsSet&lt;/code&gt; and passing it to &lt;code&gt;Set-ScheduledTask -Settings&lt;/code&gt; — is a trap of its own: it replaces the task's &lt;strong&gt;entire&lt;/strong&gt; settings block, silently resetting anything else you had configured (restart policy, execution time limit, &lt;code&gt;StartWhenAvailable&lt;/code&gt;, …) back to defaults. Patch the existing object instead.&lt;/p&gt;

&lt;p&gt;Note the awkward naming: the properties are &lt;em&gt;negative&lt;/em&gt; (&lt;code&gt;DisallowStartIfOnBatteries&lt;/code&gt;), so the fix sets them to &lt;code&gt;$false&lt;/code&gt;. Double negatives are a great way to misread an audit, so verify after applying:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Get-ScheduledTask&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-TaskName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"my-resident-service"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Settings&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;Select-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;DisallowStartIfOnBatteries&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;StopIfGoingOnBatteries&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c"&gt;# Both should now be False&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I applied this to all eight tasks. The next morning, the overnight batch and the morning briefing both ran with exit code 0 — on battery.&lt;/p&gt;

&lt;p&gt;One honest caveat: these flags remove the &lt;em&gt;task-level&lt;/em&gt; power gate. Windows Battery Saver and idle conditions can still defer some scheduled work, so "flags cleared" is necessary but not a blanket guarantee.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons for anyone running resident services on a laptop
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Registration-time checklist, not memory.&lt;/strong&gt; Any task that must survive on a laptop needs the two battery flags cleared &lt;em&gt;at registration time&lt;/em&gt;. I added this to the checklist my automation follows whenever it registers a new task, because I will forget, and so will you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Silent failures need an independent heartbeat.&lt;/strong&gt; The service can't report its own absence. Something &lt;em&gt;outside&lt;/em&gt; the scheduled task should verify liveness — a check on the log file's last-modified time, a ping to a dead-man's-switch, anything that turns "dead indefinitely" into "noticed within a day."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scope your fix to the actual failure.&lt;/strong&gt; These two flags only control start/stop on battery. They do &lt;em&gt;not&lt;/em&gt; wake a sleeping machine — &lt;code&gt;-WakeToRun&lt;/code&gt; wakes the machine at trigger time, and &lt;code&gt;-StartWhenAvailable&lt;/code&gt; handles a missed trigger after it wakes; sleeping through a trigger is a different failure I haven't addressed yet. Knowing precisely what you fixed keeps you from false confidence.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;This is a mostly-Windows trap.&lt;/strong&gt; cron has no built-in power-source gate, and systemd doesn't apply one by default (a unit &lt;em&gt;can&lt;/em&gt; opt in via &lt;code&gt;ConditionACPower=&lt;/code&gt;). If you're porting automation habits from Linux to a Windows laptop, this class of failure won't be on your radar — it wasn't on mine.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To be fair about the damage: the six-day capture gap was my own doing — the laptop was off, and a backfill I'd built recovered the missed messages from the source. What the flags added was worse in kind: an outage that would have lasted &lt;em&gt;indefinitely&lt;/em&gt; after boot, with no error surfaced anywhere, on a machine I believed had come back to life. Diagnosis took about an hour; the fix took two minutes. That ratio — a silent, open-ended failure versus minutes of prevention — is exactly why default settings deserve a place in your threat model.&lt;/p&gt;

</description>
      <category>windows</category>
      <category>automation</category>
      <category>devops</category>
      <category>debugging</category>
    </item>
  </channel>
</rss>
