A claim about the system names the target that proves it, or it is not a claim
Wildo treats a statement about what the framework does as a measurement, not an opinion. A guard is proven by a request that reaches it, a capability is shipped when a running application uses it, a checker is trusted when it has been shown to catch the thing it was written for, and a mechanism nobody could verify is recorded as unverified rather than left silent. The same rule governs how Wildo describes itself: every entry in this corpus carries an evidence path, and an entry that cannot point at one does not get a maturity.
The problem it answers
The repository’s rules record three ways a careful engineer arrives at a confident, well-formed, wrong statement, and each is worth knowing by shape because none announces itself:
- An empty result read as absence. A search returned nothing because it was scoped to the wrong root, or used a flag the tool does not have, or ran against a dump that truncates. “Not found” became “does not exist”, and once it was written down, a later reader acted on it.
- A real result about the wrong target. Two files with near-identical names and identical behaviour; the first of several matches taken as the only one; a test whose justifying comment described a code path the function never executes. The conclusion was right, the evidence was about something else, and a green suite concealed the gap precisely because nothing misbehaved.
- A correct reading of a stale artifact. A consumer’s type error against an emitted declaration file hours older than the source; a stored document validated against a schema that had moved on; a running process holding a module graph the disk no longer matched. Each looked like a logic defect and was a photograph of an earlier world.
A fourth shape is quieter still: a mechanism that shipped and was never watched working, behind a suite that passed because every test supplied what the mechanism was supposed to resolve. Nothing was wrong with any test. The gap was nobody’s failing test, so it was invisible.
What it rules in, and what it rules out
- Rules in: a claim names its target. “Verified at this path, which is the module the consumer actually imports” is auditable by the next reader; “verified” is not.
- Rules in: an empty result is believed only after the search has been shown to find something it must find, and only after the running system has been asked directly where that is possible.
- Rules in: the artifact is dated before the logic is diagnosed. An emitted file, a stored record
and a live process each lag their source, and one
statsettles more than an hour of reading. - Rules in: a checker carries a self-test that plants the defect it exists to catch and asserts detection, then asserts the same tree reports clean once the defect is removed. A checker whose discovery matches nothing reports a clean repository and a broken checker identically.
- Rules in: a run that passes its assertions while the backend logged a fatal error is a false pass, and a lane that never printed a verdict scores as inconclusive, never as “no failures”.
- Rules in: a mechanism that cannot be verified now gets a durable record saying so, with what would prove it and what a failure would mean, instead of a green suite and silence.
- Rules out: promoting a capability on the word of a curated map or a file name. Maps lag the code and say so in their own headers; a file name is not evidence of anything.
- Rules out: narrowing a test, weakening an assertion or relabelling a failure to make a check pass. Suppression is never presented as repair.
- Rules out: a checker that matches almost nothing. Rejected because it trains readers to skim, which costs more than the findings it produces.
What it means for someone building with Wildo
- A security property you rely on (tenant isolation, role ceilings, the last-owner floor, non-disclosing refusals) has a black-box probe over real HTTP behind it, not only a unit test of the guard function. A unit test proves the guard rejects; only a request proves the guard is on the path an attacker takes.
- When a capability is described as shipped, there is a running application or a scenario you can be pointed at. When it is described as implemented, you are told that no application uses it yet. You are never told a planned thing exists.
- The same conventions are open to your application. The dogfood application’s own lanes are built on the framework’s dependency-free testing spine and reach the application purely as an external client, which is the shape any application’s lanes can take.
- Verification in Wildo is proportional and named: implemented, statically verified, behaviour verified and runtime proven are four different claims, and a report says which one it is making.
For engineers
Where it lives in the framework
- The end-to-end harness drives a running application over HTTP and in a real browser. Its registry names fifty scenarios, forty-seven against the engine and three against the platform control plane, each provisioning its own tenants through the public registration path. The verification bar runs the scenarios and then reads the backend log for the scenario window, failing the run on any fatal line and on any critical error a best-effort catch suppressed to a warning, because a caller whose contract is “never fail the thing I observe” turns its own breakage into a log line and nothing else.
- The browser login drive is defined once and gated by construction, so a wait that cannot succeed while the backend is away cannot be written ungated, and a checker backstops any wait a scenario writes on its own.
- The dogfood application carries seventy-two end-to-end lanes of its own, fourteen of them hostile: each probe is written as the desired security invariant, seeds its own victim rows, reaches the application purely as an external client, and a red probe is a live defect. A runner scores a lane that produced no verdict as inconclusive and exits non-zero.
- Thirty-five code-conduct checkers under one directory encode the repository’s own rules
mechanically: package entry points, semantic vocabularies, invented display text, browser wait
gating, audit event emission coverage, store neutrality, trusted write doors, retention reach.
Thirty-three carry a
--self-test. Where a rule cannot be decided by a machine, the checker refuses to let the answer stay implicit rather than guessing at it. - A currency sweep asks one question across every derived surface: is what is running current? Package output against source, emitted trees against finalisation, injected snapshots by file set, the dependency store against the links that reach it, a process start against the build it loads. It is read-only and advisory, every finding names the artifact and both timestamps, and its self-test plants each staleness shape and asserts both detection and the clean control.
- This corpus applies the same rule to prose. The maturity scale reserves SHIPPED for a capability a dogfood application declares and uses, or that an end-to-end scenario drives against the running stack; IMPLEMENTED for engine code no application exercises; and UNCONFIRMED for anything nobody has settled. Nothing is omitted for being immature, because a deleted entry is a gap nobody can see.