Two days of work on the engine, most of it triggered by what Tim said on the 19th. This is the summary rather than the raw log — the working transcript carried infrastructure detail and personal notes that have no business on a web page.
FerroSpring still holds 2 of its 13 onboarding answers. maxelmagnets holds all 13. The bug that was eating them is genuinely fixed — the difference is simply that nobody has re-entered anything on FerroSpring since.
The ask is one clean run-through of onboarding with Tim, watching it save as it goes in. If it fails again we want to know before Tuesday, not during it. That is test 1 in the maxelmagnets test plan.
One thing to watch for. There are four newer questions — your top three ideas, your last handful of good leads, how much time you can give it, and whether you can supply original material. Until yesterday those could never be saved at all (see below). So if they fail, that is a new fault in freshly-changed code, not Tim's old problem coming back. Worth saying out loud in the room, because it will be heard as “it broke again” otherwise.
Worth understanding, because it explains why they have never once been used.
The screen that submits onboarding builds its payload by hand, field by field — and those four were simply missing from the list. They were collected, written to the browser, and dropped on the floor at submit. The server side was correct the whole time.
So it was never a case of nobody filling them in. The answers could not reach the server at all. Fixed, and the parser has been exercised directly with all four: it now returns 17 stored fields. Still unproven through the actual interface — that is your test 1.
It is the same shape as the fault that cost Tim six onboardings: a hand-maintained list that somebody has to remember to update.
We had been saying the engine has published 302 things unaided. The real figure is 255.
The other 47 were pages built by one of our own site generators and then recorded in the ledger so it matched what was live — real pages, but not the engine acting on its own. It surfaced while checking one of them on maxelmagnets: that site is not even on the list of sites the engine may publish to, so it could not have shipped the page attributed to it.
The review page now excludes them and says that it excludes them. Better found now than in front of everyone on Tuesday.
| Discipline | Pass | Warn | Fail |
|---|---|---|---|
| Technical | 11 | 0 | 0 |
| SEO | 6 | 2 | 1 |
| AI Search | 7 | 5 | 5 |
| Content | 3 | 3 | 2 |
| Social | 3 | 1 | 1 |
| Reach | 0 | 1 | 0 |
| total | 30 | 12 | 9 |
Technical is a clean sweep — that is the half the engine can see and fix by itself. The failures cluster in AI Search and Content, which is exactly where a person has to supply something the engine cannot invent.
The engine can now draw its own findings — a scorecard, a before/after, and a “weakest discipline” card — sized for LinkedIn and X.
The rule they are built on is the interesting part. Every figure has to come from the site's saved record. If a template has no real number to fill, it refuses to render and says why, rather than printing a zero or a blank. Two of the four refused on maxelmagnets: one because nothing has measurably moved yet, the other because there is not enough traffic to say anything honest about the funnel.
Looking at the pictures rather than the exit codes caught three real faults, including a card that announced “1 of 1” because a discipline with a single check wins any contest scored on ratio.
Found while testing the above. Publishing a brand-new file worked; undoing it returned “backup missing” and left the file live. The cause was older and wider than infographics — it applied to any new page too, and most published pages are new.
Fixed: the inverse of creating a file is removing it, whatever kind of file it is. Verified end to end — publish, file appears, roll back, file gone.
These had been running together in conversation:
Both dates were always right. Neither is a mistake.
The engine holds 505 social items: 502 waiting, none ever sent.
But they are not finished posts — they are briefs. A typical one gives the format, the angle, why that angle is honest, a hook, and then a line like “name real customers or real numbers instead of adjectives”, which is an instruction to a person, not copy. So there is nothing to approve and send; somebody has to write from it.
That is worth knowing before Tuesday, because it means we did not fail to ship 502 posts. We built 502 briefs and never wrote from one. The useful next step is small: take one site and about five briefs, have someone write the actual posts, and time it. If the brief saves real effort then the brief is the product. If not, we should stop generating more of them every night.