What the practice is for, and how it is measured
Six goals, each carrying a measure with a baseline, an instrument, a collector, a frequency and a falsifier. A measure that names only an indicator and a target is a goal restated as a number; the additional slots are what make it trackable.
These are goals of the practice — what this library is trying to be — not goals of the wildfire programme it documents. The programme’s own goals live in the charter and are available on request.
Five of the six measures below have no baseline. They are specified, with an instrument, a collector, a frequency and a falsifier, and they have never been run, because the programme is unbuilt and the first full instrumented pass over the library is itself the baseline run. Where that is the case, the entry says so. The missing baselines are carried as a declared measurement gap rather than filled with an invented figure — a number produced to fill a slot is worse than an empty slot, because only one of the two is visibly empty.
G1 — Traceable authority
Intent. Nothing in the library asserts a capability, a rule or a need without an upstream authority that a stranger could check.
| Measure | Proportion of published artifacts whose declared upstream links all resolve to an existing artifact identifier, plus the count of unresolved links reported separately as an integer. |
|---|---|
| Capture | A link resolver run inside the publication pipeline, with no human step. Every publish. Baseline: the first instrumented publish — not yet captured. |
| Counter-measure | A quarterly hand-sampled check of fifteen links asking whether the declared relationship type matches the actual relationship. This guards against the obvious way of scoring well: pointing everything at the charter. |
| What would falsify it | A sample in which links resolve but their declared types are wrong more often than right. The coverage figure would then be measuring formatting rather than authority, and should be withdrawn rather than explained. |
| Validity note | Measures link resolution, not link correctness. Correctness is a separate check under Category 6. |
G2 — Declared negative space
Intent. Every artifact states what it deliberately does not cover, so that later scope movement is visible rather than arguable.
| Measure | Proportion of artifacts whose out-of-scope section contains at least one specific named exclusion. A catch-all such as “everything else” scores as absent. |
|---|---|
| Capture | Structural parser at publish for presence; a non-author reviewer samples fifteen artifacts per release for specificity. Baseline: not yet captured. |
| What would falsify it | Exclusions that are specific and never used. If, over a full release cycle, no scope dispute is settled by pointing at an out-of-scope list, the lists are decoration and the measure is counting a ritual. |
G3 — Confidence that does not inflate as it travels
Intent. A fact restated anywhere in the library never appears more certain than the artifact that owns it.
| Measure | Count of restatements asserting a confidence class higher than their owning artifact’s — an absolute-zero integer, reported per release and never averaged across releases. |
|---|---|
| Capture | The restatement register cross-checked against owning artifacts; automated where the confidence labels are structured, reviewed by hand where they are prose. Per release. Baseline: not yet captured. |
| Counter-measure | Proportion of externally-sourced facts carrying any source and confidence class at all. A zero-inflation count means nothing if most facts carry no label to inflate. |
| What would falsify it | A sweep finding that the majority of facts carry no confidence label. The inflation count would then be a measurement of an empty set, and the counter-measure is what exposes that. |
G4 — Named ownership on every open item
Intent. No open question, unretired assumption or external dependency sits in the library without someone — or some named instrument — accountable for closing it, and a date.
| Measure | Two readings, reported together. First, the count of open items lacking either an owner or a by-when, as an absolute-zero integer. Second, the ages of open items past their by-when date, shown as a distribution rather than a median. |
|---|---|
| Capture | A field check over the decision and assumption registers, run as part of the release checklist. Per release. Baseline: not yet captured. |
| What would falsify it | Owners assigned and dates serially extended. If the age distribution shifts right while the missing-owner count holds at zero, the field is being satisfied and the obligation is not — and the first reading alone would report that as success. This is why the second reading exists. |
G5 — Reconstructable by a stranger
Intent. A competent reader with no access to the authors can state why an artifact exists, what authorises it, and what observation would show its central claim to be wrong.
| Measure | Pass rate on a fresh-reader reconstruction test. A reviewer who did not author the set draws ten artifacts at random and answers those three questions for each. An artifact passes only if all three are answerable from the artifact and its declared upstream, without asking anyone. |
|---|---|
| Capture | The scored sheet is retained as evidence under Category 7, with the sample listed so the run can be repeated. Once per release, by a non-author reviewer. Baseline: not yet captured. |
| What would falsify it | High pass rates from reviewers with prior exposure to the programme. The test measures reconstructability by a domain-literate stranger; if the reviewer pool stops being strangers, the number stops meaning anything and the pool must be changed, not the threshold. |
G6 — The method finds its own gaps
Intent. Gaps are surfaced by the practice’s own instruments before an outside reader or a failing build finds them. A requirements practice that cannot find its own gaps is not working.
| Measure | Share of gaps recorded in a release whose “first found by” value is an internal instrument — a structural check, a composition test, the gap register, or a non-author review — rather than an external reader or a build failure. |
|---|---|
| Capture | The “first found by” field is set at the moment a gap is logged, never afterwards. Continuous logging, reported per release. Baseline: not yet captured. |
| Counter-measure | A release reporting zero gaps is treated as an instrument failure and triggers a check on whether the instruments ran at all. A clean number more often means the check is not looking than that there is nothing to find. |
| What would falsify it | Any evidence that “first found by” is being back-filled. The audit is whether each log entry’s timestamp precedes the corresponding fix; if it does not, the measure is dead and must be rebuilt rather than corrected. |
Goal-to-category matrix
Every category traces to at least one goal, and every goal is carried by at least one category. ● marks where a goal is chiefly realised; ○ marks a supporting role.
| Category | G1 | G2 | G3 | G4 | G5 | G6 |
|---|---|---|---|---|---|---|
| Charter and Goals | β | β | β | β | β | β |
| Decision Record | β | β | β | β | β | β |
| Need Record | β | β | β | β | β | β |
| Rules and Definitions | β | β | β | β | β | β |
| Quality and Acceptance | β | β | β | β | β | β |
| Traceability and Structure | β | β | β | β | β | β |
| Evidence and Performance | β | β | β | β | β | β |
Read down a column to find where a goal is actually done. Read across a row to find what a category is accountable for. A column with no ● would be a goal nothing carries; a row with no marks would be a category serving no goal. Either would be a defect in the library rather than a formatting problem in this table.
The self-referential problem with G6
G6 measures whether the practice finds its own gaps, using instruments the practice built. It cannot fully validate itself, and saying so is part of reporting it honestly. The gap list is the strongest available evidence that the instruments work, and it is not proof. The only real test is what an outside reader finds that the list does not already contain.