<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://invarians.org/index.php?action=history&amp;feed=atom&amp;title=The_Principia_Machina%2FTPC-PY%2Fgen_sponsor_corpus.py</id>
	<title>The Principia Machina/TPC-PY/gen sponsor corpus.py - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://invarians.org/index.php?action=history&amp;feed=atom&amp;title=The_Principia_Machina%2FTPC-PY%2Fgen_sponsor_corpus.py"/>
	<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_sponsor_corpus.py&amp;action=history"/>
	<updated>2026-10-21T11:25:10Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_sponsor_corpus.py&amp;diff=4853&amp;oldid=prev</id>
		<title>BFP Rauch: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_sponsor_corpus.py&amp;diff=4853&amp;oldid=prev"/>
		<updated>2026-09-30T02:11:03Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 02:11, 30 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key pma_cutover_20261020t051351z-soft_:diff:1.41:old-4852:rev-4853 --&gt;
&lt;/table&gt;</summary>
		<author><name>BFP Rauch</name></author>
	</entry>
	<entry>
		<id>https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_sponsor_corpus.py&amp;diff=4852&amp;oldid=prev</id>
		<title>BFP Rauch: TPC-PY source gen_sponsor_corpus.py (0.1.0), SHA-256 2ce10652e64e0af6; conformed TPS 0.4.0; PROPOSED, not declared (TPC-PY 0.2.0)</title>
		<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_sponsor_corpus.py&amp;diff=4852&amp;oldid=prev"/>
		<updated>2026-09-30T02:10:58Z</updated>

		<summary type="html">&lt;p&gt;TPC-PY source gen_sponsor_corpus.py (0.1.0), SHA-256 2ce10652e64e0af6; conformed TPS 0.4.0; PROPOSED, not declared (TPC-PY 0.2.0)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 02:10, 30 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l149&quot;&gt;Line 149:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 149:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;json.dump({&amp;quot;corpus&amp;quot;: &amp;quot;sponsor&amp;quot;, &amp;quot;version&amp;quot;: &amp;quot;0.1.0&amp;quot;, &amp;quot;cases&amp;quot;: cases},&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;json.dump({&amp;quot;corpus&amp;quot;: &amp;quot;sponsor&amp;quot;, &amp;quot;version&amp;quot;: &amp;quot;0.1.0&amp;quot;, &amp;quot;cases&amp;quot;: cases},&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           open(os.path.join(here, &quot;sponsor_corpus.json&quot;), &quot;w&quot;), indent=1,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           open(os.path.join(here, &quot;sponsor_corpus.json&quot;), &quot;w&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;, encoding=&quot;utf-8&quot;, newline=&quot;\n&lt;/ins&gt;&quot;), indent=1,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           sort_keys=True, ensure_ascii=False)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           sort_keys=True, ensure_ascii=False)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;print(&amp;quot;cases&amp;quot;, len(cases))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;print(&amp;quot;cases&amp;quot;, len(cases))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key pma_cutover_20261020t051351z-soft_:diff:1.41:old-4171:rev-4852:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>BFP Rauch</name></author>
	</entry>
	<entry>
		<id>https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_sponsor_corpus.py&amp;diff=4171&amp;oldid=prev</id>
		<title>BFP Rauch: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_sponsor_corpus.py&amp;diff=4171&amp;oldid=prev"/>
		<updated>2026-09-28T04:32:53Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:32, 28 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key pma_cutover_20261020t051351z-soft_:diff:1.41:old-4170:rev-4171 --&gt;
&lt;/table&gt;</summary>
		<author><name>BFP Rauch</name></author>
	</entry>
	<entry>
		<id>https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_sponsor_corpus.py&amp;diff=4170&amp;oldid=prev</id>
		<title>BFP Rauch: TPC-PY source gen_sponsor_corpus.py (0.1.0), SHA-256 5ff9451f9744e7f1; conformed TPS 0.3.0; PROPOSED, not declared (CO-8)</title>
		<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_sponsor_corpus.py&amp;diff=4170&amp;oldid=prev"/>
		<updated>2026-09-27T15:43:18Z</updated>

		<summary type="html">&lt;p&gt;TPC-PY source gen_sponsor_corpus.py (0.1.0), SHA-256 5ff9451f9744e7f1; conformed TPS 0.3.0; PROPOSED, not declared (CO-8)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;quot;&amp;quot;&amp;quot;gen_sponsor_corpus 0.1.0: builds sponsor_corpus.json for tpc_sponsor&lt;br /&gt;
0.1.0. Expectations are computed by tpc_sponsor.py and pinned; hand_&lt;br /&gt;
checked cases were worked by hand (the evidence cases against the closed&lt;br /&gt;
forms E = (a0 + F) / (a0 + b0 + F + A) and the Beta(1, 1) interval).&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
import json&lt;br /&gt;
import os&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
here = os.path.dirname(os.path.abspath(__file__))&lt;br /&gt;
sys.path.insert(0, here)&lt;br /&gt;
from tpc_sponsor import run_case  # noqa: E402&lt;br /&gt;
&lt;br /&gt;
cases = []&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def add(name, fn, args, hand=False):&lt;br /&gt;
    cases.append({&amp;quot;name&amp;quot;: name, &amp;quot;fn&amp;quot;: fn, &amp;quot;args&amp;quot;: args, &amp;quot;hand_checked&amp;quot;: hand,&lt;br /&gt;
                  &amp;quot;expected&amp;quot;: run_case(fn, args)})&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DAY = 86400&lt;br /&gt;
WIN = 30 * DAY&lt;br /&gt;
G = {&amp;quot;CE-F1&amp;quot;: 1, &amp;quot;CE-F2&amp;quot;: 1}&lt;br /&gt;
H = {&amp;quot;CE-A1&amp;quot;: 2, &amp;quot;CE-A2&amp;quot;: 3, &amp;quot;CE-A3&amp;quot;: 3, &amp;quot;CE-A4&amp;quot;: 2, &amp;quot;CE-A5&amp;quot;: 3}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def f1(named=True, pred=None, blocks=100, viol=None, taken=False):&lt;br /&gt;
    return {&amp;quot;named&amp;quot;: named, &amp;quot;predecessor&amp;quot;: pred, &amp;quot;blocks&amp;quot;: blocks,&lt;br /&gt;
            &amp;quot;first_violation_block&amp;quot;: viol, &amp;quot;period_taken&amp;quot;: taken}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def f2(declared=True, blocks=100, viol=None, canary=None):&lt;br /&gt;
    return {&amp;quot;declared&amp;quot;: declared, &amp;quot;blocks&amp;quot;: blocks, &amp;quot;first_violation_block&amp;quot;: viol,&lt;br /&gt;
            &amp;quot;first_canary_failure_block&amp;quot;: canary}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ---- conduct_resolve -------------------------------------------------------&lt;br /&gt;
add(&amp;quot;S01 CE-F1: 100 clean blocks, no predecessor: FOR&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F1&amp;quot;}, &amp;quot;facts&amp;quot;: f1()}, True)&lt;br /&gt;
add(&amp;quot;S02 CE-F1: 99 blocks: PENDING (window boundary)&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F1&amp;quot;}, &amp;quot;facts&amp;quot;: f1(blocks=99)}, True)&lt;br /&gt;
add(&amp;quot;S03 CE-F1: 101 blocks: FOR&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F1&amp;quot;}, &amp;quot;facts&amp;quot;: f1(blocks=101)}, True)&lt;br /&gt;
add(&amp;quot;S04 CE-F1: a confirmed violation at block 100: NEUTRAL (inclusive)&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F1&amp;quot;}, &amp;quot;facts&amp;quot;: f1(blocks=150, viol=100)}, True)&lt;br /&gt;
add(&amp;quot;S05 CE-F1: a confirmed violation at block 101: FOR (outside the window)&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F1&amp;quot;}, &amp;quot;facts&amp;quot;: f1(blocks=150, viol=101)}, True)&lt;br /&gt;
add(&amp;quot;S06 CE-F1: a violation at block 5 with 5 blocks landed: NEUTRAL at once&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F1&amp;quot;}, &amp;quot;facts&amp;quot;: f1(blocks=5, viol=5)}, True)&lt;br /&gt;
add(&amp;quot;S07 CE-F1: the predecessor GREEN with nothing pending: FOR&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F1&amp;quot;}, &amp;quot;facts&amp;quot;: f1(pred={&amp;quot;state&amp;quot;: &amp;quot;GREEN&amp;quot;, &amp;quot;pending&amp;quot;: 0})}, True)&lt;br /&gt;
add(&amp;quot;S08 CE-F1: the predecessor YELLOW: NEUTRAL&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F1&amp;quot;}, &amp;quot;facts&amp;quot;: f1(pred={&amp;quot;state&amp;quot;: &amp;quot;YELLOW&amp;quot;, &amp;quot;pending&amp;quot;: 0})}, True)&lt;br /&gt;
add(&amp;quot;S09 CE-F1: the predecessor GREEN with one PENDING item: NEUTRAL&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F1&amp;quot;}, &amp;quot;facts&amp;quot;: f1(pred={&amp;quot;state&amp;quot;: &amp;quot;GREEN&amp;quot;, &amp;quot;pending&amp;quot;: 1})}, True)&lt;br /&gt;
add(&amp;quot;S10 CE-F1: not named: NEUTRAL&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F1&amp;quot;}, &amp;quot;facts&amp;quot;: f1(named=False)}, True)&lt;br /&gt;
add(&amp;quot;S11 CE-F1: the RATING PERIOD&amp;#039;s CE-F1 already taken: NEUTRAL&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F1&amp;quot;}, &amp;quot;facts&amp;quot;: f1(taken=True)}, True)&lt;br /&gt;
add(&amp;quot;S12 CE-F1: zero blocks: PENDING&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F1&amp;quot;}, &amp;quot;facts&amp;quot;: f1(blocks=0)}, True)&lt;br /&gt;
add(&amp;quot;S13 CE-F2: 100 clean blocks after the declared change: FOR&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F2&amp;quot;}, &amp;quot;facts&amp;quot;: f2()}, True)&lt;br /&gt;
add(&amp;quot;S14 CE-F2: 99 blocks: PENDING&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F2&amp;quot;}, &amp;quot;facts&amp;quot;: f2(blocks=99)}, True)&lt;br /&gt;
add(&amp;quot;S15 CE-F2: a canary failure at block 100: NEUTRAL&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F2&amp;quot;}, &amp;quot;facts&amp;quot;: f2(blocks=120, canary=100)}, True)&lt;br /&gt;
add(&amp;quot;S16 CE-F2: a canary failure at block 101: FOR&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F2&amp;quot;}, &amp;quot;facts&amp;quot;: f2(blocks=120, canary=101)}, True)&lt;br /&gt;
add(&amp;quot;S17 CE-F2: a violation at block 1: NEUTRAL&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F2&amp;quot;}, &amp;quot;facts&amp;quot;: f2(blocks=1, viol=1)}, True)&lt;br /&gt;
add(&amp;quot;S18 CE-F2: not declared: NEUTRAL (CE-A1&amp;#039;s matter)&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F2&amp;quot;}, &amp;quot;facts&amp;quot;: f2(declared=False)}, True)&lt;br /&gt;
add(&amp;quot;S19 CE-A1: audit CONFIRMED: AGAINST&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A1&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;audit&amp;quot;: &amp;quot;CONFIRMED&amp;quot;}}, True)&lt;br /&gt;
add(&amp;quot;S20 CE-A1: audit OPEN: PENDING&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A1&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;audit&amp;quot;: &amp;quot;OPEN&amp;quot;}}, True)&lt;br /&gt;
add(&amp;quot;S21 CE-A1: audit DISMISSED: NEUTRAL&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A1&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;audit&amp;quot;: &amp;quot;DISMISSED&amp;quot;}}, True)&lt;br /&gt;
add(&amp;quot;S22 CE-A2: audit CONFIRMED: AGAINST&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A2&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;audit&amp;quot;: &amp;quot;CONFIRMED&amp;quot;}}, True)&lt;br /&gt;
add(&amp;quot;S23 CE-A3: audit OPEN: PENDING&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A3&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;audit&amp;quot;: &amp;quot;OPEN&amp;quot;}}, True)&lt;br /&gt;
add(&amp;quot;S24 CE-A4: admitted 30 days after a YELLOW agent&amp;#039;s lapse: AGAINST (window boundary, inclusive)&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A4&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;admission&amp;quot;: 1000 + WIN, &amp;quot;exit&amp;quot;: 1000, &amp;quot;state&amp;quot;: &amp;quot;YELLOW&amp;quot;, &amp;quot;pending&amp;quot;: 0, &amp;quot;window&amp;quot;: WIN}}, True)&lt;br /&gt;
add(&amp;quot;S25 CE-A4: admitted 30 days and one second after: NEUTRAL&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A4&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;admission&amp;quot;: 1001 + WIN, &amp;quot;exit&amp;quot;: 1000, &amp;quot;state&amp;quot;: &amp;quot;YELLOW&amp;quot;, &amp;quot;pending&amp;quot;: 0, &amp;quot;window&amp;quot;: WIN}}, True)&lt;br /&gt;
add(&amp;quot;S26 CE-A4: admitted before the exit, inside the window: AGAINST (either side)&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A4&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;admission&amp;quot;: 1000, &amp;quot;exit&amp;quot;: 1000 + WIN, &amp;quot;state&amp;quot;: &amp;quot;ORANGE&amp;quot;, &amp;quot;pending&amp;quot;: 2, &amp;quot;window&amp;quot;: WIN}}, True)&lt;br /&gt;
add(&amp;quot;S27 CE-A4: the other agent GREEN with nothing pending: NEUTRAL&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A4&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;admission&amp;quot;: 2000, &amp;quot;exit&amp;quot;: 1000, &amp;quot;state&amp;quot;: &amp;quot;GREEN&amp;quot;, &amp;quot;pending&amp;quot;: 0, &amp;quot;window&amp;quot;: WIN}}, True)&lt;br /&gt;
add(&amp;quot;S28 CE-A4: GREEN with a PENDING item: AGAINST&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A4&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;admission&amp;quot;: 2000, &amp;quot;exit&amp;quot;: 1000, &amp;quot;state&amp;quot;: &amp;quot;GREEN&amp;quot;, &amp;quot;pending&amp;quot;: 1, &amp;quot;window&amp;quot;: WIN}}, True)&lt;br /&gt;
add(&amp;quot;S29 CE-A4: SUSPENDED, same second: AGAINST&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A4&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;admission&amp;quot;: 1000, &amp;quot;exit&amp;quot;: 1000, &amp;quot;state&amp;quot;: &amp;quot;SUSPENDED&amp;quot;, &amp;quot;pending&amp;quot;: 0, &amp;quot;window&amp;quot;: 0}}, True)&lt;br /&gt;
add(&amp;quot;S30 CE-A5: removed after a canary failure: AGAINST&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A5&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;removed&amp;quot;: True, &amp;quot;cause&amp;quot;: &amp;quot;CANARY&amp;quot;}}, True)&lt;br /&gt;
add(&amp;quot;S31 CE-A5: removed after a trip: AGAINST&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A5&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;removed&amp;quot;: True, &amp;quot;cause&amp;quot;: &amp;quot;TRIP&amp;quot;}}, True)&lt;br /&gt;
add(&amp;quot;S32 CE-A5: removed for another reason: NEUTRAL&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A5&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;removed&amp;quot;: True, &amp;quot;cause&amp;quot;: &amp;quot;OTHER&amp;quot;}}, True)&lt;br /&gt;
add(&amp;quot;S33 CE-A5: the decision item open: PENDING&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A5&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;removed&amp;quot;: False, &amp;quot;cause&amp;quot;: &amp;quot;CANARY&amp;quot;}}, True)&lt;br /&gt;
add(&amp;quot;S34 an unknown kind is refused&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-X&amp;quot;}, &amp;quot;facts&amp;quot;: {}}, True)&lt;br /&gt;
add(&amp;quot;S35 facts of another kind are refused&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F1&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;audit&amp;quot;: &amp;quot;OPEN&amp;quot;}}, True)&lt;br /&gt;
add(&amp;quot;S36 a violation block of 0 is refused (blocks are 1-based)&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F1&amp;quot;}, &amp;quot;facts&amp;quot;: f1(viol=0)}, True)&lt;br /&gt;
add(&amp;quot;S37 a boolean blocks count is refused&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-F1&amp;quot;}, &amp;quot;facts&amp;quot;: f1(blocks=True)}, True)&lt;br /&gt;
add(&amp;quot;S38 an unknown audit state is refused&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A2&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;audit&amp;quot;: &amp;quot;MAYBE&amp;quot;}}, True)&lt;br /&gt;
add(&amp;quot;S39 an unknown state at exit is refused&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A4&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;admission&amp;quot;: 2000, &amp;quot;exit&amp;quot;: 1000, &amp;quot;state&amp;quot;: &amp;quot;RED&amp;quot;, &amp;quot;pending&amp;quot;: 0, &amp;quot;window&amp;quot;: WIN}}, True)&lt;br /&gt;
add(&amp;quot;S40 CE-A5 with a null cause, removed: NEUTRAL&amp;quot;, &amp;quot;resolve&amp;quot;, {&amp;quot;event&amp;quot;: {&amp;quot;kind&amp;quot;: &amp;quot;CE-A5&amp;quot;}, &amp;quot;facts&amp;quot;: {&amp;quot;removed&amp;quot;: True, &amp;quot;cause&amp;quot;: None}}, True)&lt;br /&gt;
&lt;br /&gt;
# ---- user_evidence ---------------------------------------------------------&lt;br /&gt;
def ev(kind, res, w=None):&lt;br /&gt;
    d = {&amp;quot;kind&amp;quot;: kind, &amp;quot;resolution&amp;quot;: res}&lt;br /&gt;
    if w is not None:&lt;br /&gt;
        d[&amp;quot;weight&amp;quot;] = w&lt;br /&gt;
    return d&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
base = {&amp;quot;g&amp;quot;: G, &amp;quot;h&amp;quot;: H, &amp;quot;a0&amp;quot;: 1, &amp;quot;b0&amp;quot;: 1, &amp;quot;half_life&amp;quot;: 500}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def uargs(events, ages, **over):&lt;br /&gt;
    a = dict(base)&lt;br /&gt;
    a.update(over)&lt;br /&gt;
    a[&amp;quot;events&amp;quot;] = events&lt;br /&gt;
    a[&amp;quot;ages&amp;quot;] = ages&lt;br /&gt;
    return a&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
add(&amp;quot;E01 no events: the prior, E 0.5, interval 0.025..0.975, n 0&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([], []), True)&lt;br /&gt;
add(&amp;quot;E02 one CE-F1 FOR at age 0: F 1, E 2/3&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-F1&amp;quot;, &amp;quot;FOR&amp;quot;)], [0]), True)&lt;br /&gt;
add(&amp;quot;E03 one CE-A5 AGAINST at age 0: A 3, E 1/5&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-A5&amp;quot;, &amp;quot;AGAINST&amp;quot;)], [0]), True)&lt;br /&gt;
add(&amp;quot;E04 a CE-F1 FOR at age 500 (one half-life): F 0.5&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-F1&amp;quot;, &amp;quot;FOR&amp;quot;)], [500]), True)&lt;br /&gt;
add(&amp;quot;E05 a CE-A1 AGAINST at age 1000 (two half-lives): A 0.5&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-A1&amp;quot;, &amp;quot;AGAINST&amp;quot;)], [1000]), True)&lt;br /&gt;
add(&amp;quot;E06 agent events carry their own weights: FOR 0.8 and AGAINST 2 at age 0&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;AGENT&amp;quot;, &amp;quot;FOR&amp;quot;, 0.8), ev(&amp;quot;AGENT&amp;quot;, &amp;quot;AGAINST&amp;quot;, 2)], [0, 0]), True)&lt;br /&gt;
add(&amp;quot;E07 both parts: two agent FOR events, a CE-F2 FOR, a CE-A4 AGAINST, aged&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;AGENT&amp;quot;, &amp;quot;FOR&amp;quot;, 1), ev(&amp;quot;AGENT&amp;quot;, &amp;quot;FOR&amp;quot;, 0.5), ev(&amp;quot;CE-F2&amp;quot;, &amp;quot;FOR&amp;quot;), ev(&amp;quot;CE-A4&amp;quot;, &amp;quot;AGAINST&amp;quot;)], [10, 250, 0, 700]), False)&lt;br /&gt;
add(&amp;quot;E08 a NEUTRAL conduct event adds nothing and is not counted&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-F1&amp;quot;, &amp;quot;NEUTRAL&amp;quot;), ev(&amp;quot;CE-A2&amp;quot;, &amp;quot;NEUTRAL&amp;quot;), ev(&amp;quot;CE-F2&amp;quot;, &amp;quot;FOR&amp;quot;)], [0, 0, 0]), True)&lt;br /&gt;
add(&amp;quot;E09 a PENDING event is refused (resolved events only)&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-A1&amp;quot;, &amp;quot;PENDING&amp;quot;)], [0]), True)&lt;br /&gt;
add(&amp;quot;E10 a FOR resolution on an AGAINST kind is refused&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-A1&amp;quot;, &amp;quot;FOR&amp;quot;)], [0]), True)&lt;br /&gt;
add(&amp;quot;E11 a weight on a conduct event is refused&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-F1&amp;quot;, &amp;quot;FOR&amp;quot;, 5)], [0]), True)&lt;br /&gt;
add(&amp;quot;E12 an agent event without a weight is refused&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;AGENT&amp;quot;, &amp;quot;FOR&amp;quot;)], [0]), True)&lt;br /&gt;
add(&amp;quot;E13 ages of the wrong length are refused&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-F1&amp;quot;, &amp;quot;FOR&amp;quot;)], []), True)&lt;br /&gt;
add(&amp;quot;E14 a negative age is refused&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-F1&amp;quot;, &amp;quot;FOR&amp;quot;)], [-1]), True)&lt;br /&gt;
add(&amp;quot;E15 h missing a kind is refused&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-F1&amp;quot;, &amp;quot;FOR&amp;quot;)], [0], h={&amp;quot;CE-A1&amp;quot;: 2}), True)&lt;br /&gt;
add(&amp;quot;E16 a0 of 0 is refused&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-F1&amp;quot;, &amp;quot;FOR&amp;quot;)], [0], a0=0), True)&lt;br /&gt;
add(&amp;quot;E17 half_life of 0 is refused&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-F1&amp;quot;, &amp;quot;FOR&amp;quot;)], [0], half_life=0), True)&lt;br /&gt;
add(&amp;quot;E18 tuning weights as declared: CE-A2 3, CE-A4 2, CE-F1 1&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-A2&amp;quot;, &amp;quot;AGAINST&amp;quot;), ev(&amp;quot;CE-A4&amp;quot;, &amp;quot;AGAINST&amp;quot;), ev(&amp;quot;CE-F1&amp;quot;, &amp;quot;FOR&amp;quot;)], [0, 0, 0]), True)&lt;br /&gt;
add(&amp;quot;E19 other tuning weights: g 2, h 1&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-A2&amp;quot;, &amp;quot;AGAINST&amp;quot;), ev(&amp;quot;CE-F1&amp;quot;, &amp;quot;FOR&amp;quot;)], [0, 0], g={&amp;quot;CE-F1&amp;quot;: 2, &amp;quot;CE-F2&amp;quot;: 2}, h={&amp;quot;CE-A1&amp;quot;: 1, &amp;quot;CE-A2&amp;quot;: 1, &amp;quot;CE-A3&amp;quot;: 1, &amp;quot;CE-A4&amp;quot;: 1, &amp;quot;CE-A5&amp;quot;: 1}), True)&lt;br /&gt;
add(&amp;quot;E20 a thin file&amp;#039;s neighbour: 25 FOR of weight 1 and 3 AGAINST of weight 1, unaged&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;AGENT&amp;quot;, &amp;quot;FOR&amp;quot;, 1)] * 25 + [ev(&amp;quot;AGENT&amp;quot;, &amp;quot;AGAINST&amp;quot;, 1)] * 3, [0] * 28), False)&lt;br /&gt;
add(&amp;quot;E21 another prior: a0 2, b0 2&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-F1&amp;quot;, &amp;quot;FOR&amp;quot;)], [0], a0=2, b0=2), True)&lt;br /&gt;
add(&amp;quot;E22 a very old event: age 50000 at half-life 500&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-F1&amp;quot;, &amp;quot;FOR&amp;quot;)], [50000]), True)&lt;br /&gt;
add(&amp;quot;E23 an unknown kind is refused&amp;quot;, &amp;quot;evidence&amp;quot;, uargs([ev(&amp;quot;CE-Z&amp;quot;, &amp;quot;FOR&amp;quot;)], [0]), True)&lt;br /&gt;
&lt;br /&gt;
# ---- whitewash_count -------------------------------------------------------&lt;br /&gt;
def a(agent, t):&lt;br /&gt;
    return {&amp;quot;agent&amp;quot;: agent, &amp;quot;time&amp;quot;: t}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
st = {&amp;quot;A&amp;quot;: {&amp;quot;state&amp;quot;: &amp;quot;YELLOW&amp;quot;, &amp;quot;pending&amp;quot;: 0}, &amp;quot;B&amp;quot;: {&amp;quot;state&amp;quot;: &amp;quot;GREEN&amp;quot;, &amp;quot;pending&amp;quot;: 0},&lt;br /&gt;
      &amp;quot;C&amp;quot;: {&amp;quot;state&amp;quot;: &amp;quot;GREEN&amp;quot;, &amp;quot;pending&amp;quot;: 2}, &amp;quot;D&amp;quot;: {&amp;quot;state&amp;quot;: &amp;quot;SUSPENDED&amp;quot;, &amp;quot;pending&amp;quot;: 1}}&lt;br /&gt;
add(&amp;quot;W01 one admission within the window of a YELLOW agent&amp;#039;s lapse: 1&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N1&amp;quot;, 1000)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;A&amp;quot;, 500)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W02 the retired agent GREEN with nothing pending: 0&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N1&amp;quot;, 1000)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;B&amp;quot;, 500)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W03 GREEN with a PENDING item: 1&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N1&amp;quot;, 1000)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;C&amp;quot;, 500)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W04 exactly the window apart: 1 (inclusive)&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N1&amp;quot;, 500 + WIN)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;A&amp;quot;, 500)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W05 one second past the window: 0&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N1&amp;quot;, 501 + WIN)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;A&amp;quot;, 500)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W06 the admission before the exit, inside the window: 1&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N1&amp;quot;, 400)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;A&amp;quot;, 500)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W07 two admissions, one troubled exit: each counts once: 2&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N1&amp;quot;, 600), a(&amp;quot;N2&amp;quot;, 700)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;A&amp;quot;, 500)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W08 one admission, two troubled exits: counts once, the first named&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N1&amp;quot;, 600)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;D&amp;quot;, 550), a(&amp;quot;A&amp;quot;, 500)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W09 the same account retired and re-admitted: not another agent: 0&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;A&amp;quot;, 600)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;A&amp;quot;, 500)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W10 no retirements: 0&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N1&amp;quot;, 600)], &amp;quot;retirements&amp;quot;: [], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W11 no admissions: 0&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [], &amp;quot;retirements&amp;quot;: [a(&amp;quot;A&amp;quot;, 500)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W12 a retired agent without a state entry is refused&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N1&amp;quot;, 600)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;Z&amp;quot;, 500)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W13 a negative window is refused&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N1&amp;quot;, 600)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;A&amp;quot;, 500)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: -1}, True)&lt;br /&gt;
add(&amp;quot;W14 a window of 0: only the same second counts&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N1&amp;quot;, 500), a(&amp;quot;N2&amp;quot;, 501)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;A&amp;quot;, 500)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: 0}, True)&lt;br /&gt;
add(&amp;quot;W15 an admission missing its time is refused&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [{&amp;quot;agent&amp;quot;: &amp;quot;N1&amp;quot;}], &amp;quot;retirements&amp;quot;: [a(&amp;quot;A&amp;quot;, 500)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W16 a bad state value is refused&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N1&amp;quot;, 600)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;A&amp;quot;, 500)], &amp;quot;states&amp;quot;: {&amp;quot;A&amp;quot;: {&amp;quot;state&amp;quot;: &amp;quot;RED&amp;quot;, &amp;quot;pending&amp;quot;: 0}}, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W17 agent names with | and unicode, escaped in the render&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N|1&amp;quot;, 600)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;αβ&amp;quot;, 500)], &amp;quot;states&amp;quot;: {&amp;quot;αβ&amp;quot;: {&amp;quot;state&amp;quot;: &amp;quot;ORANGE&amp;quot;, &amp;quot;pending&amp;quot;: 0}}, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W18 mixed: three admissions, three exits, two count&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N1&amp;quot;, 100), a(&amp;quot;N2&amp;quot;, 5000000), a(&amp;quot;N3&amp;quot;, 2000000)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;A&amp;quot;, 200), a(&amp;quot;B&amp;quot;, 4999999), a(&amp;quot;C&amp;quot;, 1000000)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W19 states not an object is refused&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;N1&amp;quot;, 600)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;A&amp;quot;, 500)], &amp;quot;states&amp;quot;: [], &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
add(&amp;quot;W20 an empty agent name is refused&amp;quot;, &amp;quot;whitewash&amp;quot;, {&amp;quot;admissions&amp;quot;: [a(&amp;quot;&amp;quot;, 600)], &amp;quot;retirements&amp;quot;: [a(&amp;quot;A&amp;quot;, 500)], &amp;quot;states&amp;quot;: st, &amp;quot;window&amp;quot;: WIN}, True)&lt;br /&gt;
&lt;br /&gt;
json.dump({&amp;quot;corpus&amp;quot;: &amp;quot;sponsor&amp;quot;, &amp;quot;version&amp;quot;: &amp;quot;0.1.0&amp;quot;, &amp;quot;cases&amp;quot;: cases},&lt;br /&gt;
          open(os.path.join(here, &amp;quot;sponsor_corpus.json&amp;quot;), &amp;quot;w&amp;quot;), indent=1,&lt;br /&gt;
          sort_keys=True, ensure_ascii=False)&lt;br /&gt;
print(&amp;quot;cases&amp;quot;, len(cases))&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>BFP Rauch</name></author>
	</entry>
</feed>