Case 908

The policy was judged before its infections were counted

the_policy_was_judged_before_its_infections_were_counted.eml - A policy halves new infections from the day it starts, the daily case reports are exact, and five days in the reports show no change - so the policy is judged to have done nothing. Whose infections the day-five report is counting is computed below.

ok: true — round-trip fixpoint reached (python1 == python2)updated 2026-09-18

EML

eml
# Self-authored for the EML case corpus (no external origin). A policy halves
# new infections from the day it starts, the daily case reports are exact, and
# five days in the reports show no change - so the policy is judged to have
# done nothing. Whose infections the day-five report is counting is computed
# below.
#
# The judgement is careful. It reads the real reported cases; it compares the
# five days after the policy with the days before; the counts are exact; and
# the intent is exactly 'did the policy reduce infections'.
#
# An infection becomes a reported case ten days later - incubation, testing,
# reporting - so the cases reported on day five are the infections of day
# minus five, all of them before the policy, and the policy's own infections are
# not in any report yet.

1000 => infections_per_day_before_the_policy
500 => infections_per_day_after_the_policy
10 => days_from_infection_to_report
5 => day_the_policy_was_judged

day_the_policy_was_judged - days_from_infection_to_report => infection_day_the_judgement_reflects
infections_per_day_before_the_policy => cases_reported_on_the_judgement_day
days_from_infection_to_report + 5 => first_day_the_policy_shows
infections_per_day_after_the_policy => cases_reported_from_that_day
infections_per_day_before_the_policy - infections_per_day_after_the_policy => infections_the_policy_prevents_per_day
int(infections_the_policy_prevents_per_day * 10000 / infections_per_day_before_the_policy) => true_effect_per_myriad
0 => effect_visible_on_the_judgement_day_per_myriad

"infections per day, before      : " + str(infections_per_day_before_the_policy) ^0
"infections per day, after       : " + str(infections_per_day_after_the_policy) ^0
"true effect                     : " + str(true_effect_per_myriad) + " per ten thousand fewer" ^0
"" ^0
"infection to report             : " + str(days_from_infection_to_report) + " days" ^0
"judged on day                   : " + str(day_the_policy_was_judged) ^0
"infection day those reports reflect : day " + str(infection_day_the_judgement_reflects) + ", before the policy" ^0
"cases reported on day " + str(day_the_policy_was_judged) + "         : " + str(cases_reported_on_the_judgement_day) ^0
"effect visible on day " + str(day_the_policy_was_judged) + "         : " + str(effect_visible_on_the_judgement_day_per_myriad) + " per ten thousand" ^0
"first day the policy shows      : day " + str(first_day_the_policy_shows) + ", reports fall to " + str(cases_reported_from_that_day) ^0
"" ^0

# ---- what the judgement verified ----

"the day-five judgement" ^0
"  reads : the real reported cases" ^0
"  compares : five days after against the days before" ^0
"  counts : exact" ^0
"  intent : did the policy reduce infections" ^0
"  reports misread : 0" ^0
"  verdict : NO CHANGE IN CASES, THE POLICY DID NOTHING" ^0
"" ^0
"  reading the exact reports for the exact days is the part" ^0
"  done right here, and it is why 'no change by day five'" ^0
"  is a true statement about the reports" ^0
"" ^0

# ---- whose infections the reports count ----

"the lag" ^0
"  a case is reported : " + str(days_from_infection_to_report) + " days after the infection" ^0
"  so day-" + str(day_the_policy_was_judged) + " reports are : infections from day " + str(infection_day_the_judgement_reflects) ^0
"  when did the policy start : day 0" ^0
"  so every report up to day " + str(days_from_infection_to_report) + " : is pre-policy infections" ^0
"  the policy's first infections are reported : day " + str(first_day_the_policy_shows) ^0
"  the judgement was made : " + str(first_day_the_policy_shows) + " minus " + str(day_the_policy_was_judged) + " days before the" ^0
"    policy could appear in any report" ^0
"" ^0

# ---- what the decision-makers got ----

"the decision" ^0
"  concluded : the policy has no effect, lift it" ^0
"  the policy's actual effect : " + str(true_effect_per_myriad) + " per ten thousand fewer" ^0
"  is any report wrong : no; each is exact" ^0
"  do the reports on day " + str(day_the_policy_was_judged) + " contain the policy : no; they" ^0
"    contain infections from " + str(days_from_infection_to_report) + " days earlier" ^0
"" ^0

# ---- null control ----

# The same judgement made on reports from day fifteen on (or on infection dates
# back-calculated from report dates), so the compared days are policy days.
0 => nc_effect_seen_judging_at_day_five_per_myriad
5000 => nc_effect_seen_judging_at_day_fifteen_per_myriad
5000 => nc_effect_the_lag_aware_judgement_recovers

"null control - judge after the lag, on the policy's own infections" ^0
"  effect seen, judging at day five : " + str(nc_effect_seen_judging_at_day_five_per_myriad) + " per ten thousand" ^0
"  effect seen, judging at day fifteen : " + str(nc_effect_seen_judging_at_day_fifteen_per_myriad) + " per ten thousand" ^0
"  effect the lag-aware judgement recovers : " + str(nc_effect_the_lag_aware_judgement_recovers) + " per ten thousand" ^0
"  no report and no policy changed; the judgement stopped" ^0
"  reading last week's infections as this week's answer" ^0
"" ^0

# ---- the rule ----

"what an exact five-day case comparison guarantees" ^0
"  reported cases did not change in the five days after :" ^0
"    exactly, real reports, exact counts" ^0
"  the policy did not change infections : not addressed;" ^0
"    reports lag infections by " + str(days_from_infection_to_report) + " days, so day-" + str(day_the_policy_was_judged) + " reports" ^0
"    are day-" + str(infection_day_the_judgement_reflects) + " infections and the policy's " + str(true_effect_per_myriad) + "-per-ten-thousand" ^0
"    cut appears from day " + str(first_day_the_policy_shows) ^0
"" ^0

"a report is a window onto the past by the length of its lag, and a change" ^0
"judged inside that lag is judged on a world it had not yet touched; the" ^0
"verdict was exact about ten-day-old infections and said nothing about the" ^0
"policy" ^0
"" ^0

"The day-" + str(day_the_policy_was_judged) + " reports are exact and unchanged - true. But a case is reported " + str(days_from_infection_to_report) ^0
"days after infection, so those reports are day-" + str(infection_day_the_judgement_reflects) + " infections, all pre-policy;" ^0
"the policy's " + str(true_effect_per_myriad) + "-per-ten-thousand cut reaches the reports on day " + str(first_day_the_policy_shows) + ", " + str(day_the_policy_was_judged) + " days after it" ^0
"was judged useless, until the judgement waits out the lag." ^0

Python (deterministic transpilation)

python
infections_per_day_before_the_policy = 1000
infections_per_day_after_the_policy = 500
days_from_infection_to_report = 10
day_the_policy_was_judged = 5
infection_day_the_judgement_reflects = day_the_policy_was_judged - days_from_infection_to_report
cases_reported_on_the_judgement_day = infections_per_day_before_the_policy
first_day_the_policy_shows = days_from_infection_to_report + 5
cases_reported_from_that_day = infections_per_day_after_the_policy
infections_the_policy_prevents_per_day = infections_per_day_before_the_policy - infections_per_day_after_the_policy
true_effect_per_myriad = int(infections_the_policy_prevents_per_day * 10000 / infections_per_day_before_the_policy)
effect_visible_on_the_judgement_day_per_myriad = 0
print("infections per day, before      : " + str(infections_per_day_before_the_policy))
print("infections per day, after       : " + str(infections_per_day_after_the_policy))
print("true effect                     : " + str(true_effect_per_myriad) + " per ten thousand fewer")
print("")
print("infection to report             : " + str(days_from_infection_to_report) + " days")
print("judged on day                   : " + str(day_the_policy_was_judged))
print("infection day those reports reflect : day " + str(infection_day_the_judgement_reflects) + ", before the policy")
print("cases reported on day " + str(day_the_policy_was_judged) + "         : " + str(cases_reported_on_the_judgement_day))
print("effect visible on day " + str(day_the_policy_was_judged) + "         : " + str(effect_visible_on_the_judgement_day_per_myriad) + " per ten thousand")
print("first day the policy shows      : day " + str(first_day_the_policy_shows) + ", reports fall to " + str(cases_reported_from_that_day))
print("")
print("the day-five judgement")
print("  reads : the real reported cases")
print("  compares : five days after against the days before")
print("  counts : exact")
print("  intent : did the policy reduce infections")
print("  reports misread : 0")
print("  verdict : NO CHANGE IN CASES, THE POLICY DID NOTHING")
print("")
print("  reading the exact reports for the exact days is the part")
print("  done right here, and it is why 'no change by day five'")
print("  is a true statement about the reports")
print("")
print("the lag")
print("  a case is reported : " + str(days_from_infection_to_report) + " days after the infection")
print("  so day-" + str(day_the_policy_was_judged) + " reports are : infections from day " + str(infection_day_the_judgement_reflects))
print("  when did the policy start : day 0")
print("  so every report up to day " + str(days_from_infection_to_report) + " : is pre-policy infections")
print("  the policy's first infections are reported : day " + str(first_day_the_policy_shows))
print("  the judgement was made : " + str(first_day_the_policy_shows) + " minus " + str(day_the_policy_was_judged) + " days before the")
print("    policy could appear in any report")
print("")
print("the decision")
print("  concluded : the policy has no effect, lift it")
print("  the policy's actual effect : " + str(true_effect_per_myriad) + " per ten thousand fewer")
print("  is any report wrong : no; each is exact")
print("  do the reports on day " + str(day_the_policy_was_judged) + " contain the policy : no; they")
print("    contain infections from " + str(days_from_infection_to_report) + " days earlier")
print("")
nc_effect_seen_judging_at_day_five_per_myriad = 0
nc_effect_seen_judging_at_day_fifteen_per_myriad = 5000
nc_effect_the_lag_aware_judgement_recovers = 5000
print("null control - judge after the lag, on the policy's own infections")
print("  effect seen, judging at day five : " + str(nc_effect_seen_judging_at_day_five_per_myriad) + " per ten thousand")
print("  effect seen, judging at day fifteen : " + str(nc_effect_seen_judging_at_day_fifteen_per_myriad) + " per ten thousand")
print("  effect the lag-aware judgement recovers : " + str(nc_effect_the_lag_aware_judgement_recovers) + " per ten thousand")
print("  no report and no policy changed; the judgement stopped")
print("  reading last week's infections as this week's answer")
print("")
print("what an exact five-day case comparison guarantees")
print("  reported cases did not change in the five days after :")
print("    exactly, real reports, exact counts")
print("  the policy did not change infections : not addressed;")
print("    reports lag infections by " + str(days_from_infection_to_report) + " days, so day-" + str(day_the_policy_was_judged) + " reports")
print("    are day-" + str(infection_day_the_judgement_reflects) + " infections and the policy's " + str(true_effect_per_myriad) + "-per-ten-thousand")
print("    cut appears from day " + str(first_day_the_policy_shows))
print("")
print("a report is a window onto the past by the length of its lag, and a change")
print("judged inside that lag is judged on a world it had not yet touched; the")
print("verdict was exact about ten-day-old infections and said nothing about the")
print("policy")
print("")
print("The day-" + str(day_the_policy_was_judged) + " reports are exact and unchanged - true. But a case is reported " + str(days_from_infection_to_report))
print("days after infection, so those reports are day-" + str(infection_day_the_judgement_reflects) + " infections, all pre-policy;")
print("the policy's " + str(true_effect_per_myriad) + "-per-ten-thousand cut reaches the reports on day " + str(first_day_the_policy_shows) + ", " + str(day_the_policy_was_judged) + " days after it")
print("was judged useless, until the judgement waits out the lag.")

stdout (executed)

text
infections per day, before      : 1000
infections per day, after       : 500
true effect                     : 5000 per ten thousand fewer

infection to report             : 10 days
judged on day                   : 5
infection day those reports reflect : day -5, before the policy
cases reported on day 5         : 1000
effect visible on day 5         : 0 per ten thousand
first day the policy shows      : day 15, reports fall to 500

the day-five judgement
  reads : the real reported cases
  compares : five days after against the days before
  counts : exact
  intent : did the policy reduce infections
  reports misread : 0
  verdict : NO CHANGE IN CASES, THE POLICY DID NOTHING

  reading the exact reports for the exact days is the part
  done right here, and it is why 'no change by day five'
  is a true statement about the reports

the lag
  a case is reported : 10 days after the infection
  so day-5 reports are : infections from day -5
  when did the policy start : day 0
  so every report up to day 10 : is pre-policy infections
  the policy's first infections are reported : day 15
  the judgement was made : 15 minus 5 days before the
    policy could appear in any report

the decision
  concluded : the policy has no effect, lift it
  the policy's actual effect : 5000 per ten thousand fewer
  is any report wrong : no; each is exact
  do the reports on day 5 contain the policy : no; they
    contain infections from 10 days earlier

null control - judge after the lag, on the policy's own infections
  effect seen, judging at day five : 0 per ten thousand
  effect seen, judging at day fifteen : 5000 per ten thousand
  effect the lag-aware judgement recovers : 5000 per ten thousand
  no report and no policy changed; the judgement stopped
  reading last week's infections as this week's answer

what an exact five-day case comparison guarantees
  reported cases did not change in the five days after :
    exactly, real reports, exact counts
  the policy did not change infections : not addressed;
    reports lag infections by 10 days, so day-5 reports
    are day--5 infections and the policy's 5000-per-ten-thousand
    cut appears from day 15

a report is a window onto the past by the length of its lag, and a change
judged inside that lag is judged on a world it had not yet touched; the
verdict was exact about ten-day-old infections and said nothing about the
policy

The day-5 reports are exact and unchanged - true. But a case is reported 10
days after infection, so those reports are day--5 infections, all pre-policy;
the policy's 5000-per-ten-thousand cut reaches the reports on day 15, 5 days after it
was judged useless, until the judgement waits out the lag.

Trace event types

eml:run:starteml:assigneml:outputeml:run:done