>_ dark-factoryGuides

Build Log

Last updated: September 12, 2026

A plain list of what I built, what broke, and how it got fixed. February 2026 to this week, newest first.

Build, maintenance and course work only. I write this by hand, and the fixes stay honest because the fixes are the reason the course exists. Anything before July 2026 predates the single repo and is reconstructed from notes.

2026-09-11

Course kits refreshed from the hub

Ported the costs rollup, actionable-only escalations and the disputes screen into the Course 2 kits. Added the additional costs data route to Mission Control. One module download rebuilt.

2026-09-11

Weekly course drift check

Added a weekly check for drift between course source, staging and the live site. Covers kit code, download contents and ten tracked lessons. Reports only; fixes stay manual.

2026-09-09

Download checks now read contents

The release check now opens each module download and compares the files inside, instead of the zip bytes. Different machines compress identical files differently, so byte checks flagged all 19 downloads as changed. Now only real content changes show up.

2026-09-08

Three Course 2 modules got clearer

Modules 2, 7 and 11 now teach one worker owning a task, recovery you verify, and reporting kept separate. The wording on Windows file boundaries, key handling, the learning payload and RAG startup is clearer and easier to follow. Downloads rebuilt to match.

2026-09-08

Crypto refunds now spelled out

The refund page now spells out how crypto refunds work: sent by hand to the paying wallet or an address confirmed by email, same asset and network, same token amount, and up to ten business days. The 30-day window applies to both payment methods.

2026-09-08

Fifteen fixes from a full site audit

An audit of the live course and site turned up fifteen items across the lessons, the worker kit and the checkout. All fifteen are fixed and tested: clearer wording on what is included, an accessible payment modal, and statuses that match the kit.

2026-09-08

Mission Control got its own lesson and download

The dashboard material was large enough to stand alone, so it is now a separate bonus lesson instead of a block inside the anti-patterns lesson. It ships with its own download, and the pages that said the bonus module had no files were updated.

2026-09-07

Mission Control now lives in the bonus module

Course 2 teaches the hub dashboard and its smoke test in the bonus module rather than module 1. Module 1 stays on getting the stack running, and the full walkthrough sits with the other deep-dive material for when you want it.

2026-09-05

Rebuilt the Level 2 hub kit

The kit now ships the dashboard split by screen instead of one long file, a cleaner smoke suite, and an embedding size ladder so it tracks the current stack. Vector search got sturdier at the same time: rows with no embedding are handled, so a partly indexed store still returns results.

2026-09-03

Two scheduled jobs became one

The staleness check was its own weekly task. It is one deterministic command, so it now runs inside the daily site routine instead. Due guides surface up to six days sooner, and quiet days still report one line.

2026-09-03

Guides now have an expiry check

Sixteen guides carry facts that go stale, so each one now has a register entry with a re-verification interval, and a script reports what is due. It stays out of the deploy gate: a stale fact is work to schedule, not a broken deploy.

2026-09-02

Sitemap dates now check themselves

Wrote a script that dates each sitemap URL from its page and its scripts, then wired the check into predeploy. A stale date now blocks the deploy. Also deleted four unused files and fixed the scanner's false heading warning.

2026-09-02

www now redirects to the main domain

Both hostnames served the same pages, which splits search signals. A redirect rule at the edge now sends www to the apex with a 301, path and query preserved. It runs before the worker, so static files stay free to serve.

2026-09-02

Cleaning up after the site audit

A technical pass over the whole site: caching rules for static assets, a logo cut from 1.46MB to 5.4KB, a real 404 page, and eleven new cross-links between the guides. All of it went out as one deploy.

2026-09-01

Published the factory's own token numbers

Fifty-four days of cost tracking became a guide: 330 tasks, 3.37 million output tokens, about $265 at API-equivalent rates. Half the days cost nothing, shipping days cost the most, and the agent roster is public for the first time, ReBoot names included.

2026-08-31

The free artifact shipped

Published the spec-template repo as the free, try-able artifact for the Show HN post: the format alone, no paid tool, MIT license. Drafted that post and a second for r/LocalLLaMA. The day left one working habit: check GitHub's own copy of a branch before declaring a push stuck.

2026-08-24

Checkout prices now come from one place

The worker now serves the displayed price and the charged amount from one table. Before, one came from a constant compiled into the payment script and the other from the database, with nothing keeping them in step.

2026-08-23

A ruling about dashes, enforced to zero

I banned em dashes from every surface a reader sees, and the ship gate now enforces the rule mechanically. The full ASCII pass covered 73,030 characters. The gate proved its worth on day one by catching nine strays the sweep itself had introduced.

2026-08-23

An outside tester read the course

Someone outside the project went through Level 1 and filed twenty-two findings, four of them Critical, and all four sat in files a reader hits before they can succeed at anything. Fixed and deployed the same day.

2026-08-22

One download per module

Every module now ships a deterministic zip of exactly what its file panel lists. A numbering fix the next day put two modules' files in the right order on disk.

2026-08-14

The whole product through the gate at once

First time I ran the review gate across the entire live surface in one pass, thirteen lens passes plus a mechanical scan. Forty-nine findings, fifteen of them Critical, and two full runs to clear.

2026-08-13

All 80 lessons reworked in three tiers

I audited all 80 lessons and reworked them in three tiers, so each one now explains why the thing works instead of only what to type. A reader who can follow along can now also fix it when it breaks.

2026-08-12

Shipping the files the course already listed

A parity sweep brought the delivery repo in line with what the course lists: five Module 4 files now ship. The same pass replaced a real value in one Level 2 example file with a placeholder.

2026-08-10

The bonus module becomes a library, and a history scrub

The Level 1 bonus went from a folder of odds and ends to a 71-file library. Packaging it included a privacy pass: the delivery repo's history was rewritten so internal infrastructure details stay internal.

2026-08-09

Security week

A hardening pass in week one: added a content security policy, cut the anonymous database role down to only the privileges it needs, and brought the row-level security state into the migrations so it is reproducible from scratch.

2026-08-08

A verification run earned its keep

Ran the repo assembly script as a check before trusting it, and the check caught it producing 162 files where the live delivery has 189. The script left the shipping path; deliveries now sync from the live source instead.

2026-08-04

Live

Domain registered, site deployed as static assets on a worker, auth wired to email plus three OAuth providers. A same-day full-build test regressed live course content for four minutes; the rollback held, and full builds left the deploy path for good.

2026-07-13

Everything into one repo

The project had lived across two machines and a spread of folders with no single history. I imported the whole workspace into one repository. Everything after this date has a commit behind it; everything before it is reconstructed.

2026-06-30

Five protocols in three days

The worker fleet could do tasks but could not own delivery, so I added five things in three days, starting with a bounded self-repair loop that blocks the agent from editing the test to make it pass.

2026-05-13

Per-project config made explicit

Every knowledge-base call from one machine was returning 401: the project config had no environment block, so the process started with an empty key while the correct global config masked it. Per-project environment is explicit now, machine by machine.

2026-04-04

Retry ceilings and a leaner knowledge base

A three-tries rule went into the agent instructions the day a limitless loop showed why it was needed. Soon after, the knowledge base got leaner: 185 test fixtures and duplicates removed.

2026-03-18

The day the pipeline stopped guessing

Workers now mark tasks for review instead of done, and I approve each one. The change followed five worker bugs of one shared category: I had written client code against a remembered API instead of the real one.

2026-03-02

Migration day

Token costs had passed $3 a day and were climbing. I rebuilt the API on FastAPI with Postgres and pgvector, retired Docker, and kept the same port so nothing downstream noticed. Cost dropped three to four times.

2026-02-21

Four days from nothing to a running stack

Four days to stand up a search API, a vector store, local embeddings, a task board and six worker agents. It ran, and the first optimization target was already visible: 1.4MB session files resent in full on every request.

2026-02

The accident

One request: help me build an autonomous AI system. What I got was four ports, a container that crashed every Tuesday, and then a wipe that took the whole thing. The first rule came out of that: one port, one system. The long version is its own page.