<?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%2Ftpc_probe.py</id>
	<title>The Principia Machina/TPC-PY/tpc probe.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%2Ftpc_probe.py"/>
	<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/tpc_probe.py&amp;action=history"/>
	<updated>2026-10-21T11:14:28Z</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/tpc_probe.py&amp;diff=4883&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/tpc_probe.py&amp;diff=4883&amp;oldid=prev"/>
		<updated>2026-09-30T02:11:04Z</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;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&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;2&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;/table&gt;</summary>
		<author><name>BFP Rauch</name></author>
	</entry>
	<entry>
		<id>https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/tpc_probe.py&amp;diff=4882&amp;oldid=prev</id>
		<title>BFP Rauch: TPC-PY source tpc_probe.py (0.2.0), SHA-256 8b99a699b72469a7; 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/tpc_probe.py&amp;diff=4882&amp;oldid=prev"/>
		<updated>2026-09-30T02:10:58Z</updated>

		<summary type="html">&lt;p&gt;TPC-PY source tpc_probe.py (0.2.0), SHA-256 8b99a699b72469a7; 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-l38&quot;&gt;Line 38:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 38:&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;   and normalized to one UNIT; TPX refuses a cross-entry M-M test&amp;quot;; the&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;   and normalized to one UNIT; TPX refuses a cross-entry M-M test&amp;quot;; the&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;   user&amp;#039;s Q12 answer &amp;quot;say half or double&amp;quot; (parrot speculation 12).&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;   user&amp;#039;s Q12 answer &amp;quot;say half or double&amp;quot; (parrot speculation 12).&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;   CP1 L: original and reproduction each {finding: {type: TEXT | DECIMAL&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;,&lt;/del&gt;&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;   CP1 L: original and reproduction each {finding: {type: TEXT | DECIMAL &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|&lt;/ins&gt;&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;       value}} in the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;D99 &lt;/del&gt;canonical form, which this function checks &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and&lt;/del&gt;&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;       &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EQUATION, &lt;/ins&gt;value}} in the canonical form, which this function checks&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;       never produces: TEXT is NFC with LF line endings; DECIMAL is the&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;       &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and &lt;/ins&gt;never produces: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EQUATION is canonical when tpc_form parse_form(&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      value, &quot;equation&quot;) returns [&quot;OK&quot;, value] (0.2.0; D195.3, RD-RS-13;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      tpm_record_functions 0.2.0 8.2); &lt;/ins&gt;TEXT is NFC with LF line endings;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      &lt;/ins&gt;DECIMAL is the&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;       zone serialization&amp;#039;s canonical decimal (&amp;quot;0&amp;quot;, or -?M(eE)? with M an&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;       zone serialization&amp;#039;s canonical decimal (&amp;quot;0&amp;quot;, or -?M(eE)? with M an&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;       integer without leading or trailing zeros and E a non-zero integer;&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;       integer without leading or trailing zeros and E a non-zero integer;&lt;/div&gt;&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-l161&quot;&gt;Line 161:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 164:&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;from tpc_strike import mm_contradicts, sr8_scale_factor  # noqa: E402&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;from tpc_strike import mm_contradicts, sr8_scale_factor  # noqa: E402&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;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;VERSION = &quot;0.1.0&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;&lt;/del&gt;&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;VERSION = &quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0.2.0&quot;     # increment 12 (S95: one MINOR bump over the declared &lt;/ins&gt;0.1.0&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;): CP1&#039;s EQUATION type&lt;/ins&gt;&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;TIME_MAX = 253402300799&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;TIME_MAX = 253402300799&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;COUNT_MAX = 1000000000&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;COUNT_MAX = 1000000000&lt;/div&gt;&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-l297&quot;&gt;Line 297:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 300:&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;         raise ValueError(&amp;quot;record&amp;quot;)&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;         raise ValueError(&amp;quot;record&amp;quot;)&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;     f = o[&amp;quot;finding&amp;quot;]&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;     f = o[&amp;quot;finding&amp;quot;]&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;     if not _keys_are(f, (&quot;type&quot;, &quot;value&quot;)) or f[&quot;type&quot;] not in (&quot;TEXT&quot;, &quot;DECIMAL&quot;):&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;     if not _keys_are(f, (&quot;type&quot;, &quot;value&quot;)) or f[&quot;type&quot;] not in (&quot;TEXT&quot;, &quot;DECIMAL&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;, &quot;EQUATION&lt;/ins&gt;&quot;):&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;         raise ValueError(&amp;quot;record&amp;quot;)&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;         raise ValueError(&amp;quot;record&amp;quot;)&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;     if type(f[&amp;quot;value&amp;quot;]) is not str:&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;     if type(f[&amp;quot;value&amp;quot;]) is not str:&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;         raise ValueError(&amp;quot;record&amp;quot;)&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;         raise ValueError(&amp;quot;record&amp;quot;)&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;     ok = _canon_text_ok(f[&quot;value&quot;]) if f[&quot;type&quot;] == &quot;TEXT&quot; else _canon_dec_ok(f[&quot;value&quot;])&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;     &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if f[&quot;type&quot;] == &quot;EQUATION&quot;:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        import tpc_form&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        ok = tpc_form.parse_form(f[&quot;value&quot;], &quot;equation&quot;) == [&quot;OK&quot;, f[&quot;value&quot;]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    else:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/ins&gt;ok = _canon_text_ok(f[&quot;value&quot;]) if f[&quot;type&quot;] == &quot;TEXT&quot; else _canon_dec_ok(f[&quot;value&quot;])&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;     if not ok:&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;     if not ok:&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;         raise ValueError(&amp;quot;CANON&amp;quot;)&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;         raise ValueError(&amp;quot;CANON&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&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/tpc_probe.py&amp;diff=4227&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/tpc_probe.py&amp;diff=4227&amp;oldid=prev"/>
		<updated>2026-09-28T04:37:36Z</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;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:37, 28 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&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;/table&gt;</summary>
		<author><name>BFP Rauch</name></author>
	</entry>
	<entry>
		<id>https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/tpc_probe.py&amp;diff=4226&amp;oldid=prev</id>
		<title>BFP Rauch: TPC-PY source tpc_probe.py (0.1.0), SHA-256 b49228a3ae8d06ec; 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/tpc_probe.py&amp;diff=4226&amp;oldid=prev"/>
		<updated>2026-09-27T15:43:18Z</updated>

		<summary type="html">&lt;p&gt;TPC-PY source tpc_probe.py (0.1.0), SHA-256 b49228a3ae8d06ec; 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;tpc_probe 0.1.0 (DRAFT, pending the pause of landing round 8): the&lt;br /&gt;
probe machinery of D118-D120 as PMP-TPM 0.12.0 words it - the comparison&lt;br /&gt;
of a reproduction with its target, LOAD and EXPECTED LOSS, the PARROT&lt;br /&gt;
RATIO&amp;#039;s epoch draw, the CANARY SCHEDULE&amp;#039;s tier, burst and gap draws, the&lt;br /&gt;
probe draw with the RESET, the reset&amp;#039;s end by state, and the&lt;br /&gt;
historical-view selection of a register revision.&lt;br /&gt;
&lt;br /&gt;
Reference implementation, Python standard library only; imports the&lt;br /&gt;
tree&amp;#039;s tpc_strike (SR3 mm_contradicts and SR8 sr8_scale_factor; reused,&lt;br /&gt;
never reimplemented) and tpc_beta&amp;#039;s canon_float. DATA for landing round 8&lt;br /&gt;
of branch tpm_project_closeout; not a declared TPC-PY version and not TPX&lt;br /&gt;
code. Every function is a pure function of its arguments; every draw is a&lt;br /&gt;
pure function of recorded state and a supplied random value r (32&lt;br /&gt;
lowercase hex, as tpc_falcon&amp;#039;s falcon_draw takes it), further uniform&lt;br /&gt;
values derived from r by the D97 netstring digest of [tag, &amp;quot;1&amp;quot;, r,&lt;br /&gt;
counter] and never by a language RNG. Declared parameters and tuning&lt;br /&gt;
options are read from the params object under PMP-TPM 0.12.0&amp;#039;s names&lt;br /&gt;
(PARROT RATIO, CANARY SCHEDULE, RESET RULE, CONSISTENCY SHARE, ORANGE&lt;br /&gt;
PASSES, HALF-LIFE); the TMS parameter k is an argument. Every refused&lt;br /&gt;
argument raises ValueError with a short fixed message. render_*() give&lt;br /&gt;
the canonical text the PHP residence (tpc_probe.php) reproduces byte for&lt;br /&gt;
byte; floats through canon_float. Ints are never bools.&lt;br /&gt;
&lt;br /&gt;
uniform(tag, r, counter) -&amp;gt; float                    (the draw law, D62)&lt;br /&gt;
  u = int(first 13 hex of SHA-256(netstring([tag, &amp;quot;1&amp;quot;, r, counter]))) /&lt;br /&gt;
  2^52: a double in [0, 1) exact in both residences.&lt;br /&gt;
  udiscrete(lo, hi, u) = min(hi, lo + floor(u x (hi - lo + 1))): U{lo..hi}.&lt;br /&gt;
&lt;br /&gt;
compare(kind, original, reproduction, standing, k, material_ratio)&lt;br /&gt;
  -&amp;gt; dict                                            (D119.1; SR3; SR8)&lt;br /&gt;
  &amp;quot;The comparison, closing TPS 5.9.7 OWED C-04: L, equality of FINDING&lt;br /&gt;
  after canonicalization (D99 forms), zero tolerance; M, SR3&amp;#039;s test with&lt;br /&gt;
  the UWC&amp;#039;s k after SR8 scaling and unit normalization, a material u_c&lt;br /&gt;
  difference noted on a MATCH (MATCH WITH DIFFERENCE NOTED); mechanical&lt;br /&gt;
  over a declared form only, a prose FINDING INSPECTION until the record&lt;br /&gt;
  field schema C-16 fixes a form&amp;quot;; SR3 &amp;quot;M-M, |x1 - x2| &amp;gt; k (u1^2 +&lt;br /&gt;
  u2^2)^(1/2) after SR8 scaling, both records naming the same QUANTITY&lt;br /&gt;
  and normalized to one UNIT; TPX refuses a cross-entry M-M test&amp;quot;; the&lt;br /&gt;
  user&amp;#039;s Q12 answer &amp;quot;say half or double&amp;quot; (parrot speculation 12).&lt;br /&gt;
  CP1 L: original and reproduction each {finding: {type: TEXT | DECIMAL,&lt;br /&gt;
      value}} in the D99 canonical form, which this function checks and&lt;br /&gt;
      never produces: TEXT is NFC with LF line endings; DECIMAL is the&lt;br /&gt;
      zone serialization&amp;#039;s canonical decimal (&amp;quot;0&amp;quot;, or -?M(eE)? with M an&lt;br /&gt;
      integer without leading or trailing zeros and E a non-zero integer;&lt;br /&gt;
      tpm_zone_schemas 5.6). A value not canonical is refused (CANON):&lt;br /&gt;
      canonicalization is the serializer&amp;#039;s, upstream. MATCH when the two&lt;br /&gt;
      values are byte-equal, else NON-CORROBORATION carrying both.&lt;br /&gt;
  CP2 M: each {x, u &amp;gt; 0, unit}; standing: the standing M records of the&lt;br /&gt;
      QUANTITY as [{x, u}] (the original among them), over which SR8&amp;#039;s S&lt;br /&gt;
      is computed (tpc_strike.sr8_scale_factor; 1 below two records);&lt;br /&gt;
      k &amp;gt; 0 the TMS parameter. A UNIT difference is refused (UNIT):&lt;br /&gt;
      normalization to coherent SI is upstream (D103, tpc_units), so this&lt;br /&gt;
      function compares one UNIT only (PD-SC-14). Contradiction by&lt;br /&gt;
      tpc_strike.mm_contradicts(x1, u1, x2, u2, k, S); the SR3 statistic&lt;br /&gt;
      |x1 - x2| / sqrt((S u1)^2 + (S u2)^2) is reported beside k.&lt;br /&gt;
      NON-CORROBORATION carries both values, both u_c, S and the&lt;br /&gt;
      statistic; else MATCH, and MATCH WITH DIFFERENCE NOTED when&lt;br /&gt;
      max(u1, u2) / min(u1, u2) &amp;gt;= material_ratio (PD-SC-15: &amp;quot;say half&lt;br /&gt;
      or double&amp;quot; read as the ratio 2, an argument, never a constant).&lt;br /&gt;
&lt;br /&gt;
load(records, r) -&amp;gt; dict                              (D118.1; 17.7)&lt;br /&gt;
  &amp;quot;LOAD the number of standing records whose citations or ASSUMPTIONS&lt;br /&gt;
  closure reach r&amp;quot;. records: {id: {cites: [ids], assumptions: [ids],&lt;br /&gt;
  standing: bool}}; an identifier outside records is ignored (a TFK&lt;br /&gt;
  identifier). LD1 A standing record s other than r counts when r is&lt;br /&gt;
  in the transitive closure of s over cites and assumptions (through&lt;br /&gt;
  any record, standing or not; PD-SC-16). The reaching ids are listed&lt;br /&gt;
  in code-point order.&lt;br /&gt;
&lt;br /&gt;
expected_loss(e_lo, load) -&amp;gt; float                    (D118.1; 17.7)&lt;br /&gt;
  EL(r) = PD x LOAD, &amp;quot;PD one minus the author&amp;#039;s evidence at its&lt;br /&gt;
  pessimistic end&amp;quot;, LGD 1: (1 - e_lo) x load.&lt;br /&gt;
&lt;br /&gt;
ratio_step(state, r, params) -&amp;gt; dict                       (D120.1)&lt;br /&gt;
  &amp;quot;PARROT RATIO, k parrots per canary, k : 1, k drawn per epoch of&lt;br /&gt;
  U{50..100} work blocks from {1/2, 1/3, 1/5, 1/7} with weights 0.30 /&lt;br /&gt;
  0.50 / 0.15 / 0.05&amp;quot;; RATIO EPOCH SCOPE decides whose state this is&lt;br /&gt;
  (PER ACCOUNT: the account&amp;#039;s; FLEET: the fleet&amp;#039;s), the law the same.&lt;br /&gt;
  state: {k: null or the value in force, remaining: blocks left in the&lt;br /&gt;
  epoch}; params[&amp;quot;PARROT RATIO&amp;quot;] = {set, weights, epoch: [lo, hi]}.&lt;br /&gt;
  RS1 When k is null or remaining is 0 this block starts an epoch: its&lt;br /&gt;
      length L = udiscrete(lo, hi, u0), k the first set member whose&lt;br /&gt;
      cumulative weight exceeds u1 (the last member past every cumulant),&lt;br /&gt;
      remaining = L - 1. Else remaining - 1. Tags TPC-RATIO-EPOCH and&lt;br /&gt;
      TPC-RATIO-K, counter 0.&lt;br /&gt;
&lt;br /&gt;
schedule_step(state, r, params) -&amp;gt; dict                    (D117.1)&lt;br /&gt;
  &amp;quot;blocks 1-100, 1 in 5; blocks 101-1000, 1 in 10; blocks 1001 and&lt;br /&gt;
  later, 1 in 20 by default, with bursts at 1 in 5 or 1 in 10 at even&lt;br /&gt;
  odds, duration U{50..200} blocks, gap U{200..500} blocks from the end&lt;br /&gt;
  of one burst to the start of the next, bursts after block 1000 only&amp;quot;.&lt;br /&gt;
  state: {blocks: landed under the certificate before this one, burst:&lt;br /&gt;
  null or {rate, remaining}, gap: null or the blocks left}; params&lt;br /&gt;
  [&amp;quot;CANARY SCHEDULE&amp;quot;] = {tiers: [[from, to or null, rate], ...],&lt;br /&gt;
  burst_rates, burst_duration: [lo, hi], burst_gap: [lo, hi]}.&lt;br /&gt;
  SC1 b = blocks + 1 is this block&amp;#039;s tenure number; its tier is the row&lt;br /&gt;
      holding b; bursts exist only from the last row&amp;#039;s first block.&lt;br /&gt;
  SC2 In a burst: the burst&amp;#039;s rate; remaining - 1; at 0 the burst ends&lt;br /&gt;
      and a gap is drawn (tag TPC-SCHEDULE-GAP). Else a gap: the one in&lt;br /&gt;
      force, or, on entering the burst regime, a fresh draw as if a&lt;br /&gt;
      burst had just ended (PD-SC-17); gap - 1; at 0 a burst starts on&lt;br /&gt;
      this block: its rate by even odds (TPC-SCHEDULE-RATE), its&lt;br /&gt;
      duration (TPC-SCHEDULE-DURATION), this block the first; a&lt;br /&gt;
      duration of 1 ends it here and draws the next gap (counter 1).&lt;br /&gt;
  SC3 The result records tier, rate and burst for this block.&lt;br /&gt;
&lt;br /&gt;
probe_draw(schedule, ratio_k, reset, has_own_record, r, params) -&amp;gt; dict&lt;br /&gt;
                                            (D118.1; D120.1; RECORDING)&lt;br /&gt;
  &amp;quot;The CANARY SCHEDULE read as the rate of probes, parrots inside the&lt;br /&gt;
  budget&amp;quot;; &amp;quot;RESET RULE 1 in 5 per account ... whatever its tier or burst&lt;br /&gt;
  state, the ratio unchanged&amp;quot;; &amp;quot;consistency parrots are CONSISTENCY&lt;br /&gt;
  SHARE of parrots, drawn per parrot, skipped when the account has no&lt;br /&gt;
  eligible own record&amp;quot;. PD1 rate = RESET RULE when reset is in force,&lt;br /&gt;
  else the schedule&amp;#039;s; probe when u0 &amp;lt; 1 / rate (TPC-PROBE 0). PD2 A&lt;br /&gt;
  probe is a parrot when u1 &amp;lt; k / (1 + k) (TPC-PROBE 1), else a CANARY.&lt;br /&gt;
  PD3 A parrot is a CONSISTENCY PARROT when u2 &amp;lt; CONSISTENCY SHARE&lt;br /&gt;
  (TPC-PROBE 2) and the account has an eligible own record, else a&lt;br /&gt;
  CORROBORATION PARROT. The recording form carries probe, kind, tier,&lt;br /&gt;
  burst, rate, ratio and reset.&lt;br /&gt;
&lt;br /&gt;
probe_step(state, r, params, has_own_record) -&amp;gt; dict&lt;br /&gt;
  ratio_step, schedule_step and probe_draw on one state {schedule,&lt;br /&gt;
  ratio, reset}; the recorded probe form and the new state.&lt;br /&gt;
&lt;br /&gt;
reset_update(reset, event, account_state, params) -&amp;gt; dict  (D120.1)&lt;br /&gt;
  &amp;quot;After a non-corroboration the reproducer&amp;#039;s probe rate is 1 in 5 ...;&lt;br /&gt;
  it ends by the account&amp;#039;s state: YELLOW at the next canary pass,&lt;br /&gt;
  ORANGE after ORANGE PASSES consecutive canary passes, SUSPENDED only&lt;br /&gt;
  by the audit finding. A canary failure during a reset is CR6&amp;#039;s case&lt;br /&gt;
  ...; a passed parrot ... does not end a reset&amp;quot;. reset: {in_force,&lt;br /&gt;
  passes}; event: NON-CORROBORATION | CANARY PASS | CANARY FAIL | PARROT&lt;br /&gt;
  PASS | AUDIT FINDING; account_state: GREEN | YELLOW | ORANGE |&lt;br /&gt;
  SUSPENDED. RU1 NON-CORROBORATION starts (or restarts) the reset. RU2&lt;br /&gt;
  CANARY PASS counts; the reset ends at the first pass under GREEN or&lt;br /&gt;
  YELLOW (PD-SC-18: GREEN, a state the rule does not name, ends as&lt;br /&gt;
  YELLOW does), at ORANGE PASSES consecutive passes under ORANGE, never&lt;br /&gt;
  under SUSPENDED. RU3 CANARY FAIL ends it as CR6&amp;#039;s case. RU4 PARROT&lt;br /&gt;
  PASS changes nothing. RU5 AUDIT FINDING ends it under SUSPENDED only.&lt;br /&gt;
&lt;br /&gt;
historical_view(revisions, target) -&amp;gt; dict                 (D118.1)&lt;br /&gt;
  &amp;quot;HISTORICAL VIEW: the source register served as it stood immediately&lt;br /&gt;
  before the target record was allocated&amp;quot;. revisions: [{rev, allocated:&lt;br /&gt;
  [ids]}] in ascending rev order; target: a record id allocated in&lt;br /&gt;
  exactly one revision. HV1 The view is the last revision before the&lt;br /&gt;
  target&amp;#039;s (null when the target&amp;#039;s is the first) and the ids allocated&lt;br /&gt;
  through it, in order.&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import hashlib&lt;br /&gt;
import math&lt;br /&gt;
import os&lt;br /&gt;
import re&lt;br /&gt;
import sys&lt;br /&gt;
import unicodedata&lt;br /&gt;
&lt;br /&gt;
_here = os.path.dirname(os.path.abspath(__file__))&lt;br /&gt;
for _p in (_here,):&lt;br /&gt;
    if _p not in sys.path:&lt;br /&gt;
        sys.path.insert(0, _p)&lt;br /&gt;
from tpc_beta import canon_float  # noqa: E402&lt;br /&gt;
from tpc_strike import mm_contradicts, sr8_scale_factor  # noqa: E402&lt;br /&gt;
&lt;br /&gt;
VERSION = &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
TIME_MAX = 253402300799&lt;br /&gt;
COUNT_MAX = 1000000000&lt;br /&gt;
TWO52 = 4503599627370496.0&lt;br /&gt;
STATES = (&amp;quot;GREEN&amp;quot;, &amp;quot;YELLOW&amp;quot;, &amp;quot;ORANGE&amp;quot;, &amp;quot;SUSPENDED&amp;quot;)&lt;br /&gt;
RESET_EVENTS = (&amp;quot;NON-CORROBORATION&amp;quot;, &amp;quot;CANARY PASS&amp;quot;, &amp;quot;CANARY FAIL&amp;quot;,&lt;br /&gt;
                &amp;quot;PARROT PASS&amp;quot;, &amp;quot;AUDIT FINDING&amp;quot;)&lt;br /&gt;
HEX16 = &amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
_CANON_DEC = re.compile(r&amp;quot;(0|-?[1-9]([0-9]*[1-9])?(e-?[1-9][0-9]*)?)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ---------------------------------------------------------------- common&lt;br /&gt;
&lt;br /&gt;
def _esc(s):&lt;br /&gt;
    out = []&lt;br /&gt;
    for ch in s:&lt;br /&gt;
        o = ord(ch)&lt;br /&gt;
        if ch == &amp;quot;|&amp;quot; or ch == &amp;quot;\\&amp;quot;:&lt;br /&gt;
            out.append(&amp;quot;\\&amp;quot; + ch)&lt;br /&gt;
        elif o &amp;lt; 0x20 or o == 0x7F:&lt;br /&gt;
            out.append(&amp;quot;\\x%02x&amp;quot; % o)&lt;br /&gt;
        else:&lt;br /&gt;
            out.append(ch)&lt;br /&gt;
    return &amp;quot;&amp;quot;.join(out)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _is_int(x, lo, hi):&lt;br /&gt;
    return type(x) is int and lo &amp;lt;= x &amp;lt;= hi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _is_name(x):&lt;br /&gt;
    return type(x) is str and x != &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _keys_are(o, required, optional=()):&lt;br /&gt;
    if type(o) is not dict:&lt;br /&gt;
        return False&lt;br /&gt;
    for k in required:&lt;br /&gt;
        if k not in o:&lt;br /&gt;
            return False&lt;br /&gt;
    for k in o:&lt;br /&gt;
        if k not in required and k not in optional:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _num(x):&lt;br /&gt;
    if type(x) is bool or not isinstance(x, (int, float)):&lt;br /&gt;
        return None&lt;br /&gt;
    x = float(x)&lt;br /&gt;
    if not math.isfinite(x):&lt;br /&gt;
        return None&lt;br /&gt;
    return x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _is_hex(s, n):&lt;br /&gt;
    if type(s) is not str or len(s) != n:&lt;br /&gt;
        return False&lt;br /&gt;
    for ch in s:&lt;br /&gt;
        if ch not in HEX16:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _f(x):&lt;br /&gt;
    return canon_float(x)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _b(x):&lt;br /&gt;
    return &amp;quot;true&amp;quot; if x else &amp;quot;false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _netstring(fields):&lt;br /&gt;
    return b&amp;quot;&amp;quot;.join(b&amp;quot;%d:%s&amp;quot; % (len(b), b)&lt;br /&gt;
                    for b in (f.encode(&amp;quot;utf-8&amp;quot;) for f in fields))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _digest_fields(fields):&lt;br /&gt;
    return hashlib.sha256(_netstring(fields)).hexdigest()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# --------------------------------------------------------------- uniform&lt;br /&gt;
&lt;br /&gt;
def uniform(tag, r, counter):&lt;br /&gt;
    if not _is_name(tag):&lt;br /&gt;
        raise ValueError(&amp;quot;tag&amp;quot;)&lt;br /&gt;
    if not _is_hex(r, 32):&lt;br /&gt;
        raise ValueError(&amp;quot;r&amp;quot;)&lt;br /&gt;
    if not _is_int(counter, 0, COUNT_MAX):&lt;br /&gt;
        raise ValueError(&amp;quot;counter&amp;quot;)&lt;br /&gt;
    h = _digest_fields([tag, &amp;quot;1&amp;quot;, r, str(counter)])&lt;br /&gt;
    return float(int(h[:13], 16)) / TWO52&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def udiscrete(lo, hi, u):&lt;br /&gt;
    n = hi - lo + 1&lt;br /&gt;
    v = lo + int(math.floor(u * float(n)))&lt;br /&gt;
    if v &amp;gt; hi:&lt;br /&gt;
        v = hi&lt;br /&gt;
    return v&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _pair(params, key, lo_min, hi_max, label):&lt;br /&gt;
    if type(params) is not dict or key not in params:&lt;br /&gt;
        raise ValueError(&amp;quot;params:&amp;quot; + label)&lt;br /&gt;
    v = params[key]&lt;br /&gt;
    if type(v) is not list or len(v) != 2:&lt;br /&gt;
        raise ValueError(&amp;quot;params:&amp;quot; + label)&lt;br /&gt;
    if not _is_int(v[0], lo_min, hi_max) or not _is_int(v[1], lo_min, hi_max):&lt;br /&gt;
        raise ValueError(&amp;quot;params:&amp;quot; + label)&lt;br /&gt;
    if v[0] &amp;gt; v[1]:&lt;br /&gt;
        raise ValueError(&amp;quot;params:&amp;quot; + label)&lt;br /&gt;
    return v[0], v[1]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# --------------------------------------------------------------- compare&lt;br /&gt;
&lt;br /&gt;
def _canon_text_ok(s):&lt;br /&gt;
    if type(s) is not str:&lt;br /&gt;
        return False&lt;br /&gt;
    if &amp;quot;\r&amp;quot; in s:&lt;br /&gt;
        return False&lt;br /&gt;
    for ch in s:&lt;br /&gt;
        if 0xD800 &amp;lt;= ord(ch) &amp;lt;= 0xDFFF:&lt;br /&gt;
            return False&lt;br /&gt;
    return unicodedata.normalize(&amp;quot;NFC&amp;quot;, s) == s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _canon_dec_ok(s):&lt;br /&gt;
    return type(s) is str and _CANON_DEC.fullmatch(s) is not None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _finding(o):&lt;br /&gt;
    if not _keys_are(o, (&amp;quot;finding&amp;quot;,)):&lt;br /&gt;
        raise ValueError(&amp;quot;record&amp;quot;)&lt;br /&gt;
    f = o[&amp;quot;finding&amp;quot;]&lt;br /&gt;
    if not _keys_are(f, (&amp;quot;type&amp;quot;, &amp;quot;value&amp;quot;)) or f[&amp;quot;type&amp;quot;] not in (&amp;quot;TEXT&amp;quot;, &amp;quot;DECIMAL&amp;quot;):&lt;br /&gt;
        raise ValueError(&amp;quot;record&amp;quot;)&lt;br /&gt;
    if type(f[&amp;quot;value&amp;quot;]) is not str:&lt;br /&gt;
        raise ValueError(&amp;quot;record&amp;quot;)&lt;br /&gt;
    ok = _canon_text_ok(f[&amp;quot;value&amp;quot;]) if f[&amp;quot;type&amp;quot;] == &amp;quot;TEXT&amp;quot; else _canon_dec_ok(f[&amp;quot;value&amp;quot;])&lt;br /&gt;
    if not ok:&lt;br /&gt;
        raise ValueError(&amp;quot;CANON&amp;quot;)&lt;br /&gt;
    return f[&amp;quot;type&amp;quot;], f[&amp;quot;value&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _mrec(o):&lt;br /&gt;
    if not _keys_are(o, (&amp;quot;x&amp;quot;, &amp;quot;u&amp;quot;, &amp;quot;unit&amp;quot;)):&lt;br /&gt;
        raise ValueError(&amp;quot;record&amp;quot;)&lt;br /&gt;
    x = _num(o[&amp;quot;x&amp;quot;])&lt;br /&gt;
    u = _num(o[&amp;quot;u&amp;quot;])&lt;br /&gt;
    if x is None or u is None or u &amp;lt;= 0.0 or type(o[&amp;quot;unit&amp;quot;]) is not str:&lt;br /&gt;
        raise ValueError(&amp;quot;record&amp;quot;)&lt;br /&gt;
    return x, u, o[&amp;quot;unit&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def compare(kind, original, reproduction, standing, k, material_ratio):&lt;br /&gt;
    if kind == &amp;quot;L&amp;quot;:&lt;br /&gt;
        t1, v1 = _finding(original)&lt;br /&gt;
        t2, v2 = _finding(reproduction)&lt;br /&gt;
        if t1 != t2:&lt;br /&gt;
            raise ValueError(&amp;quot;form&amp;quot;)&lt;br /&gt;
        if v1 == v2:&lt;br /&gt;
            return {&amp;quot;kind&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;outcome&amp;quot;: &amp;quot;MATCH&amp;quot;, &amp;quot;original&amp;quot;: v1,&lt;br /&gt;
                    &amp;quot;reproduction&amp;quot;: v2}&lt;br /&gt;
        return {&amp;quot;kind&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;outcome&amp;quot;: &amp;quot;NON-CORROBORATION&amp;quot;, &amp;quot;original&amp;quot;: v1,&lt;br /&gt;
                &amp;quot;reproduction&amp;quot;: v2}&lt;br /&gt;
    if kind != &amp;quot;M&amp;quot;:&lt;br /&gt;
        raise ValueError(&amp;quot;kind&amp;quot;)&lt;br /&gt;
    x1, u1, unit1 = _mrec(original)&lt;br /&gt;
    x2, u2, unit2 = _mrec(reproduction)&lt;br /&gt;
    if unit1 != unit2:&lt;br /&gt;
        raise ValueError(&amp;quot;UNIT&amp;quot;)&lt;br /&gt;
    kf = _num(k)&lt;br /&gt;
    if kf is None or kf &amp;lt;= 0.0:&lt;br /&gt;
        raise ValueError(&amp;quot;k&amp;quot;)&lt;br /&gt;
    mr = _num(material_ratio)&lt;br /&gt;
    if mr is None or mr &amp;lt; 1.0:&lt;br /&gt;
        raise ValueError(&amp;quot;material_ratio&amp;quot;)&lt;br /&gt;
    if type(standing) is not list:&lt;br /&gt;
        raise ValueError(&amp;quot;standing&amp;quot;)&lt;br /&gt;
    meas = []&lt;br /&gt;
    for m in standing:&lt;br /&gt;
        if not _keys_are(m, (&amp;quot;x&amp;quot;, &amp;quot;u&amp;quot;)):&lt;br /&gt;
            raise ValueError(&amp;quot;standing&amp;quot;)&lt;br /&gt;
        mx = _num(m[&amp;quot;x&amp;quot;])&lt;br /&gt;
        mu = _num(m[&amp;quot;u&amp;quot;])&lt;br /&gt;
        if mx is None or mu is None or mu &amp;lt;= 0.0:&lt;br /&gt;
            raise ValueError(&amp;quot;standing&amp;quot;)&lt;br /&gt;
        meas.append({&amp;quot;x&amp;quot;: mx, &amp;quot;u&amp;quot;: mu})&lt;br /&gt;
    s = sr8_scale_factor(meas)&lt;br /&gt;
    su1 = s * u1&lt;br /&gt;
    su2 = s * u2&lt;br /&gt;
    stat = abs(x1 - x2) / math.sqrt(su1 * su1 + su2 * su2)&lt;br /&gt;
    contra = mm_contradicts(x1, u1, x2, u2, kf, s)&lt;br /&gt;
    base = {&amp;quot;kind&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;x1&amp;quot;: x1, &amp;quot;u1&amp;quot;: u1, &amp;quot;x2&amp;quot;: x2, &amp;quot;u2&amp;quot;: u2, &amp;quot;S&amp;quot;: s,&lt;br /&gt;
            &amp;quot;k&amp;quot;: kf, &amp;quot;statistic&amp;quot;: stat, &amp;quot;unit&amp;quot;: unit1}&lt;br /&gt;
    if contra:&lt;br /&gt;
        base[&amp;quot;outcome&amp;quot;] = &amp;quot;NON-CORROBORATION&amp;quot;&lt;br /&gt;
        return base&lt;br /&gt;
    ratio = (u1 / u2) if u1 &amp;gt;= u2 else (u2 / u1)&lt;br /&gt;
    base[&amp;quot;ratio&amp;quot;] = ratio&lt;br /&gt;
    base[&amp;quot;outcome&amp;quot;] = &amp;quot;MATCH WITH DIFFERENCE NOTED&amp;quot; if ratio &amp;gt;= mr else &amp;quot;MATCH&amp;quot;&lt;br /&gt;
    return base&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def render_compare(d):&lt;br /&gt;
    if d[&amp;quot;kind&amp;quot;] == &amp;quot;L&amp;quot;:&lt;br /&gt;
        return &amp;quot;L|%s|%s|%s&amp;quot; % (d[&amp;quot;outcome&amp;quot;], _esc(d[&amp;quot;original&amp;quot;]),&lt;br /&gt;
                               _esc(d[&amp;quot;reproduction&amp;quot;]))&lt;br /&gt;
    out = &amp;quot;M|%s|%s|%s|%s|%s|%s|%s|%s|%s&amp;quot; % (&lt;br /&gt;
        d[&amp;quot;outcome&amp;quot;], _f(d[&amp;quot;x1&amp;quot;]), _f(d[&amp;quot;u1&amp;quot;]), _f(d[&amp;quot;x2&amp;quot;]), _f(d[&amp;quot;u2&amp;quot;]),&lt;br /&gt;
        _f(d[&amp;quot;S&amp;quot;]), _f(d[&amp;quot;k&amp;quot;]), _f(d[&amp;quot;statistic&amp;quot;]), _esc(d[&amp;quot;unit&amp;quot;]))&lt;br /&gt;
    if &amp;quot;ratio&amp;quot; in d:&lt;br /&gt;
        out += &amp;quot;|&amp;quot; + _f(d[&amp;quot;ratio&amp;quot;])&lt;br /&gt;
    return out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ------------------------------------------------------------------ load&lt;br /&gt;
&lt;br /&gt;
def _graph(records):&lt;br /&gt;
    if type(records) is not dict:&lt;br /&gt;
        raise ValueError(&amp;quot;records&amp;quot;)&lt;br /&gt;
    g = {}&lt;br /&gt;
    for rid, rec in records.items():&lt;br /&gt;
        if not _is_name(rid) or not _keys_are(rec, (&amp;quot;cites&amp;quot;, &amp;quot;assumptions&amp;quot;, &amp;quot;standing&amp;quot;)):&lt;br /&gt;
            raise ValueError(&amp;quot;records&amp;quot;)&lt;br /&gt;
        if type(rec[&amp;quot;cites&amp;quot;]) is not list or type(rec[&amp;quot;assumptions&amp;quot;]) is not list:&lt;br /&gt;
            raise ValueError(&amp;quot;records&amp;quot;)&lt;br /&gt;
        if type(rec[&amp;quot;standing&amp;quot;]) is not bool:&lt;br /&gt;
            raise ValueError(&amp;quot;records&amp;quot;)&lt;br /&gt;
        edges = []&lt;br /&gt;
        for x in rec[&amp;quot;cites&amp;quot;] + rec[&amp;quot;assumptions&amp;quot;]:&lt;br /&gt;
            if not _is_name(x):&lt;br /&gt;
                raise ValueError(&amp;quot;records&amp;quot;)&lt;br /&gt;
            edges.append(x)&lt;br /&gt;
        g[rid] = (edges, rec[&amp;quot;standing&amp;quot;])&lt;br /&gt;
    return g&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _closure(g, start):&lt;br /&gt;
    seen = set()&lt;br /&gt;
    stack = [start]&lt;br /&gt;
    while stack:&lt;br /&gt;
        cur = stack.pop()&lt;br /&gt;
        if cur in seen or cur not in g:&lt;br /&gt;
            continue&lt;br /&gt;
        seen.add(cur)&lt;br /&gt;
        for e in g[cur][0]:&lt;br /&gt;
            stack.append(e)&lt;br /&gt;
    seen.discard(start)&lt;br /&gt;
    return seen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def load(records, r):&lt;br /&gt;
    g = _graph(records)&lt;br /&gt;
    if not _is_name(r) or r not in g:&lt;br /&gt;
        raise ValueError(&amp;quot;r&amp;quot;)&lt;br /&gt;
    reach = []&lt;br /&gt;
    for sid in sorted(g.keys()):&lt;br /&gt;
        if sid == r or not g[sid][1]:&lt;br /&gt;
            continue&lt;br /&gt;
        if r in _closure(g, sid):&lt;br /&gt;
            reach.append(sid)&lt;br /&gt;
    return {&amp;quot;load&amp;quot;: len(reach), &amp;quot;reach&amp;quot;: reach}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def render_load(d):&lt;br /&gt;
    return &amp;quot;%d|%s&amp;quot; % (d[&amp;quot;load&amp;quot;], &amp;quot;,&amp;quot;.join(_esc(x) for x in d[&amp;quot;reach&amp;quot;]))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def expected_loss(e_lo, load_):&lt;br /&gt;
    e = _num(e_lo)&lt;br /&gt;
    if e is None or e &amp;lt; 0.0 or e &amp;gt; 1.0:&lt;br /&gt;
        raise ValueError(&amp;quot;e_lo&amp;quot;)&lt;br /&gt;
    if not _is_int(load_, 0, COUNT_MAX):&lt;br /&gt;
        raise ValueError(&amp;quot;load&amp;quot;)&lt;br /&gt;
    return (1.0 - e) * float(load_)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ------------------------------------------------------------ ratio_step&lt;br /&gt;
&lt;br /&gt;
def _ratio_params(params):&lt;br /&gt;
    if type(params) is not dict or &amp;quot;PARROT RATIO&amp;quot; not in params:&lt;br /&gt;
        raise ValueError(&amp;quot;params:PARROT RATIO&amp;quot;)&lt;br /&gt;
    pr = params[&amp;quot;PARROT RATIO&amp;quot;]&lt;br /&gt;
    if not _keys_are(pr, (&amp;quot;set&amp;quot;, &amp;quot;weights&amp;quot;, &amp;quot;epoch&amp;quot;)):&lt;br /&gt;
        raise ValueError(&amp;quot;params:PARROT RATIO&amp;quot;)&lt;br /&gt;
    st = pr[&amp;quot;set&amp;quot;]&lt;br /&gt;
    ws = pr[&amp;quot;weights&amp;quot;]&lt;br /&gt;
    if type(st) is not list or type(ws) is not list or not st or len(st) != len(ws):&lt;br /&gt;
        raise ValueError(&amp;quot;params:PARROT RATIO&amp;quot;)&lt;br /&gt;
    kset = []&lt;br /&gt;
    wset = []&lt;br /&gt;
    total = 0.0&lt;br /&gt;
    for i in range(len(st)):&lt;br /&gt;
        kv = _num(st[i])&lt;br /&gt;
        wv = _num(ws[i])&lt;br /&gt;
        if kv is None or kv &amp;lt;= 0.0 or wv is None or wv &amp;lt; 0.0:&lt;br /&gt;
            raise ValueError(&amp;quot;params:PARROT RATIO&amp;quot;)&lt;br /&gt;
        kset.append(kv)&lt;br /&gt;
        wset.append(wv)&lt;br /&gt;
        total = total + wv&lt;br /&gt;
    if total &amp;lt;= 0.0 or abs(total - 1.0) &amp;gt; 1e-9:&lt;br /&gt;
        raise ValueError(&amp;quot;params:PARROT RATIO&amp;quot;)&lt;br /&gt;
    lo, hi = _pair(pr, &amp;quot;epoch&amp;quot;, 1, COUNT_MAX, &amp;quot;PARROT RATIO&amp;quot;)&lt;br /&gt;
    return kset, wset, lo, hi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def ratio_step(state, r, params):&lt;br /&gt;
    if not _keys_are(state, (&amp;quot;k&amp;quot;, &amp;quot;remaining&amp;quot;)):&lt;br /&gt;
        raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    if state[&amp;quot;k&amp;quot;] is not None and (_num(state[&amp;quot;k&amp;quot;]) is None or _num(state[&amp;quot;k&amp;quot;]) &amp;lt;= 0.0):&lt;br /&gt;
        raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    if not _is_int(state[&amp;quot;remaining&amp;quot;], 0, COUNT_MAX):&lt;br /&gt;
        raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    if not _is_hex(r, 32):&lt;br /&gt;
        raise ValueError(&amp;quot;r&amp;quot;)&lt;br /&gt;
    kset, wset, lo, hi = _ratio_params(params)&lt;br /&gt;
    if state[&amp;quot;k&amp;quot;] is None or state[&amp;quot;remaining&amp;quot;] == 0:&lt;br /&gt;
        u0 = uniform(&amp;quot;TPC-RATIO-EPOCH&amp;quot;, r, 0)&lt;br /&gt;
        u1 = uniform(&amp;quot;TPC-RATIO-K&amp;quot;, r, 0)&lt;br /&gt;
        length = udiscrete(lo, hi, u0)&lt;br /&gt;
        cum = 0.0&lt;br /&gt;
        k = kset[len(kset) - 1]&lt;br /&gt;
        for i in range(len(kset)):&lt;br /&gt;
            cum = cum + wset[i]&lt;br /&gt;
            if u1 &amp;lt; cum:&lt;br /&gt;
                k = kset[i]&lt;br /&gt;
                break&lt;br /&gt;
        return {&amp;quot;k&amp;quot;: k, &amp;quot;remaining&amp;quot;: length - 1, &amp;quot;drawn&amp;quot;: True, &amp;quot;length&amp;quot;: length}&lt;br /&gt;
    return {&amp;quot;k&amp;quot;: float(state[&amp;quot;k&amp;quot;]), &amp;quot;remaining&amp;quot;: state[&amp;quot;remaining&amp;quot;] - 1,&lt;br /&gt;
            &amp;quot;drawn&amp;quot;: False, &amp;quot;length&amp;quot;: None}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def render_ratio(d):&lt;br /&gt;
    return &amp;quot;%s|%d|%s|%s&amp;quot; % (_f(d[&amp;quot;k&amp;quot;]), d[&amp;quot;remaining&amp;quot;], _b(d[&amp;quot;drawn&amp;quot;]),&lt;br /&gt;
                            &amp;quot;-&amp;quot; if d[&amp;quot;length&amp;quot;] is None else str(d[&amp;quot;length&amp;quot;]))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# --------------------------------------------------------- schedule_step&lt;br /&gt;
&lt;br /&gt;
def _schedule_params(params):&lt;br /&gt;
    if type(params) is not dict or &amp;quot;CANARY SCHEDULE&amp;quot; not in params:&lt;br /&gt;
        raise ValueError(&amp;quot;params:CANARY SCHEDULE&amp;quot;)&lt;br /&gt;
    cs = params[&amp;quot;CANARY SCHEDULE&amp;quot;]&lt;br /&gt;
    if not _keys_are(cs, (&amp;quot;tiers&amp;quot;, &amp;quot;burst_rates&amp;quot;, &amp;quot;burst_duration&amp;quot;, &amp;quot;burst_gap&amp;quot;)):&lt;br /&gt;
        raise ValueError(&amp;quot;params:CANARY SCHEDULE&amp;quot;)&lt;br /&gt;
    tiers = cs[&amp;quot;tiers&amp;quot;]&lt;br /&gt;
    if type(tiers) is not list or not tiers:&lt;br /&gt;
        raise ValueError(&amp;quot;params:CANARY SCHEDULE&amp;quot;)&lt;br /&gt;
    rows = []&lt;br /&gt;
    expect = 1&lt;br /&gt;
    for i, t in enumerate(tiers):&lt;br /&gt;
        if type(t) is not list or len(t) != 3:&lt;br /&gt;
            raise ValueError(&amp;quot;params:CANARY SCHEDULE&amp;quot;)&lt;br /&gt;
        frm, to, rate = t&lt;br /&gt;
        last = i == len(tiers) - 1&lt;br /&gt;
        if not _is_int(frm, 1, COUNT_MAX) or frm != expect or not _is_int(rate, 1, COUNT_MAX):&lt;br /&gt;
            raise ValueError(&amp;quot;params:CANARY SCHEDULE&amp;quot;)&lt;br /&gt;
        if last:&lt;br /&gt;
            if to is not None:&lt;br /&gt;
                raise ValueError(&amp;quot;params:CANARY SCHEDULE&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            if not _is_int(to, frm, COUNT_MAX):&lt;br /&gt;
                raise ValueError(&amp;quot;params:CANARY SCHEDULE&amp;quot;)&lt;br /&gt;
            expect = to + 1&lt;br /&gt;
        rows.append((frm, to, rate))&lt;br /&gt;
    br = cs[&amp;quot;burst_rates&amp;quot;]&lt;br /&gt;
    if type(br) is not list or not br:&lt;br /&gt;
        raise ValueError(&amp;quot;params:CANARY SCHEDULE&amp;quot;)&lt;br /&gt;
    for x in br:&lt;br /&gt;
        if not _is_int(x, 1, COUNT_MAX):&lt;br /&gt;
            raise ValueError(&amp;quot;params:CANARY SCHEDULE&amp;quot;)&lt;br /&gt;
    dlo, dhi = _pair(cs, &amp;quot;burst_duration&amp;quot;, 1, COUNT_MAX, &amp;quot;CANARY SCHEDULE&amp;quot;)&lt;br /&gt;
    glo, ghi = _pair(cs, &amp;quot;burst_gap&amp;quot;, 1, COUNT_MAX, &amp;quot;CANARY SCHEDULE&amp;quot;)&lt;br /&gt;
    return rows, br, (dlo, dhi), (glo, ghi)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def schedule_step(state, r, params):&lt;br /&gt;
    if not _keys_are(state, (&amp;quot;blocks&amp;quot;, &amp;quot;burst&amp;quot;, &amp;quot;gap&amp;quot;)):&lt;br /&gt;
        raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    if not _is_int(state[&amp;quot;blocks&amp;quot;], 0, COUNT_MAX - 1):&lt;br /&gt;
        raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    burst = state[&amp;quot;burst&amp;quot;]&lt;br /&gt;
    if burst is not None:&lt;br /&gt;
        if not _keys_are(burst, (&amp;quot;rate&amp;quot;, &amp;quot;remaining&amp;quot;)):&lt;br /&gt;
            raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
        if not _is_int(burst[&amp;quot;rate&amp;quot;], 1, COUNT_MAX) or not _is_int(burst[&amp;quot;remaining&amp;quot;], 1, COUNT_MAX):&lt;br /&gt;
            raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    gap = state[&amp;quot;gap&amp;quot;]&lt;br /&gt;
    if gap is not None and not _is_int(gap, 1, COUNT_MAX):&lt;br /&gt;
        raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    if burst is not None and gap is not None:&lt;br /&gt;
        raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    if not _is_hex(r, 32):&lt;br /&gt;
        raise ValueError(&amp;quot;r&amp;quot;)&lt;br /&gt;
    rows, brates, dur, gp = _schedule_params(params)&lt;br /&gt;
    b = state[&amp;quot;blocks&amp;quot;] + 1&lt;br /&gt;
    tier = 0&lt;br /&gt;
    tier_rate = rows[len(rows) - 1][2]&lt;br /&gt;
    for i in range(len(rows)):&lt;br /&gt;
        frm, to, rate = rows[i]&lt;br /&gt;
        if b &amp;gt;= frm and (to is None or b &amp;lt;= to):&lt;br /&gt;
            tier = i + 1&lt;br /&gt;
            tier_rate = rate&lt;br /&gt;
            break&lt;br /&gt;
    burst_from = rows[len(rows) - 1][0]&lt;br /&gt;
    new_burst = None&lt;br /&gt;
    new_gap = None&lt;br /&gt;
    rate = tier_rate&lt;br /&gt;
    in_burst = False&lt;br /&gt;
    if b &amp;gt;= burst_from:&lt;br /&gt;
        if burst is not None:&lt;br /&gt;
            rate = burst[&amp;quot;rate&amp;quot;]&lt;br /&gt;
            in_burst = True&lt;br /&gt;
            rem = burst[&amp;quot;remaining&amp;quot;] - 1&lt;br /&gt;
            if rem == 0:&lt;br /&gt;
                new_gap = udiscrete(gp[0], gp[1], uniform(&amp;quot;TPC-SCHEDULE-GAP&amp;quot;, r, 0))&lt;br /&gt;
            else:&lt;br /&gt;
                new_burst = {&amp;quot;rate&amp;quot;: burst[&amp;quot;rate&amp;quot;], &amp;quot;remaining&amp;quot;: rem}&lt;br /&gt;
        else:&lt;br /&gt;
            g = gap if gap is not None else udiscrete(gp[0], gp[1], uniform(&amp;quot;TPC-SCHEDULE-GAP&amp;quot;, r, 0))&lt;br /&gt;
            g = g - 1&lt;br /&gt;
            if g == 0:&lt;br /&gt;
                idx = udiscrete(0, len(brates) - 1, uniform(&amp;quot;TPC-SCHEDULE-RATE&amp;quot;, r, 0))&lt;br /&gt;
                length = udiscrete(dur[0], dur[1], uniform(&amp;quot;TPC-SCHEDULE-DURATION&amp;quot;, r, 0))&lt;br /&gt;
                rate = brates[idx]&lt;br /&gt;
                in_burst = True&lt;br /&gt;
                if length - 1 == 0:&lt;br /&gt;
                    new_gap = udiscrete(gp[0], gp[1], uniform(&amp;quot;TPC-SCHEDULE-GAP&amp;quot;, r, 1))&lt;br /&gt;
                else:&lt;br /&gt;
                    new_burst = {&amp;quot;rate&amp;quot;: rate, &amp;quot;remaining&amp;quot;: length - 1}&lt;br /&gt;
            else:&lt;br /&gt;
                new_gap = g&lt;br /&gt;
    return {&amp;quot;blocks&amp;quot;: b, &amp;quot;tier&amp;quot;: tier, &amp;quot;rate&amp;quot;: rate, &amp;quot;burst&amp;quot;: in_burst,&lt;br /&gt;
            &amp;quot;state&amp;quot;: {&amp;quot;blocks&amp;quot;: b, &amp;quot;burst&amp;quot;: new_burst, &amp;quot;gap&amp;quot;: new_gap}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def render_schedule(d):&lt;br /&gt;
    st = d[&amp;quot;state&amp;quot;]&lt;br /&gt;
    bs = &amp;quot;-&amp;quot; if st[&amp;quot;burst&amp;quot;] is None else &amp;quot;%d/%d&amp;quot; % (st[&amp;quot;burst&amp;quot;][&amp;quot;rate&amp;quot;], st[&amp;quot;burst&amp;quot;][&amp;quot;remaining&amp;quot;])&lt;br /&gt;
    gs = &amp;quot;-&amp;quot; if st[&amp;quot;gap&amp;quot;] is None else str(st[&amp;quot;gap&amp;quot;])&lt;br /&gt;
    return &amp;quot;%d|%d|%d|%s|%s|%s&amp;quot; % (d[&amp;quot;blocks&amp;quot;], d[&amp;quot;tier&amp;quot;], d[&amp;quot;rate&amp;quot;], _b(d[&amp;quot;burst&amp;quot;]), bs, gs)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ------------------------------------------------------------ probe_draw&lt;br /&gt;
&lt;br /&gt;
def _reset(reset):&lt;br /&gt;
    if not _keys_are(reset, (&amp;quot;in_force&amp;quot;, &amp;quot;passes&amp;quot;)):&lt;br /&gt;
        raise ValueError(&amp;quot;reset&amp;quot;)&lt;br /&gt;
    if type(reset[&amp;quot;in_force&amp;quot;]) is not bool or not _is_int(reset[&amp;quot;passes&amp;quot;], 0, COUNT_MAX):&lt;br /&gt;
        raise ValueError(&amp;quot;reset&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def probe_draw(schedule, ratio_k, reset, has_own_record, r, params):&lt;br /&gt;
    if not _keys_are(schedule, (&amp;quot;tier&amp;quot;, &amp;quot;rate&amp;quot;, &amp;quot;burst&amp;quot;)):&lt;br /&gt;
        raise ValueError(&amp;quot;schedule&amp;quot;)&lt;br /&gt;
    if (not _is_int(schedule[&amp;quot;tier&amp;quot;], 1, COUNT_MAX) or not _is_int(schedule[&amp;quot;rate&amp;quot;], 1, COUNT_MAX)&lt;br /&gt;
            or type(schedule[&amp;quot;burst&amp;quot;]) is not bool):&lt;br /&gt;
        raise ValueError(&amp;quot;schedule&amp;quot;)&lt;br /&gt;
    kf = _num(ratio_k)&lt;br /&gt;
    if kf is None or kf &amp;lt;= 0.0:&lt;br /&gt;
        raise ValueError(&amp;quot;ratio&amp;quot;)&lt;br /&gt;
    _reset(reset)&lt;br /&gt;
    if type(has_own_record) is not bool:&lt;br /&gt;
        raise ValueError(&amp;quot;has_own_record&amp;quot;)&lt;br /&gt;
    if not _is_hex(r, 32):&lt;br /&gt;
        raise ValueError(&amp;quot;r&amp;quot;)&lt;br /&gt;
    if type(params) is not dict or &amp;quot;RESET RULE&amp;quot; not in params or &amp;quot;CONSISTENCY SHARE&amp;quot; not in params:&lt;br /&gt;
        raise ValueError(&amp;quot;params:RESET RULE&amp;quot;)&lt;br /&gt;
    reset_rate = params[&amp;quot;RESET RULE&amp;quot;]&lt;br /&gt;
    if not _is_int(reset_rate, 1, COUNT_MAX):&lt;br /&gt;
        raise ValueError(&amp;quot;params:RESET RULE&amp;quot;)&lt;br /&gt;
    share = _num(params[&amp;quot;CONSISTENCY SHARE&amp;quot;])&lt;br /&gt;
    if share is None or share &amp;lt; 0.0 or share &amp;gt; 1.0:&lt;br /&gt;
        raise ValueError(&amp;quot;params:CONSISTENCY SHARE&amp;quot;)&lt;br /&gt;
    rate = reset_rate if reset[&amp;quot;in_force&amp;quot;] else schedule[&amp;quot;rate&amp;quot;]&lt;br /&gt;
    u0 = uniform(&amp;quot;TPC-PROBE&amp;quot;, r, 0)&lt;br /&gt;
    probe = u0 &amp;lt; 1.0 / float(rate)&lt;br /&gt;
    kind = None&lt;br /&gt;
    if probe:&lt;br /&gt;
        u1 = uniform(&amp;quot;TPC-PROBE&amp;quot;, r, 1)&lt;br /&gt;
        if u1 &amp;lt; kf / (1.0 + kf):&lt;br /&gt;
            u2 = uniform(&amp;quot;TPC-PROBE&amp;quot;, r, 2)&lt;br /&gt;
            if u2 &amp;lt; share and has_own_record:&lt;br /&gt;
                kind = &amp;quot;CONSISTENCY PARROT&amp;quot;&lt;br /&gt;
            else:&lt;br /&gt;
                kind = &amp;quot;CORROBORATION PARROT&amp;quot;&lt;br /&gt;
        else:&lt;br /&gt;
            kind = &amp;quot;CANARY&amp;quot;&lt;br /&gt;
    return {&amp;quot;probe&amp;quot;: probe, &amp;quot;kind&amp;quot;: kind, &amp;quot;tier&amp;quot;: schedule[&amp;quot;tier&amp;quot;],&lt;br /&gt;
            &amp;quot;burst&amp;quot;: schedule[&amp;quot;burst&amp;quot;], &amp;quot;rate&amp;quot;: rate, &amp;quot;ratio&amp;quot;: kf,&lt;br /&gt;
            &amp;quot;reset&amp;quot;: reset[&amp;quot;in_force&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def render_probe(d):&lt;br /&gt;
    return &amp;quot;%s|%s|%d|%s|%d|%s|%s&amp;quot; % (_b(d[&amp;quot;probe&amp;quot;]), &amp;quot;-&amp;quot; if d[&amp;quot;kind&amp;quot;] is None else d[&amp;quot;kind&amp;quot;],&lt;br /&gt;
                                     d[&amp;quot;tier&amp;quot;], _b(d[&amp;quot;burst&amp;quot;]), d[&amp;quot;rate&amp;quot;], _f(d[&amp;quot;ratio&amp;quot;]),&lt;br /&gt;
                                     _b(d[&amp;quot;reset&amp;quot;]))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def probe_step(state, r, params, has_own_record):&lt;br /&gt;
    if not _keys_are(state, (&amp;quot;schedule&amp;quot;, &amp;quot;ratio&amp;quot;, &amp;quot;reset&amp;quot;)):&lt;br /&gt;
        raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    rs = ratio_step(state[&amp;quot;ratio&amp;quot;], r, params)&lt;br /&gt;
    sc = schedule_step(state[&amp;quot;schedule&amp;quot;], r, params)&lt;br /&gt;
    pd = probe_draw({&amp;quot;tier&amp;quot;: sc[&amp;quot;tier&amp;quot;], &amp;quot;rate&amp;quot;: sc[&amp;quot;rate&amp;quot;], &amp;quot;burst&amp;quot;: sc[&amp;quot;burst&amp;quot;]},&lt;br /&gt;
                    rs[&amp;quot;k&amp;quot;], state[&amp;quot;reset&amp;quot;], has_own_record, r, params)&lt;br /&gt;
    return {&amp;quot;probe&amp;quot;: pd, &amp;quot;ratio&amp;quot;: rs, &amp;quot;schedule&amp;quot;: sc,&lt;br /&gt;
            &amp;quot;state&amp;quot;: {&amp;quot;schedule&amp;quot;: sc[&amp;quot;state&amp;quot;], &amp;quot;ratio&amp;quot;: {&amp;quot;k&amp;quot;: rs[&amp;quot;k&amp;quot;], &amp;quot;remaining&amp;quot;: rs[&amp;quot;remaining&amp;quot;]},&lt;br /&gt;
                      &amp;quot;reset&amp;quot;: state[&amp;quot;reset&amp;quot;]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def render_step(d):&lt;br /&gt;
    return &amp;quot;\n&amp;quot;.join([render_probe(d[&amp;quot;probe&amp;quot;]), render_ratio(d[&amp;quot;ratio&amp;quot;]),&lt;br /&gt;
                      render_schedule(d[&amp;quot;schedule&amp;quot;])])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ---------------------------------------------------------- reset_update&lt;br /&gt;
&lt;br /&gt;
def reset_update(reset, event, account_state, params):&lt;br /&gt;
    _reset(reset)&lt;br /&gt;
    if event not in RESET_EVENTS:&lt;br /&gt;
        raise ValueError(&amp;quot;event&amp;quot;)&lt;br /&gt;
    if account_state not in STATES:&lt;br /&gt;
        raise ValueError(&amp;quot;account_state&amp;quot;)&lt;br /&gt;
    if type(params) is not dict or not _is_int(params.get(&amp;quot;ORANGE PASSES&amp;quot;), 1, COUNT_MAX):&lt;br /&gt;
        raise ValueError(&amp;quot;params:ORANGE PASSES&amp;quot;)&lt;br /&gt;
    orange = params[&amp;quot;ORANGE PASSES&amp;quot;]&lt;br /&gt;
    if event == &amp;quot;NON-CORROBORATION&amp;quot;:&lt;br /&gt;
        return {&amp;quot;in_force&amp;quot;: True, &amp;quot;passes&amp;quot;: 0, &amp;quot;end&amp;quot;: &amp;quot;-&amp;quot;}&lt;br /&gt;
    if not reset[&amp;quot;in_force&amp;quot;]:&lt;br /&gt;
        return {&amp;quot;in_force&amp;quot;: False, &amp;quot;passes&amp;quot;: 0, &amp;quot;end&amp;quot;: &amp;quot;-&amp;quot;}&lt;br /&gt;
    if event == &amp;quot;CANARY FAIL&amp;quot;:&lt;br /&gt;
        return {&amp;quot;in_force&amp;quot;: False, &amp;quot;passes&amp;quot;: 0, &amp;quot;end&amp;quot;: &amp;quot;CR6&amp;quot;}&lt;br /&gt;
    if event == &amp;quot;PARROT PASS&amp;quot;:&lt;br /&gt;
        return {&amp;quot;in_force&amp;quot;: True, &amp;quot;passes&amp;quot;: reset[&amp;quot;passes&amp;quot;], &amp;quot;end&amp;quot;: &amp;quot;-&amp;quot;}&lt;br /&gt;
    if event == &amp;quot;AUDIT FINDING&amp;quot;:&lt;br /&gt;
        if account_state == &amp;quot;SUSPENDED&amp;quot;:&lt;br /&gt;
            return {&amp;quot;in_force&amp;quot;: False, &amp;quot;passes&amp;quot;: 0, &amp;quot;end&amp;quot;: &amp;quot;AUDIT&amp;quot;}&lt;br /&gt;
        return {&amp;quot;in_force&amp;quot;: True, &amp;quot;passes&amp;quot;: reset[&amp;quot;passes&amp;quot;], &amp;quot;end&amp;quot;: &amp;quot;-&amp;quot;}&lt;br /&gt;
    passes = reset[&amp;quot;passes&amp;quot;] + 1&lt;br /&gt;
    if account_state in (&amp;quot;GREEN&amp;quot;, &amp;quot;YELLOW&amp;quot;):&lt;br /&gt;
        return {&amp;quot;in_force&amp;quot;: False, &amp;quot;passes&amp;quot;: 0, &amp;quot;end&amp;quot;: &amp;quot;PASS&amp;quot;}&lt;br /&gt;
    if account_state == &amp;quot;ORANGE&amp;quot; and passes &amp;gt;= orange:&lt;br /&gt;
        return {&amp;quot;in_force&amp;quot;: False, &amp;quot;passes&amp;quot;: 0, &amp;quot;end&amp;quot;: &amp;quot;PASSES&amp;quot;}&lt;br /&gt;
    return {&amp;quot;in_force&amp;quot;: True, &amp;quot;passes&amp;quot;: passes, &amp;quot;end&amp;quot;: &amp;quot;-&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def render_reset(d):&lt;br /&gt;
    return &amp;quot;%s|%d|%s&amp;quot; % (_b(d[&amp;quot;in_force&amp;quot;]), d[&amp;quot;passes&amp;quot;], d[&amp;quot;end&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ------------------------------------------------------- historical_view&lt;br /&gt;
&lt;br /&gt;
def historical_view(revisions, target):&lt;br /&gt;
    if type(revisions) is not list or not _is_name(target):&lt;br /&gt;
        raise ValueError(&amp;quot;revisions&amp;quot;)&lt;br /&gt;
    last = None&lt;br /&gt;
    seen = set()&lt;br /&gt;
    where = None&lt;br /&gt;
    for rv in revisions:&lt;br /&gt;
        if not _keys_are(rv, (&amp;quot;rev&amp;quot;, &amp;quot;allocated&amp;quot;)):&lt;br /&gt;
            raise ValueError(&amp;quot;revisions&amp;quot;)&lt;br /&gt;
        if not _is_int(rv[&amp;quot;rev&amp;quot;], 0, COUNT_MAX) or (last is not None and rv[&amp;quot;rev&amp;quot;] &amp;lt;= last):&lt;br /&gt;
            raise ValueError(&amp;quot;revisions&amp;quot;)&lt;br /&gt;
        if type(rv[&amp;quot;allocated&amp;quot;]) is not list:&lt;br /&gt;
            raise ValueError(&amp;quot;revisions&amp;quot;)&lt;br /&gt;
        for x in rv[&amp;quot;allocated&amp;quot;]:&lt;br /&gt;
            if not _is_name(x) or x in seen:&lt;br /&gt;
                raise ValueError(&amp;quot;revisions&amp;quot;)&lt;br /&gt;
            seen.add(x)&lt;br /&gt;
            if x == target:&lt;br /&gt;
                where = rv[&amp;quot;rev&amp;quot;]&lt;br /&gt;
        last = rv[&amp;quot;rev&amp;quot;]&lt;br /&gt;
    if where is None:&lt;br /&gt;
        raise ValueError(&amp;quot;target&amp;quot;)&lt;br /&gt;
    view = None&lt;br /&gt;
    ids = []&lt;br /&gt;
    for rv in revisions:&lt;br /&gt;
        if rv[&amp;quot;rev&amp;quot;] &amp;lt; where:&lt;br /&gt;
            view = rv[&amp;quot;rev&amp;quot;]&lt;br /&gt;
            ids.extend(rv[&amp;quot;allocated&amp;quot;])&lt;br /&gt;
    return {&amp;quot;rev&amp;quot;: view, &amp;quot;ids&amp;quot;: ids}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def render_view(d):&lt;br /&gt;
    return &amp;quot;%s|%s&amp;quot; % (&amp;quot;-&amp;quot; if d[&amp;quot;rev&amp;quot;] is None else str(d[&amp;quot;rev&amp;quot;]),&lt;br /&gt;
                      &amp;quot;,&amp;quot;.join(_esc(x) for x in d[&amp;quot;ids&amp;quot;]))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ---------------------------------------------------------------- corpus&lt;br /&gt;
&lt;br /&gt;
FNS = (&amp;quot;uniform&amp;quot;, &amp;quot;compare&amp;quot;, &amp;quot;load&amp;quot;, &amp;quot;el&amp;quot;, &amp;quot;ratio&amp;quot;, &amp;quot;schedule&amp;quot;, &amp;quot;probe&amp;quot;,&lt;br /&gt;
       &amp;quot;step&amp;quot;, &amp;quot;reset&amp;quot;, &amp;quot;view&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def run_case(fn, args):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;One corpus case: the render, or &amp;quot;ERROR:&amp;quot; and the message.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if fn not in FNS:&lt;br /&gt;
        raise ValueError(&amp;quot;fn&amp;quot;)&lt;br /&gt;
    try:&lt;br /&gt;
        p = args.get(&amp;quot;params&amp;quot;)&lt;br /&gt;
        if fn == &amp;quot;uniform&amp;quot;:&lt;br /&gt;
            return _f(uniform(args[&amp;quot;tag&amp;quot;], args[&amp;quot;r&amp;quot;], args[&amp;quot;counter&amp;quot;]))&lt;br /&gt;
        if fn == &amp;quot;compare&amp;quot;:&lt;br /&gt;
            return render_compare(compare(args[&amp;quot;kind&amp;quot;], args[&amp;quot;original&amp;quot;], args[&amp;quot;reproduction&amp;quot;],&lt;br /&gt;
                                          args.get(&amp;quot;standing&amp;quot;), args.get(&amp;quot;k&amp;quot;),&lt;br /&gt;
                                          args.get(&amp;quot;material_ratio&amp;quot;)))&lt;br /&gt;
        if fn == &amp;quot;load&amp;quot;:&lt;br /&gt;
            return render_load(load(args[&amp;quot;records&amp;quot;], args[&amp;quot;r&amp;quot;]))&lt;br /&gt;
        if fn == &amp;quot;el&amp;quot;:&lt;br /&gt;
            return _f(expected_loss(args[&amp;quot;e_lo&amp;quot;], args[&amp;quot;load&amp;quot;]))&lt;br /&gt;
        if fn == &amp;quot;ratio&amp;quot;:&lt;br /&gt;
            return render_ratio(ratio_step(args[&amp;quot;state&amp;quot;], args[&amp;quot;r&amp;quot;], p))&lt;br /&gt;
        if fn == &amp;quot;schedule&amp;quot;:&lt;br /&gt;
            return render_schedule(schedule_step(args[&amp;quot;state&amp;quot;], args[&amp;quot;r&amp;quot;], p))&lt;br /&gt;
        if fn == &amp;quot;probe&amp;quot;:&lt;br /&gt;
            return render_probe(probe_draw(args[&amp;quot;schedule&amp;quot;], args[&amp;quot;ratio&amp;quot;], args[&amp;quot;reset&amp;quot;],&lt;br /&gt;
                                           args[&amp;quot;has_own_record&amp;quot;], args[&amp;quot;r&amp;quot;], p))&lt;br /&gt;
        if fn == &amp;quot;step&amp;quot;:&lt;br /&gt;
            return render_step(probe_step(args[&amp;quot;state&amp;quot;], args[&amp;quot;r&amp;quot;], p, args[&amp;quot;has_own_record&amp;quot;]))&lt;br /&gt;
        if fn == &amp;quot;reset&amp;quot;:&lt;br /&gt;
            return render_reset(reset_update(args[&amp;quot;reset&amp;quot;], args[&amp;quot;event&amp;quot;], args[&amp;quot;account_state&amp;quot;], p))&lt;br /&gt;
        return render_view(historical_view(args[&amp;quot;revisions&amp;quot;], args[&amp;quot;target&amp;quot;]))&lt;br /&gt;
    except ValueError as ex:&lt;br /&gt;
        return &amp;quot;ERROR:&amp;quot; + str(ex)&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>BFP Rauch</name></author>
	</entry>
</feed>