Prove It
What result did each live explanation predict, and how should this
observation change their relative weight?
Use the full protocol for a load-bearing claim: one that drives an action,
closes an investigation, or will be reported as fact. For a minor claim, ask
the question above and state the evidential strength.
The protocol
Each step produces something stated, not merely considered.
State the claim, scope and strength. Distinguish actuality (is/was),
disposition (could/can) and prediction (will). Use calibrated language:
confirmed within stated conditions, likely, possible,
bounded, or unknown. Empirical evidence warrants a claim; it rarely
entails it. Reading code establishes what a system could do. Logs, traces,
live config and state address what it is doing.
Audit inherited premises and priors. Treat every premise from a prompt,
ticket, summary or earlier turn as a claim. Check the load-bearing ones and
report a false one promptly. Include relevant base rates. The reporter's
diagnosis, including yours, is Hypothesis #0 rather than a fact.
Validate the evidence channel. Before asking what a signal diagnoses,
establish its unit and identity, deduplication or aggregation, sampling and
retention, proxy semantics, time alignment, and detector coverage. Validate
the detector with a known-positive where practical. A thousand rows may be
50 retried events. HTTP 200 may show only that a catch handler returned 200.
Compare live rivals and predictions. Name at least two plausible
alternatives before declaring a cause. For each possible result, record
which rivals predict it and which it would weaken. Group signals sharing a
source or failure path before treating them as additive. If every rival
predicts the observation, it corroborates the setting but discriminates
nothing.
Choose a safe, comparable contrast. Change one candidate cause while
keeping build, environment, config, input, starting state, window and
detector comparable. Never restore a harmful production failure merely to
prove causality. Prefer sandbox, replay, shadow, canary or a valid historical
contrast. If no safe discriminating observation exists, lower the claim's
strength and name the unresolved rival.
Label the chain. Mark material links observed (directly seen and
cited), derived (logic or arithmetic from observations), inferred
(best explanation under stated assumptions), or assumed (unchecked).
The weakest load-bearing link limits the conclusion. Confidence in a
conjunction is not an average across its parts.
Report the warrant and boundary inline. Name the observation, how it
shifted the rivals, and the conditions within which the claim holds. A
search that ran and found nothing is a null result; state its query and
coverage. A search not run is a blind spot. For zero-event rate claims, read
references/null-results.md.
Root-cause and fix claims
For either claim, read
references/failure-modes.md before concluding.
A useful causal account separates the trigger, proximate mechanism,
contributing conditions, failed defences and intervention points. Mark a
factor necessary, sufficient or merely present only where evidence supports
that relation. Do not compress a multi-factor incident into one tidy culprit.
"Fixed" can mean several different things. State which one the evidence buys:
- the reproducer passes under stated conditions;
- the candidate change caused that result;
- the defect was removed rather than masked or mitigated;
- production recurrence is bounded over a stated exposure;
- related failures or general correctness are covered.
A sound ABA toggle - fail with the candidate off, pass on, fail off again - is
strong causal evidence only when the runs are safe and comparable. A quiet
period supports a recurrence bound only when event identity, denominator,
independence and detector coverage are valid. Neither alone proves general
correctness.
Stop and revise
Stop when the target strength is reached, no safe feasible observation is
expected to change the decision enough, the agreed resource bound is reached,
or decisive evidence is inaccessible. Do not stop after a fixed number of weak
checks. Report what stands, what remains open and why further work has low or
unavailable decision value.
Revise when a new observation arrives or when logic, arithmetic, provenance or
an assumption is corrected. Name the changed link. Pushback or "are you sure?"
alone carries no information; restate the evidence if nothing material changed.
Rationalisations
| You will think... |
But actually... |
| "I saw 1,000 rows, so I saw 1,000 events" |
Establish the observation unit, identity and retry or aggregation semantics before counting evidence. |
| "The request returned 200, so the write succeeded" |
A proxy inherits its implementation boundary. Inspect what the status measures and verify the downstream state. |
| "The vendor documents this exact failure mode and the symptoms fit" |
Compatibility raises a hypothesis. Compare the same symptoms against live rivals and base rates. |
| "The system is healthy now, so the transient rival is ruled out" |
A later check cannot settle an earlier state without a valid time bridge. Align the observation window. |
| "Five signals agree" |
Signals derived from one source or failure path are common-mode evidence, not five independent votes. |
| "It stopped after the deploy, so the fix worked" |
Hold other changes constant or report only temporal association and a bounded quiet period. |
| "The user pushed back, so I should soften it" |
Revise on changed evidence or reasoning, not social pressure. |
Boundaries
- diagnosing-bugs owns reproducing, minimising and navigating the
investigation. Prove-it owns what the resulting observations license.
- testing owns test design and layer choice. Prove-it owns whether the test
that ran discriminates anything and what a green result warrants.
- deciding-under-uncertainty owns choices and predictions. Prove-it may
audit empirical premises inside a plan without choosing the plan.
- typescript and formal methods own compile-time, mathematical and logical
proof. Prove-it addresses claims about observed systems and evidence.
- design-forking widens options for a design. Prove-it's rivals are
explanations to update using evidence, not options to compare on trade-offs.
- cross-review supplies a differently framed reader when your own evidence
assessment has a common-mode risk.
References
| When the task involves... |
Read |
| A root cause, fix claim, or suspected reasoning failure |
references/failure-modes.md |
| Zero observed events, a quiet period, or a rate bound |
references/null-results.md |
| A telemetry incident worked end to end |
references/worked-example.md |
1---
2name: prove-it
3description: >-
4 Tests whether evidence warrants an empirical claim at its stated strength
5 and scope. Use when declaring a bug fixed or a root cause found, closing an
6 investigation, validating or verifying a factual conclusion, auditing the
7 factual premises of a plan, or when the user says prove it, are we sure, or
8 asks whether evidence really supports a claim in any domain. Not for
9 mathematical or formal proof, type-system guarantees, choosing among
10 forward-looking options, or designing the test itself.
11---
12
13# Prove It
14
15> What result did each live explanation predict, and how should this
16> observation change their relative weight?
17
18Use the full protocol for a load-bearing claim: one that drives an action,
19closes an investigation, or will be reported as fact. For a minor claim, ask
20the question above and state the evidential strength.
21
22## The protocol
23
24Each step produces something stated, not merely considered.
25
261. **State the claim, scope and strength.** Distinguish actuality (*is/was*),
27 disposition (*could/can*) and prediction (*will*). Use calibrated language:
28 **confirmed within stated conditions**, **likely**, **possible**,
29 **bounded**, or **unknown**. Empirical evidence warrants a claim; it rarely
30 entails it. Reading code establishes what a system could do. Logs, traces,
31 live config and state address what it is doing.
32
332. **Audit inherited premises and priors.** Treat every premise from a prompt,
34 ticket, summary or earlier turn as a claim. Check the load-bearing ones and
35 report a false one promptly. Include relevant base rates. The reporter's
36 diagnosis, including yours, is Hypothesis #0 rather than a fact.
37
383. **Validate the evidence channel.** Before asking what a signal diagnoses,
39 establish its unit and identity, deduplication or aggregation, sampling and
40 retention, proxy semantics, time alignment, and detector coverage. Validate
41 the detector with a known-positive where practical. A thousand rows may be
42 50 retried events. HTTP 200 may show only that a catch handler returned 200.
43
444. **Compare live rivals and predictions.** Name at least two plausible
45 alternatives before declaring a cause. For each possible result, record
46 which rivals predict it and which it would weaken. Group signals sharing a
47 source or failure path before treating them as additive. If every rival
48 predicts the observation, it corroborates the setting but discriminates
49 nothing.
50
515. **Choose a safe, comparable contrast.** Change one candidate cause while
52 keeping build, environment, config, input, starting state, window and
53 detector comparable. Never restore a harmful production failure merely to
54 prove causality. Prefer sandbox, replay, shadow, canary or a valid historical
55 contrast. If no safe discriminating observation exists, lower the claim's
56 strength and name the unresolved rival.
57
586. **Label the chain.** Mark material links **observed** (directly seen and
59 cited), **derived** (logic or arithmetic from observations), **inferred**
60 (best explanation under stated assumptions), or **assumed** (unchecked).
61 The weakest load-bearing link limits the conclusion. Confidence in a
62 conjunction is not an average across its parts.
63
647. **Report the warrant and boundary inline.** Name the observation, how it
65 shifted the rivals, and the conditions within which the claim holds. A
66 search that ran and found nothing is a null result; state its query and
67 coverage. A search not run is a blind spot. For zero-event rate claims, read
68 [references/null-results.md](references/null-results.md).
69
70## Root-cause and fix claims
71
72For either claim, read
73[references/failure-modes.md](references/failure-modes.md) before concluding.
74
75A useful causal account separates the trigger, proximate mechanism,
76contributing conditions, failed defences and intervention points. Mark a
77factor necessary, sufficient or merely present only where evidence supports
78that relation. Do not compress a multi-factor incident into one tidy culprit.
79
80"Fixed" can mean several different things. State which one the evidence buys:
81
82- the reproducer passes under stated conditions;
83- the candidate change caused that result;
84- the defect was removed rather than masked or mitigated;
85- production recurrence is bounded over a stated exposure;
86- related failures or general correctness are covered.
87
88A sound ABA toggle - fail with the candidate off, pass on, fail off again - is
89strong causal evidence only when the runs are safe and comparable. A quiet
90period supports a recurrence bound only when event identity, denominator,
91independence and detector coverage are valid. Neither alone proves general
92correctness.
93
94## Stop and revise
95
96Stop when the target strength is reached, no safe feasible observation is
97expected to change the decision enough, the agreed resource bound is reached,
98or decisive evidence is inaccessible. Do not stop after a fixed number of weak
99checks. Report what stands, what remains open and why further work has low or
100unavailable decision value.
101
102Revise when a new observation arrives or when logic, arithmetic, provenance or
103an assumption is corrected. Name the changed link. Pushback or "are you sure?"
104alone carries no information; restate the evidence if nothing material changed.
105
106## Rationalisations
107
108| You will think... | But actually... |
109|---|---|
110| "I saw 1,000 rows, so I saw 1,000 events" | Establish the observation unit, identity and retry or aggregation semantics before counting evidence. |
111| "The request returned 200, so the write succeeded" | A proxy inherits its implementation boundary. Inspect what the status measures and verify the downstream state. |
112| "The vendor documents this exact failure mode and the symptoms fit" | Compatibility raises a hypothesis. Compare the same symptoms against live rivals and base rates. |
113| "The system is healthy now, so the transient rival is ruled out" | A later check cannot settle an earlier state without a valid time bridge. Align the observation window. |
114| "Five signals agree" | Signals derived from one source or failure path are common-mode evidence, not five independent votes. |
115| "It stopped after the deploy, so the fix worked" | Hold other changes constant or report only temporal association and a bounded quiet period. |
116| "The user pushed back, so I should soften it" | Revise on changed evidence or reasoning, not social pressure. |
117
118## Boundaries
119
120- **diagnosing-bugs** owns reproducing, minimising and navigating the
121 investigation. Prove-it owns what the resulting observations license.
122- **testing** owns test design and layer choice. Prove-it owns whether the test
123 that ran discriminates anything and what a green result warrants.
124- **deciding-under-uncertainty** owns choices and predictions. Prove-it may
125 audit empirical premises inside a plan without choosing the plan.
126- **typescript** and formal methods own compile-time, mathematical and logical
127 proof. Prove-it addresses claims about observed systems and evidence.
128- **design-forking** widens options for a design. Prove-it's rivals are
129 explanations to update using evidence, not options to compare on trade-offs.
130- **cross-review** supplies a differently framed reader when your own evidence
131 assessment has a common-mode risk.
132
133## References
134
135| When the task involves... | Read |
136|---|---|
137| A root cause, fix claim, or suspected reasoning failure | [references/failure-modes.md](references/failure-modes.md) |
138| Zero observed events, a quiet period, or a rate bound | [references/null-results.md](references/null-results.md) |
139| A telemetry incident worked end to end | [references/worked-example.md](references/worked-example.md) |
140
141<!-- Behavioural and trigger evals: evals/evals.json -->