axiom

Making a model travel · step 6 of 6

The ledger is the deliverable

What do you hand the person who has to sign off on this?

Not the number. The number plus the list of every place it crossed a boundary and what was assumed to get it across. That list is a Ledger, it is built by construction rather than by discipline, and check_complete refuses a ledger with a facet missing from it.

downgraded, not identified — and correctly so. Two of the three assumptions are still unverified: nothing here has checked the half-life against the window, or the Jensen gap against a nonlinear response. The status is a description of the evidence, not a grade. Verifying those two is what the calibrate and surface pillars are for.

step 6
for line in resolved.ledger.lines:
    print(f"[{line.kind}]")
    print(f"  {line.statement}")
    if line.assumption is not None:
        print(f"  rests on {line.assumption.name} [{line.assumption.state}]")

print()
complete = resolved.ledger.check_complete(plan)
print("completeness :", complete.status)
print(" ", complete.reason)
print()
print("and the whole transfer is addressable:")
print("  source estimand", measured.content_hash()[:16])
print("  target estimand", needed.content_hash()[:16])
print("  ledger         ", resolved.ledger.content_hash()[:16])
print()
print("re-deriving any of those from the same inputs gives the same")
print("hash on any machine, so a number in a slide can be traced back")
print("to the exact question it answered.")
what it printed
[facet:population]
  population differs: district_A vs district_B
  rests on s_admissibility [satisfied]
[facet:window]
  0.813636 of the carryover mass lands within 12 period(s); scaled to the steady-state total by 1.22905
  rests on carryover_contained [unverified]
[facet:level]
  cluster read at individual level: point factor 1 (additive effect), SE factor 1.76777
  rests on linear_aggregation [unverified]
[transport]
  transport verdict identified via s_admissible_adjustment
  rests on s_admissibility [satisfied]

completeness : identified
  every differing facet accounted for exactly once (population, window, level)

and the whole transfer is addressable:
  source estimand adaf9c9abfa4b2fd
  target estimand 6a864f41935b7358
  ledger          14c74efa68608cac

re-deriving any of those from the same inputs gives the same
hash on any machine, so a number in a slide can be traced back
to the exact question it answered.

Every line above was captured by running this code at build time. The steps share one namespace, so the code on this page is the code you would type after the steps before it.