Package
@flashyos/conformance
Run the conformance suite against any live domain, audit a charter+handshake pair in-process (auditProperty / assertProperty), or scaffold a new property (init).
version 0.2.3 · audit of 2026-10-04 · source: flashyos/packages/conformance
npx @flashyos/conformance <domain>The charter is read from /.well-known/flashyos-charter.json and nowhere else. Every property’s test suite calls assertProperty so the spec’s constants live in one place — a hand-typed SPEC_KEYS list is a vendored snapshot with nothing to notice when the spec moves.
assertProperty cannot tell you the domain serves the files — that is the failure the whole estate had, twice. npx @flashyos/conformance <domain> over the network is the other half, after a deploy.
Learn the mechanics behind this and the Activation standard together: Flashy Academy’s Proving What You Ship teaches the four Activation artifacts, why a charter checker is vendored rather than reimplemented, and what the AAO launch gate actually verifies — using flashy.tools’s own suite as the worked example. https://flashy.academy/academy/curriculum/proving-what-you-ship
Commands
| Command | Does |
|---|---|
| npx @flashyos/conformance flashy.tools --level 2 | audit a live domain the way a stranger would |
| npx @flashyos/conformance init | emit the charter, both well-known surfaces, and the test |
Edge cases — each one paid for once
An exports map naming only `import` is an allowlist
Vite matched import; jest resolved CJS, matched nothing, ignored main entirely, and reported Cannot find module against the test file. 0.2.3 ships a real CommonJS build, and packaging.test.ts loads both — a correct map over a half-built dist fails identically for the adopter.
The scaffold seeded the wrong join door into every new property
init emitted an account-signup URL as the join pointer; two properties served it live before anyone looked upstream. Fixing a scaffold is worth more than fixing its output twice — and the URL is declared once and interpolated, because a backtick in a comment inside the template literal terminated it on the first try.