<?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_volunteer.py</id>
	<title>The Principia Machina/TPC-PY/tpc volunteer.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_volunteer.py"/>
	<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/tpc_volunteer.py&amp;action=history"/>
	<updated>2026-10-21T16:04:50Z</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_volunteer.py&amp;diff=4241&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_volunteer.py&amp;diff=4241&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;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:37, 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-4240:rev-4241 --&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_volunteer.py&amp;diff=4240&amp;oldid=prev</id>
		<title>BFP Rauch: TPC-PY source tpc_volunteer.py (0.1.0), SHA-256 c8d973f81a4e5fbc; 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_volunteer.py&amp;diff=4240&amp;oldid=prev"/>
		<updated>2026-09-27T15:43:18Z</updated>

		<summary type="html">&lt;p&gt;TPC-PY source tpc_volunteer.py (0.1.0), SHA-256 c8d973f81a4e5fbc; 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_volunteer 0.1.0 (DRAFT, pending the pause of landing round 8): the&lt;br /&gt;
VOLUNTEER channel&amp;#039;s law of D126 as PMP-TPM 0.12.0 words it (VOLUNTEER&lt;br /&gt;
LAW, GOOD STANDING, the tuning options EARLY CALL LIMIT through&lt;br /&gt;
VOLUNTEER SHARE) with D155&amp;#039;s FALCON answer - GOOD STANDING, the token&lt;br /&gt;
bucket, RETRY AFTER with full jitter, INTAKE&amp;#039;s EWMA and the random early&lt;br /&gt;
throttle p_nw, the p_v epoch, the draw itself, and the VOLUNTEER SHARE&lt;br /&gt;
cap - as pure functions of recorded state and a supplied random value.&lt;br /&gt;
&lt;br /&gt;
Reference implementation, Python standard library only; imports&lt;br /&gt;
tpc_probe (uniform, udiscrete) and tpc_beta (canon_float). DATA for&lt;br /&gt;
landing round 8 of branch tpm_project_closeout; not a declared TPC-PY&lt;br /&gt;
version and not TPX code. Every draw derives its uniform values from r&lt;br /&gt;
(32 lowercase hex) by the D97 digest of [tag, &amp;quot;1&amp;quot;, r, counter]. Declared&lt;br /&gt;
parameters and tuning options are read from params under PMP-TPM&lt;br /&gt;
0.12.0&amp;#039;s names: VOLUNTEER TIER; VOLUNTEER RATE (tokens per hour,&lt;br /&gt;
wall-clock); VOLUNTEER BURST; BACKOFF BASE and BACKOFF CAP (seconds,&lt;br /&gt;
wall-clock); INTAKE w_q; INTAKE MIN; INTAKE MAX; INTAKE MAX_P; P_V&lt;br /&gt;
BOUNDS; P_V ROTATION; EARLY CALL LIMIT; VOLUNTEER COOL-OFF; VOLUNTEER&lt;br /&gt;
SHARE; CONSISTENCY SHARE. Times are integer seconds of server time;&lt;br /&gt;
blocks are landed blocks. Every refused argument raises ValueError with&lt;br /&gt;
a short fixed message; render_*() give the canonical text the PHP&lt;br /&gt;
residence (tpc_volunteer.php) reproduces byte for byte.&lt;br /&gt;
&lt;br /&gt;
good_standing(facts, params) -&amp;gt; dict                            (D126.1)&lt;br /&gt;
  &amp;quot;GOOD STANDING: certificate current, D(IS) matching, state GREEN, no&lt;br /&gt;
  reset in force, not SUSPENDED; VOLUNTEER TIER may narrow it to the&lt;br /&gt;
  TRUST TIER&amp;quot;. facts: {certificate_current, dis_match, state, reset_in_&lt;br /&gt;
  force, suspended, in_tier}. GS1 The first failing clause, in that&lt;br /&gt;
  order, is the reason; VOLUNTEER TIER = TRUST TIER adds in_tier last.&lt;br /&gt;
&lt;br /&gt;
bucket_refill(bucket, now, params) -&amp;gt; dict     (D126.1; RFC 2697 srTCM)&lt;br /&gt;
  &amp;quot;a token bucket on the call, tokens at VOLUNTEER RATE up to VOLUNTEER&lt;br /&gt;
  BURST&amp;quot;. bucket: {tokens, updated}. BR1 tokens&amp;#039; = min(BURST, tokens +&lt;br /&gt;
  RATE x (now - updated) / 3600), updated&amp;#039; = now; now &amp;gt;= updated.&lt;br /&gt;
bucket_take(bucket) -&amp;gt; dict&lt;br /&gt;
  BT1 A token is taken when tokens &amp;gt;= 1; else the call has no token.&lt;br /&gt;
&lt;br /&gt;
retry_after(attempt, r, params) -&amp;gt; float       (D126.1; Brooker 2015)&lt;br /&gt;
  &amp;quot;RETRY AFTER = random(0, min(BACKOFF CAP, BACKOFF BASE x 2^attempt)),&lt;br /&gt;
  attempt the consecutive NO WORK answers, reset by WORK&amp;quot;. RA1 u from&lt;br /&gt;
  TPC-VOLUNTEER-RETRY counter 0; the bound is CAP once 2^attempt&lt;br /&gt;
  overflows a double (attempt &amp;gt;= 1024); seconds.&lt;br /&gt;
&lt;br /&gt;
intake_update(intake, volunteer_blocks, landed_blocks, params) -&amp;gt; float&lt;br /&gt;
  &amp;quot;INTAKE the EWMA (w_q) of the share of the account&amp;#039;s landed blocks in&lt;br /&gt;
  the last RATING PERIOD that were volunteer blocks&amp;quot; (D126.1; RED).&lt;br /&gt;
  IU1 share = volunteer / landed (0 when landed is 0, PD-SC-19);&lt;br /&gt;
      intake&amp;#039; = (1 - w_q) x intake + w_q x share.&lt;br /&gt;
p_nw(intake, params) -&amp;gt; float&lt;br /&gt;
  &amp;quot;p_nw 0 below INTAKE MIN, linear to INTAKE MAX_P at INTAKE MAX, 1&lt;br /&gt;
  above&amp;quot;: 0 when intake &amp;lt;= MIN; (intake - MIN) / (MAX - MIN) x MAX_P&lt;br /&gt;
  when MIN &amp;lt; intake &amp;lt;= MAX; 1 when intake &amp;gt; MAX. RED&amp;#039;s spacing&lt;br /&gt;
  correction is not used.&lt;br /&gt;
&lt;br /&gt;
pv_step(state, r, params) -&amp;gt; dict                              (D126.1)&lt;br /&gt;
  &amp;quot;p_v is drawn per epoch from P_V BOUNDS with interior endpoints, the&lt;br /&gt;
  epoch ending with P_V ROTATION per volunteer call fleet-wide&lt;br /&gt;
  (Geometric)&amp;quot;. state: {p_v: null or the value in force}. PV1 With p_v&lt;br /&gt;
  null, or when u0 &amp;lt; P_V ROTATION (TPC-PV-ROTATE 0), a new epoch starts&lt;br /&gt;
  on this call: p_v = lo + u1 x (hi - lo) (TPC-PV-DRAW 0). PV2 The step&lt;br /&gt;
  runs on every call TPX answers (PD-SC-20; alternative: on every call,&lt;br /&gt;
  refused ones included).&lt;br /&gt;
&lt;br /&gt;
volunteer_share(window, g, v_max) -&amp;gt; dict                      (D126.1)&lt;br /&gt;
  &amp;quot;FOR weight from volunteer work beyond v_max of the account&amp;#039;s FOR&lt;br /&gt;
  weight in the half-life window carries zero, the diversity quota&amp;#039;s&lt;br /&gt;
  shape applied to the channel&amp;quot;. window: [{volunteer: bool, weight}];&lt;br /&gt;
  g the match&amp;#039;s base weight. VS1 q = clip((v_max x (W + g) - W_v) / g,&lt;br /&gt;
  0, 1), the same shape as diversity_quota (PD-SC-1).&lt;br /&gt;
&lt;br /&gt;
volunteer_draw(state, call, r, params) -&amp;gt; dict     (D126.1; D155.1)&lt;br /&gt;
  &amp;quot;THE DRAW, per call, in order: no token or inside RETRY AFTER,&lt;br /&gt;
  REFUSED; u &amp;lt; p_nw(INTAKE), NO WORK; v &amp;lt; p_v, PROBE (canary or parrot&lt;br /&gt;
  by PARROT RATIO); a legitimate item available, that item; otherwise&lt;br /&gt;
  NO WORK&amp;quot;; &amp;quot;A too-early call is REFUSED, its own answer with RETRY&lt;br /&gt;
  AFTER, never NO WORK; ... past EARLY CALL LIMIT refusals in a RATING&lt;br /&gt;
  PERIOD the channel closes for VOLUNTEER COOL-OFF&amp;quot;; D155.1 &amp;quot;VOLUNTEER&lt;br /&gt;
  as a fourth answer kind FALCON, outside the p_v law&amp;quot;. state: {bucket,&lt;br /&gt;
  retry_until (server time or null), attempt, refusals, period (the&lt;br /&gt;
  RATING PERIOD index the refusals belong to), closed_until (block or&lt;br /&gt;
  null), intake, p_v (pv_step&amp;#039;s state)}; call: {now, block, period,&lt;br /&gt;
  has_item, has_falcon, has_own_record, ratio_k, standing (good_&lt;br /&gt;
  standing&amp;#039;s facts)}.&lt;br /&gt;
  VD1 Not in GOOD STANDING: REFUSED (STANDING), not counted (it is not&lt;br /&gt;
      a too-early call). The channel closed (block &amp;lt; closed_until):&lt;br /&gt;
      REFUSED (CLOSED), not counted (PD-SC-21).&lt;br /&gt;
  VD2 The bucket is refilled to now. Inside RETRY AFTER (now &amp;lt; retry_&lt;br /&gt;
      until): REFUSED (EARLY); no token: REFUSED (TOKEN). A refused call&lt;br /&gt;
      is counted in its RATING PERIOD (a new period restarts the count);&lt;br /&gt;
      past EARLY CALL LIMIT the channel closes until block + VOLUNTEER&lt;br /&gt;
      COOL-OFF and the count restarts. Its RETRY AFTER is the jitter law&lt;br /&gt;
      at the current attempt, and retry_until becomes the later of the&lt;br /&gt;
      one in force and now + RETRY AFTER (PD-SC-22).&lt;br /&gt;
  VD3 A token is taken; pv_step runs. An assigned falcon in flight:&lt;br /&gt;
      FALCON, outside the p_v law, the attempt unchanged (PD-SC-23: the&lt;br /&gt;
      falcon is neither a WORK BLOCK nor a PROBE, so INTAKE&amp;#039;s throttle&lt;br /&gt;
      does not apply to it).&lt;br /&gt;
  VD4 u &amp;lt; p_nw(intake) (TPC-VOLUNTEER-NW 0): NO WORK, attempt + 1.&lt;br /&gt;
  VD5 v &amp;lt; p_v (TPC-VOLUNTEER-PV 0): WORK, a PROBE; a parrot when w &amp;lt; k /&lt;br /&gt;
      (1 + k) (TPC-VOLUNTEER-KIND 0), a CONSISTENCY PARROT when x &amp;lt;&lt;br /&gt;
      CONSISTENCY SHARE (TPC-VOLUNTEER-KIND 1) and the account has an&lt;br /&gt;
      own record, else a CANARY; attempt 0.&lt;br /&gt;
  VD6 has_item: WORK, the ITEM; attempt 0. Else NO WORK, attempt + 1;&lt;br /&gt;
      when the queue is empty every WORK answer is therefore a probe.&lt;br /&gt;
  VD7 Every answer carries RETRY AFTER = retry_after(attempt&amp;#039;, r) and&lt;br /&gt;
      retry_until&amp;#039; = now + RETRY AFTER; the record carries the answer,&lt;br /&gt;
      its kind, p_nw, p_v, intake and the attempt.&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import math&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;
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_probe import uniform  # 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;
STATES = (&amp;quot;GREEN&amp;quot;, &amp;quot;YELLOW&amp;quot;, &amp;quot;ORANGE&amp;quot;, &amp;quot;SUSPENDED&amp;quot;)&lt;br /&gt;
TIERS = (&amp;quot;ANY GREEN&amp;quot;, &amp;quot;TRUST TIER&amp;quot;)&lt;br /&gt;
_SKEYS = (&amp;quot;certificate_current&amp;quot;, &amp;quot;dis_match&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;reset_in_force&amp;quot;,&lt;br /&gt;
          &amp;quot;suspended&amp;quot;, &amp;quot;in_tier&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ---------------------------------------------------------------- common&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 _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 &amp;quot;0123456789abcdef&amp;quot;:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _pf(params, key, lo, hi, lo_open=False, hi_open=False):&lt;br /&gt;
    if type(params) is not dict or key not in params:&lt;br /&gt;
        raise ValueError(&amp;quot;params:&amp;quot; + key)&lt;br /&gt;
    v = _num(params[key])&lt;br /&gt;
    if v is None:&lt;br /&gt;
        raise ValueError(&amp;quot;params:&amp;quot; + key)&lt;br /&gt;
    if v &amp;lt; lo or v &amp;gt; hi or (lo_open and v == lo) or (hi_open and v == hi):&lt;br /&gt;
        raise ValueError(&amp;quot;params:&amp;quot; + key)&lt;br /&gt;
    return v&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _pi(params, key, lo, hi):&lt;br /&gt;
    if type(params) is not dict or key not in params:&lt;br /&gt;
        raise ValueError(&amp;quot;params:&amp;quot; + key)&lt;br /&gt;
    v = params[key]&lt;br /&gt;
    if not _is_int(v, lo, hi):&lt;br /&gt;
        raise ValueError(&amp;quot;params:&amp;quot; + key)&lt;br /&gt;
    return v&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _clip(x, lo, hi):&lt;br /&gt;
    if x &amp;lt; lo:&lt;br /&gt;
        return lo&lt;br /&gt;
    if x &amp;gt; hi:&lt;br /&gt;
        return hi&lt;br /&gt;
    return x&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;
# --------------------------------------------------------- good_standing&lt;br /&gt;
&lt;br /&gt;
def good_standing(facts, params):&lt;br /&gt;
    if not _keys_are(facts, _SKEYS):&lt;br /&gt;
        raise ValueError(&amp;quot;facts&amp;quot;)&lt;br /&gt;
    for k in (&amp;quot;certificate_current&amp;quot;, &amp;quot;dis_match&amp;quot;, &amp;quot;reset_in_force&amp;quot;, &amp;quot;suspended&amp;quot;, &amp;quot;in_tier&amp;quot;):&lt;br /&gt;
        if type(facts[k]) is not bool:&lt;br /&gt;
            raise ValueError(&amp;quot;facts&amp;quot;)&lt;br /&gt;
    if facts[&amp;quot;state&amp;quot;] not in STATES:&lt;br /&gt;
        raise ValueError(&amp;quot;facts&amp;quot;)&lt;br /&gt;
    if type(params) is not dict or params.get(&amp;quot;VOLUNTEER TIER&amp;quot;) not in TIERS:&lt;br /&gt;
        raise ValueError(&amp;quot;params:VOLUNTEER TIER&amp;quot;)&lt;br /&gt;
    if not facts[&amp;quot;certificate_current&amp;quot;]:&lt;br /&gt;
        return {&amp;quot;ok&amp;quot;: False, &amp;quot;reason&amp;quot;: &amp;quot;CERTIFICATE&amp;quot;}&lt;br /&gt;
    if not facts[&amp;quot;dis_match&amp;quot;]:&lt;br /&gt;
        return {&amp;quot;ok&amp;quot;: False, &amp;quot;reason&amp;quot;: &amp;quot;D(IS)&amp;quot;}&lt;br /&gt;
    if facts[&amp;quot;state&amp;quot;] != &amp;quot;GREEN&amp;quot;:&lt;br /&gt;
        return {&amp;quot;ok&amp;quot;: False, &amp;quot;reason&amp;quot;: &amp;quot;STATE&amp;quot;}&lt;br /&gt;
    if facts[&amp;quot;reset_in_force&amp;quot;]:&lt;br /&gt;
        return {&amp;quot;ok&amp;quot;: False, &amp;quot;reason&amp;quot;: &amp;quot;RESET&amp;quot;}&lt;br /&gt;
    if facts[&amp;quot;suspended&amp;quot;]:&lt;br /&gt;
        return {&amp;quot;ok&amp;quot;: False, &amp;quot;reason&amp;quot;: &amp;quot;SUSPENDED&amp;quot;}&lt;br /&gt;
    if params[&amp;quot;VOLUNTEER TIER&amp;quot;] == &amp;quot;TRUST TIER&amp;quot; and not facts[&amp;quot;in_tier&amp;quot;]:&lt;br /&gt;
        return {&amp;quot;ok&amp;quot;: False, &amp;quot;reason&amp;quot;: &amp;quot;TIER&amp;quot;}&lt;br /&gt;
    return {&amp;quot;ok&amp;quot;: True, &amp;quot;reason&amp;quot;: &amp;quot;GOOD STANDING&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def render_standing(d):&lt;br /&gt;
    return _b(d[&amp;quot;ok&amp;quot;]) + &amp;quot;|&amp;quot; + d[&amp;quot;reason&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ---------------------------------------------------------------- bucket&lt;br /&gt;
&lt;br /&gt;
def _bucket(bucket):&lt;br /&gt;
    if not _keys_are(bucket, (&amp;quot;tokens&amp;quot;, &amp;quot;updated&amp;quot;)):&lt;br /&gt;
        raise ValueError(&amp;quot;bucket&amp;quot;)&lt;br /&gt;
    t = _num(bucket[&amp;quot;tokens&amp;quot;])&lt;br /&gt;
    if t is None or t &amp;lt; 0.0 or not _is_int(bucket[&amp;quot;updated&amp;quot;], 0, TIME_MAX):&lt;br /&gt;
        raise ValueError(&amp;quot;bucket&amp;quot;)&lt;br /&gt;
    return t, bucket[&amp;quot;updated&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def bucket_refill(bucket, now, params):&lt;br /&gt;
    tokens, updated = _bucket(bucket)&lt;br /&gt;
    if not _is_int(now, 0, TIME_MAX) or now &amp;lt; updated:&lt;br /&gt;
        raise ValueError(&amp;quot;now&amp;quot;)&lt;br /&gt;
    rate = _pf(params, &amp;quot;VOLUNTEER RATE&amp;quot;, 0.0, 1e9, True)&lt;br /&gt;
    burst = _pi(params, &amp;quot;VOLUNTEER BURST&amp;quot;, 1, COUNT_MAX)&lt;br /&gt;
    t = tokens + rate * float(now - updated) / 3600.0&lt;br /&gt;
    if t &amp;gt; float(burst):&lt;br /&gt;
        t = float(burst)&lt;br /&gt;
    return {&amp;quot;tokens&amp;quot;: t, &amp;quot;updated&amp;quot;: now}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def bucket_take(bucket):&lt;br /&gt;
    tokens, updated = _bucket(bucket)&lt;br /&gt;
    if tokens &amp;gt;= 1.0:&lt;br /&gt;
        return {&amp;quot;ok&amp;quot;: True, &amp;quot;bucket&amp;quot;: {&amp;quot;tokens&amp;quot;: tokens - 1.0, &amp;quot;updated&amp;quot;: updated}}&lt;br /&gt;
    return {&amp;quot;ok&amp;quot;: False, &amp;quot;bucket&amp;quot;: {&amp;quot;tokens&amp;quot;: tokens, &amp;quot;updated&amp;quot;: updated}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def render_bucket(b):&lt;br /&gt;
    return &amp;quot;%s|%d&amp;quot; % (_f(b[&amp;quot;tokens&amp;quot;]), b[&amp;quot;updated&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def render_take(d):&lt;br /&gt;
    return _b(d[&amp;quot;ok&amp;quot;]) + &amp;quot;|&amp;quot; + render_bucket(d[&amp;quot;bucket&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ----------------------------------------------------------- retry_after&lt;br /&gt;
&lt;br /&gt;
def retry_after(attempt, r, params):&lt;br /&gt;
    if not _is_int(attempt, 0, COUNT_MAX):&lt;br /&gt;
        raise ValueError(&amp;quot;attempt&amp;quot;)&lt;br /&gt;
    if not _is_hex(r, 32):&lt;br /&gt;
        raise ValueError(&amp;quot;r&amp;quot;)&lt;br /&gt;
    base = _pf(params, &amp;quot;BACKOFF BASE&amp;quot;, 1.0, float(TIME_MAX))&lt;br /&gt;
    cap = _pf(params, &amp;quot;BACKOFF CAP&amp;quot;, 1.0, float(TIME_MAX))&lt;br /&gt;
    if cap &amp;lt; base:&lt;br /&gt;
        raise ValueError(&amp;quot;params:BACKOFF CAP&amp;quot;)&lt;br /&gt;
    if attempt &amp;gt;= 1024:&lt;br /&gt;
        bound = cap&lt;br /&gt;
    else:&lt;br /&gt;
        bound = base * math.pow(2.0, float(attempt))&lt;br /&gt;
        if bound &amp;gt; cap:&lt;br /&gt;
            bound = cap&lt;br /&gt;
    return uniform(&amp;quot;TPC-VOLUNTEER-RETRY&amp;quot;, r, 0) * bound&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ---------------------------------------------------------------- intake&lt;br /&gt;
&lt;br /&gt;
def intake_update(intake, volunteer_blocks, landed_blocks, params):&lt;br /&gt;
    i = _num(intake)&lt;br /&gt;
    if i is None or i &amp;lt; 0.0 or i &amp;gt; 1.0:&lt;br /&gt;
        raise ValueError(&amp;quot;intake&amp;quot;)&lt;br /&gt;
    if not _is_int(volunteer_blocks, 0, COUNT_MAX) or not _is_int(landed_blocks, 0, COUNT_MAX):&lt;br /&gt;
        raise ValueError(&amp;quot;blocks&amp;quot;)&lt;br /&gt;
    if volunteer_blocks &amp;gt; landed_blocks:&lt;br /&gt;
        raise ValueError(&amp;quot;blocks&amp;quot;)&lt;br /&gt;
    w = _pf(params, &amp;quot;INTAKE w_q&amp;quot;, 0.0, 1.0)&lt;br /&gt;
    share = 0.0 if landed_blocks == 0 else float(volunteer_blocks) / float(landed_blocks)&lt;br /&gt;
    return (1.0 - w) * i + w * share&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def p_nw(intake, params):&lt;br /&gt;
    i = _num(intake)&lt;br /&gt;
    if i is None or i &amp;lt; 0.0 or i &amp;gt; 1.0:&lt;br /&gt;
        raise ValueError(&amp;quot;intake&amp;quot;)&lt;br /&gt;
    lo = _pf(params, &amp;quot;INTAKE MIN&amp;quot;, 0.0, 1.0)&lt;br /&gt;
    hi = _pf(params, &amp;quot;INTAKE MAX&amp;quot;, 0.0, 1.0)&lt;br /&gt;
    mp = _pf(params, &amp;quot;INTAKE MAX_P&amp;quot;, 0.0, 1.0)&lt;br /&gt;
    if hi &amp;lt;= lo:&lt;br /&gt;
        raise ValueError(&amp;quot;params:INTAKE MAX&amp;quot;)&lt;br /&gt;
    if i &amp;lt;= lo:&lt;br /&gt;
        return 0.0&lt;br /&gt;
    if i &amp;gt; hi:&lt;br /&gt;
        return 1.0&lt;br /&gt;
    return (i - lo) / (hi - lo) * mp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ----------------------------------------------------------------- p_v&lt;br /&gt;
&lt;br /&gt;
def pv_step(state, r, params):&lt;br /&gt;
    if not _keys_are(state, (&amp;quot;p_v&amp;quot;,)):&lt;br /&gt;
        raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    pv = state[&amp;quot;p_v&amp;quot;]&lt;br /&gt;
    if pv is not None:&lt;br /&gt;
        pv = _num(pv)&lt;br /&gt;
        if pv is None or pv &amp;lt; 0.0 or pv &amp;gt; 1.0:&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;
    if type(params) is not dict or &amp;quot;P_V BOUNDS&amp;quot; not in params:&lt;br /&gt;
        raise ValueError(&amp;quot;params:P_V BOUNDS&amp;quot;)&lt;br /&gt;
    b = params[&amp;quot;P_V BOUNDS&amp;quot;]&lt;br /&gt;
    if type(b) is not list or len(b) != 2:&lt;br /&gt;
        raise ValueError(&amp;quot;params:P_V BOUNDS&amp;quot;)&lt;br /&gt;
    lo = _num(b[0])&lt;br /&gt;
    hi = _num(b[1])&lt;br /&gt;
    if lo is None or hi is None or lo &amp;lt;= 0.0 or hi &amp;gt;= 1.0 or lo &amp;gt; hi:&lt;br /&gt;
        raise ValueError(&amp;quot;params:P_V BOUNDS&amp;quot;)&lt;br /&gt;
    rot = _pf(params, &amp;quot;P_V ROTATION&amp;quot;, 0.0, 1.0)&lt;br /&gt;
    started = False&lt;br /&gt;
    if pv is None or uniform(&amp;quot;TPC-PV-ROTATE&amp;quot;, r, 0) &amp;lt; rot:&lt;br /&gt;
        pv = lo + uniform(&amp;quot;TPC-PV-DRAW&amp;quot;, r, 0) * (hi - lo)&lt;br /&gt;
        started = True&lt;br /&gt;
    return {&amp;quot;p_v&amp;quot;: pv, &amp;quot;started&amp;quot;: started}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def render_pv(d):&lt;br /&gt;
    return _f(d[&amp;quot;p_v&amp;quot;]) + &amp;quot;|&amp;quot; + _b(d[&amp;quot;started&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ------------------------------------------------------- volunteer_share&lt;br /&gt;
&lt;br /&gt;
def volunteer_share(window, g, v_max):&lt;br /&gt;
    if type(window) is not list:&lt;br /&gt;
        raise ValueError(&amp;quot;window&amp;quot;)&lt;br /&gt;
    gf = _num(g)&lt;br /&gt;
    if gf is None or gf &amp;lt;= 0.0:&lt;br /&gt;
        raise ValueError(&amp;quot;g&amp;quot;)&lt;br /&gt;
    vm = _num(v_max)&lt;br /&gt;
    if vm is None or vm &amp;lt;= 0.0 or vm &amp;gt;= 1.0:&lt;br /&gt;
        raise ValueError(&amp;quot;v_max&amp;quot;)&lt;br /&gt;
    w_all = 0.0&lt;br /&gt;
    w_v = 0.0&lt;br /&gt;
    for e in window:&lt;br /&gt;
        if not _keys_are(e, (&amp;quot;volunteer&amp;quot;, &amp;quot;weight&amp;quot;)) or type(e[&amp;quot;volunteer&amp;quot;]) is not bool:&lt;br /&gt;
            raise ValueError(&amp;quot;window&amp;quot;)&lt;br /&gt;
        w = _num(e[&amp;quot;weight&amp;quot;])&lt;br /&gt;
        if w is None or w &amp;lt; 0.0:&lt;br /&gt;
            raise ValueError(&amp;quot;window&amp;quot;)&lt;br /&gt;
        w_all = w_all + w&lt;br /&gt;
        if e[&amp;quot;volunteer&amp;quot;]:&lt;br /&gt;
            w_v = w_v + w&lt;br /&gt;
    q = _clip((vm * (w_all + gf) - w_v) / gf, 0.0, 1.0)&lt;br /&gt;
    return {&amp;quot;q&amp;quot;: q, &amp;quot;W&amp;quot;: w_all, &amp;quot;W_v&amp;quot;: w_v, &amp;quot;admitted&amp;quot;: gf * q}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def render_share(d):&lt;br /&gt;
    return &amp;quot;%s|%s|%s|%s&amp;quot; % (_f(d[&amp;quot;q&amp;quot;]), _f(d[&amp;quot;W&amp;quot;]), _f(d[&amp;quot;W_v&amp;quot;]), _f(d[&amp;quot;admitted&amp;quot;]))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# -------------------------------------------------------- volunteer_draw&lt;br /&gt;
&lt;br /&gt;
_VKEYS = (&amp;quot;bucket&amp;quot;, &amp;quot;retry_until&amp;quot;, &amp;quot;attempt&amp;quot;, &amp;quot;refusals&amp;quot;, &amp;quot;period&amp;quot;,&lt;br /&gt;
          &amp;quot;closed_until&amp;quot;, &amp;quot;intake&amp;quot;, &amp;quot;p_v&amp;quot;)&lt;br /&gt;
_CKEYS = (&amp;quot;now&amp;quot;, &amp;quot;block&amp;quot;, &amp;quot;period&amp;quot;, &amp;quot;has_item&amp;quot;, &amp;quot;has_falcon&amp;quot;,&lt;br /&gt;
          &amp;quot;has_own_record&amp;quot;, &amp;quot;ratio_k&amp;quot;, &amp;quot;standing&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _state_out(st, bucket, retry_until, attempt, refusals, period, closed, intake, pv):&lt;br /&gt;
    return {&amp;quot;bucket&amp;quot;: bucket, &amp;quot;retry_until&amp;quot;: retry_until, &amp;quot;attempt&amp;quot;: attempt,&lt;br /&gt;
            &amp;quot;refusals&amp;quot;: refusals, &amp;quot;period&amp;quot;: period, &amp;quot;closed_until&amp;quot;: closed,&lt;br /&gt;
            &amp;quot;intake&amp;quot;: intake, &amp;quot;p_v&amp;quot;: pv}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def volunteer_draw(state, call, r, params):&lt;br /&gt;
    if not _keys_are(state, _VKEYS) or not _keys_are(call, _CKEYS):&lt;br /&gt;
        raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    _bucket(state[&amp;quot;bucket&amp;quot;])&lt;br /&gt;
    ru = state[&amp;quot;retry_until&amp;quot;]&lt;br /&gt;
    if ru is not None:&lt;br /&gt;
        ru = _num(ru)&lt;br /&gt;
        if ru is None or ru &amp;lt; 0.0:&lt;br /&gt;
            raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    if not _is_int(state[&amp;quot;attempt&amp;quot;], 0, COUNT_MAX) or not _is_int(state[&amp;quot;refusals&amp;quot;], 0, COUNT_MAX):&lt;br /&gt;
        raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    if not _is_int(state[&amp;quot;period&amp;quot;], 0, COUNT_MAX):&lt;br /&gt;
        raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    closed = state[&amp;quot;closed_until&amp;quot;]&lt;br /&gt;
    if closed is not None and not _is_int(closed, 0, COUNT_MAX):&lt;br /&gt;
        raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    intake = _num(state[&amp;quot;intake&amp;quot;])&lt;br /&gt;
    if intake is None or intake &amp;lt; 0.0 or intake &amp;gt; 1.0:&lt;br /&gt;
        raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    pvs = state[&amp;quot;p_v&amp;quot;]&lt;br /&gt;
    if not _keys_are(pvs, (&amp;quot;p_v&amp;quot;,)):&lt;br /&gt;
        raise ValueError(&amp;quot;state&amp;quot;)&lt;br /&gt;
    if not _is_int(call[&amp;quot;now&amp;quot;], 0, TIME_MAX) or not _is_int(call[&amp;quot;block&amp;quot;], 0, COUNT_MAX):&lt;br /&gt;
        raise ValueError(&amp;quot;call&amp;quot;)&lt;br /&gt;
    if not _is_int(call[&amp;quot;period&amp;quot;], 0, COUNT_MAX) or call[&amp;quot;period&amp;quot;] &amp;lt; state[&amp;quot;period&amp;quot;]:&lt;br /&gt;
        raise ValueError(&amp;quot;call&amp;quot;)&lt;br /&gt;
    for k in (&amp;quot;has_item&amp;quot;, &amp;quot;has_falcon&amp;quot;, &amp;quot;has_own_record&amp;quot;):&lt;br /&gt;
        if type(call[k]) is not bool:&lt;br /&gt;
            raise ValueError(&amp;quot;call&amp;quot;)&lt;br /&gt;
    kf = _num(call[&amp;quot;ratio_k&amp;quot;])&lt;br /&gt;
    if kf is None or kf &amp;lt;= 0.0:&lt;br /&gt;
        raise ValueError(&amp;quot;call&amp;quot;)&lt;br /&gt;
    if not _is_hex(r, 32):&lt;br /&gt;
        raise ValueError(&amp;quot;r&amp;quot;)&lt;br /&gt;
    limit = _pi(params, &amp;quot;EARLY CALL LIMIT&amp;quot;, 0, COUNT_MAX)&lt;br /&gt;
    cool = _pi(params, &amp;quot;VOLUNTEER COOL-OFF&amp;quot;, 1, COUNT_MAX)&lt;br /&gt;
    share = _pf(params, &amp;quot;CONSISTENCY SHARE&amp;quot;, 0.0, 1.0)&lt;br /&gt;
    gs = good_standing(call[&amp;quot;standing&amp;quot;], params)&lt;br /&gt;
    now = call[&amp;quot;now&amp;quot;]&lt;br /&gt;
    block = call[&amp;quot;block&amp;quot;]&lt;br /&gt;
    refusals = state[&amp;quot;refusals&amp;quot;] if call[&amp;quot;period&amp;quot;] == state[&amp;quot;period&amp;quot;] else 0&lt;br /&gt;
    period = call[&amp;quot;period&amp;quot;]&lt;br /&gt;
    attempt = state[&amp;quot;attempt&amp;quot;]&lt;br /&gt;
    rec = {&amp;quot;answer&amp;quot;: None, &amp;quot;kind&amp;quot;: None, &amp;quot;reason&amp;quot;: None, &amp;quot;retry_after&amp;quot;: None,&lt;br /&gt;
           &amp;quot;p_nw&amp;quot;: None, &amp;quot;p_v&amp;quot;: None, &amp;quot;intake&amp;quot;: intake, &amp;quot;attempt&amp;quot;: attempt}&lt;br /&gt;
&lt;br /&gt;
    def refused(reason, bucket, count):&lt;br /&gt;
        ra = retry_after(attempt, r, params)&lt;br /&gt;
        until = float(now) + ra&lt;br /&gt;
        if ru is not None and ru &amp;gt; until:&lt;br /&gt;
            until = ru&lt;br /&gt;
        nref = refusals&lt;br /&gt;
        nclosed = closed&lt;br /&gt;
        if count:&lt;br /&gt;
            nref = refusals + 1&lt;br /&gt;
            if nref &amp;gt; limit:&lt;br /&gt;
                nclosed = block + cool&lt;br /&gt;
                nref = 0&lt;br /&gt;
        rec.update(answer=&amp;quot;REFUSED&amp;quot;, reason=reason, retry_after=ra)&lt;br /&gt;
        return {&amp;quot;record&amp;quot;: rec, &amp;quot;state&amp;quot;: _state_out(state, bucket, until, attempt, nref,&lt;br /&gt;
                                                   period, nclosed, intake, pvs)}&lt;br /&gt;
    if not gs[&amp;quot;ok&amp;quot;]:&lt;br /&gt;
        return refused(&amp;quot;STANDING&amp;quot;, state[&amp;quot;bucket&amp;quot;], False)&lt;br /&gt;
    if closed is not None and block &amp;lt; closed:&lt;br /&gt;
        return refused(&amp;quot;CLOSED&amp;quot;, state[&amp;quot;bucket&amp;quot;], False)&lt;br /&gt;
    bucket = bucket_refill(state[&amp;quot;bucket&amp;quot;], now, params)&lt;br /&gt;
    if ru is not None and float(now) &amp;lt; ru:&lt;br /&gt;
        return refused(&amp;quot;EARLY&amp;quot;, bucket, True)&lt;br /&gt;
    take = bucket_take(bucket)&lt;br /&gt;
    if not take[&amp;quot;ok&amp;quot;]:&lt;br /&gt;
        return refused(&amp;quot;TOKEN&amp;quot;, bucket, True)&lt;br /&gt;
    bucket = take[&amp;quot;bucket&amp;quot;]&lt;br /&gt;
    pv = pv_step(pvs, r, params)&lt;br /&gt;
    pnw = p_nw(intake, params)&lt;br /&gt;
    rec[&amp;quot;p_nw&amp;quot;] = pnw&lt;br /&gt;
    rec[&amp;quot;p_v&amp;quot;] = pv[&amp;quot;p_v&amp;quot;]&lt;br /&gt;
    if call[&amp;quot;has_falcon&amp;quot;]:&lt;br /&gt;
        rec[&amp;quot;answer&amp;quot;] = &amp;quot;FALCON&amp;quot;&lt;br /&gt;
        rec[&amp;quot;kind&amp;quot;] = &amp;quot;FALCON&amp;quot;&lt;br /&gt;
    elif uniform(&amp;quot;TPC-VOLUNTEER-NW&amp;quot;, r, 0) &amp;lt; pnw:&lt;br /&gt;
        rec[&amp;quot;answer&amp;quot;] = &amp;quot;NO WORK&amp;quot;&lt;br /&gt;
        rec[&amp;quot;reason&amp;quot;] = &amp;quot;THROTTLE&amp;quot;&lt;br /&gt;
        attempt = attempt + 1&lt;br /&gt;
    elif uniform(&amp;quot;TPC-VOLUNTEER-PV&amp;quot;, r, 0) &amp;lt; pv[&amp;quot;p_v&amp;quot;]:&lt;br /&gt;
        rec[&amp;quot;answer&amp;quot;] = &amp;quot;WORK&amp;quot;&lt;br /&gt;
        if uniform(&amp;quot;TPC-VOLUNTEER-KIND&amp;quot;, r, 0) &amp;lt; kf / (1.0 + kf):&lt;br /&gt;
            if uniform(&amp;quot;TPC-VOLUNTEER-KIND&amp;quot;, r, 1) &amp;lt; share and call[&amp;quot;has_own_record&amp;quot;]:&lt;br /&gt;
                rec[&amp;quot;kind&amp;quot;] = &amp;quot;CONSISTENCY PARROT&amp;quot;&lt;br /&gt;
            else:&lt;br /&gt;
                rec[&amp;quot;kind&amp;quot;] = &amp;quot;CORROBORATION PARROT&amp;quot;&lt;br /&gt;
        else:&lt;br /&gt;
            rec[&amp;quot;kind&amp;quot;] = &amp;quot;CANARY&amp;quot;&lt;br /&gt;
        attempt = 0&lt;br /&gt;
    elif call[&amp;quot;has_item&amp;quot;]:&lt;br /&gt;
        rec[&amp;quot;answer&amp;quot;] = &amp;quot;WORK&amp;quot;&lt;br /&gt;
        rec[&amp;quot;kind&amp;quot;] = &amp;quot;ITEM&amp;quot;&lt;br /&gt;
        attempt = 0&lt;br /&gt;
    else:&lt;br /&gt;
        rec[&amp;quot;answer&amp;quot;] = &amp;quot;NO WORK&amp;quot;&lt;br /&gt;
        rec[&amp;quot;reason&amp;quot;] = &amp;quot;EMPTY&amp;quot;&lt;br /&gt;
        attempt = attempt + 1&lt;br /&gt;
    ra = retry_after(attempt, r, params)&lt;br /&gt;
    rec[&amp;quot;retry_after&amp;quot;] = ra&lt;br /&gt;
    rec[&amp;quot;attempt&amp;quot;] = attempt&lt;br /&gt;
    return {&amp;quot;record&amp;quot;: rec, &amp;quot;state&amp;quot;: _state_out(state, bucket, float(now) + ra, attempt, refusals,&lt;br /&gt;
                                               period, closed, intake, {&amp;quot;p_v&amp;quot;: pv[&amp;quot;p_v&amp;quot;]})}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def render_draw(d):&lt;br /&gt;
    rec = d[&amp;quot;record&amp;quot;]&lt;br /&gt;
    st = d[&amp;quot;state&amp;quot;]&lt;br /&gt;
    lines = [&amp;quot;answer|%s|%s|%s|%s&amp;quot; % (rec[&amp;quot;answer&amp;quot;], &amp;quot;-&amp;quot; if rec[&amp;quot;kind&amp;quot;] is None else rec[&amp;quot;kind&amp;quot;],&lt;br /&gt;
                                     &amp;quot;-&amp;quot; if rec[&amp;quot;reason&amp;quot;] is None else rec[&amp;quot;reason&amp;quot;],&lt;br /&gt;
                                     _f(rec[&amp;quot;retry_after&amp;quot;]))]&lt;br /&gt;
    lines.append(&amp;quot;draw|%s|%s|%s|%d&amp;quot; % (&amp;quot;-&amp;quot; if rec[&amp;quot;p_nw&amp;quot;] is None else _f(rec[&amp;quot;p_nw&amp;quot;]),&lt;br /&gt;
                                       &amp;quot;-&amp;quot; if rec[&amp;quot;p_v&amp;quot;] is None else _f(rec[&amp;quot;p_v&amp;quot;]),&lt;br /&gt;
                                       _f(rec[&amp;quot;intake&amp;quot;]), rec[&amp;quot;attempt&amp;quot;]))&lt;br /&gt;
    lines.append(&amp;quot;state|%s|%s|%d|%d|%d|%s|%s&amp;quot; % (&lt;br /&gt;
        render_bucket(st[&amp;quot;bucket&amp;quot;]), _f(st[&amp;quot;retry_until&amp;quot;]), st[&amp;quot;attempt&amp;quot;], st[&amp;quot;refusals&amp;quot;],&lt;br /&gt;
        st[&amp;quot;period&amp;quot;], &amp;quot;-&amp;quot; if st[&amp;quot;closed_until&amp;quot;] is None else str(st[&amp;quot;closed_until&amp;quot;]),&lt;br /&gt;
        &amp;quot;-&amp;quot; if st[&amp;quot;p_v&amp;quot;][&amp;quot;p_v&amp;quot;] is None else _f(st[&amp;quot;p_v&amp;quot;][&amp;quot;p_v&amp;quot;])))&lt;br /&gt;
    return &amp;quot;\n&amp;quot;.join(lines)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ---------------------------------------------------------------- corpus&lt;br /&gt;
&lt;br /&gt;
FNS = (&amp;quot;standing&amp;quot;, &amp;quot;refill&amp;quot;, &amp;quot;take&amp;quot;, &amp;quot;retry&amp;quot;, &amp;quot;intake&amp;quot;, &amp;quot;p_nw&amp;quot;, &amp;quot;pv&amp;quot;,&lt;br /&gt;
       &amp;quot;share&amp;quot;, &amp;quot;draw&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;standing&amp;quot;:&lt;br /&gt;
            return render_standing(good_standing(args[&amp;quot;facts&amp;quot;], p))&lt;br /&gt;
        if fn == &amp;quot;refill&amp;quot;:&lt;br /&gt;
            return render_bucket(bucket_refill(args[&amp;quot;bucket&amp;quot;], args[&amp;quot;now&amp;quot;], p))&lt;br /&gt;
        if fn == &amp;quot;take&amp;quot;:&lt;br /&gt;
            return render_take(bucket_take(args[&amp;quot;bucket&amp;quot;]))&lt;br /&gt;
        if fn == &amp;quot;retry&amp;quot;:&lt;br /&gt;
            return _f(retry_after(args[&amp;quot;attempt&amp;quot;], args[&amp;quot;r&amp;quot;], p))&lt;br /&gt;
        if fn == &amp;quot;intake&amp;quot;:&lt;br /&gt;
            return _f(intake_update(args[&amp;quot;intake&amp;quot;], args[&amp;quot;volunteer_blocks&amp;quot;],&lt;br /&gt;
                                    args[&amp;quot;landed_blocks&amp;quot;], p))&lt;br /&gt;
        if fn == &amp;quot;p_nw&amp;quot;:&lt;br /&gt;
            return _f(p_nw(args[&amp;quot;intake&amp;quot;], p))&lt;br /&gt;
        if fn == &amp;quot;pv&amp;quot;:&lt;br /&gt;
            return render_pv(pv_step(args[&amp;quot;state&amp;quot;], args[&amp;quot;r&amp;quot;], p))&lt;br /&gt;
        if fn == &amp;quot;share&amp;quot;:&lt;br /&gt;
            return render_share(volunteer_share(args[&amp;quot;window&amp;quot;], args[&amp;quot;g&amp;quot;], args[&amp;quot;v_max&amp;quot;]))&lt;br /&gt;
        return render_draw(volunteer_draw(args[&amp;quot;state&amp;quot;], args[&amp;quot;call&amp;quot;], args[&amp;quot;r&amp;quot;], p))&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>