The slow way, made survivable Chapter 9 of 23 Svenska

The map · Part One · The method · Chapter 9 of 23

The three outcomes

Every test ends PASS, FAIL or DATA MISSING. The third is not a weaker version of the second, and a system that quietly records 'could not check' as 'failed' will lie to you in both directions. About 6 minutes.

Most checklists have two outcomes. A box is ticked or it is not. The method has three, and the third is the one that makes the other two trustworthy.

PASS, FAIL and DATA MISSING as three doorsThree doors side by side: a green door with a tick labelled PASS, the test ran and the figure cleared it; a vermillion door with a cross labelled FAIL, the test ran and the figure did not; a grey hatched door with a question mark labelled DATA MISSING, the test could not run. A crossed-out dashed line between the third and second door says the third is never quietly counted as the second. PASSthe test ranand the figurecleared itFAILthe test ranand the figuredid not?DATA MISSINGthe test couldnot run: thefigure is absentthe third door is never quietly counted as the second
Three outcomes, three doors. The third is not a weaker version of the second. A test that could not run has told you nothing about the company and something about your data.

Why two is not enough

The two-outcome version, which is wrong twice

The test asks whether NAME A's debt is within the limit. The vendor has no debt figure for NAME A this quarter. The test cannot be run. So the box is left unticked, and unticked means failed, and NAME A is removed.

Later, NAME B: same test, same missing figure. But NAME B is a name the reader likes, so the missing figure is noticed, chased, found in the filing, and it passes.

The first error is that NAME A was removed for a fact about the data vendor, not a fact about NAME A. The second error is worse: whether a missing figure counts as a fail now depends on whether anyone cared enough to chase it, which means it depends on what the reader already wanted. The two-outcome checklist has quietly become a way of laundering preferences.

The rule

Every test ends in exactly one of three states. PASS: the test ran and the figure cleared it. FAIL: the test ran and the figure did not. DATA MISSING: the test could not run, because the figure is absent, stale, of the wrong length, or not yet checked by a person. No test may be silently skipped, and DATA MISSING is never counted as FAIL.

This is the second of the five operating rules the whole method is written under, and it appears at every layer of the tool. The screener counts a name rejected because a figure said so and a name rejected because a figure was absent in different columns, and never adds them together.11Framework §0 rule 2: 'Every screening criterion gets an explicit PASS / FAIL / DATA MISSING verdict. No criterion may be silently skipped.' In the screener's universe code: 'DATA MISSING is a THIRD STATE ... counted in different columns and never added together.' The filter configuration's missing-data policy is pass through, chosen so vendor coverage gaps do not masquerade as quality failures. The nightly run separates a verdict about a company from a blocker about the data: stale prices, an unresolved event date, a missing stop. In the tool's founding sentence, "stale or unresolved data produces a blocker, never a verdict. The tool would rather tell you it cannot judge than judge on bad data."22README, opening. The blocker codes and the verdict codes are separate lists in vss/rules.py.

The third outcome is information

DATA MISSING is not an absence of result. It is a result, and it tells the reader two things: that this test says nothing about the company, and that there is a figure to go and find. It is also, honestly recorded, a description of how much of the method is actually running. One of the method's five gates, a comparison of valuation against peers, has been DATA MISSING for every company ever examined, because the peer figures it needs have never been assembled. The gate was not deleted to make the count look better. It stays, marked, until the figures exist.33Ruling E99: 'A criterion nobody can evaluate is not a criterion a company has failed.'

A related state deserves a mention. A figure that a person has typed in but not yet read back against its page is UNVERIFIED, which is not the same as missing: it is present, named, and refused by the valuation until checked. And a figure that was searched for in a full report and is genuinely not there is NOT PRESENTED, which is not the same as zero. Each of these is its own state because collapsing them would let one kind of ignorance impersonate another.44Verification states in vss/manual.py and ruling E85.

Decided
Three outcomes for every test, at every layer, and the third is never merged into the second.
Why
A missing figure is a fact about the data. Recording it as a fact about the company introduces an error whose direction depends on who was paying attention.
Cost
Reports are full of DATA MISSING. Some names sit unvalued for weeks waiting for one figure. The reader sees exactly how little the method can currently say, which is uncomfortable and is the point.

Sources for this chapter

  1. The three-outcome rule at each layer — read from this repository: reference/FRAMEWORK.md §0 rule 2; vss/rules.py (verdict and blocker codes); vss/universe.py; config/screener_filter2.yaml; reference/FRAMEWORK-EDITS.md E85, E99

The slow way, made survivable. Built 2026-09-13 from the repository as it stood that day. NAME A and NAME B are fictional; no company, price or holding appears on this site. Not financial advice: one private investor's method, shared as it is.