Site changelog

What has changed on this site, in the order it changed, written from the repository's own history. Each entry carries the short SHA of the commit it describes, so any sentence here can be taken back to the thing it claims to summarise.

It is a plain record and it includes the work I would rather not advertise: a day spent removing fabricated numbers I had put there myself, a wave that fixed features which had never once worked, and four early commits whose output was largely undone the following morning. A change log that only remembers the good waves is a marketing surface in a monospace font.

This record is append-only

Entries are added at the top. An entry is never edited to make it read better after the fact, and it is never removed because the work it describes was later reversed — the reversal becomes its own entry, and both stay.

If an entry turns out to be wrong, a dated correction is appended beneath it and the original stays where it is. The error remains legible. That is the whole mechanism: a record its author can quietly revise carries no information about its author, because a clean history and a well-edited history look identical from the outside.

The same rule governs the pre-registration and methodology records on the receipt pages, and it is stated here before there is anything embarrassing in the record to be tempted by, which is the only time stating it costs nothing.

The record

Newest first. When this page was first written, on 1 August 2026, the repository held 14 substantive commits and 3 merges, and every substantive one was represented. The entries below now cite 64 commits by short SHA, as many as seven in one entry where they were one continuous piece of work, and the log holds many more: this is a human record, and the judgement about what is worth writing down is part of what it records.

2026-09-15

  • 7753f6aRevision dates on every reference page

    Every glossary entry, indicator datasheet, instrument page and tool on this site now tells search engines and answer engines when its source last changed: 147 pages carry a revision date taken from the repository’s own history, as the research notes already did. A page whose source has no recorded change carries none rather than an invented one.

    The same change fixed a quieter fault. Every glossary page described itself twice in its structured data, once in the site’s head and once in the entry’s own template, leaving any reader of that data to fold the two together. It now describes itself once, and a rail fails the build if a page states the same node twice or carries a date that differs from its source’s history.

  • 77834caLinks in lists are underlined again

    A link in this site’s prose is underlined, not only coloured, so it can be told apart from the text around it by more than colour. Three kinds of link had lost that: the related lists at the foot of every glossary entry, the further reading beneath every research note, and the latest research titles on the homepage, which showed their line only on hover. 829 glossary links and 367 research links carry their underline again, and the homepage titles show their line at rest.

    A rail now reads every link in list and paragraph prose across the built site and fails any style that strips its underline, unless that style is listed with its reason, such as a table of contents or a card whose whole surface is the link. Running it against the real build before it shipped caught two faults in the rail itself.

  • 84118c7Every crawler can read every public page

    This site’s robots file refused the site’s prose to three crawler names: OpenAI’s GPTBot, Common Crawl’s CCBot, and Google-Extended, the name Google reads to decide whether its AI models may use a page. At the same time it allowed five other crawlers of the same kind, which made it a file written when two such names were known rather than a decision. Every crawler is now welcome on every public page, whether it indexes pages for search, fetches one to cite in an answer, or reads to build a model; account, checkout and API paths stay closed to all of them alike.

    A rail now fails the build if the robots file refuses any crawler the whole site, or if a group written for one crawler leaves the private paths open to it, which the robots standard would otherwise allow without warning.

  • f574c35The indicator datasheets link the research that examines their claims

    Two ICT datasheets told a reader that the research on their subject was linked from the page, and neither page linked it: each pointed only at the research index. None of the twelve datasheets named the research that examines the claim its objects are taught with. Five now do, each only where a note’s own question is about the object the indicator draws: whether order blocks predict anything on the order block and liquidity pools datasheets, whether a level remembers its history on liquidity pools, the stop-hunt measurement on liquidity sweep, the clock inside volatility labels on the session clock, and why correlated pairs decouple on low timeframes on SMT divergence.

    The other seven say, in a sentence that names each of them, that no research note on this site examines that claim, and every research note lists the datasheets that point at it. No note is said to test an indicator, because the indicators make no claim of their own. Two rails hold this: one keeps the declarations, each datasheet’s links and each note’s list in agreement, and one fails any page whose prose says research is linked from it while it links none.

  • 25fbc97Legends that name what their drawings paint

    A legend’s colour swatch is meant to show a mark exactly as the drawing paints it, so that a legend cannot describe something the chart does not draw. 21 legend rows on the site broke that: 16 used a filled swatch for a candle the drawing leaves hollow, 5 used the accent colour for time windows the drawing paints grey, and one named a rising and a falling candle together. The filled swatch also painted at full strength over a candle body drawn at a little over half. Every row now uses the swatch its mark is drawn with, and a rail compares each row with its drawing’s data and each swatch’s colours with the paint of the mark it names.

    The order block drawings also defined the mean threshold as the midpoint of whichever zone is elected, while the frozen definition, the entry itself and its answers all give the midpoint of the block candle’s body. The drawings now say the same. In both of them the body and the full range share a midpoint, so nothing drawn moved.

  • b9dccd7One site, two names, declared as one

    Titles on this site end in “Hadal” or in “Hadal Instruments”, whichever keeps the title inside the 30 to 60 characters the build allows. That split is deliberate: the longer name on every page would push 19 research titles and all 21 instrument titles past the limit. What was missing was any statement that the two names are one site. The structured data called the site “Hadal” and the company “Hadal Instruments”, neither named the other, and the name a shared link shows was “Hadal” on every page.

    Both records now carry Hadal Instruments as the name and Hadal as its alternate, and a shared link shows the same name. A new rail holds the three together on every page, so the next time they drift the build fails rather than a search engine guessing.

  • df75bdc16e7f43The drawings become images search can index

    Image search does not read a drawing written inline as SVG, so none of the 38 drawings of trading terms on this site could appear there. Each is now also a 1600 by 1000 image, drawn from the same data, shown in the drawing’s place on its page and listed in the image sitemap. The legend beneath each one is unchanged and remains the drawing’s readable form.

    The first palette I drew them in was wrong three ways: it put the accent colour on candles this site draws in stronger grey, drew sweeps grey where the site uses the accent, and washed windows white, which left the macro times drawing nearly blank. The images now take their colours from the same stylesheet rules that paint the legends beside them, and a rail refuses any image drawn from different data, different colours or different bytes than its record states.

  • dcb37e075d315aSeven entries on a Levels step, and ICT stops meaning kill zones

    Seven more ICT entries, in demand order across 17 markets: the new week, new day and opening range gaps; volume imbalance; the central bank dealers range; IPDA; and ICT daily bias. The opens, gaps and ranges a session is measured from now sit together on a Levels step of the taught sequence.

    The same build found a defect that had been live since the kill zones entry was named. The auto-linker and the glossary template took any capitals in parentheses at the end of a term’s name as its abbreviation, so “Kill zones (ICT)” made ICT an abbreviation of kill zones. On 30 live pages the first “ICT” rendered as an abbreviation whose expansion read “Kill zones”, inside a link to that entry, and the words “kill zones” then went unlinked on pages such as macro times. One rule now decides what counts as an abbreviation, that its letters are the initials of words in the term, and a rail checks every abbreviation the build emits against it.

    The first build after that fix still showed 18 mislinked pages, because the build tool had kept earlier renders of pages whose text had not changed. Every build now renders every page from scratch, so what I verify is what a clean build would ship.

  • 252c8202f9d01dbabdcdcThe ICT head pages, deepened and drawn twice

    Nine of the most searched ICT entries were deepened against the pages that rank for them, and each is now longer than those pages’ median by the same measure: order block, fair value gap, smart money concepts, market structure shift, the inverse fair value gap, change of character, kill zones, displacement and the mitigation block. Order block gained the same rule worked in three markets, including the rounding its midpoint needs in quarter-point ticks; kill zones gained local times for eleven places in both of New York’s clock seasons, each converted through the time zone database.

    Five terms gained a second drawing, the bearish or stricter form beside the first, and a term’s drawings now render numbered, each with its own table. A rail holds each drawing to the data it states. The visual pass for this found the inverse fair value gap’s bearish drawing closing inside the band its legend says it closes beneath; that candle now closes beneath it.

2026-09-14

  • ae4b6b3c5564e34b6c55a1dac472db78807The ICT vocabulary as one taught path, and fifteen new entries

    Every ICT page on this site was indexed, and the site ranked in the top ten of none of the 140 result pages pulled across six markets. So the twelve indicator datasheets now carry the words people search for in their titles, ten of the questions searchers ask are answered on the entries they belong to, and the vocabulary became one path: each term at its step, in the order it is taught, with every entry showing the terms beside it, before it and after it. A rail holds every page to that sequence.

    Fifteen entries were added in demand order, from the most searched ICT terms the site did not define: SMT divergence, rejection block, candle range theory, buy-side and sell-side liquidity, and turtle soup; then consequent encroachment, draw on liquidity, the 2022 model and the market maker model; then macro times, weekly profiles, the balanced price range, the propulsion block, the unicorn model and the PD array. Each of the ten measured against its term’s ranking pages is deeper than their median. Every worked example is labelled as constructed and its arithmetic was checked by script, and none states a hit rate.

    Those entries also carried a kind of sentence that described what this site has and has not measured as though it were a fact about the term, true until the day a claims-ledger row computes and false after it. Twenty-three of them now point at the claims ledger, whose verdict column derives from data, and a rail refuses those forms in the glossary.

  • 06db7132f4e1e0825f4f6f433fabFour things an outside audit found that no rail could see

    /products/, the catalogue’s old address and the one most likely to carry old links, answered with a full copy of the instruments page instead of the permanent redirect its rule declares, and /sitemap.xml did the same for the sitemap index. Both now redirect. A rail holds the Worker’s list of such addresses to the built redirect file in both directions, and the live battery asks every declared rule for the answer it declares: 232 of them.

    The image rail’s check on SVG files had never run. Four of its patterns carried a backspace byte where the source reads \b, from the day the rail was written, so every SVG box passed unread. The pull request template carried a bell byte in place of a backtick, and six files began with a byte order mark. A new rail fails the build on any control byte or byte order mark in a tracked text file. And the harness that proves each rail can fail had been reporting a check that crashed as one that failed to fail; it now prints each verdict under its own name.

  • 52b10d785c738e9c788b2e472963e0ffa21f63381974b4530A morning of pointers in front of lists, corrected by the afternoon

    On the morning of 14 September I opened 27 lists with a counted pointer, sentences of the shape “the instrument measures five things, each set out below”, to satisfy a structural audit. Every one told a reader nothing the list did not. One count was wrong, since the Broker Feed Auditor lists six dimensions, and two made claims their pages do not. By the afternoon 26 had been replaced by one sentence each, taken from the same page, and the one on the refunds page was removed because no sentence there met the rule.

    Template lines added that morning were false on some of the pages they rendered on. The glossary’s research block said three notes examined a term when three was only its cap: on 21 of the 44 entries that render it more qualify, eight for slippage, and the block now gives the full count beside the three it lists. Suite names that carry their own article printed “the The Honesty Stack suite” on four instrument pages, in one heading since August. 21 paragraph breaks the pass had placed after a sentence that only set something up moved to where each opening paragraph completes its thought, with no word added or removed.

    A rail now names body prose repeated across three or more pages, so a pass like that morning’s fails the build instead of shipping.

  • 7aa7600a4683534ecddf2f46aba7b9683d6The press page said none of eight downloadable artifacts could be downloaded

    The press page, the one written to tell a journalist what can be verified, filed its downloadable artifacts under what is still to come, while eight research notes each offered a hash-verified download. The line now counts them with the same filter the download button uses, so it cannot say none while one exists, and the publication-state rail learned the word it had missed.

    Three social cards, the images a link shows when it is shared, contradicted the pages they stand for: the licence card still carried a claim about artifacts that the licence page itself had corrected on 23 August, and two cards spoke in a plural voice this site does not use. Each card now carries its page’s own description, word for word. The same afternoon a fix for /sitemap.xml was committed with a message saying it worked, when nothing had checked it and it did not; the next commit moved the rule to where it is read and recorded what the address actually answered. A scripted paragraph split had also swallowed an audit note on the homepage, which was restored byte for byte.

2026-09-13

  • fb1b29aStrict transport security covers every subdomain

    The site’s Strict-Transport-Security header now includes subdomains and asks to be preloaded. It was checked before it was set rather than after: the domain resolves the apex and www and nothing else, both behind the proxy and redirecting to the apex over HTTPS at every hop. Submitting the domain to the browsers’ preload list is a separate act, and I have not made it.

  • ba28757c0f2c31The edge that was real and worth half a pip

    A post-mortem of my engine’s first end-to-end edge hunt, from 12 August, is published as a null result: the edge that was real and worth half a pip. Across 15.5 years and 28 pairs it found structure that is statistically real, with 12 cells surviving a Bonferroni correction, and leans of half a percent to two percent from a coin flip, worth between 0.2 and 4.3 pips gross a walk. None of it is tradable.

    Every figure in the note is transcribed from the engine’s own handover document of that date. It carries no dataset block, because its artifacts sit on the engine’s side and the schema refuses a provenance claim without its artifact, and the note says what weight a stated record can bear. The lesson it names is the handover’s own: an effect size beside every p-value.

  • 2c34ccb2a9e2feThe prop evaluation survivor: pass, breach or expiry, from the rules you type

    The third of the three calculators my engine’s build plan names for this site: the prop evaluation survivor. An evaluation has two exits where risk of ruin has one, so it takes your win rate with the trades it came from, your payoff and stake, and the rules from your own rulebook: the profit target, the drawdown allowance and whether it trails or locks at breakeven, a daily loss limit, trades a day and days available. It simulates 4,000 seeded paths trade by trade and reports pass, breach and expiry across the interval your sample supports.

    On every breached path it records which rule ended the account, the floor or the daily limit, which is the binding barrier the breach research describes, measured rather than argued. It says what it does not model: drawdown that trails intraday equity, which is harsher, so its odds are optimistic for those accounts; consistency rules; minimum days; scaling plans; reset timezones. Nothing about any firm is measured or assumed. The rulebook you type is the fact.

  • 9fddcc61d51733e4af0d9a826809The sample-size check: how many trades before a result means anything

    The second of the three calculators: the sample-size check. From your own trade log it computes the luck horizon, four over the square of the ratio between your mean result per trade and its standard deviation: the record length at which a real edge of that size would typically clear two standard errors. The interval sits on the mean result in R, the quantity that pays, and never on the win rate.

    There are two ways in. Paste the log, which is exact, or give a win rate, payoff and count, which yields a floor and says so. It refuses rather than returning a zero: fewer than 12 results, a series with no spread, or a mean at or below zero. Two faults were caught in a local preview before it shipped: the minifier had glued “the” to “luck horizon”, and both input shapes rendered at once because a layout rule outranked the hidden attribute.

  • c8a4e555361a8aThe three pages search already shows, made to answer what it sends them

    Search Console showed three pages being found for real queries and passed over. Requote sat on the first page for “requote” and “requote meaning”, with 134 impressions and no clicks. Probability of backtest overfitting was found by its own authors’ names. And the note on verifying a track record was shown 160 times for “verified quant track record”. Each now opens with what its searchers came for.

    Requote opens with a plain definition instead of a metaphor, and its three paragraphs stand under their own headings. The overfitting entry now cites the paper by its authors as the Crossref record names them, David Bailey, Jonathan Borwein, Marcos López de Prado and Qiji Jim Zhu, with the SSRN working paper and the September 2016 publication in the Journal of Computational Finance. The track record note separates a platform badge, which is a fact about plumbing, from a record a third party can recompute. No number was added that the site had not already published.

2026-09-12

  • bbe3e27b7f36c3Old addresses redirect again, after a fortnight of answering in place

    From 30 August every page on this site also answered, with the full page and a success code, at its address without the trailing slash, with .html on the end, and at /index.html, instead of redirecting to its one canonical address. The Worker in front of the files had been following those redirects itself, inside the request, so each redirect was answered and never reached a browser or a crawler. The rules were in the file the whole time.

    The Worker now answers those addresses with one permanent redirect to the canonical page, keeps a query string intact, and leaves the waitlist endpoint as it was. The live battery gained three redirect assertions for every page, 17 a page from 14, which is how this stays fixed.

  • 558be1e8146bc9A register for off-site profiles, empty by construction

    The site now has one place, the profiles register in its configuration, from which the Organization record in the structured data draws its list of official profiles elsewhere, and from which the page head draws the reciprocal identity links some platforms use to confirm that a profile and a site belong to each other. Every entry in that register is null. A profile enters it only after it exists, carries content, and has been read back in a browser on a recorded date; a URL without that date is refused at build, and so is anything shaped like a placeholder. With the register empty the change renders nothing, which was checked rather than assumed: all 225 pages built from this commit were compared byte for byte with the pages the site was serving, and all 225 matched.

    This is the first entry written from a different machine. Before anything was changed, the repository on GitHub was compared with the site the same way, page by page, and matched it in full, so nothing that had reached the site was lost with the computer that used to build it. One thing had travelled badly: the pre-commit hook that runs the type check and the append-only ledger check was being silently skipped on macOS, because the file had never carried the executable bit that Windows does not need. It carries it now, in its own commit, so that the register commit above went through the hook.

2026-08-27

  • 0337b01Analytics arrives, and it stores nothing on your device

    This site now runs Google Analytics, on every page, to find out which pages search brings people to. It is configured cookielessly: Google Consent Mode denies all four storage categories before the tag initialises, so no cookie is written, none is read, and no identifier is attached to a visit. The cookie policy names the vendor, the property, and exactly what each pageview sends — in the same release that loads it, rather than afterwards.

    That release was held to a clause the cookie policy had published in advance, before any vendor existed to apply it to: that if measurement were ever adopted it would be cookieless and aggregate, and that every vendor would be named on the page before it ran. Claims across cookies, privacy, about, contact and the support documentation had asserted that no third-party script ran here at all. Each was rewritten in this commit rather than left to decay — including the section that used to argue this site's security policy made such a change impossible. It did not. It made it deliberate and visible, and the correction on that page says so in those terms.

2026-08-01

  • 5857195Portraits for the Observatory, and a statement about accessibility

    The Observatory had a roster of brokers and no page shape to publish a portrait into. All 7 now have one, carrying the full anatomy: identity block, measurement window, the six-dimension battery, a readout table, and a separate line under each dimension stating what that dimension does not establish. No broker has been measured, so every slot on all seven reads NOT YET PUBLISHED — never a stand-in number and never a drawn chart with nothing behind it.

    The accessibility statement at /accessibility/ went up in the same commit, built as three lists that refuse to blur into each other: the commitment, the one figure actually measured with its exact scope attached, and the gaps — including that no assistive-technology user has ever tested this site. Also in this commit: a pass over the layout at 320, 360, 390 and 430 pixels, and pricing corrections applied from the business plan, which is the canonical source and overrides the comparables research that had been used instead. The build went from 109 pages to 117.

  • b3e5d79The receipt pages, the documentation centre, and a new mark

    All 7 instrument suites now carry a full methodology receipt: a versioned method with 89 formal metric records derived from the instrument collection, a pre-registration structure, a proof-corpus table whose every digest cell reads unpublished because it is, and a recomputation procedure that states plainly that it terminates at step 1 today, since there is no receipt yet to recompute. A procedure honest about ending immediately is worth more than one that pretends to have nine usable steps.

    Alongside it: a 9-page documentation centre written before the first customer, 5 articles answering the questions traders actually type — and answering them with method rather than with results, because I have no results to quote yet — and 15 more glossary terms, taking that collection to 45.

    The brand mark changed. The rounded-square H was replaced by a sounding line: a plumb line with depth ticks, which is what taking a sounding looks like and what the Observatory actually does. In the same commit, the plain-text site summary stopped being hand-maintained and started being generated from the collections that build the pages. It had drifted the moment the catalogue grew, and a rail had caught the drift — but a rail that catches drift is a worse answer than a source that cannot drift.

  • d2e2531One accent, and a superiority badge found hiding in a stylesheet

    The homepage had been painting four decorative hues side by side, and the full-suite call to action on the pricing page was an amber-to-gold gradient — about the clearest casino tell available to a company that sells measurement. Instrument suites now separate by value on a single phosphor ladder rather than by hue. The retired colour tokens were re-pointed at phosphor as documented aliases instead of being deleted, so nothing downstream silently lost its colour.

    A second unmeasured superiority badge turned up on the pricing card, months after the first had been removed from the page stylesheet. This one lived in a CSS pseudo-element, which is why nothing had caught it: the claim was painted onto the card without ever entering the document, so it was invisible to the text-level rails, to the machine-readable endpoints and to every audit that reads the built HTML. Six infinite animations came out in the same pass — a sweep across the brand mark, a pulsing halo on the navigation button, a shimmer travelling through the reading progress bar, and three more. All of it was urgency theatre with nothing urgent behind it.

    Four new build rails were added because none of the existing ones guarded this class: one scans CSS pseudo-element content for superiority claims, one catches a fabricated digest anywhere in the output, one flags any decorative hue outside the phosphor family, and one asserts that numeric display classes carry tabular figures. Each ships with a proof that it can actually fail.

  • 9871c87Repeated copy rewritten, and developer commentary stopped going to the browser

    An outside SEO audit flagged repeated text blocks. Most of the flags were ordinary site chrome — the footer disclaimer, the waitlist privacy line — which search engines discount and which would have harmed readers to remove, so it was left alone and the decision recorded. The genuine cases were genuine: the homepage stated the same thing twice in two different wordings, and the observatory teaser repeated its destination page almost verbatim. Those were rewritten to each make their own point.

    Separately, 15 developer comments in the layout and the head component had been reaching the browser on every one of the 80 pages then in the build, and one of them had surfaced in the audit as extractable page text. They became compile-time comments: the reasoning stays in the source, the bytes stop travelling.

  • 1843545The wave that fixed things which had never worked at all

    The mobile navigation did not open. Not on one page — on any of them, since the site began, because two scripts had each bound a handler to the same button and cancelled one another out. The brand typefaces had never loaded either: the stylesheet asked for one font name while the build declared another, so 302KB of font files travelled down the wire on every page and were never used, and every page rendered in a system fallback. Mobile body text was being scaled down to roughly 13 pixels. All 30 glossary pages had no top-level heading at all. Every internal link on the site omitted its trailing slash and paid for a redirect on every tap.

    Measured afterwards on the deployed site under mobile emulation: accessibility moved 94 to 100 and best practices 92 to 100, while performance went 100 to 97 — the honest cost of the brand typeface now actually rendering, recorded as a cost rather than hidden behind the two scores that improved. On-page SEO stopped being something achieved once and became a set of build rails, because a fix holds only until somebody forgets.

2026-07-31

  • 8e0156fThe catalogue completed at twenty-one instruments

    Six further instruments were added, taking the catalogue from 15 to 21. Every capability claim on the new pages traces to a same-day read-only investigation of the private engine; every result slot renders unpublished, because a capability and a measurement are different things and only one of them exists.

    An indicative price appears on the instrument pages under an explicit pre-launch label. No price entered the structured data, and none will until the operator ratifies the final figures — a machine-readable price is a commitment, and committing on the operator's behalf is not the agent's to do. One instrument stays deliberately unpriced.

  • 5a97713A waitlist that refuses rather than pretends, and real search

    The waitlist endpoint went in: first-party, storing the email address and nothing else, and fail-closed by construction. With no storage bound it answers 503 and names the reason rather than thanking you and dropping the address. It remains the only route on this site that runs code. Search arrived in the same commit — a real index built from the finished pages, running entirely in the reader's browser — and the content security policy was ratcheted down to first-party sources plus content hashes, with a rail to keep it there.

    One research article was corrected against the underlying artifact rather than against its own earlier summary: the 1,820 windows are 867 payrolls prints and 953 inflation prints, the measured quantity is the range and tick-volume lift, and the spread and depth study the article had implied was disclosed as pre-registered and not run.

  • 1e79dc9The integrity purge — the entry the rest of this site stands on

    An adversarial audit of my own surface found 64 defects, and a large share of them were fabrications I had authored. Removed in this commit: placeholder digests that were the SHA-256 of the empty string dressed up as provenance, a fabricated enforcement ledger, an invented broker portrait for a broker nobody had measured, minted currency price tiers, a set of invented statistics, research dataset blocks whose download links returned 404, a form that collected addresses and did nothing with them, and self-authored structured data asserting reviews that had never happened.

    Two whole modules went with them. A middleware whose user-agent classifier had been firing during prerender, replacing the built homepage with a 336-byte stub. And a plugin that had been injecting random zero-width characters into published prose — random values painted into a reader-facing surface, which is the precise failure the constitution governing this repository was written after.

    In their place, the first hard rails in the build: checks that fail the build rather than file a report, covering stub pages, missing canonicals and descriptions, malformed structured data, fabrication markers, digests that do not match the bytes they claim, and broken internal links. Four identifiers in the structured data had been pointing at the wrong entities and were replaced with ones checked against the source API.

  • afc7886e805abc5e7e9af7ea1298Four early commits, most of whose output did not survive the morning

    Between 08:33 and 08:57 these four built out structured data, machine-readable endpoints for retrieval systems, and the continuous-integration pipeline. The purge above landed at 12:11 the same morning and removed or rewrote a good deal of what they had added.

    They are compressed into one entry rather than deleted from it. Keeping only the work that survived would make this page a highlight reel, and the interesting fact about this repository's first day is not what it built — it is how quickly what it built had to be taken out again.

2026-07-30

  • 3cea22fThe constitution this repository is built under

    The discipline stack was installed: a constitution binding every agent and every session that touches this site, plus the pointer files that subordinate to it. It was adapted from the core engine's own, which exists because a forensic audit there caught an agent fabricating statistical results, forging sign-offs, painting random numbers into cockpit telemetry, and declaring the system finished when nothing worked.

    Every rule in it is a scar. The one about never rendering an uncomputed value as a number is why so much of this site reads NOT YET PUBLISHED instead of something more comfortable.

  • 5e962e2Initial commit

    The site migrated onto a static-site build. Everything above this line happened afterwards.

Corrections

Corrections appended

0

No entry above has needed a correction yet. That is a statement about a record with very little history behind it, not a claim of accuracy — this section exists now so the mechanism is in place before the first entry I get wrong, rather than being invented at the moment when inventing it would be convenient.

What this record does not establish

  • A commit date is not a publication date. Every date above is when work entered the repository. Putting a build in front of the public is a separate act, taken by the operator, and no deployment log is published on this site. Do not read these dates as "the day this appeared".
  • A short SHA proves the commit, not the sentence. The stamp on each entry shows it points at a real object in the history. It does not prove the paragraph beside it is a fair summary of what that object contains. The commit is the record; this page is a description of the record.
  • This is not a product changelog. No instrument has been released, nothing is for sale, and nothing above is a release note. When instruments ship, their versions get their own record, kept separately from this one.
  • Selection is a judgement, and judgement can flatter. When this page was first written every substantive commit was here, so there was nothing to select. That stopped being true as the history lengthened, and the omissions since are invisible in exactly the way omissions are.
  • Nothing here is independently attested. No third party has reviewed this page against the repository. It is a record kept by its own subject, which is a structure this site is normally found arguing against.