Surface
what is presented- The structure as published
- The process as written down
- What the deck promises
- Where the account contradicts itself
- What was inherited, never revisited
Axes is Zyrn’s own assistant module, running on Claude Opus 5. It holds an entire system in mind before it moves anything inside it, takes an ambiguous brief apart along the axes a real problem actually has, works every one of them at once, and returns the artefact rather than a description of the artefact. The site you are reading is one of its outputs.
An axis is two things at once: a direction you can move along, and a direction you can measure along. Every problem that arrives at a firm arrives stated on exactly one of them — the one the person who noticed it happened to be standing on.
Almost nothing is actually wrong on that axis alone. A page that looks correct can be untouchable. A process everyone follows can have no owner. A number that is going up can be going up for the reason that will end it. A brief is a report from one direction. What is actually wrong usually sits in another.
So the module is named for the plural. It opens every direction a claim could live on, works them together, and only then decides what the problem was. That is the whole method, and it is the same method the firm sells — which is why this one is ours and Duk is the one we give away.
One origin. Several directions. All of them open at the same time.
A brief arrives pointed at one thing. Axes does not start work on it. It starts by deciding which axes a claim like that could possibly live on, opens every one of them at once, and only then decides what the question really was. A brief is a report from one direction. What is actually wrong usually sits in another.
The answer is rarely on the axis the brief was pointed at.
A request names the symptom that was noticed, which is a fact about who noticed it rather than about where the problem lives. Opening one axis confirms the framing; opening all six tests it. The two that cost the most to work — access and proof — are reliably the two nobody thinks to commission.
The change itself, not a description of it.
Written at the level of the rule rather than the instance, so it closes the class of problem and not the one example of it — then measured again against the axis that found it, because a change that has not been re-measured is a hypothesis.
Every page, every stylesheet, every module, the doctrine file, and the recorded reason a rule exists — loaded before anything is changed. Most bad edits are locally correct.
CONSTRAINT — IT DOES NOT REASON ABOUT FILES IT HAS NOT OPENEDSplits the request along surface, state, access, motion, proof and risk, and opens all six rather than the one it was pointed at. The axis nobody thinks to commission is reliably the one that pays.
CONSTRAINT — THE REPORTED SYMPTOM IS NOT THE SCOPEWrites into the actual repository, in the style of the code already around it, with the comment that says why. Not a plan for the work, and not a draft to be re-typed by someone else.
CONSTRAINT — OUTPUT IS A COMMIT, NOT A DOCUMENTDrives a real browser, dispatches real touch events, steps every scroll instrument end to end, samples the console and the network on the deployed build rather than the local one.
CONSTRAINT — AN UNMEASURED CHANGE IS A HYPOTHESISIf a figure cannot be counted it does not go on the page. Every statistic on this site is read out of a repository or off a running simulation, and anything unmeasurable prints an em dash instead.
CONSTRAINT — NO PLAUSIBLE CONSTANTSThe firm’s rules live in a file the module reads first and is bound by — one accent per viewport, two typefaces, the shear belongs to the logo. Taste, written down until it is enforceable.
CONSTRAINT — THE HOUSE STYLE IS AN INPUT, NOT A SUGGESTIONThere is no template under this site, no page builder, no component library and no stock. The landing page began as a design document; everything after it — ten more pages, eight scroll instruments, the particle field, the case study, and the verification suite that keeps them honest — was written by the module and reviewed by a person before it shipped.
The two rows worth reading twice are the last two. The field moving behind this text is ninety thousand points integrated on the GPU every frame, and there is no asset behind it: no video, no image sequence, nothing to download. And the whole site builds with nothing — it is files, served.
Every number in this column was counted from the repository at the moment this page was written, not asserted. That is the rule the whole page is built on.
The client case — LuminaSample the screen on a grid and count how many points reach the page rather than an overlay. A screenshot proves layout and nothing else. Something can be laid out perfectly and be completely unreachable, and no capture ever taken of it will say so.
Drive the phone menu with dispatched touches rather than a synthetic click. A synthetic click fires straight at the node and skips hit testing, so it will cheerfully prove that a completely buried control works.
Step every scroll track from 0 to 1 and collect what throws. A page can load perfectly clean and still throw on every frame once someone scrolls to it — that has happened here exactly once, and this check is why it cannot happen twice.
Sample an instrument at twenty-one progress values and report the longest run that changed nothing. That run is precisely what a reader experiences as “I am scrolling and nothing is happening”. One instrument here scored nine of twenty before it was retimed.
Forty-four pixels minimum, on every interactive element, at phone width. The footer mark passed as a link and failed as a target at twenty-one pixels tall.
Every page and every request, checked against the build that is actually live rather than the one on the machine that made it.
Every one of these exists because something got through first. They are not a quality process — they are scar tissue, and that is the only kind of check that reliably survives a deadline.
Axes was built for Zyrn, against Zyrn’s own written doctrine, and it is not a product on a shelf. It is also not the same object as Duk — Duk is the open one, built to work on a client’s operating core and given away. Axes is the one we run in order to build things.
What transfers is the shape rather than the module: something that holds your whole system at once, is bound by rules you wrote down, produces into your own repository, and is not permitted to claim anything it has not measured. Most of the work in getting there is not the model — it is deciding what your firm actually knows, and writing it somewhere a machine can be held to.
If you have a body of work where holding all of it is the hard part, that is the conversation. It runs through the fourth line.