<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ruslan Akchurin</title>
    <link>https://ruslanakchurin.dev/blog</link>
    <description>Senior platform engineer. I make risky infrastructure boring.</description>
    <language>en-au</language>
    <lastBuildDate>Thu, 16 Jul 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://ruslanakchurin.dev/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>The account is not the boundary</title>
      <link>https://ruslanakchurin.dev/blog/account-not-boundary</link>
      <guid isPermaLink="true">https://ruslanakchurin.dev/blog/account-not-boundary</guid>
      <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
      <description>Porting the IaC operating model from GCP to AWS, mechanism by mechanism: account vending, grant and limit planes, regional network admission, and the readiness evidence that replaces a project-shaped handoff.</description>
    </item>
    <item>
      <title>Appendix B: The contract, end to end</title>
      <link>https://ruslanakchurin.dev/blog/making-iac-boring/appendix-b</link>
      <guid isPermaLink="true">https://ruslanakchurin.dev/blog/making-iac-boring/appendix-b</guid>
      <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
      <description>One self-contained file implements the cross-tier contract: a producer publishes a typed value, a consumer names producer, key, context, and type, and a resolver returns the bound value or refuses by name.</description>
    </item>
    <item>
      <title>A library is not an architecture</title>
      <link>https://ruslanakchurin.dev/blog/library-not-architecture</link>
      <guid isPermaLink="true">https://ruslanakchurin.dev/blog/library-not-architecture</guid>
      <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
      <description>The Pulumi component library I built made infrastructure easier to create before ownership, tiers, contracts, and release boundaries were explicit.</description>
    </item>
    <item>
      <title>The bundle is the competitor</title>
      <link>https://ruslanakchurin.dev/blog/where-secrets-go/03-the-bundle-is-the-competitor</link>
      <guid isPermaLink="true">https://ruslanakchurin.dev/blog/where-secrets-go/03-the-bundle-is-the-competitor</guid>
      <pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate>
      <description>The working bundle around a secret store can deliver a value; rotation, revocation, and honest proof limits are what test whether it delivers one verifiable transaction or evidence held together by convention.</description>
    </item>
    <item>
      <title>The green placebo</title>
      <link>https://ruslanakchurin.dev/blog/green-placebo</link>
      <guid isPermaLink="true">https://ruslanakchurin.dev/blog/green-placebo</guid>
      <pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate>
      <description>An autonomous coding agent ran a ratified security plan on a secrets manager and twice recommended the less-secure option, every fact correct. The green test suite certified a defence that did nothing. Here is what actually held the line, and why the human could not be removed from it.</description>
    </item>
    <item>
      <title>Delivery is a transaction</title>
      <link>https://ruslanakchurin.dev/blog/where-secrets-go/02-delivery-is-a-transaction</link>
      <guid isPermaLink="true">https://ruslanakchurin.dev/blog/where-secrets-go/02-delivery-is-a-transaction</guid>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
      <description>Secret delivery breaks when writes, wiring, and receipts are separate chores; the transaction is the unit that keeps partial success and proof limits visible.</description>
    </item>
    <item>
      <title>A secret has to arrive</title>
      <link>https://ruslanakchurin.dev/blog/where-secrets-go/01-a-secret-has-to-arrive</link>
      <guid isPermaLink="true">https://ruslanakchurin.dev/blog/where-secrets-go/01-a-secret-has-to-arrive</guid>
      <pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate>
      <description>Secret storage gives a value somewhere to rest; secret delivery records the route, authority, wiring, and proof that get it there.</description>
    </item>
    <item>
      <title>Appendix A: The shape, runnable</title>
      <link>https://ruslanakchurin.dev/blog/making-iac-boring/appendix-a</link>
      <guid isPermaLink="true">https://ruslanakchurin.dev/blog/making-iac-boring/appendix-a</guid>
      <pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate>
      <description>A companion repository makes the series architecture executable: four tiers, typed cross-tier contracts, and resolver probes that refuse bad composition before any provider call.</description>
    </item>
    <item>
      <title>Re-cut the system</title>
      <link>https://ruslanakchurin.dev/blog/making-iac-boring/05-re-cut-the-system</link>
      <guid isPermaLink="true">https://ruslanakchurin.dev/blog/making-iac-boring/05-re-cut-the-system</guid>
      <pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate>
      <description>Refactoring a live IaC system toward a new architecture: freeze the old boundary, publish the new contract beside it, delete only after consumers move.</description>
    </item>
    <item>
      <title>Fail before apply</title>
      <link>https://ruslanakchurin.dev/blog/making-iac-boring/04-fail-before-apply</link>
      <guid isPermaLink="true">https://ruslanakchurin.dev/blog/making-iac-boring/04-fail-before-apply</guid>
      <pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate>
      <description>An IaC contract holds only if the release path enforces it: a resolver checks type and context, then refuses invalid composition before apply.</description>
    </item>
    <item>
      <title>Define tier membership</title>
      <link>https://ruslanakchurin.dev/blog/making-iac-boring/03-membership</link>
      <guid isPermaLink="true">https://ruslanakchurin.dev/blog/making-iac-boring/03-membership</guid>
      <pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate>
      <description>Environment boundaries blur when workload-specific members (service accounts, IAM bindings, DNS records) accumulate in the shared environment tier.</description>
    </item>
    <item>
      <title>Resolve by contract</title>
      <link>https://ruslanakchurin.dev/blog/making-iac-boring/02-contract</link>
      <guid isPermaLink="true">https://ruslanakchurin.dev/blog/making-iac-boring/02-contract</guid>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <description>Cross-stack dependencies make another stack&apos;s outputs a public interface. A typed contract on a producer namespace and key is the alternative.</description>
    </item>
    <item>
      <title>Start with the shape</title>
      <link>https://ruslanakchurin.dev/blog/making-iac-boring/01-shape</link>
      <guid isPermaLink="true">https://ruslanakchurin.dev/blog/making-iac-boring/01-shape</guid>
      <pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate>
      <description>By the time anyone reviews an IaC codebase, its shape is already decided.</description>
    </item>
  </channel>
</rss>
