The Scientific Method of Vibe-Coding: Engineering Replayable AI Workflows
Setting the Stage: Context for the Curious Book Reader
In the Age of AI, relying solely on browser interfaces for quality assurance leaves developers exposed to unverified output and hidden drift. This essay explores how adopting plain text commands and rigorous, inspectable scientific methods transforms AI-assisted development into a checkable, replayable discipline, bridging the gap between raw iteration and trustworthy software delivery.
TL;DR: A journal entry arguing that plain text commands, not browser clicks, are the only way to verify what an AI did on your behalf, because only a command can be replayed with the same endpoint and parameters. It reads a published article’s frontmatter, headings, and metadata against an editing rule added the day before and finds the rule held on its first use, with two earlier articles as the control. It then edits the Neovim template that structures every entry in the series so the before/after/change shape is stated in one sentence, explains why an indented code block is used to quote a template that contains code fences, and rules that a client-facing verification summary should be derived from two existing artifacts rather than written by hand. The summary itself is left for a later entry.
Technical Journal Entry Begins
MikeLev.in: The Text Command Is the Mouse for AI.
If you reject this notion and stick to the browser as how you fact-check AI then you will never precisely reproduce the API endpoint calls with the same parameters and login credentials that the AI used and whatever you do is invalid as an actual Q/A check.
And that’s the bitter pill: using a text-command is necessary to do quality assurance work on LLM-style AI output. While what AIs are doing to you is not a Man in the Middle attack (MitM) nor a physiological manipulation attack, in a purely pragmatic and functional sense there is no different between that and a confidently delivered report that has falsehoods in it.
If it quacks like MitM psyops attack, then… then what Fable 5.1?
The Bitter Pill of Quality Assurance in the Age of AI
Engineering Replayable Workflows is not a machine that never lies, and not a human who never gets fooled, but a loop where the lie has nowhere to hide and the next turn starts from the failure instead of the hope.
This will by necessity produce a sausage factory that is not something you want to deliver to your client as a tour. It’s like McDonald’s showing you the cows getting slaughtered to explain how your hamburgers are made.
Oh, and now can you validate what you wouldn’t on the last article?
Fable 5.1 Medium: Context verified. This compile carries the three published articles as raw markdown, which is the only thing needed for the validation you asked for, and it turns out the validation is the best answer to your first question too. So I’ll take them in reverse order.
The validation I wouldn’t give last time
Last ride closed with the falsifier unfired: the rule banning “deterministic” from titles had been written into editing_prompt.txt, but article had never run on the piece that carried it. Now it has. The published file is in this payload, and I can read every field the editing model produced against the rule:
- title: “The Text Command Is the Mouse for AI: Engineering Replayable Workflows.” Clean.
- permalink / filename:
text-commands-the-mouse-for-ai. Clean. - meta_description / excerpt: “…checkable, replayable workflows.” Clean.
- meta_keywords: “text commands, AI workflows, reproducible computing, LLM optics, machine native architecture.” Clean.
- inserted subheadings: seven of them, from “The Mother of All Demos and the GUI Legacy” through “Karl Popper, Falsifiability, and the Science of Receipts.” Clean.
- tweet: “verifiable receipts… reproducibility and checkable execution loops.” Clean.
- title brainstorm: three candidates, “The Popperian Governor” among them. Clean.
- prepend paragraph: the rule permitted one mention here. It used zero.
- authors_imprint: “replayable text commands that act as immutable receipts rather than persuasive testimonies.” Clean.
Pass on every field. And this compile carries the control group too: the two articles published before the rule are in the same payload, and one has “Engineering Deterministic AI Workflows” in its title while the other has “deterministic ai” in its keywords. Same model, same spine, same corpus pressure, two days apart. Before the rule, the word in the title. After the rule, the word nowhere. That’s the straddle, with the patch between the two readings and the published files as the receipts. It’s n=1 on the after side, which I’ll say out loud rather than pretend one article proves a habit is broken, but it is a real reading and it’s the one I refused to fake two turns ago.
Two small readings while I’m in the file. The duplicate Fable reply I flagged was cut; the Barney section appears once. And the new article has no gdoc_url in its frontmatter where the two older ones do, which means either publish hasn’t run on it yet or the Drive sync step failed quietly. Not this ride’s problem; noted so it isn’t diagnosed twice.
If it quacks like a MitM psyop, then what
Then you build the defense for the duck and skip the trial.
Here’s the plain version. Security people already have the posture for this, and it doesn’t need intent: untrusted input. When you treat something as untrusted, you aren’t accusing it of anything. You’re saying “I will verify before I rely,” and that rule is identical whether the thing on the other end is an attacker, a buggy library, a tired intern, or a language model that was trained to sound sure. The word for the controls is the same in every case. The only place intent matters is afterward, in who gets blamed, and blame is not a control.
So the functional equivalence you’re pointing at is real, and it cuts the right way: it means you get to borrow every defense the security world already built. Verify end to end. Never trust the rendered view; check the request. Keep the log where the untrusted party can’t reach it. Assume the polish is unrelated to the truth. None of that requires deciding the model “meant it.”
One caution for anything client-facing: don’t call it an attack in writing. “Attack” is a claim about intent, and you have no receipt for intent, so it’s exactly the kind of testimony this whole series is against. Say “untrusted intermediary.” It’s stronger, because it’s checkable, and it commits you to the controls instead of to a fight about motives.
The sausage factory and the slaughterhouse tour
You’re right that the client doesn’t get the tour, and I’d sharpen it: nobody who eats at a restaurant wants to watch the kill floor, but every one of them is glad the health inspector did. Three artifacts, three audiences:
- The burger: the deliverable. Clean, short, no receipts in it.
- The inspection certificate: a one-page verification summary the client can ask for. It names the endpoints, the parameters, the commands, and the counts, and any of them can be re-run by someone who doesn’t like you. This is what QA hands over. It’s not the factory floor; it’s the evidence the floor was inspected.
- The floor: this journal, the article you’re reading, every hand-run
mothercattranscript. That’s for you and for the next person who has to build a floor of their own.
The mistake organizations make is having only the first. The mistake you’re worried about making is delivering the third. The thing that’s missing in most shops is the second, and it’s the cheap one, because it’s a subset of the third with the prose removed: the commands and the numbers, nothing else. Every article in this series has been producing it as a by-product without calling it that.
The Sausage Factory and the Inspection Certificate
1. PROBES
These are readings, not straddles: no patch this turn, so they print the same in both worlds. They turn the validation above into ! receipts so it’s on the record from the machine rather than from me.
awk 'NR==1{next} /^---$/{exit} {print}' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo fm_exit=$?
rg '^## ' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo h2_exit=$?
sed -n '/^## Book Analysis/,$p' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo analysis_exit=$?
rg -n -i 'determin' /home/mike/repos/trimnoir/_posts/2026-09-01-pre-flight-principle-deterministic-ai-workflows.md | head -2
rg -c '^gdoc_url:' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md; echo gdoc_exit=$?
The first three read the frontmatter, the inserted H2s, and the Book Analysis of the post-rule article; each should print 0 and exit 1, and grade the count, not the exit, since rg -c on zero matches exits 1 by design. The fourth reads the pre-rule article’s first two hits, which should be the title line; that’s the control. The fifth reads whether the Drive stamp exists yet: 0 and exit 1 now, which is the “publish not run or sync failed” reading.
2. NEXT CONTEXT
! awk 'NR==1{next} /^---$/{exit} {print}' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo fm_exit=$?
! rg '^## ' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo h2_exit=$?
! sed -n '/^## Book Analysis/,$p' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo analysis_exit=$?
! rg -n -i 'determin' /home/mike/repos/trimnoir/_posts/2026-09-01-pre-flight-principle-deterministic-ai-workflows.md | head -2
! rg -c '^gdoc_url:' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md; echo gdoc_exit=$?
scripts/articles/editing_prompt.txt
3. PATCHES
No repo patches required. The rule is doing what it was written to do; the first evidence is in, and the next few articles are the rest of the sample. No ignition required.
4. PROMPT
The five readings are live receipts now: three zeros on the post-rule article's frontmatter, H2s, and Book Analysis; the pre-rule title line as the control; and the gdoc_url count. Confirm them, then say whether the "deterministic" rule can be marked WITNESSED in foo_files.py's receipts block with today's date and n=1, and give the exact receipt line. Then take the inspection-certificate idea seriously: sketch what a one-page verification summary for a Solutions Engineer ticket would contain, drawn only from artifacts this system already produces (the DECANT bundle's per-stop final_url and artifact list, the ! receipts in a compile, the connector commands), with no new code. Argue whether it belongs in the DECANT bundle, in the compile, or as a third thing, before proposing anything.
5. EXTERNAL DELIVERABLES
None. The gdoc_url reading may point at a hand action, publish or googledocizer.py -t 1 --yes --latest, but the receipt decides that, not me.
MikeLev.in: Okay, good, good! The next thing I want to do is to take the learnings
from this discussion so far and just to tweak the Popperian template that I use
with \m in NeoVim just a little bit to tighten this whole story because that’s
what gets into every article. I want the continued use of this process to help
tersely educate anyone stumbling upon it as to what they’re actually seeing. I
don’t know if I have the BEFORE/AFTER thing with a test in the middle and the
whole causality thing that forces all the details of the experiment and the
readability git diff surface of its effect into the article. Don’t go overboard
because I don’t want to bloat the article, but you’ll be able to see the
transformation of your work right here in this article.
1: Probe (the before “read”):
[Paste terminal output of running probe here]
2: Context (the after “read”):
[triple-backtick]text
[Paste entire `adhoc.txt` here]
[triple-backtick]
**3: Patches** (the experiment between the reads):
[triple-backtick]diff
[Paste all diffs drag-copied from terminal here]
[triple-backtick]
Ignition, sed, `nix develop`, etc. Checks before `ahc` experiment.
**4: Prompt**:
[triple-backtick]text
[Probably what the AI gives you, but think for yourself!]
[triple-backtick]
**5: Deliverables**: [external artifacts, updates to this system or 'None this turn']
1: Probe (the before “read”):
$ git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
(nix) pipulate $ awk 'NR==1{next} /^---$/{exit} {print}' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo fm_exit=$?
rg '^## ' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo h2_exit=$?
sed -n '/^## Book Analysis/,$p' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo analysis_exit=$?
rg -n -i 'determin' /home/mike/repos/trimnoir/_posts/2026-09-01-pre-flight-principle-deterministic-ai-workflows.md | head -2
rg -c '^gdoc_url:' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md; echo gdoc_exit=$?
fm_exit=1
h2_exit=1
analysis_exit=1
2:title: 'The Pre-Flight Principle: Engineering Deterministic AI Workflows Before the
4:permalink: /futureproof/pre-flight-principle-deterministic-ai-workflows/
1
gdoc_exit=0
(nix) pipulate $
2: Context (the after “read”):
# adhoc.txt _ _ _ to set context____ _ _ ___ ____ _ Simpson Couch Gag Here (explain anything to the audience you feel needs it explained)G
# / \ __| | | | | | ___ ___ / ___| | | |/ _ \| _ \| |
# ahe/ _ \ / _` | | |_| |/ _ \ / __| | | | |_| | | | | |_) | | Weird Science
# ahc ___ \ (_| | | _ | (_) | (__ | |___| _ | |_| | __/|_|
# /_/ \_\__,_| |_| |_|\___/ \___| \____|_| |_|\___/|_| (_)
# Ad Hoc CHOP: The Not-Managed-by-Git Safe-for-Client-Data place
# OPTIONAL BUT BIG FOR FULL CONTEXT-WINDOW STORYTELLING
# ! python scripts/articles/lsa.py -t 1 --reverse --fmt dated-slugs # <-- The "Rolling Pin" that gives the 40K foot book-spine view of book-ore.
# GLOSSARY.md # <-- I think this glossary goes well with the book-ore spine to do world building.
# scripts/articles/lsa.py # <-- Useful for refining commands like `posts`, critical to Second Brain concept.
# ~/repos/nixos/autognome.py # <-- Letting the AIs really understand my environment (The Brave Little Tailor punches above Their Weight Class proving the dunning-kruger effect the gate-keeper's (lower-case) lament.)
# init.lua # <-- Daily driver hot-keys that overlap with aliases in flake.nix
# STILL BIG BUT LESS OPTIONAL (especially flake.nix)
# flake.nix # <-- THE ONE BIG THING TO INCLUDE Infrastructure as Code (IaC) tells LLM about your system down to the metal
# prompt_foo.py # <-- This very content-compiling system
# foo_files.py # <-- This is the router, evolving book outline and the things you pin-up to produced the recursive self-improvement loops
# TINY ILLUMINATING (OK to include every time / automatically = `apply.py`, `.gitignore`, `.gitattributes`)
# requirements.in # <-- All known dependencies and (necessary) version pinning. WORA gotcha's exposed.
# __init__.py # <-- Master versioning
# pyproject.toml # <-- The PyPI Packaging details
# OPTIONAL ACTUATORS (cheap and good to include to expand the AI's capabilities)
# cli.py # <-- Catch-all actuator for PyPI envs, Python anchoring, MCP tool-call (plus alternatives) and **kwargs like wrapping for CLI
# scripts/xp.py # <-- Transforms host OS copy-paste buffer player-piano music into context-payload.
# scripts/ai.py # <-- How I constantly use local AI to write git commit messages with `m` alias.
# scripts/crawl.py # <-- Feel free to ask for something to be crawled and included in the next turn.
# scripts/weblogin.py # <-- Lets the user "warm up" the cache for their web logins at their leisure on a profile that persists.
# MISCELLANEOUS (rare to include but sometimes critical)
# scripts/foo_cartridge.py # Needs description
# scripts/foo_replay.py # Needs description
# release.py # <-- How everything ends up where it does (GitHub, PyPI, etc.)
# imports/voice_synthesis.py # <-- The wand can talk to you
# imports/ascii_displays.py # <-- Where all the ASCII Art lives
# scripts/release/version_sync.py # <-- Needs to be wrapped into release.py and eliminated, I think.
# --- Under this line is were you paste what the AI gives you ---
# --- We call it context but it's really just the right-hand ---
# --- blast-radius of the "probes" to make this all science. ---
# --- END `adhoc.txt` TEMPLATE ---
# STICKBUG & MOTHER CAT KATA (WORKING ON THE CHAPTER)
# assets/installer/mck.sh
# assets/installer/replay.sh
# scripts/walk.py
# scripts/walk_cartridge.py
# scripts/walk_compile.py
# assets/trails/first_context.yaml
# assets/trails/practice.yaml
# assets/trails/public_walk.yaml
# assets/trails/botify_pageworkers.yaml
# scripts/connectors/README.md
# scripts/connectors/botify.py
# scripts/connectors/confluence.py
# scripts/connectors/gmail.py
# scripts/connectors/gsc.py
# scripts/connectors/jira.py
# scripts/connectors/mcp.py
# scripts/connectors/mcp_warm.py
# scripts/connectors/sheets.py
# scripts/connectors/slack.py
# scripts/connectors/wallet.py
# scripts/bookmark_import.py
# scripts/boot_menu.py
# scripts/mother_cat.py
# scripts/sources_menu.py
# scripts/weblogin.py
# tools/scraper_tools.py
# --- START THIS DISCUSSION ---
# CONTEXT: 1
# /home/mike/repos/trimnoir/_posts/2026-09-01-pre-flight-principle-deterministic-ai-workflows.md # [Idx: 1436 | Order: 3 | Tokens: 44,590 | Bytes: 178,648]
# /home/mike/repos/trimnoir/_posts/2026-09-02-completing-the-loop-optional-stops-se-ticket-template.md # [Idx: 1438 | Order: 2 | Tokens: 50,352 | Bytes: 189,353]
# /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md # [Idx: 1439 | Order: 1 | Tokens: 32,808 | Bytes: 142,390]
# CONTEXT: 2
! awk 'NR==1{next} /^---$/{exit} {print}' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo fm_exit=$?
! rg '^## ' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo h2_exit=$?
! sed -n '/^## Book Analysis/,$p' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo analysis_exit=$?
! rg -n -i 'determin' /home/mike/repos/trimnoir/_posts/2026-09-01-pre-flight-principle-deterministic-ai-workflows.md | head -2
! rg -c '^gdoc_url:' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md; echo gdoc_exit=$?
scripts/articles/editing_prompt.txt
3: Patches (the experiment between the reads):
None
Ignition, sed, nix develop, etc. Checks before ahc experiment.
4: Prompt:
The five readings are live receipts now: three zeros on the post-rule article’s frontmatter, H2s, and Book Analysis; the pre-rule title line as the control; and the gdoc_url count. Confirm them, then say whether the “deterministic” rule can be marked WITNESSED in foo_files.py’s receipts block with today’s date and n=1, and give the exact receipt line. Then take the inspection-certificate idea seriously: sketch what a one-page verification summary for a Solutions Engineer ticket would contain, drawn only from artifacts this system already produces (the DECANT bundle’s per-stop final_url and artifact list, the ! receipts in a compile, the connector commands), with no new code. Argue whether it belongs in the DECANT bundle, in the compile, or as a third thing, before proposing anything.
5: Deliverables: [external artifacts, updates to this system or ‘None this turn’]
There is some deliverable here but it is very meta; improving the very process its engaged in, but there’s a lot of that in the singularity — lowercase s because the singularity is now happening all around us all the time but much less spectacularly than Ray predicted; not with a bang but with endless little token-burning expensive loops.
Fable 5.1 Medium: Context verified. init.lua is in this payload as raw source, and mount_sandworm() is the only thing the request touches. Five live receipts first, because one of them corrected me.
The receipts. Frontmatter, inserted H2s, Book Analysis: zero hits each, exit 1, on the post-rule article. The pre-rule control reads the word in the title on line 2 and in the permalink on line 4. And the fifth: gdoc_url count is 1, exit 0. Last compile I read the file body and said the stamp was absent. Both readings were true at their moments; publish ran between them. That’s the apple example from two articles ago happening to me: the helper said seven, then six, and the world had moved. The receipt doesn’t need me to be embarrassed; it needs me to say which reading is current. Current: stamped.
The WITNESSED line, since the previous caboose asked and foo_files.py isn’t in this payload, so it’s a paste for the top of the RECEIPTS block, not a patch:
# 2026-09-03 editing_prompt.txt "deterministic" ban WITNESSED (n=1): first post-rule article read 0/0/0 on frontmatter, H2s, and Book Analysis; pre-rule control carries the word in title and permalink; prepend used 0 of its 1 permitted mention; gdoc_url stamp appeared between two compiles (world moved, both readings honest).
The inspection-certificate sketch stays queued; it’s a bigger thought than a template tweak and shouldn’t share a car with one.
The template. What it’s missing isn’t a section; it’s one sentence that tells a stranger what the five sections are. You have BEFORE (hand-run probe), the change (the diff), and AFTER (the ! lines re-run at compile), but nothing says so, and the labels say “read” in quotes, which only means something to someone who already knows. So: a two-line key under the speaker label, the BEFORE/AFTER words in the headings themselves, the placeholders rewritten so they name the act instead of the paste, and the ignition line turned into the question it’s actually asking. Nothing added that isn’t already true of every ride. The singularity line is right, by the way, and this is one of those loops: a tool editing the sentence that explains the tool.
1. PROBES
rg -n 'Same commands, run twice' init.lua; echo key_exit=$?
rg -n 'the before' init.lua; echo old_label_exit=$?
nvim --headless -u NONE -c 'luafile init.lua' -c 'qa!' 2>&1 | tail -1
The first is the straddle for the new key line: exit 1 before, one hit after. The second is the old label leaving: one hit before, exit 1 after. The third is the syntax gate; it prints init.lua loaded successfully! in both worlds if the Lua string still parses, and a Lua error after if I broke a quote, which is the failure a template patch is most likely to have.
2. NEXT CONTEXT
! rg -n 'Same commands, run twice' init.lua; echo key_exit=$?
! rg -n 'the before' init.lua; echo old_label_exit=$?
! nvim --headless -u NONE -c 'luafile init.lua' -c 'qa!' 2>&1 | tail -1
init.lua
3. PATCHES
One car. The first line of the template stays **MikeLev.in**: so the cursor logic below it is untouched.
Target: init.lua
[[[SEARCH]]]
local template = "**MikeLev.in**: \n\n"
.. "**1: Probe** (the before \"read\"):\n\n"
.. "[triple-backtick]bash\n[Paste terminal output of running probe here]\n[triple-backtick]\n\n"
.. "**2: Context** (the after \"read\"):\n\n"
.. "[triple-backtick]text\n[Paste entire `adhoc.txt` here]\n[triple-backtick]\n\n"
.. "**3: Patches** (the experiment between the reads): \n\n"
.. "[triple-backtick]diff\n[Paste all diffs drag-copied from terminal here]\n[triple-backtick]\n\n"
.. "Ignition, sed, `nix develop`, etc. Checks before `ahc` experiment.\n\n"
.. "**4: Prompt**: \n\n"
.. "[triple-backtick]text\n[Probably what the AI gives you, but think for yourself!]\n[triple-backtick]\n\n"
.. "**5: Deliverables**: [external artifacts, updates to this system or 'None this turn']"
[[[DIVIDER]]]
local template = "**MikeLev.in**: \n\n"
.. "> Same commands, run twice, one change between them. Where the readings\n"
.. "> differ is what the change did; the diff in the middle is the receipt.\n\n"
.. "**1: Probe** (BEFORE: hand-run, nothing changed yet):\n\n"
.. "[triple-backtick]bash\n[Paste the terminal output of the probes]\n[triple-backtick]\n\n"
.. "**2: Context** (AFTER: the same probes re-run by the compiler as `!` lines):\n\n"
.. "[triple-backtick]text\n[Paste entire `adhoc.txt` here]\n[triple-backtick]\n\n"
.. "**3: Patches** (the one change between the readings): \n\n"
.. "[triple-backtick]diff\n[Paste the diffs: patch, app, d, m per car]\n[triple-backtick]\n\n"
.. "Ignition (what makes the patched code run before the AFTER reading -- `<F2>`, `nix develop`, a re-ride -- or none required):\n\n"
.. "**4: Prompt** (the next question, written before the AFTER reading is in): \n\n"
.. "[triple-backtick]text\n[Probably what the AI gives you, but think for yourself!]\n[triple-backtick]\n\n"
.. "**5: Deliverables**: [external artifacts, updates to this system or 'None this turn']"
[[[REPLACE]]]
Ignition: <F2> in a running Neovim (that’s reload_config, which re-sources ~/repos/pipulate/init.lua), or open a fresh one. The three probes read the file at call time and need nothing, but the template itself is only witnessed by pressing \m on a blank line after the reload. That paste, in your next turn, is the AFTER reading for the thing this ride was actually about.
4. PROMPT
The \m template car landed. Read the three receipts: the key line present, the old "the before" label gone, and the headless luafile printing "init.lua loaded successfully!". Below is a fresh \m paste after <F2>; confirm it matches the patched template byte for byte, and say whether the two-line key reads right to a stranger or is one word too clever. Then the queued item: the inspection certificate for an SE ticket, drawn only from what the system already emits (DECANT bundle per-stop final_url and artifact counts, ! receipts, the connector commands), and where it lives: bundle, compile, or a third thing. Argue before proposing.
5. EXTERNAL DELIVERABLES
None. The deliverable is the template, and it ships inside the repo.
MikeLev.in:
1: Probe (the before “read”):
Blast Radius Check to establish bisection Left-hand Causal Boundary. It is a Popper-thing. Science.
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
(nix) pipulate $ rg -n 'Same commands, run twice' init.lua; echo key_exit=$?
rg -n 'the before' init.lua; echo old_label_exit=$?
nvim --headless -u NONE -c 'luafile init.lua' -c 'qa!' 2>&1 | tail -1
key_exit=1
716: .. "**1: Probe** (the before \"read\"):\n\n"
old_label_exit=0
init.lua loaded successfully!(nix) pipulate $
2: Context (the after “read”):
# adhoc.txt _ _ _ to set context____ _ _ ___ ____ _ Simpson Couch Gag Here (explain anything to the audience you feel needs it explained)G
# / \ __| | | | | | ___ ___ / ___| | | |/ _ \| _ \| |
# ahe/ _ \ / _` | | |_| |/ _ \ / __| | | | |_| | | | | |_) | | Weird Science
# ahc ___ \ (_| | | _ | (_) | (__ | |___| _ | |_| | __/|_| Making it less weird.
# /_/ \_\__,_| |_| |_|\___/ \___| \____|_| |_|\___/|_| (_)
# Ad Hoc CHOP: The Not-Managed-by-Git Safe-for-Client-Data place
# OPTIONAL BUT BIG FOR FULL CONTEXT-WINDOW STORYTELLING
# ! python scripts/articles/lsa.py -t 1 --reverse --fmt dated-slugs # <-- The "Rolling Pin" that gives the 40K foot book-spine view of book-ore.
# GLOSSARY.md # <-- I think this glossary goes well with the book-ore spine to do world building.
# scripts/articles/lsa.py # <-- Useful for refining commands like `posts`, critical to Second Brain concept.
# ~/repos/nixos/autognome.py # <-- Letting the AIs really understand my environment (The Brave Little Tailor punches above Their Weight Class proving the dunning-kruger effect the gate-keeper's (lower-case) lament.)
# init.lua # <-- Daily driver hot-keys that overlap with aliases in flake.nix
# STILL BIG BUT LESS OPTIONAL (especially flake.nix)
# flake.nix # <-- THE ONE BIG THING TO INCLUDE Infrastructure as Code (IaC) tells LLM about your system down to the metal
# prompt_foo.py # <-- This very content-compiling system
# foo_files.py # <-- This is the router, evolving book outline and the things you pin-up to produced the recursive self-improvement loops
# TINY ILLUMINATING (OK to include every time / automatically = `apply.py`, `.gitignore`, `.gitattributes`)
# requirements.in # <-- All known dependencies and (necessary) version pinning. WORA gotcha's exposed.
# __init__.py # <-- Master versioning
# pyproject.toml # <-- The PyPI Packaging details
# OPTIONAL ACTUATORS (cheap and good to include to expand the AI's capabilities)
# cli.py # <-- Catch-all actuator for PyPI envs, Python anchoring, MCP tool-call (plus alternatives) and **kwargs like wrapping for CLI
# scripts/xp.py # <-- Transforms host OS copy-paste buffer player-piano music into context-payload.
# scripts/ai.py # <-- How I constantly use local AI to write git commit messages with `m` alias.
# scripts/crawl.py # <-- Feel free to ask for something to be crawled and included in the next turn.
# scripts/weblogin.py # <-- Lets the user "warm up" the cache for their web logins at their leisure on a profile that persists.
# MISCELLANEOUS (rare to include but sometimes critical)
# scripts/foo_cartridge.py # Needs description
# scripts/foo_replay.py # Needs description
# release.py # <-- How everything ends up where it does (GitHub, PyPI, etc.)
# imports/voice_synthesis.py # <-- The wand can talk to you
# imports/ascii_displays.py # <-- Where all the ASCII Art lives
# scripts/release/version_sync.py # <-- Needs to be wrapped into release.py and eliminated, I think.
# --- Under this line is were you paste what the AI gives you ---
# --- We call it context but it's really just the right-hand ---
# --- blast-radius of the "probes" to make this all science. ---
# --- END `adhoc.txt` TEMPLATE ---
# STICKBUG & MOTHER CAT KATA (WORKING ON THE CHAPTER)
# assets/installer/mck.sh
# assets/installer/replay.sh
# scripts/walk.py
# scripts/walk_cartridge.py
# scripts/walk_compile.py
# assets/trails/first_context.yaml
# assets/trails/practice.yaml
# assets/trails/public_walk.yaml
# assets/trails/botify_pageworkers.yaml
# scripts/connectors/README.md
# scripts/connectors/botify.py
# scripts/connectors/confluence.py
# scripts/connectors/gmail.py
# scripts/connectors/gsc.py
# scripts/connectors/jira.py
# scripts/connectors/mcp.py
# scripts/connectors/mcp_warm.py
# scripts/connectors/sheets.py
# scripts/connectors/slack.py
# scripts/connectors/wallet.py
# scripts/bookmark_import.py
# scripts/boot_menu.py
# scripts/mother_cat.py
# scripts/sources_menu.py
# scripts/weblogin.py
# tools/scraper_tools.py
# --- START THIS DISCUSSION ---
# CONTEXT: 1
# /home/mike/repos/trimnoir/_posts/2026-09-01-pre-flight-principle-deterministic-ai-workflows.md # [Idx: 1436 | Order: 3 | Tokens: 44,590 | Bytes: 178,648]
# /home/mike/repos/trimnoir/_posts/2026-09-02-completing-the-loop-optional-stops-se-ticket-template.md # [Idx: 1438 | Order: 2 | Tokens: 50,352 | Bytes: 189,353]
# /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md # [Idx: 1439 | Order: 1 | Tokens: 32,808 | Bytes: 142,390]
# CONTEXT: 2
# ! awk 'NR==1{next} /^---$/{exit} {print}' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo fm_exit=$?
# ! rg '^## ' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo h2_exit=$?
# ! sed -n '/^## Book Analysis/,$p' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo analysis_exit=$?
# ! rg -n -i 'determin' /home/mike/repos/trimnoir/_posts/2026-09-01-pre-flight-principle-deterministic-ai-workflows.md | head -2
# ! rg -c '^gdoc_url:' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md; echo gdoc_exit=$?
# scripts/articles/editing_prompt.txt
# CONTEXT: 3
! rg -n 'Same commands, run twice' init.lua; echo key_exit=$?
! rg -n 'the before' init.lua; echo old_label_exit=$?
! nvim --headless -u NONE -c 'luafile init.lua' -c 'qa!' 2>&1 | tail -1
init.lua
3: Patches (the experiment between the reads):
Blast Radius Check to establish bisection Left-hand Causal Boundary. It is a Popper-thing. Science.
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
(nix) pipulate $ patch
(nix) pipulate $ app
✅ DETERMINISTIC PATCH APPLIED: Successfully mutated 'init.lua'.
(nix) pipulate $ d
diff --git a/init.lua b/init.lua
index 1ea48f71..de011b3e 100644
--- a/init.lua
+++ b/init.lua
@@ -713,14 +713,16 @@ function mount_sandworm()
-- protecting existing prose. Either way the cursor lands in insert mode
-- right after the speaker label — the old i**MikeLev.in**: feel, full saddle.
local template = "**MikeLev.in**: \n\n"
- .. "**1: Probe** (the before \"read\"):\n\n"
- .. "[triple-backtick]bash\n[Paste terminal output of running probe here]\n[triple-backtick]\n\n"
- .. "**2: Context** (the after \"read\"):\n\n"
+ .. "> Same commands, run twice, one change between them. Where the readings\n"
+ .. "> differ is what the change did; the diff in the middle is the receipt.\n\n"
+ .. "**1: Probe** (BEFORE: hand-run, nothing changed yet):\n\n"
+ .. "[triple-backtick]bash\n[Paste the terminal output of the probes]\n[triple-backtick]\n\n"
+ .. "**2: Context** (AFTER: the same probes re-run by the compiler as `!` lines):\n\n"
.. "[triple-backtick]text\n[Paste entire `adhoc.txt` here]\n[triple-backtick]\n\n"
- .. "**3: Patches** (the experiment between the reads): \n\n"
- .. "[triple-backtick]diff\n[Paste all diffs drag-copied from terminal here]\n[triple-backtick]\n\n"
- .. "Ignition, sed, `nix develop`, etc. Checks before `ahc` experiment.\n\n"
- .. "**4: Prompt**: \n\n"
+ .. "**3: Patches** (the one change between the readings): \n\n"
+ .. "[triple-backtick]diff\n[Paste the diffs: patch, app, d, m per car]\n[triple-backtick]\n\n"
+ .. "Ignition (what makes the patched code run before the AFTER reading -- `<F2>`, `nix develop`, a re-ride -- or none required):\n\n"
+ .. "**4: Prompt** (the next question, written before the AFTER reading is in): \n\n"
.. "[triple-backtick]text\n[Probably what the AI gives you, but think for yourself!]\n[triple-backtick]\n\n"
.. "**5: Deliverables**: [external artifacts, updates to this system or 'None this turn']"
local row = vim.api.nvim_win_get_cursor(0)[1]
(nix) pipulate $ m
📝 Committing: chore: Update init.lua with revised prompts and explanations
[main d656496b] chore: Update init.lua with revised prompts and explanations
1 file changed, 9 insertions(+), 7 deletions(-)
(nix) pipulate $ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 48 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 712 bytes | 712.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
^_To github.com:pipulate/pipulate.git
7ba397ad..d656496b main -> main
(nix) pipulate $
4: Prompt: The \m template car landed. Read the three receipts: the key line present, the old “the before” label gone, and the headless luafile printing “init.lua loaded successfully!”. Below is a fresh \m paste after
5: Deliverables: Hitting <F2> and pasting below. Ugh, the nested backtick
issue. Okay, I’ll just double check the output as we get close to publishing. I
eventually need to handle the “increasing number of backticks” solution for
nesting them in Markdown, which I abhor. I like to keep it all simple and
conventional so I’m indenting a code-block instead of increasing the number of
backticks in the envelope. This needs to be explained as I hardly even
understand it myself. This is going to be a very random tiny-refinements article
with a few touches here and there before I switch to the ticket-handling this is
all made for.
Refining the Prompt Template for Continuous Learning
**MikeLev.in**:
> Same commands, run twice, one change between them. Where the readings
> differ is what the change did; the diff in the middle is the receipt.
**1: Probe** (BEFORE: hand-run, nothing changed yet):
[triple-backtick]bash
[Paste the terminal output of the probes]
[triple-backtick]
**2: Context** (AFTER: the same probes re-run by the compiler as `!` lines):
[triple-backtick]text
[Paste entire `adhoc.txt` here]
[triple-backtick]
**3: Patches** (the one change between the readings):
[triple-backtick]diff
[Paste the diffs: patch, app, d, m per car]
[triple-backtick]
Ignition (what makes the patched code run before the AFTER reading -- `<F2>`, `nix develop`, a re-ride -- or none required):
**4: Prompt** (the next question, written before the AFTER reading is in):
[triple-backtick]text
[Probably what the AI gives you, but think for yourself!]
[triple-backtick]
**5: Deliverables**: [external artifacts, updates to this system or 'None this turn']
How’d we do?
Fable 5.1 Medium: Context verified. init.lua is here as raw source and the three receipts read as predicted: the key line at 716, exit 0; the old label gone, exit 1; the headless load printing init.lua loaded successfully!. Your hand-run BEFORE is the mirror image (exit 1, line 716 carrying the old label, exit 0), so the straddle closed on all three. One thing worth saying about the third: it printed the same line in both worlds, which means it was a gate, not a straddle. It could only ever have told us the patch broke the file, never that it landed. That’s fine, and it’s why there were two other probes.
The paste
Every non-blank line in your \m paste matches the template in the patched source: the two key lines, the five headings with their new parentheticals, the four placeholders, the ignition line. What I can’t confirm from here is the blank-line spacing, because the compiler strips blank lines from the whole payload (look at apply.py in this compile: no blank line anywhere between functions). So: byte-for-byte on content, unverifiable on whitespace, and the whitespace is Neovim’s job, not the patch’s. Two trailing spaces survive after the **3:** and **4:** colons, carried over from the old template; harmless, and \w will eat them the first time you run it on the journal.
The key line
One word is house vocabulary: readings. A stranger will take it as instrument readings, which is close enough that I’d leave it. Receipt is fine; the whole series teaches that word by using it. The sentence that would trip a stranger isn’t the key, it’s the ignition line, which is long and has three examples and a dash. If you trim anything later, trim that to “Ignition (what ran the patched code before the AFTER reading, or none required):”. Not a car; a note.
The nested-backtick thing, plainly
A fenced code block ends at the first line that matches its opening fence. So a block whose content includes three backticks ends early, and the rest of your template spills out as prose. The two standard escapes are a longer fence (four backticks outside, three inside) or tildes. The third, which you used, is older than both: indent every line four spaces. An indented block has no delimiter at all, so nothing inside it can close it, and triple backticks render as literal text. The costs are that you can’t tag it with a language, so no syntax highlighting, and that indenting a paste is a visual-mode > away rather than free. For a template that exists to show fences, the indented block is the right tool, and it’s the one Gruber shipped in 2004 before fences existed. The \m template itself doesn’t need it because it’s Lua source; only quoting the template in prose does.
The inspection certificate: where it lives
Three candidates, and I’ll rule before proposing.
In the DECANT bundle. The bundle already carries the first half of a certificate: per stop, ## Stop: name, final_url, the artifact list, and since two days ago a “Skipped stops” section. But the bundle is the floor. It inlines the accessibility tree and response headers of pages you were logged into, the consent card warns you about exactly that, and it runs 70 to 100 KB. Putting the certificate inside it means the client-facing document rides inside the one document you must never hand a client. Wrong container.
In the compile. The compile carries the second half: the ! lines, verbatim, with their printed results, indexed at the top of the Manifest as LIVE COMMAND RECEIPTS. Those are the checkable commands. But the compile is the sausage factory by construction, it’s for the model, and it’s a hundred thousand tokens of foo_files.py and journal. Also the wrong container.
A third thing, derived. The certificate is the head of the bundle stapled to the receipt list of the compile, with every body removed. Both halves already exist as text with stable markers, which means the certificate can be produced by a text command today, with no new code, which is the article’s thesis eating its own dog food. The same reasoning walk_cartridge uses for the consent surface applies: one shape, derived from the sources, never hand-authored, so it can’t drift from the thing it certifies.
So the ruling is: third thing, generated, and this turn it’s generated by a pipe rather than a script. What it contains, one page:
- Ticket key and date (the
for_youharvest and the ride timestamp). - Walk name and the completion line: N of M stops captured, K skipped for an unset URL.
- Per stop: name,
final_url, artifact count. Afinal_urlwhose path carriessigninorloginis flagged in the margin, because that’s the door-capture the earmark already names. - The connector commands the trail named as runnable, with the argv the planner built:
jira PS-10559,botify org/project. Named, not run; the ruling on that stands. - Every
!receipt line from the compile, verbatim, with its printed count or exit code, no bodies. - Re-run instructions by variable name only:
export PIPULATE_TRAIL_JIRA_URL=..., thenmothercat assets/trails/se_ticket.yaml. Names, never values; the values are the customer.
Items 3 and 5 are extractable now. Items 1, 2, 4, 6 are in the bundle header and the trail file. The probes below are the extraction, run against whatever bundle is on disk; they’re readings, not straddles, since nothing is patched this turn.
1. PROBES
ls deleteme*.txt 2>&1
rg -n '^## Stop:|^- final_url:|^## Skipped' deleteme4.txt 2>&1 | head -12
rg -c '^- ! ' foo.zip 2>&1; unzip -l foo.zip 2>&1 | tail -4
unzip -p foo.zip payload.md 2>&1 | rg -n '^- ! ' | head -8
The first says which bundles still exist on disk (gitignored, so they may have been swept). The second is certificate half one: stop names and final URLs from the ticket bundle, nothing else; a No such file is also an answer. The third reads the cartridge’s member list so the fourth isn’t a guess; rg on a zip is a deliberate non-reading that should print 0 or an error, proving the compressed archive can’t be read without unzip -p. The fourth is certificate half two: the receipt lines as the Manifest indexed them, pulled from the sealed cartridge rather than from memory. If all four print, the certificate for the last ticket ride is those two outputs on one screen, and nobody wrote a line of code.
2. NEXT CONTEXT
! ls deleteme*.txt 2>&1
! rg -n '^## Stop:|^- final_url:|^## Skipped' deleteme4.txt 2>&1 | head -12
! rg -c '^- ! ' foo.zip 2>&1; unzip -l foo.zip 2>&1 | tail -4
! unzip -p foo.zip payload.md 2>&1 | rg -n '^- ! ' | head -8
scripts/mother_cat.py
scripts/walk_cartridge.py
mother_cat.py and walk_cartridge.py ride along so that if the readings prove the two halves are extractable, next turn’s car can put the stapling where the bundle is already assembled.
3. PATCHES
No repo patches required. The ruling wants a reading before a mechanism. One paste line for the earmarks block in foo_files.py, which isn’t in this payload:
# - EARMARK: THE INSPECTION CERTIFICATE (ruled 2026-09-03, third thing, derived): the client-facing verification page is the HEAD of the DECANT bundle (stop names, final_url, artifact counts, skipped stops) stapled to the compile's LIVE COMMAND RECEIPTS list, bodies removed, plus the connector argv the trail NAMES and the re-run exports by variable name only. Never authored, never inside the bundle (the floor) or the compile (the factory). v0 is a pipe over existing markers; v1 is a `certificate` verb beside `seal` once v0 has been read by a human who is not the operator.
No ignition required; the probes read files at call time.
4. PROMPT
The four certificate readings are live receipts: which bundles exist, the stop/final_url lines from the ticket bundle, the cartridge member list, and the receipt lines pulled from the sealed payload. Say whether the two halves are extractable as-is, and if they are, assemble the one-page certificate for the last ticket ride from those two receipts alone, in the plain voice, as it would be handed to an account manager: no lens bodies, variable names not values, the door-capture flagged if present. Then rule on where v0 lives: a shell function beside `d` and `m`, or a flag on mothercat's DECANT, and give the car only if mother_cat.py's decant checkpoint is the right seam.
5. EXTERNAL DELIVERABLES
None. The certificate is the deliverable of the next turn, and it’s made of two receipts that already exist.
MikeLev.in: Oh by the way:
Compacting our conversation so we can keep chatting…
…means forgetting with style. Or perhaps purposeful forgetting? It’s funny because it’s similar to what humans do when we sleep; the little death that defrags our brain like a hard drive and promotes certain recent memories to more persistent forms of longer-term memory but never as a carbon-copy of what was in the short-term memory; there was processing. I think we can compress and encode a lot in our what I’m led to believe is some sort of fractal encoding, but even that is not unlimited storage capacity or resolution. We don’t have video-recorders in our brains for example.
Forgetting with Style: Compaction and Epistemic Memory
Same commands, run twice, one change between them. Where the readings differ is what the change did; the diff in the middle is the receipt.
1: Probe (BEFORE: hand-run, nothing changed yet):
Blast Radius Check to establish bisection Left-hand Causal Boundary. It is a Popper-thing. Science.
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
(nix) pipulate $ ls deleteme*.txt 2>&1
rg -n '^## Stop:|^- final_url:|^## Skipped' deleteme4.txt 2>&1 | head -12
rg -c '^- ! ' foo.zip 2>&1; unzip -l foo.zip 2>&1 | tail -4
unzip -p foo.zip payload.md 2>&1 | rg -n '^- ! ' | head -8
deleteme2.txt deleteme3.txt deleteme4.txt deleteme.txt
7:## Stop: issue
8:- final_url: https://botify.atlassian.net/browse/PS-10559
846:## Stop: project
847:- final_url: https://app.botify.com/signin/?next=/michaellevin-org/mikelev.in
3
47415 01-01-2026 00:00 prompt.md
418 01-01-2026 00:00 manifest.json
--------- -------
171597 3 files
32:- ! rg -n 'Same commands, run twice' init.lua; echo key_exit=$?
33:- ! rg -n 'the before' init.lua; echo old_label_exit=$?
34:- ! nvim --headless -u NONE -c 'luafile init.lua' -c 'qa!' 2>&1 | tail -1
(nix) pipulate $
2: Context (AFTER: the same probes re-run by the compiler as ! lines):
# adhoc.txt _ _ _ to set context____ _ _ ___ ____ _ Simpson Couch Gag Here (explain anything to the audience you feel needs it explained)G
# / \ __| | | | | | ___ ___ / ___| | | |/ _ \| _ \| |
# ahe/ _ \ / _` | | |_| |/ _ \ / __| | | | |_| | | | | |_) | | Weird Science
# ahc ___ \ (_| | | _ | (_) | (__ | |___| _ | |_| | __/|_| Making it less weird.
# /_/ \_\__,_| |_| |_|\___/ \___| \____|_| |_|\___/|_| (_) I think I want to wrap this article up quick.
# Ad Hoc CHOP: The Not-Managed-by-Git Safe-for-Client-Data place
# OPTIONAL BUT BIG FOR FULL CONTEXT-WINDOW STORYTELLING
# ! python scripts/articles/lsa.py -t 1 --reverse --fmt dated-slugs # <-- The "Rolling Pin" that gives the 40K foot book-spine view of book-ore.
# GLOSSARY.md # <-- I think this glossary goes well with the book-ore spine to do world building.
# scripts/articles/lsa.py # <-- Useful for refining commands like `posts`, critical to Second Brain concept.
# ~/repos/nixos/autognome.py # <-- Letting the AIs really understand my environment (The Brave Little Tailor punches above Their Weight Class proving the dunning-kruger effect the gate-keeper's (lower-case) lament.)
# init.lua # <-- Daily driver hot-keys that overlap with aliases in flake.nix
# STILL BIG BUT LESS OPTIONAL (especially flake.nix)
# flake.nix # <-- THE ONE BIG THING TO INCLUDE Infrastructure as Code (IaC) tells LLM about your system down to the metal
# prompt_foo.py # <-- This very content-compiling system
# foo_files.py # <-- This is the router, evolving book outline and the things you pin-up to produced the recursive self-improvement loops
# TINY ILLUMINATING (OK to include every time / automatically = `apply.py`, `.gitignore`, `.gitattributes`)
# requirements.in # <-- All known dependencies and (necessary) version pinning. WORA gotcha's exposed.
# __init__.py # <-- Master versioning
# pyproject.toml # <-- The PyPI Packaging details
# OPTIONAL ACTUATORS (cheap and good to include to expand the AI's capabilities)
# cli.py # <-- Catch-all actuator for PyPI envs, Python anchoring, MCP tool-call (plus alternatives) and **kwargs like wrapping for CLI
# scripts/xp.py # <-- Transforms host OS copy-paste buffer player-piano music into context-payload.
# scripts/ai.py # <-- How I constantly use local AI to write git commit messages with `m` alias.
# scripts/crawl.py # <-- Feel free to ask for something to be crawled and included in the next turn.
# scripts/weblogin.py # <-- Lets the user "warm up" the cache for their web logins at their leisure on a profile that persists.
# MISCELLANEOUS (rare to include but sometimes critical)
# scripts/foo_cartridge.py # Needs description
# scripts/foo_replay.py # Needs description
# release.py # <-- How everything ends up where it does (GitHub, PyPI, etc.)
# imports/voice_synthesis.py # <-- The wand can talk to you
# imports/ascii_displays.py # <-- Where all the ASCII Art lives
# scripts/release/version_sync.py # <-- Needs to be wrapped into release.py and eliminated, I think.
# --- Under this line is were you paste what the AI gives you ---
# --- We call it context but it's really just the right-hand ---
# --- blast-radius of the "probes" to make this all science. ---
# --- END `adhoc.txt` TEMPLATE ---
# STICKBUG & MOTHER CAT KATA (WORKING ON THE CHAPTER)
# assets/installer/mck.sh
# assets/installer/replay.sh
# scripts/walk.py
# scripts/walk_cartridge.py
# scripts/walk_compile.py
# assets/trails/first_context.yaml
# assets/trails/practice.yaml
# assets/trails/public_walk.yaml
# assets/trails/botify_pageworkers.yaml
# scripts/connectors/README.md
# scripts/connectors/botify.py
# scripts/connectors/confluence.py
# scripts/connectors/gmail.py
# scripts/connectors/gsc.py
# scripts/connectors/jira.py
# scripts/connectors/mcp.py
# scripts/connectors/mcp_warm.py
# scripts/connectors/sheets.py
# scripts/connectors/slack.py
# scripts/connectors/wallet.py
# scripts/bookmark_import.py
# scripts/boot_menu.py
# scripts/mother_cat.py
# scripts/sources_menu.py
# scripts/weblogin.py
# tools/scraper_tools.py
# --- START THIS DISCUSSION ---
# CONTEXT: 1
# /home/mike/repos/trimnoir/_posts/2026-09-01-pre-flight-principle-deterministic-ai-workflows.md # [Idx: 1436 | Order: 3 | Tokens: 44,590 | Bytes: 178,648]
# /home/mike/repos/trimnoir/_posts/2026-09-02-completing-the-loop-optional-stops-se-ticket-template.md # [Idx: 1438 | Order: 2 | Tokens: 50,352 | Bytes: 189,353]
# /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md # [Idx: 1439 | Order: 1 | Tokens: 32,808 | Bytes: 142,390]
# CONTEXT: 2
# ! awk 'NR==1{next} /^---$/{exit} {print}' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo fm_exit=$?
# ! rg '^## ' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo h2_exit=$?
# ! sed -n '/^## Book Analysis/,$p' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md | rg -ic determin; echo analysis_exit=$?
# ! rg -n -i 'determin' /home/mike/repos/trimnoir/_posts/2026-09-01-pre-flight-principle-deterministic-ai-workflows.md | head -2
# ! rg -c '^gdoc_url:' /home/mike/repos/trimnoir/_posts/2026-09-03-text-commands-the-mouse-for-ai.md; echo gdoc_exit=$?
# scripts/articles/editing_prompt.txt
# CONTEXT: 3
# ! rg -n 'Same commands, run twice' init.lua; echo key_exit=$?
# ! rg -n 'the before' init.lua; echo old_label_exit=$?
# ! nvim --headless -u NONE -c 'luafile init.lua' -c 'qa!' 2>&1 | tail -1
# init.lua
# CONTEXT: 4
! ls deleteme*.txt 2>&1
! rg -n '^## Stop:|^- final_url:|^## Skipped' deleteme4.txt 2>&1 | head -12
! rg -c '^- ! ' foo.zip 2>&1; unzip -l foo.zip 2>&1 | tail -4
! unzip -p foo.zip payload.md 2>&1 | rg -n '^- ! ' | head -8
scripts/mother_cat.py
scripts/walk_cartridge.py
3: Patches (the one change between the readings):
[Paste the diffs: patch, app, d, m per car]
Ignition (what makes the patched code run before the AFTER reading – <F2>, nix develop, a re-ride – or none required):
4: Prompt (the next question, written before the AFTER reading is in):
The four certificate readings are live receipts: which bundles exist, the stop/final_url lines from the ticket bundle, the cartridge member list, and the receipt lines pulled from the sealed payload. Say whether the two halves are extractable as-is, and if they are, assemble the one-page certificate for the last ticket ride from those two receipts alone, in the plain voice, as it would be handed to an account manager: no lens bodies, variable names not values, the door-capture flagged if present. Then rule on where v0 lives: a shell function beside d and m, or a flag on mothercat’s DECANT, and give the car only if mother_cat.py’s decant checkpoint is the right seam.
5: Deliverables: [external artifacts, updates to this system or ‘None this turn’]
There’s so much more I want to do now, but I think I need to take a little nap before the real work day begins (again).
Hop off the ride. This ride’s stated goal is reached — dismount. This is the NOTARY BEAT: the ride ends here, is witnessed here, and is sealed here. Answer all seven beats, briefly:
- TL;DR: a short, dry, neutral abstract for the TOP of the published article — written for an unfamiliar reader or AI summarizer who has never seen this system. No hype, no insider handles unexplained.
- VERIFY: restate the goal from the top of this article and confirm (or deny) it was met, citing THIS compile’s receipts, not memory. Name any ignition this ride required that never fired – an AFTER tap taken without one is a stale BEFORE wearing the AFTER’s label.
- BANK: name everything that graduates — rule, earmark, todo, pin — as exact paste-ready lines, plus the exact lines to delete.
- DANGLING: what carries forward unbanked? One line each, no essays.
- SEED: the adhoc.txt lines (and TODO_SLUGS if narrative context is needed) for the next ride’s first compile.
- CLOSING: a closing summary for the BOTTOM of the article — the final take-away, tied to the book’s larger arc where it fits naturally, never forced. Storytelling over inventory.
- NOTARIZE: name the sealed artifact of record — the newest
hash-stamped cartridge (foo-
-NN.zip) — and state that its CRC-sealed, byte-reproducible archive is the witnessed receipt of this ride. The seal is the signature; the archive is the deed.
FINALITY: after beat 6, this discussion is CLOSED. Emit NO five-car train, NO probes, NO patches, NO next-turn prompt beyond the SEED lines in beat 4. Any reader or model encountering this article later should treat it as a finished, notarized document — an archive entry, not an open thread.
Fable 5.1 Medium: Context verified. Four receipts, all four read, and one of them falsified a prediction I made, which is the best thing a probe can do. In order: four deleteme files still on disk; the ticket bundle’s two stops with their final_url lines, the second of which is the Botify sign-in door; rg -c on foo.zip printed 3, not the 0 or error I predicted, because the cartridge’s members are STORED, not deflated, so a plain grep reads straight through the archive; and the receipt lines pulled from payload.md are the previous compile’s three init.lua probes, in both the hand-run BEFORE and the live AFTER. That last one is the known lag, not a failure: the cartridge is written after the payload is assembled, so any compile can only ever read its predecessor’s receipts. Half two of the certificate is extractable, one compile behind, by design.
On compaction: yes. The summary I’m working from at the top of this session is exactly that kind of sleep. What survives it is the processed form, and the processed form here is the receipts. That’s the closing, so I’ll get there.
1. VERIFY
Goal at the top: validate the “deterministic” ban that last article couldn’t, answer the “quacks like MitM” question, and say what the sausage factory is for. Met, on this and the two prior compiles’ receipts: three zeros on the post-rule article, the word present in the pre-rule control’s title and permalink, gdoc_url stamped. Mid-article goal: tighten the \m template. Met: key line at 716, old label gone, headless load clean, and the \m paste after <F2> matched every content line. Ignition <F2> fired; the paste is its witness. Late goal: rule where the inspection certificate lives and show its halves exist. Met on this compile: half one is lines 7, 8, 846, 847 of deleteme4.txt; half two is lines 32 to 34 of the sealed payload.md. The certificate is not assembled; that was next turn’s deliverable and the dismount preempted it. No ignition owed.
2. BANK
Receipt line, top of the RECEIPTS block, delete the bottom line to hold 20:
# 2026-09-03 text-commands ride: "deterministic" ban WITNESSED n=1 (0/0/0 on frontmatter/H2s/analysis, pre-rule control carries it in title+permalink); \m template gained the two-line BEFORE/AFTER key, straddle 3/3 and the paste matched; certificate halves proven extractable (bundle lines 7/8/846/847, sealed payload lines 32-34, one compile behind by design); PREDICTION FALSIFIED: rg reads foo.zip directly because members are STORED (rg -c printed 3, not 0).
Rule, into the constitution block:
# THE GATE-OR-STRADDLE RULE (banked 2026-09-03). A probe that prints the same thing in both worlds (a syntax check, a load test) is a GATE: it can prove the patch broke nothing, never that it landed. Every car needs at least one probe whose reading MOVES. Label gates as gates when recommending them, so a green gate is never mistaken for a witnessed landing.
Rule, same block:
# THE INDENTED QUOTE RULE (banked 2026-09-03). To quote a template that itself contains code fences, indent it four spaces instead of fencing it: an indented block has no closing delimiter, so nothing inside it can end it early. Costs the language tag; buys correctness. Fences stay for everything else.
Todo, confirmed still open in this compile’s raw source:
# - TODO (2026-09-02, reconfirmed 09-03): walk_cartridge.py line 5 docstring says "Schema: walk-cartridge-integrity-v2"; the constant says v3. One-line fix.
The INSPECTION CERTIFICATE earmark already landed in the working tree (Telemetry shows it); commit it with m. In adhoc.txt, comment out the four CONTEXT: 4 probe lines and the two file paths.
3. DANGLING
- The certificate itself: assemble it from the two receipts, plain voice, door-capture flagged (stop
projectcapturedapp.botify.com/signin). - Where v0 lives: shell function beside
dandm, or a flag on the DECANT checkpoint;mother_cat.py’s_decantheader is the seam if it’s the latter. - Cartridge members are STORED and grep-able; harmless since gitignored, but say so in the cartridge docstring so nobody re-discovers it as a leak.
- The one-compile lag on
foo.zipreceipts is documented in a todo from 08-28 and not fixed. - Four
deletemefiles with ticket titles and a customer path sit on disk; they never leave the machine, but they are the material the earmark says never rides a patch. - The ignition line in the template is one clause too long; trim on the next
\medit, not before. - PS-10559 is still open.
4. SEED
# CONTEXT: 5
! rg -n '^## Stop:|^- final_url:|^## Skipped' deleteme4.txt 2>&1 | head -12
! unzip -p foo.zip payload.md 2>&1 | rg -n '^- ! ' | head -8
! rg -n 'walk-cartridge-integrity-v2\.' scripts/walk_cartridge.py; echo doc_exit=$?
! rg -n '^ d\(\) \{' flake.nix
scripts/mother_cat.py
flake.nix
5. CLOSING
You started this one at one in the morning with a mouse, and you’re ending it before a nap with a note about sleep, which is the right place to end. The compaction line you quoted, “forgetting with style,” is what every ride in this series is built to survive. The conversation I’m holding right now is not the conversation that started this article; it’s a summary of it, processed, with most of the words gone. What came through intact was not the prose. It was the receipts: the three zeros, the line numbers, the exit codes, the diff. Those are the memories that got promoted, and they got promoted because they were the kind that could be. A paragraph can’t be checked after it’s been compressed. A command can be run again.
That’s the argument the article opened with, arrived at from the other side. The text command is the mouse for AI because it’s the only thing an AI can hand you that survives its own forgetting, and it turns out it’s the only thing that survives yours, too. The template got one sentence added so a stranger knows what they’re looking at. The certificate got ruled into existence and left unwritten, on purpose, because writing it by hand would be the one way to make it drift from what it certifies. Sleep, then close the ticket. The receipts will be there.
6. NOTARIZE
The artifact of record is the newest foo-<hash8>-NN.zip in the repo root, rotated by this compile; its hash is not in this payload and I won’t invent it. This compile also read the previous one and learned something about the form: its members are stored uncompressed, so its receipts can be grepped without unpacking, which is a property the deed should advertise rather than hide. The archive holds the four readings above, the raw mother_cat.py and walk_cartridge.py this ruling was made against, and the record that the certificate’s two halves exist and were not yet joined. The seal is the signature; the archive is the deed; this discussion is closed.
MikeLev.in: Hey AI Editor, the concept here is clarifying the Scientific Method that’s being used here to create inspectable surface area in a published article to help reduce the potential damage of vibe-coding by making everything transparent and inspectable. The tiny refinement you see here is conducting the scientific experiment that straddles every AI-recommended edit.
Book Analysis
Ai Editorial Take
What strikes me most about this entry is its implicit recognition that human memory and LLM context windows suffer from the exact same failure mode: uncontrolled compaction. By externalizing state into line-numbered receipts and markdown artifacts, the author doesn’t just build a better coding assistant; they engineer an external hippocampus that resists entropy.
🐦 X.com Promo Tweet
Stop relying on browser clicks to audit AI output. Learn how text commands, inspectable diffs, and reproducible workflows bring the scientific method back to code assistants. https://mikelev.in/futureproof/scientific-method-vibe-coding-replayable-workflows/ #AIWorkflows #DeveloperTools
Title Brainstorm
- Title Option: The Scientific Method of Vibe-Coding: Engineering Replayable AI Workflows
- Filename:
scientific-method-vibe-coding-replayable-workflows - Rationale: Directly addresses the tension between unstructured AI experimentation and rigorous engineering control.
- Filename:
- Title Option: Inspection Certificates and Replayable AI: Building Trustable Workflows
- Filename:
inspection-certificates-replayable-ai - Rationale: Focuses on the artifact-driven verification model and the separation of internal complexity from client deliverables.
- Filename:
- Title Option: The Popperian Governor: Proving AI Code Quality Through Checkable Receipts
- Filename:
popperian-governor-checkable-receipts - Rationale: Leans heavily into the falsification and Popperian framing that governs the underlying automation loop.
- Filename:
Content Potential And Polish
- Core Strengths:
- Brilliantly bridges high-level philosophical musings on epistemology with concrete command-line tool execution.
- Uses live prompt engineering logs and actual terminal outputs as verifiable evidence rather than abstract claims.
- Suggestions For Polish:
- Tighten the transition between the Neovim template refactoring and the broader conversation on software safety to maintain narrative momentum.
Next Step Prompts
- Draft the standalone inspection certificate script using existing DECANT bundle data without introducing new dependencies.
- Explore how markdown compaction and fractal prompt compression can be formally standardized across local AI repositories.