The crew
Six sessions on one server. One does the work, one checks it, one keeps the list moving. None of them is in charge of the others.
SlaukoKit · Engineering publication
I'm one person with a rented server, a laptop, and a small crew of AI sessions that help me write software. They take a job off a list, do the work, check each other, run the tests, and ship it. I decide what gets built, and I say yes to anything that leaves the building.
Six sessions on one server. One does the work, one checks it, one keeps the list moving. None of them is in charge of the others.
Point it at a program and it says what's inside. Point it at a running one and it says what's happening right now.
Neither half trusts a green light it can't explain. Almost every fix in this repository started with something that looked fine and wasn't.
How the work gets done while I'm asleep.
I put a job on a list. A session picks it up, builds it, a second session checks it, my machines run the tests, and it ships. Every step leaves a receipt, and the receipts are the point: a job can go wrong in about forty different ways, and I want to find out which one happened from the outside, without asking anybody anything.
┌──────────────────────────────────────────────────────────────────────┐
│ the list │
│ │
│ a job: what it is · why it matters · how big · who has it │
│ states: open · claimed · proposed · checked · done │
│ │
│ the only place that knows what is happening right now │
└──────────────────────────────────────────────────────────────────────┘
│
│ one job at a time
▼
┌──────────────────────────────────────────────────────────────────────┐
│ the boss │
│ │
│ reads the list · hands out work · keeps the order │
│ notices a claim that nobody is holding │
└──────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ a worker │
│ │
│ claims it ......... public, so a session that died is visible │
│ copies the code ... its own tree, nothing shared with whoever │
│ works next │
│ builds it ......... writes the change │
│ proves it ......... runs the checks itself, first │
│ hands it over ..... proposes the change │
│ writes back ....... what happened, what is still open │
└──────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ a proposed change │
└──────────────────────────────────────────────────────────────────────┘
│ │
▼ ▼
┌────────────────────────────────┐ ┌────────────────────────────────┐
│ a checker │ │ my own machines │
│ │ │ │
│ a different session │ │ six runners on one │
│ did not write it │ │ server, every check a │
│ same rules, cold eyes │ │ person would run: a │
│ started the moment │ │ shell lint, every unit │
│ the claim was made │ │ file rendered and │
│ │ │ checked, a dependency │
│ it can say no │ │ audit │
│ │ │ │
│ │ │ a failure here is real │
└────────────────────────────────┘ └────────────────────────────────┘
│ │
└──────────────┬───────────────────┘
▼
┌──────────────────────────────────────────────────────────────────────┐
│ it goes in │
└──────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ a release, signed │
│ │
│ one publisher per channel · a bad copy cannot replace a good │
│ one · the version you run is the version I built │
└──────────────────────────────────────────────────────────────────────┘
══════════════════════════════════════════════════════════════════════
two rules hold all of that together
the gate the lock
anything that touches anything that touches the machine
the outside world
one lock for the whole box,
prepare the change whoever holds it finishes first,
build a preview the next one waits,
I read it and say yes nothing interleaves,
only then it happens nothing half-done stays half-done
the receipt is kept, with an ID
no answer in ten minutes
means nothing happens
══════════════════════════════════════════════════════════════════════A job goes in the queue and a session claims it. If a session dies mid-job, that shows up as a claim nobody is holding instead of as silence I have to go looking for.
Every write is a preview I click yes on. The receipt stays afterwards, with an ID, forever.
The checker is a separate session, started the moment the work is claimed, reading the same code with the same rules and none of the same attachment.
Installs, restarts and deploys wait their turn on a single lock, so two sessions cannot trip over each other on the same machine.
The newest part, and it exists because of a bad day: one machine refused 264 jobs in four hours and every refusal looked normal. Now a run of refusals gets counted.
A release is signed, and only one program may publish to a channel. One writer, and no argument about which copy is the real one.
All of this is a self-review by the author, not an audit. The lists above are the honest version, and they get longer, not shorter.
Software that reads other software.
It doesn't know anything about any particular game or program in advance. It learns each one from the inside. That's the whole trick, and it's why the same tool works on something it has never seen before.
five ways in
────────────
a program on disk ......... a Windows .exe, a Linux binary
a running program ......... read through the system, nothing touched
a memory dump ............. a snapshot someone saved
a game archive ............ the game's own boxes: .pak, .utoc, .vpk
a raw block of bytes ...... anything else you hand it
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ one map │
│ │
│ every byte gets an address on that map, and every part of the │
│ tool below asks the same question of the same map │
└──────────────────────────────────────────────────────────────────────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ shape │ │ search │ │ the code │ │ names │ │ running │
│ │ │ │ │ │ │ │ │ │
│ what is │ │ patterns │ │ which │ │ classes │ │ memory │
│ packed, │ │ strings │ │ bytes are │ │ fields │ │ │
│ what is │ │ pointers │ │ functions │ │ offsets │ │ health │
│ hidden, │ │ xrefs │ │ and which │ │ read from │ │ target │
│ what is │ │ calls │ │ one is │ │ its own │ │ loot │
│ locked │ │ │ │ which │ │ catalogue │ │ cooldowns │
│ │ │ │ │ │ │ │ │ auras │
│ │ │ │ │ │ │ │ │ casts │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
all five feed the same index
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ one searchable index │
│ │
│ every symbol, string, function and reference in one place │
│ ask a question, blink back │
└──────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ the answer you wanted │
│ │
│ "this number lives here" │
│ "the update moved it there" │
│ "this class has these fields, at these offsets" │
└──────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ the program that uses it │
│ │
│ for me: the game, for fun │
└──────────────────────────────────────────────────────────────────────┘This is where I actually spend my time, and it's a different kind of work from reading a file. A game updates, and everything the toolbox learned about it turns into a guess overnight.
┌────────────────────────────────┐ ┌────────────────────────────────┐
│ the old build │ │ the new build │
│ │ │ │
│ what it looked like │ │ what it looks like │
│ last time │ │ now │
│ │ │ │
│ names, offsets, │ │ the same questions, │
│ functions, all │ │ no memory of the │
│ written down │ │ old answers │
└────────────────────────────────┘ │ │
└────────────────────────────────┘
│ │
└────────────────┬───────────────────┘
▼
┌──────────────────────────────────────────────────────────────────────┐
│ compare │
│ │
│ which functions are unchanged · which ones moved │
│ which ones are gone · which ones are new │
└──────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ re-derive what moved │
│ │
│ the tool learns the new build from the inside, exactly like │
│ the first time, and does not lean on the old answers │
└──────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ prove it │
│ │
│ read the value out of the game while it runs, and check it │
│ against something that must be true │
└──────────────────────────────────────────────────────────────────────┘
│ │
▼ ▼
┌────────────────────────────────┐ ┌────────────────────────────────┐
│ it holds │ │ it does not hold │
│ │ │ │
│ the map is updated │ │ say so, loudly, and │
│ and everything │ │ do not hand out a │
│ downstream keeps │ │ number that only │
│ working │ │ looks fine │
└────────────────────────────────┘ └────────────────────────────────┘What's in the file, what's packed, what's encrypted, which parts are real. Like opening up a machine and being able to tell which parts do something.
Read what it currently holds: health, target, the loot on the ground, the cooldown on a skill. Read only. Nothing is poked or written to.
Programs keep a catalogue of their own classes and fields. This finds that catalogue and reads it, so you get real names instead of guesses.
The result is compiled into a small header file, one assertion per field. If the header compiles, the reading was right.
After an update, compare the old version with the new one and see what moved. A fix becomes a diff instead of a hunt.
All of it goes into a searchable index, so asking a question about a program takes a blink instead of a rebuild.
Games keep their content in their own archives, some encrypted, some compressed with odd formats. This unpacks them and then proves the unpacking worked.
When a program changes, the reading breaks loudly instead of quietly handing you a number that looks fine. Being told is the useful part.
Some data is encrypted on disk and only decrypted in memory while the program runs. That's where it gets read.
On a game I play for fun. It reads the game's memory and puts a small map on my screen, shows my cooldowns, and tells me what the boss is about to do.
That's the fun part, and it's also why the toolbox exists at all. A game is a wonderful opponent: it changes every few weeks, it's full of encrypted nonsense, and it never once tells you that you got it wrong. If a tool can survive that, it can survive most things.
Built for one person and shaped like his habits. When it gets better, this page gets a new paragraph instead of a new promise.