<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Opsira Notes</title>
  <subtitle>Working notes on running automated operations</subtitle>
  <link href="https://opsira.io/feed.xml" rel="self"/>
  <link href="https://opsira.io/"/>
  <id>https://opsira.io/</id>
  <updated>2026-09-19T07:51:34Z</updated>
  <entry>
    <title>A rate limited crawl will invent problems that do not exist</title>
    <link href="https://opsira.io/notes/rate-limited-crawls-invent-audit-findings"/>
    <id>https://opsira.io/notes/rate-limited-crawls-invent-audit-findings</id>
    <updated>2026-09-19T00:00:00Z</updated>
    <category term="Being found"/>
    <summary>If your site auditor records a failed fetch and an empty field the same way, every rate limited URL becomes a fabricated defect, and the report looks completely normal.</summary>
  </entry>
  <entry>
    <title>Validation rules that fire on correct data</title>
    <link href="https://opsira.io/notes/validation-rules-that-fire-on-correct-data"/>
    <id>https://opsira.io/notes/validation-rules-that-fire-on-correct-data</id>
    <updated>2026-09-07T00:00:00Z</updated>
    <category term="Orders"/>
    <summary>A guard that rejects one document in eleven because reality disagrees with it is worse than no guard at all. Test every rule against real history before it goes live.</summary>
  </entry>
  <entry>
    <title>The backup said OK and there was no offsite copy</title>
    <link href="https://opsira.io/notes/the-backup-said-ok-and-there-was-no-offsite-copy"/>
    <id>https://opsira.io/notes/the-backup-said-ok-and-there-was-no-offsite-copy</id>
    <updated>2026-09-06T00:00:00Z</updated>
    <category term="Infrastructure"/>
    <summary>The nightly job dumped every database, failed to upload any of them, reported one error, and then deleted the oldest copy that was still offsite. It ran that way for five nights.</summary>
  </entry>
  <entry>
    <title>Read the page before you pay a model to read it</title>
    <link href="https://opsira.io/notes/read-structured-data-before-paying-a-model"/>
    <id>https://opsira.io/notes/read-structured-data-before-paying-a-model</id>
    <updated>2026-09-01T00:00:00Z</updated>
    <category term="Infrastructure"/>
    <summary>Pages that matter to Google already publish their content as structured data. Extracting that costs nothing, returns exact values, and beats sending the prose to a model.</summary>
  </entry>
  <entry>
    <title>The credential cache you cleared is on another device</title>
    <link href="https://opsira.io/notes/credential-caches-that-sync-back"/>
    <id>https://opsira.io/notes/credential-caches-that-sync-back</id>
    <updated>2026-08-10T00:00:00Z</updated>
    <category term="Infrastructure"/>
    <summary>An old sign-in kept coming back after we cleared the app, the credential store and the browser, and after a full reinstall. Half the tokens lived in the cloud-synced keychain and were being restored from the phone.</summary>
  </entry>
  <entry>
    <title>Your AI session dies with the laptop, and the transcript will not bring it back</title>
    <link href="https://opsira.io/notes/sessions-that-die-with-the-laptop"/>
    <id>https://opsira.io/notes/sessions-that-die-with-the-laptop</id>
    <updated>2026-08-10T00:00:00Z</updated>
    <category term="Infrastructure"/>
    <summary>You want to close the laptop and keep working from your phone. The fix is not syncing your history, it is moving the process onto hardware that never sleeps, and reaching it over an outbound channel.</summary>
  </entry>
  <entry>
    <title>Two modules from the same vendor, and load order decides which one breaks</title>
    <link href="https://opsira.io/notes/module-load-order-and-shared-dependencies"/>
    <id>https://opsira.io/notes/module-load-order-and-shared-dependencies</id>
    <updated>2026-08-10T00:00:00Z</updated>
    <category term="Infrastructure"/>
    <summary>Both modules work alone. Loaded together, the second fails with a missing-method error. Nothing is misconfigured; whichever loaded first won a version argument you never saw.</summary>
  </entry>
  <entry>
    <title>The sign-in page ignores what you typed and offers a different address</title>
    <link href="https://opsira.io/notes/sign-in-page-shows-a-different-address"/>
    <id>https://opsira.io/notes/sign-in-page-shows-a-different-address</id>
    <updated>2026-08-10T00:00:00Z</updated>
    <category term="Infrastructure"/>
    <summary>A user types their correct address and the sign-in page redirects them to an old one. It looks like the device is caching credentials. It is not the device, and clearing the device will not fix it.</summary>
  </entry>
  <entry>
    <title>Security defaults block device code sign-in, and the error does not say so</title>
    <link href="https://opsira.io/notes/security-defaults-and-device-code-sign-in"/>
    <id>https://opsira.io/notes/security-defaults-and-device-code-sign-in</id>
    <updated>2026-08-09T00:00:00Z</updated>
    <category term="Infrastructure"/>
    <summary>A tenant with no conditional access policies can still refuse a sign-in. Device code flow is blocked by the default baseline, and the failure looks like a permissions problem.</summary>
  </entry>
  <entry>
    <title>PowerShell modules break when Documents is synced to the cloud</title>
    <link href="https://opsira.io/notes/powershell-modules-and-redirected-documents"/>
    <id>https://opsira.io/notes/powershell-modules-and-redirected-documents</id>
    <updated>2026-08-09T00:00:00Z</updated>
    <category term="Infrastructure"/>
    <summary>Installing a module for the current user puts it in Documents. If Documents is redirected into a sync client, the module installs successfully and then fails to load.</summary>
  </entry>
  <entry>
    <title>A mail rule that never fires because something above it stops processing</title>
    <link href="https://opsira.io/notes/transport-rules-that-never-fire"/>
    <id>https://opsira.io/notes/transport-rules-that-never-fire</id>
    <updated>2026-08-09T00:00:00Z</updated>
    <category term="Email and DNS"/>
    <summary>Adding a transport rule and finding it does nothing is usually not a problem with the rule. It is a rule above it with stop processing enabled.</summary>
  </entry>
  <entry>
    <title>Some permissions take 24 hours, so assign them on day one</title>
    <link href="https://opsira.io/notes/roles-with-a-lead-time"/>
    <id>https://opsira.io/notes/roles-with-a-lead-time</id>
    <updated>2026-08-09T00:00:00Z</updated>
    <category term="Infrastructure"/>
    <summary>Most role assignments apply within minutes. A few take up to a day, and you will discover which at the exact moment you need them.</summary>
  </entry>
  <entry>
    <title>How to tell whether a mail domain is really live, without sending anything</title>
    <link href="https://opsira.io/notes/is-a-domain-really-live-smtp-probe"/>
    <id>https://opsira.io/notes/is-a-domain-really-live-smtp-probe</id>
    <updated>2026-08-09T00:00:00Z</updated>
    <category term="Email and DNS"/>
    <summary>Sending test emails to check mail flow gives you one data point and a bounce. An SMTP recipient probe asks the same question repeatedly, costs nothing, and reveals when the answer is inconsistent.</summary>
  </entry>
  <entry>
    <title>Moving a domain between Microsoft 365 tenants: the outage is not where you expect</title>
    <link href="https://opsira.io/notes/cross-tenant-domain-move-outage"/>
    <id>https://opsira.io/notes/cross-tenant-domain-move-outage</id>
    <updated>2026-08-09T00:00:00Z</updated>
    <category term="Email and DNS"/>
    <summary>Removing a custom domain from one tenant and adding it to another tears down the mail routing host behind the MX record. Until it is rebuilt nothing delivers, and the dangerous moment is when it comes back.</summary>
  </entry>
  <entry>
    <title>One analytics source will mislead you, and filtering changes the answer</title>
    <link href="https://opsira.io/notes/one-analytics-source-will-mislead-you"/>
    <id>https://opsira.io/notes/one-analytics-source-will-mislead-you</id>
    <updated>2026-08-09T00:00:00Z</updated>
    <category term="Visitors"/>
    <summary>The same week of traffic read as a 67% collapse, a 24% decline, and flat, depending on which rows were counted. A second independent measurement is the only thing that settles it.</summary>
  </entry>
  <entry>
    <title>Your bot filter is reading the one field bots control</title>
    <link href="https://opsira.io/notes/user-agent-bot-filtering-misses-datacentres"/>
    <id>https://opsira.io/notes/user-agent-bot-filtering-misses-datacentres</id>
    <updated>2026-08-09T00:00:00Z</updated>
    <category term="Visitors"/>
    <summary>Filtering traffic on the user agent string only catches bots that admit to being bots. Anything using a browser fingerprint from a hosting IP walks straight through.</summary>
  </entry>
  <entry>
    <title>llms.txt probably is not doing what you think</title>
    <link href="https://opsira.io/notes/llms-txt-probably-is-not-doing-what-you-think"/>
    <id>https://opsira.io/notes/llms-txt-probably-is-not-doing-what-you-think</id>
    <updated>2026-08-08T00:00:00Z</updated>
    <category term="Being found"/>
    <summary>The file is cheap and harmless, and the measured evidence says AI crawlers are not fetching it and publishing it does not affect citations. Spend the effort elsewhere.</summary>
  </entry>
  <entry>
    <title>Your build output is not your live site</title>
    <link href="https://opsira.io/notes/your-build-output-is-not-your-live-site"/>
    <id>https://opsira.io/notes/your-build-output-is-not-your-live-site</id>
    <updated>2026-08-08T00:00:00Z</updated>
    <category term="Infrastructure"/>
    <summary>A statically deployed site collects production-only edits that no build reproduces. Deploying a fresh build then silently removes them, and nothing warns you.</summary>
  </entry>
  <entry>
    <title>When you retract a claim, the copy is the easy part</title>
    <link href="https://opsira.io/notes/removing-a-claim-the-places-you-will-miss"/>
    <id>https://opsira.io/notes/removing-a-claim-the-places-you-will-miss</id>
    <updated>2026-08-08T00:00:00Z</updated>
    <category term="Being found"/>
    <summary>A wording change gets applied to the pages everyone looks at. It survives in the articles, the structured data and the product feed that keeps publishing it to shopping engines.</summary>
  </entry>
  <entry>
    <title>A keyword tool gives you a hypothesis, not a target</title>
    <link href="https://opsira.io/notes/keyword-volume-is-a-hypothesis"/>
    <id>https://opsira.io/notes/keyword-volume-is-a-hypothesis</id>
    <updated>2026-08-08T00:00:00Z</updated>
    <category term="Being found"/>
    <summary>A term with good volume and low difficulty can still be the wrong phrase. Your own impression data is the only thing that confirms buyers use those words.</summary>
  </entry>
</feed>
