Graphonomous is the memory layer of ComputeDrivenin_treeThat rung covers the graphonomous/v2 lane in the repository — its adapters, projector, WRL world builder and TRVM certificate, its sealed projections, and its test suite run on this machine. Nothing from it has been published anywhere.
The question this site exists to answer

Can a system carry an honest model of what it understands?

Graphonomous is an autonomous semantic/evidence graph that continuously constructs, tests, relates and explains a model of what a system understands. Not a database, though it stores; not a compiler, though it has compiler-shaped machinery inside it; not an interpreter, because execution lives elsewhere. It is the semantic self-model of a ComputeDriven system: read from the registries that hold the system’s truth at pinned commits, sealed as a WallRiderLang world under a vocabulary it declares as data, certified through TRVM, and held downstream of every authority it reads. What it believes, why, what contradicts it, what depends on it, and what would prove it wrong — that is the model, and the model is meant to get simpler as it learns.

What it is  How it works  What is actually proven

182 of 183
Tests passing
5
Projections sealed by WRL
3 of 4
WRL profile rows, ours
7
Repositories pinned
1189
Nodes, largest world
2494
Relations, largest world
1422
Facts derived, largest world
What it is

Three verbs, one system, and Super around it.

The stack has converged on three parts that each own one thing. Press one.

WRLdescribes understanding
TRVMreduces and derives understanding
Graphonomousstores, connects, explores, tests and evolves understanding

the world these three run in: an operating system whose backup is the user's machine, and the compute surface above it

ComputeDriven →

WallRiderLang describes understanding. A world is a content-addressed description; a vocabulary is a profile row; meaning is a hash.

WRL →

TRVM reduces and derives understanding. It is the execution and reduction engine, and it mints the certificates Graphonomous carries.

TRVM →

Graphonomous stores, connects, explores, tests and evolves understanding: the semantic self-model of a ComputeDriven system, read from the registries that hold its truth.

Graphonomous →

Super is the operating environment around all of this — the surface that lets humans and artificial beings actually use it. Its blueprint gives every agent a memory that survives an engine swap, and Graphonomous is what is meant to fill that slot. Today Graphonomous reads Super's evidence at a pinned commit; the rest is designed and not built.

Super (CD) →

It is downstream of authority by design. It observes, relates, derives, diagnoses, ranks and proposes; the registry, factory or adjudication that owns a fact decides whether a proposal becomes canonical. It never silently decides truth and never becomes another authority. A normal graph database says: here are the relationships you stored. This one is heading toward: here is what I currently believe the relationships are, why I believe them, what observations produced them, what contradicts them, what depends on them, how they changed, and what experiment could tell us whether they are wrong.

Why it feels like a compiler

Compiler-shaped, but the thing compiled is understanding.

A compiler constructs a model of a program so that the program can be transformed. Graphonomous constructs a model of a system’s understanding so that the understanding itself can be transformed. The semantic projection is the IR. The rows on the right are marked by what exists in the tree today; the last one is not ours by design.

a compiler
source
parse
IR
analysis
optimization
lowering
machine representation
Graphonomous
authoritative system statebuilt
deterministic adaptersbuilt
normalized evidence → semantic projectionbuilt
dependency · consistency · reduction analysisbuilt
candidate explanations, laws, counterexamplesdesigned
proposals and derived representationsdesigned
the owning registry admits, or refusesnot ours

What is being compiled is not source. It is what the system currently knows · where that knowledge came from · what depends on what · what contradicts what · what observations support it · what would falsify it · what simpler explanation could replace it.

Where it is heading

A loop whose optimization target is understanding.

Observation becomes evidence, evidence becomes structure, structure yields dependency and contradiction. From there the loop is designed and not yet built: a hypothesis, the counterexample that would kill it, an experiment the factory runs, new evidence, and a reduction to the smallest explanatory structure that still preserves every observation. A compiler would call that optimization, a database normalization, a prover derivation, a scientist a theory. Graphonomous means to treat all four as one operation. Solid stages exist; dashed ones are designed.

builtobservationadapters read 7 pinned repositories and emit records
builtevidenceevery claim carries its assertion, its registry and a source location; provenance lives on the assertion, never in the value
builtsemantic structurethe projection root, and the WRL-sealed world with kernel-minted ids
builtdependency16 rules derive 1422 facts over the largest world's records, with an independent checker that shares no logic with the evaluator
builtcontradiction5 cross-registry rules find what two normalized sources disagree about; 3 candidate rules reduced to zero and were not implemented
designedhypothesisa candidate law or explanation, proposed by the graph and owned by nobody until admitted
designedcounterexamplethe observation that would falsify a hypothesis, named before it is looked for
designedexperimentthe invariant factory runs it; receipts come back; the graph re-imports what was admitted
designedreductionthe smallest explanatory structure that preserves the observations: what a compiler calls optimization, a database normalization, a prover derivation and a scientist a theory

The one figure that already points that way: on the largest world, every derived fact is reachable by an explanation that is a traversal over stored records, checked by a second implementation that shares no logic with the first, and the 7 acceptance questions the lane holds itself to are answered the same way — never by prose.

What it overlaps with, and goes past

Every existing category fits, and none of them holds.

The category we currently give it is an autonomous semantic evidence system, and the interesting word is autonomous. Compiler passes, interpreters, provers, query engines, dependency solvers, optimizers and eventually code generators can all become motors operating over the model; none of them is the model.

positioning, not a measurement
Databaserelationships are semantic and evidential rather than stored records
Graph databasethe graph's own structure evolves through analysis
Compilerits input can be the state and knowledge of an entire running system
Static analyzeranalysis spans registries, invariants, evidence and provenance
Knowledge graphclaims can be falsified, reduced, superseded and experimented on
Theorem proverevidence and law reduction starts approaching this territory
Observability systemit observes semantics rather than logs and metrics
Interpreteractual execution stays elsewhere, in TRVM
Build systemdependency and derivation relationships resemble builds
Scientific notebookexperiments, counterexamples, evidence and provenance matter
World modelincreasingly yes, and particularly a model of the system itself
How it works today

From a pinned registry to a certificate, in six steps.

It is downstream of authority by design. It observes, relates, derives, diagnoses, ranks and proposes; the registry, factory or adjudication that owns a fact decides whether a proposal becomes canonical. It never silently decides truth and never becomes another authority. Each step below is one command in the lane, refuses in its own vocabulary, and leaves behind an id the next step is held to. Press a step. The right-hand column of every panel is the largest projection’s own id for that step, read from the tree and re-derived by the check.

01Pin — Which bytes?

A snapshot names every repository it reads by commit, tree and blob — 7 of them for the largest one, Super (CD) at 7651697 among them. A blob that has moved is refused, never re-read. Reading Super's evidence is the first half of a loop whose second half — Super carrying Graphonomous as every agent's memory — is designed and not built.

Toolg0 snapshotRefuses withSOURCE_MOVEDprojection root, triroot-ad27b735d86b51278fb6a0f5f61d117ff7f274e8b5716d49e1f43a40c7e03122

02Ingest — What does it say?

4 adapters read those bytes and emit nodes, relations, assertions and source locations. What an adapter cannot normalize becomes a typed fault beside the records — 86 of them in the largest projection — not a guess.

Toolg0 projectRefuses withUNSUPPORTED_SOURCE_FORM · UNRESOLVED_LINK · …projection root, triroot-ad27b735d86b51278fb6a0f5f61d117ff7f274e8b5716d49e1f43a40c7e03122

03Project — Is it the same twice?

The records fold into one content-addressed root. Shuffle the inputs, reverse the adapters, build again: the same root, and a Python twin re-derives it from the manifest alone.

Toolg0 verifyRefuses witha root that does not re-deriveprojection root, triroot-ad27b735d86b51278fb6a0f5f61d117ff7f274e8b5716d49e1f43a40c7e03122

04Seal — What is it, exactly?

The semantic world is submitted to WallRiderLang as a Semantic IR 2.0 artifact under a profile Graphonomous declared as data — 24 roles, 32 kinds, 103 admissible pairs. WRL's kernel mints the world id and every relation and revision id. Graphonomous submits; it never mints.

Toolg0 worldRefuses withWRL_UNDECLARED_ROLE · WRL_UNDECLARED_KIND · WRL_UNDECLARED_ENDPOINT_PAIR · …world id, minted by WRL, trisem-3a80601c6369346029f0519837eda47d88686987514371cbd57f5c4a2a55bae5

05Certify — Under which code?

A certificate is minted through TRVM over the claim, its aggregate and the chain of code identities that produced it. It says under which verifier coordinates the projection reconstructs — never that it is "still valid".

Toolg0 certifyRefuses withgproj-chain-id-mismatch · gproj-certificate-staleverified claim, minted through TRVM, trivclaim-332109b06101ed69951913425e445a9b06b10f93fcc86026554fcf9a33c64603

06Check — Does it hold?

A checker re-derives every plane from the directory and writes nothing. Across families, a consistency pass names what two normalized sources disagree about — 4 findings on the largest world, the sharpest being one file read at two different blobs.

Toolg0 check-cert · g0 consistencyRefuses withREFERENCE_TARGET_DRIFT · SOURCE_PIN_DIVERGENCE · …verified claim, minted through TRVM, trivclaim-332109b06101ed69951913425e445a9b06b10f93fcc86026554fcf9a33c64603
What has been sealed

5 projections, each a WallRiderLang world with a certificate.

One row per shipped projection. Bars compare nodes, relations and typed faults across the rows; the numbers beside them, and the three ids beneath, are read from each projection’s own directory. Two rows share statements: the revision id of a statement is the same in every world it appears in, and its allocation id never is — what a statement is does not depend on the world, where it is allocated does.

baseline
graphonomous.semantic.v0 · crosswalk
289 nodes
588 relations
64 faults · 7 findings
sem sem-0f952f03804c73152b762e4a09570ce37adb35039203c5c4c501507bd0ab17be
root root-da4f3d7a534801e0aedbfee4853cba989e24e5107c28e02ad83507a044afef85
vclaim vclaim-6cf938ccbe9aed9c9ad828553dd3930c4de3d06f9d144ef31ce478f7dc9666da
historical
graphonomous.semantic.v0 · crosswalk
278 nodes
566 relations
64 faults · 7 findings
sem sem-3ae051cf2a4ab35436eedeb1b15cae759bd3001652d55d67a3f29ae23f5d0e23
root root-c7f9c7595c3005b402f263bfe394d767a69adc8e338f7ed2640bfa015375bc87
vclaim vclaim-1c65435f28cd05d8e53c8eec9058fb2171f3dcf0d672b4a5e298f7264454ddee
multi
graphonomous.semantic.v0 · crosswalk + factory
778 nodes
1574 relations
86 faults · 6 findings
sem sem-b8d828278e9ba411bc375da4b03754e87210b78cb106d25422fd94e8526622ea
root root-48ac3e32dfc56cd1450e43b92c7a38d83d71a95113da8b243951dfa305fd2213
vclaim vclaim-819bf2559c06589b8b0ec3ca91841f763edadda9891cd7b26e5f2aee7867706f
multi-v1
graphonomous.semantic.v1 · crosswalk + factory + factory_mosaic
932 nodes
2007 relations
86 faults · 4 findings
sem sem-e186186ea55e9e9a9d10a7676dd31180e248837db54fb66e388d594ff5406e66
root root-44659ae753a5396fbec7f064cd4349811d577c1d3957703fd8b65fac20c5236d
vclaim vclaim-03bfb372d8268fa2b791ce5c1240db2081e677ce4ab7c7e9c1b779e4bdd35cd1
tri
graphonomous.semantic.v2 · crosswalk + factory + factory_mosaic + trvm
1189 nodes
2494 relations
86 faults · 4 findings
sem sem-3a80601c6369346029f0519837eda47d88686987514371cbd57f5c4a2a55bae5
root root-ad27b735d86b51278fb6a0f5f61d117ff7f274e8b5716d49e1f43a40c7e03122
vclaim vclaim-332109b06101ed69951913425e445a9b06b10f93fcc86026554fcf9a33c64603
nodesrelationstyped faults

Faults are kept, not guessed away

What an adapter cannot normalize becomes a typed fault beside the records — 86 of them in the largest projection, by code. A fault is a fact about a source; a finding, 4 of them on the same world, is what two normalized sources disagree about. Neither is repaired silently and neither is hidden.

AMBIGUOUS_IDENTIFIER1
DANGLING_WITNESS2
SETTLED_WITHOUT_WITNESS8
TRUNCATED_FIELD5
UNQUALIFIED_REFERENCE3
UNRESOLVED_LINK56
UNSUPPORTED_SOURCE_FORM11
Programmed with WallRiderLang

The program is a vocabulary, and the encoder refuses what it does not declare.

Graphonomous has no query language of its own. Its vocabulary — 24 roles, 32 relation kinds, 103 admissible (source role, target role) pairs — is a static row in WallRiderLang’s profile table, and the graph is submitted to WRL as a Semantic IR 2.0 artifact. The two-object world on the right seals. Each button applies one edit to a fresh copy and shows what WRL answered, in WRL’s own words: the code and message were produced by running the encoder, and the check runs the same six edits again.

edit · objects[0].role = "OPINION"
WRL_UNDECLARED_ROLE

[WRL_UNDECLARED_ROLE] object 'receipt_3Asha256_3Aabc' has role 'OPINION', and profile 'graphonomous.semantic.v2' declares OBLIGATION, ENFORCEMENT_PROPERTY, CLAIM, LAW, MECHANISM, DEFINITION, REPRESENTATION, PROFILE, ASSUMPTION, WITNESS, FALSIFIER, FINDING, EXPERIMENT, RECEIPT, ARTIFACT, ADJUDICATION, EVIDENCE_STATE_TRANSITION, ROUND, CELL, REGISTRY, SOURCE_LOCATION, ARGUMENT, DEFEATER, INSTRUMENT

edit · relations[0].revision.kind = "LIKES"
WRL_UNDECLARED_KIND

[WRL_UNDECLARED_KIND] relations[0] has kind 'LIKES', and profile 'graphonomous.semantic.v2' declares STATES, IMPLEMENTS, DERIVES_FROM, REDUCES_TO, REFINES, SPLIT_FROM, SUPERSEDES, RETRACTS, REQUIRES, WITNESSES, SUPPORTS, FALSIFIES, ATTACKS, TESTED_UNDER, SCOPED_BY, ASSUMES, CLOSES, OPENS, PRODUCED_BY, ADJUDICATED_BY, LOCATED_IN, MEMBER_OF, BINDS, CITES, INDEPENDENT_OF, CONFLICTS_WITH, EQUIVALENT_TO, DEFINES, REPRESENTS, CROSS_CUTS, STATE_TRANSITION_OF, DISCHARGED_BY

edit · endpoints reversed: CLAIM → RECEIPT under WITNESSES
WRL_UNDECLARED_ENDPOINT_PAIR

[WRL_UNDECLARED_ENDPOINT_PAIR] relations[0] joins (CLAIM -> RECEIPT) under kind 'WITNESSES', which profile 'graphonomous.semantic.v2' admits only as (WITNESS -> CLAIM), (WITNESS -> OBLIGATION), (WITNESS -> EVIDENCE_STATE_TRANSITION), (RECEIPT -> CLAIM), (RECEIPT -> OBLIGATION), (RECEIPT -> EVIDENCE_STATE_TRANSITION), (WITNESS -> ARGUMENT)

edit · relations[0].revision.policy = "anything.at.all"
WRL_UNDECLARED_POLICY

[WRL_UNDECLARED_POLICY] relations[0] carries policy "anything.at.all", and profile 'graphonomous.semantic.v2' declares 'graphonomous.semantic.rules.v0'. The policy is sealed into this relation's revision identity, so one the profile never declared would be an undeclared rulepack minted into a rev- under a profile that admits it nowhere else

edit · semantic_policies.film_schema = "film.v0.7"
WRL_V2_WORLD_MISMATCH

[WRL_V2_WORLD_MISMATCH] this artifact states semantic_policies = {"film_schema":"film.v0.7","rulepack_id":"graphonomous.semantic.rules.v0"}, and the world it encodes derives {"rulepack_id":"graphonomous.semantic.rules.v0"}. These fields are functions of the profile and the objects -- a stated copy that disagrees is a second source of truth, and the stated one is the one a reader believes; a key the profile does not derive at all is a claim about a runtime the profile never made

edit · profile_id = "graphonomous.semantic.v9"
WRL_UNSUPPORTED_PROFILE

[WRL_UNSUPPORTED_PROFILE] profile "graphonomous.semantic.v9" is not one this encoder declares (forge.world.core.v1, graphonomous.semantic.v0, graphonomous.semantic.v1, graphonomous.semantic.v2)

# the world every edit is made to — seals to # sem-e717109f49233a79fd29b34d8521096a66dc05cd2bdcbca22a91b285649c8ee3 { "ir_version": "2.0", "profile_id": "graphonomous.semantic.v2", "semantic_policies": { "rulepack_id": "graphonomous.semantic.rules.v0" }, "objects": [ { "object_id": "receipt_3Asha256_3Aabc", "role": "RECEIPT", "static_config": { "lid": "receipt:sha256:abc", "attrs": {} }, "ports": [ "node" ] }, { "object_id": "claim_3Acrosswalk_3AE_2D48", "role": "CLAIM", "static_config": { "lid": "claim:crosswalk:E-48", "attrs": {} }, "ports": [ "node" ] } ], "relations": [ { "identity_seed": { "variant": "named-initial", "relation_name": "rel:WITNESSES:receipt:sha256:abc:claim:crosswalk:E-48" }, "revision": { "domain": "semantic", "kind": "WITNESSES", "orientation": "directed", "texture": "solid", "endpoints": [ { "role": "source", "terminal": { "object_id": "receipt_3Asha256_3Aabc", "port": "node" } }, { "role": "target", "terminal": { "object_id": "claim_3Acrosswalk_3AE_2D48", "port": "node" } } ], "attributes": {}, "policy": "graphonomous.semantic.rules.v0" } } ] }

The whole submission, the seal with kernel-minted ids, and the six refusals with real artifact bytes: Programming Graphonomous with WRL.

What it reads

Seven repositories, pinned by blob, and one of them is Super.

The largest snapshot names every file it reads by commit, tree and blob, and 4 adapters read those bytes and nothing else. Super (CD) is one of the repositories, at 7651697: today the graph reads Super’s evidence at that commit and can be held to it, and that is all that is built. The intended loop is larger. Super’s blueprint gives every agent a memory that survives an engine swap, and Graphonomous is the thing meant to fill that slot: every agent under Super carrying Graphonomous as its memory, Super admitting what an agent did as receipts, and Graphonomous re-importing that admitted state deterministically. None of that runs yet, on either side — the lane is read-only by ruling until its cross-registry consistency work stops for adjudication — and this page will say so until it does.

wrl
1f4c5fd4cf50
1 file pinned by blob
WallRiderLang's spine, pinned so the seal itself is a pinned dependency.
super
76516978bfa8
2 files pinned by blob
Super (CD): its README and the ampd runtime's README are authoritative sources, and the crosswalk's evidence records cite Super's release receipts. Read at this commit and held to it; no runtime coupling in either direction.
trvm-gov
8816e5905532
66 files pinned by blob
TRVM governance: the invariant grid, its receipts and spec releases — the third source family.
r10
ba4e625871b7
23 files pinned by blob
The invariant frontier package and its handoffs.
factory
d217ee29a332
66 files pinned by blob
The invariant factory ledger, mosaic and receipts.
computedriven
efa8881a5d44
6 files pinned by blob
The ComputeDriven edge stack: admission, authority and locus.
trvm
fd0df4cdf6ea
3 files pinned by blob
TRVM's evidence view, pinned separately from its governance tree; the consistency pass says why the two differ.
How this was checked

The suite is green on code you cannot install.

Those two halves belong in one sentence, and separating them is how a page starts lying. The lane’s own suite passes, every shipped projection re-verifies from its own bytes, and none of it is in any published package. The status block says which is which.

Status of this surface

Status
in_tree — The lane at v2/ in the repository passes 182 of 183 tests, with 1 skipped by design; it seals 5 projections as WallRiderLang worlds, derives 1422 facts under 16 rules on the largest of them, and finds cross-registry inconsistencies with 5 rules. Nothing from it is in any published package.
Last verified
2026-09-05
Source
npm run test:full-tree in graphonomous/v2 at the commit witness.json names, against sibling checkouts pinned by commit; g0 verify, verify-eval, check-cert and consistency over every shipped projection in the same run. Every figure on this page is emitted from records/witness.json, and check.mjs re-derives each derivable one from the lane and from WRL's own module.
Limit
Everything above was run on one machine, by the people who wrote it, against registries they also maintain. Nothing here establishes that anyone else has reproduced the 183 tests, that the graph is useful rather than merely sound, or that a reader can install anything — there is no published artifact, and the package under this name on the npm registry is an earlier engine this page does not describe. The demo on this domain was generated from the same tree and is not independent evidence.
Next rung
live_local — A packaged lane a reader can run locally — a released bundle that carries the pinned registries it needs — and then the same verdict, 182 of 183, from a machine that is not this one.

The review ledger

A gate is either approved with its evidence, its reviewer and its date, or it is pending. There is no third state, and the publication gate refuses an artifact whose ledger claims approval without all three fields.

The lane's own suite passes on the tree
approved npm run test:full-tree in graphonomous/v2 at the commit witness.json names, one worker, a 2 GB heap, temp files off the tmpfs: 182 of 183 pass, 1 skipped by design. Evidence: records/witness.json#tests_total. Reviewer: node --test through tools/test_repro.mjs (Node 25.2.1). Date: 2026-09-05.
Every shipped projection re-verifies from its own bytes
approved g0 verify, verify-eval, check-cert (v0 and v1) and consistency over all 5 shipped projections in the same run; the Python twin of the canonical encoder passes its self-test. Evidence: records/witness.json#worlds_sealed. Reviewer: bin/g0.mjs, driven by tools/test_repro.mjs. Date: 2026-09-05.
A reader can obtain and run what this page describes
pending No artifact has been published. The package under this name on the npm registry is an earlier engine and is not what this page describes. Until a bundle exists that carries the pinned registries it needs, the only way to run this is a full checkout.
Someone who is not us produced a result with it
pending The only rung nobody here can award themselves. A reproduced verdict from another machine, a filed issue, or a fork that runs the suite.

Retraction — 11 claims removed from this page

Two pages came before this one. The first was 215 KB and stated most of its figures in the present tense with nothing behind them. The second was generated and gated, and described an earlier Graphonomous — an MCP memory engine — whose page is now kept under old_scrap/ and not served. These came off:

  • 455 tests — A test count for the earlier engine at some earlier commit, published in the present tense. That engine's page is gone from this domain and its figures were never re-measured here.
  • 29 actions — The earlier engine's machine modules declared more actions than its page printed, and two of them were missing from the table entirely. Neither the table nor the engine is on this page.
  • 29 individual tools — Same stale denominator, in the sentence that argued why that engine's machines existed.
  • 29 MCP tools — Same stale denominator, attached to a pass-rate claim about that engine.
  • macOS or Linux — Published as an install requirement. Only linux-x64 has a release asset; the other advertised targets all return 404 and the postinstall exits non-zero. The largest single audience for this page could not install it, and the page said they could.
  • No other agent memory system does this — A claim about every other system in a field, with no survey behind it. Nothing on this site establishes what other systems do.
  • 96.6 — A retrieval-accuracy figure attributed to a third-party system with no citation, in a comparison table this site cannot witness.
  • Can a memory get sharper from being used? — The question this page asked until 2026-09-05. It described an earlier Graphonomous, an MCP memory engine whose graph changed shape from outcomes. That engine is not what this page describes; its pages are kept under old_scrap/ and not served.
  • npm i -g graphonomous — An install command for that earlier engine. The package of that name on the npm registry still resolves and still installs on one platform; nothing described on this page is in it, and this page does not ask you to run it.
  • five loop-phase machines — The earlier engine's architecture, printed as the page's central claim. Not a claim about what this page describes.
  • Can what a system understands be made queryable, falsifiable and provenance-linked? — The question this page asked for one day in September 2026, between the memory-engine page and this one. It was true and too narrow: it described the graph's properties and said nothing about the graph carrying a model of the system, or evolving it.

The fix is structural rather than careful. This page is generated: every figure on it is emitted from records/witness.json, each entry names the command that produced it, and launch-gate.mjs refuses to publish an artifact that reinstates any string above outside this paragraph. A number can no longer be typed onto this site by hand.

What you can do here

One rung, and the two things it has earned.

A page may only ask you to do what its evidence has earned. This one is in the tree and tested, so it may ask you to read and to run the tests, and nothing more.

Tell us we are wrong

The correction channel, and the specific job it has here.

Every figure on this page was measured on one machine by the people who built the thing. A reader who runs the suite elsewhere and reports the verdict — the same or different — is the shortest path this domain has to the next rung, the one nobody here can award themselves. A result, a stack trace, or a figure on this page you think is wrong: same channel, all three welcome.

It is a real <form> with an action and method="POST", so it submits with JavaScript disabled; /contact.js only upgrades it to an inline reply, and that reply prints sent only when the endpoint actually answers 2xx. There is still no email address here, deliberately. Anything better filed as a bug goes to the issue tracker.