<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>m00dy.sh: AI infrastructure, ML systems, and security</title>
    <link>https://m00dy.sh/</link>
    <description>Nathan’s research notebook: explanations, practical guides, and research on AI infrastructure, model artifacts, and RAG systems.</description>
    <language>en</language>
    <atom:link href="https://m00dy.sh/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Signed-to-Unsigned Tensor Offset Wraparound in stable-diffusion.cpp</title>
      <link>https://m00dy.sh/notes/stable-diffusion-cpp-cve-2026-115571-tensor-offset-overflow</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/stable-diffusion-cpp-cve-2026-115571-tensor-offset-overflow</guid>
      <description>How a signed 32-bit storage_offset in a PyTorch ZIP archive sign-extended to 64-bit unsigned arithmetic, wrapped offset + nbytes past the bounds check in stable-diffusion.cpp (CVE-2026-115571 / GHSA-cfhc-rw9j-rp26), and how sibling arithmetic and duplicate-key bugs surfaced across SafeTensors, GGUF, and imatrix loaders (CVE-2026-70659).</description>
      <pubDate>Mon, 09 Nov 2026 15:00:00 GMT</pubDate>
      <category>ml-security</category>
<category>formats</category>
<category>crucible</category>
<category>c-plus-plus</category>
<category>gguf</category>
<category>safetensors</category>
    </item>
<item>
      <title>Static Spectral Trojan Auditing and Pre-Load Checkpoint Sanitization</title>
      <link>https://m00dy.sh/notes/spectral-trojans-and-preload-sanitization</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/spectral-trojans-and-preload-sanitization</guid>
      <description>How trust boundaries, C++/CUDA kernel failure classes, and spectral weight audits fit together, with measurements from a 46-file local inventory (2,619 analyzed weight matrices across 14 full-model reads and 16 scoped variants) and 186.8M GGUF quantized blocks.</description>
      <pubDate>Sat, 07 Nov 2026 20:00:00 GMT</pubDate>
      <category>security</category>
<category>weight-space-programming</category>
<category>gguf</category>
<category>safetensors</category>
<category>secant</category>
    </item>
<item>
      <title>From Sparks to Secant: A Four-Part Series on Weight-Space Programming, C++ Kernel Safety, Subspace-Locked LoRA, and Spectral Trojan Auditing</title>
      <link>https://m00dy.sh/notes/sparks-to-secant-weight-space-programming-series</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/sparks-to-secant-weight-space-programming-series</guid>
      <description>A four-part series and open-source toolkit testing weight-space programming across 17 models, quantized GGUF blocks, LoRA fine-tuning, and C++ inference kernels.</description>
      <pubDate>Thu, 05 Nov 2026 18:00:00 GMT</pubDate>
      <category>weight-space-programming</category>
<category>secant</category>
<category>safetensors</category>
<category>gguf</category>
<category>lora</category>
    </item>
<item>
      <title>Project-Then-Heal: Weight-Space Programming and Subspace-Locked LoRA</title>
      <link>https://m00dy.sh/notes/project-then-heal</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/project-then-heal</guid>
      <description>How weight edits map to SafeTensors and GGUF storage, why head permutations matter, and what live fine-tuning and synthetic tests show about subspace-locked LoRA.</description>
      <pubDate>Thu, 05 Nov 2026 17:00:00 GMT</pubDate>
      <category>weight-space-programming</category>
<category>gguf</category>
<category>safetensors</category>
<category>lora</category>
<category>secant</category>
    </item>
<item>
      <title>Trapped Inside `&lt;think&gt;`: Multi-Subspace Weight Surgery and What Controls Reveal on Small Reasoning Models</title>
      <link>https://m00dy.sh/notes/trapped-inside-think</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/trapped-inside-think</guid>
      <description>A study of reasoning-loop timeouts on Qwen3.5, activation-based weight-edit calibration, and the controls needed to distinguish completed answers from repeated crash-trace text.</description>
      <pubDate>Thu, 05 Nov 2026 16:00:00 GMT</pubDate>
      <category>weight-space-programming</category>
<category>mechanistic-interpretability</category>
<category>qwen3-5</category>
<category>reasoning-models</category>
<category>secant</category>
    </item>
<item>
      <title>The Illusion of Safe Tensors: Why Valid Model Files Still Need Numerical Checks</title>
      <link>https://m00dy.sh/notes/the-illusion-of-safe-tensors</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/the-illusion-of-safe-tensors</guid>
      <description>SafeTensors guarantees that deserializing a model file cannot execute pickle code. It does not guarantee that the numbers inside are safe for the C++ and CUDA kernels that consume them.</description>
      <pubDate>Thu, 05 Nov 2026 15:00:00 GMT</pubDate>
      <category>security</category>
<category>safetensors</category>
<category>model-supply-chain</category>
<category>c-plus-plus</category>
<category>secant</category>
    </item>
<item>
      <title>When an HNSW Index Lies About Its Capacity</title>
      <link>https://m00dy.sh/notes/when-an-hnsw-index-lies-about-its-capacity</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/when-an-hnsw-index-lies-about-its-capacity</guid>
      <description>An HNSW vector index header stores both its allocated capacity (max_elements_) and its live element count (cur_element_count). Neither hnswlib nor Spotify&apos;s Voyager checked that cur_element_count fits inside max_elements_ during loadIndex, allowing a crafted index to allocate for the smaller capacity and copy the larger count onto the heap (CVE-2026-124959, CERT/CC VU#681158).</description>
      <pubDate>Thu, 05 Nov 2026 14:00:00 GMT</pubDate>
      <category>ml-security</category>
<category>formats</category>
<category>supply-chain</category>
    </item>
<item>
      <title>Disabling Pickle Did Not Remove Pickle</title>
      <link>https://m00dy.sh/notes/disabling-pickle-did-not-remove-pickle</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/disabling-pickle-did-not-remove-pickle</guid>
      <description>Disabling SGLang&apos;s direct Pickle transport changed the envelope and left the decoder in place. How both internal receive modes reached Pickle, and how a reachable internal receiver turned that into code execution in a real two-GPU service.</description>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <category>ml-security</category>
<category>ai-infrastructure</category>
<category>attack-surface</category>
<category>crucible</category>
    </item>
<item>
      <title>The Tunnels Under the Surface</title>
      <link>https://m00dy.sh/notes/the-tunnels-under-the-surface</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/the-tunnels-under-the-surface</guid>
      <description>A scanner finds the services. The real shape of an AI estate lives in the hidden connections carrying credentials, trust, and data between them.</description>
      <pubDate>Sat, 22 Aug 2026 14:00:00 GMT</pubDate>
      <category>ml-security</category>
<category>ai-infrastructure</category>
<category>attack-surface</category>
<category>aipostex</category>
    </item>
<item>
      <title>A Field Guide to AI Infrastructure</title>
      <link>https://m00dy.sh/notes/a-field-guide-to-ai-infrastructure</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/a-field-guide-to-ai-infrastructure</guid>
      <description>The model is one process. Around it sits the infrastructure that serves it, tracks it, stores its data, and wires it into everything else. This is a map of the services and seams that make up a modern model estate.</description>
      <pubDate>Fri, 21 Aug 2026 14:00:00 GMT</pubDate>
      <category>ml-security</category>
<category>ai-infrastructure</category>
<category>attack-surface</category>
<category>aipostex</category>
    </item>
<item>
      <title>Treat a Model Download Like a Software Supply-Chain Decision</title>
      <link>https://m00dy.sh/notes/model-download-supply-chain-decision</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/model-download-supply-chain-decision</guid>
      <description>A from_pretrained() call is a download, a parse, and an execution decision wrapped in one convenient API. A reviewable workflow: pin the revision, approve the whole snapshot, read scan results literally, make the first load disposable, and promote the exact object you tested.</description>
      <pubDate>Wed, 19 Aug 2026 19:00:00 GMT</pubDate>
      <category>ml-security</category>
<category>supply-chain</category>
<category>formats</category>
<category>methodology</category>
    </item>
<item>
      <title>A Model File Is Not a Script</title>
      <link>https://m00dy.sh/notes/a-model-file-is-not-a-script</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/a-model-file-is-not-a-script</guid>
      <description>A model file can influence a great deal of computation without being executable code. On the difference between an executable serialization format and a tensor container, and why an out-of-bounds read in MLX&apos;s GGUF loader was worth fixing even after it was declined as a security issue.</description>
      <pubDate>Wed, 19 Aug 2026 14:00:00 GMT</pubDate>
      <category>ml-security</category>
<category>formats</category>
<category>supply-chain</category>
<category>crucible</category>
    </item>
<item>
      <title>Structure-Aware Fuzzing for ML Model Parsers</title>
      <link>https://m00dy.sh/notes/structure-aware-fuzzing-for-ml-model-parsers</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/structure-aware-fuzzing-for-ml-model-parsers</guid>
      <description>Loading a model from a hub means running a binary parser on a file a stranger gave you. This is the map for Crucible: what the attack surface is, why a format-aware fuzzer beats a dumb one on it, and how a seed file becomes a filed advisory.</description>
      <pubDate>Wed, 29 Jul 2026 14:00:00 GMT</pubDate>
      <category>ml-security</category>
<category>fuzzing</category>
<category>crucible</category>
<category>formats</category>
<category>supply-chain</category>
    </item>
<item>
      <title>Found by AI, Fixed by AI</title>
      <link>https://m00dy.sh/notes/found-by-ai-fixed-by-ai</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/found-by-ai-fixed-by-ai</guid>
      <description>A structure-aware fuzzer found a small ONNX memory-safety bug, GitHub Copilot helped patch it upstream, and the public issue-to-merge loop closed the same afternoon.</description>
      <pubDate>Sat, 13 Jun 2026 17:00:00 GMT</pubDate>
      <category>ml-security</category>
<category>fuzzing</category>
<category>supply-chain</category>
<category>crucible</category>
    </item>
<item>
      <title>The Format That Got It Right</title>
      <link>https://m00dy.sh/notes/the-format-that-got-it-right</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/the-format-that-got-it-right</guid>
      <description>SafeTensors did not survive fuzzing by luck. It survived because the format puts validation before allocation, keeps code out of the file, and treats model loading as an input-parsing problem.</description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <category>ml-security</category>
<category>supply-chain</category>
<category>formats</category>
<category>fuzzing</category>
    </item>
<item>
      <title>Signing Is Not Sealing</title>
      <link>https://m00dy.sh/notes/signing-is-not-sealing</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/signing-is-not-sealing</guid>
      <description>Post-quantum signatures are entering supply-chain infrastructure. Any ML artifact signing profile that adopts ML-DSA should get one deployment detail right before it ships: randomized mode opens a 256-bit hidden command channel that no deployed verifier can inspect.</description>
      <pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate>
      <category>ml-security</category>
<category>supply-chain</category>
<category>cryptography</category>
<category>manta</category>
    </item>
<item>
      <title>Two RAG systems, same injection rate, different problems</title>
      <link>https://m00dy.sh/notes/two-rag-systems-same-injection-rate</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/two-rag-systems-same-injection-rate</guid>
      <description>Two RAG systems with the same headline injection rate can need opposite defenses. Why a single number isn&apos;t enough, and what to report instead.</description>
      <pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate>
      <category>ml-security</category>
<category>rag</category>
<category>evaluation</category>
<category>methodology</category>
    </item>
<item>
      <title>Channel, Decoder, Substrate: A Vocabulary for ML Attacks</title>
      <link>https://m00dy.sh/notes/channel-decoder-substrate</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/channel-decoder-substrate</guid>
      <description>An ML attack is the composition of three things: a channel that carries information, a decoder that reads the channel, and a substrate that runs the decoder. Naming the shape changes how you think about both offense and defense.</description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <category>ml-security</category>
<category>frameworks</category>
<category>manta</category>
<category>supply-chain</category>
    </item>
<item>
      <title>Creating an EMUX Environment With Ludus</title>
      <link>https://m00dy.sh/notes/creating-an-emux-environment-with-ludus</link>
      <guid isPermaLink="true">https://m00dy.sh/notes/creating-an-emux-environment-with-ludus</guid>
      <description>Let&apos;s spin up a virtual environment with all the EMUX emulated environments.</description>
      <pubDate>Sat, 22 Jun 2024 19:34:42 GMT</pubDate>
      <category>iot</category>
<category>hardware</category>
<category>emulation</category>
<category>ludus</category>
    </item>
  </channel>
</rss>