D02: reconciled with TV-01's supply spec (32 rows exact), the paid model at 10 blocks/s, B1 and B4 closed

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
igneum-labs 2026-10-09 09:19:38 +00:00
parent 89652f973f
commit 4bb3c804ca
4 changed files with 104 additions and 25 deletions

View file

@ -13,8 +13,8 @@ Status: NOT RUN. A model, landed as a document and its tests; nothing activates.
| `consensus/core/src/igneum.rs` (the cap, the year-one emission, the 20 percent proving share) | blob `ac914b7ef3dbeea6f861a8b82b16415bbe7f33c7` |
| `consensus/core/src/config/params.rs` (MAINNET_PARAMS.emission = CURRENT rescaled to 18 decimals) | blob `d0ebf9bb3951ffafbdd9a3d9d0600537229ea710` |
| `consensus/core/src/unit.rs` (8 and 18 decimals) | blob `6af7040f07b939e71f8930090f01d022c6136e87` |
| `site/litepaper.html` on master at this landing | blob `ad11eaf29ca1f725a35dda3c7f4060dbf1fce509` |
| TV-01's supply spec, `docs/plans/igneum-2.0-master/token-value/phase0/tv-01/supply-spec.json` | not landed at this version (BLOCKED row B1) |
| `site/litepaper.html` in the tree the generator ran on (each quoted sentence is checked present) | sha256 `aec583e6e868eb2d3aa8474df3f8892eeebba8a98c887a019ea86bd2efc2f786` |
| TV-01's supply spec, `docs/plans/igneum-2.0-master/token-value/phase0/tv-01/supply-spec.json` (read by the generator; section 9) | sha256 `3ffdd3084aff06d963df6c326cda88719d576f07d9cbfb56079de1a8b40c4403` |
## What D02 asks
@ -33,7 +33,7 @@ The volume names the shape of the longer branch and no number. B is its literal
- A year is 31,557,600 DAA seconds (365.25 days, emission.rs `YEAR_SECONDS`). Year y is DAA seconds [(y - 1) x year, y x year). Emission is keyed to DAA time, so a calendar year equals a schedule year within the accuracy of the difficulty controller.
- Every schedule carries the 30-day launch ramp from 10 percent and `Tail::Cap`: the curve runs to zero and its sum, less the ramp's withheld coins and the integer floors, is the scheduled total, never above the 4,000,000,000 IGN cap.
- The split is the consensus split: 80 percent of each block's subsidy to the block's producer and 20 percent to the proving escrow (igneum.rs `PROVING_POOL_SHARE_PERCENT`). It is applied to each year's total; the per-block floor moves at most one base unit a block toward the producer, and the signing bonus moves part of a silent block's producer share to the pool without changing the total.
- Per-block figures are at 1 block a second. Mainnet's params carry the inherited block-rate activation (`crescendo_activation`); a faster block rate divides every per-block figure by the same factor for every schedule, so the shares in the late-miner table do not move.
- Two views of the same rule. The supply and issuance tables use the node's closed form (`scheduled_supply_at`, per DAA second). The paid model sums one `block_subsidy` per DAA score at mainnet's 10 blocks a second (params.rs `blockrate`, the coinbase's rate), which is what the coinbase pays and what TV-01's spec sums; the two differ by the per-block floors, under one IGN in total, except at the far tail, where the per-block floor reaches zero years before the per-second rate does (the schedules table). Per-block figures are at 10 blocks a second.
- No price appears. Every amount is native IGN or base units.
- Fee dependence uses a reference security budget of 1 percent of the cap a year (40M IGN), a stated yardstick and not a cost estimate, scaled by TV-04's revenue multiples (0.25x / 1x / 4x / 10x). "Fees needed" is the first year the subsidy alone falls under the budget; "fees exceed subsidy" is the first year the subsidy falls under half of it, after which fees must pay more than the subsidy for the budget to hold. Both read the subsidy's decline alone. The fee series is a parameter, never a forecast: `--fee-flat-ign N --fee-growth-bps G` prints the first year the subsidy plus that series falls under each budget. TV-04's own budget replaces the yardstick when it lands (BLOCKED row B2).
- The volume defines no Gini-style cohort measure, so concentration is the share of the cap issued by each horizon and the share issued in years 1 to 2 against years 3 to 20.
@ -77,11 +77,11 @@ EmissionSchedule {
}
```
| key | schedule | launch rate (base units a DAA second) | launch rate a year (IGN) | step (DAA s) | step multiplier (Q32) | curve steps | subsidy zero from year | scheduled total (IGN) | cap minus total (IGN) |
|---|---|---|---|---|---|---|---|---|---|
| A | current pacing (release-2.0.2 mainnet) | 31,688,087,810,000,000,000 | 1,000.0M | 63,115,200 (2 years) | 2,147,483,648 | 66 | 131 | 3,963,039,000 | 36,961,000 |
| B | longer distribution, same cap (the volume; time axis x2) | 15,844,043,900,000,000,000 | 500.0M | 126,230,400 (4 years) | 2,147,483,648 | 65 | 257 | 3,981,519,498 | 18,480,502 |
| C | smooth glide, same cap (this lane's alternative) | 21,806,679,390,000,000,000 | 688.2M | 2,629,800 (1 month) | 4,233,391,203 | 2831 | 236 | 3,974,564,679 | 25,435,321 |
| key | schedule | launch rate (base units a DAA second) | launch rate a year (IGN) | step (DAA s) | step multiplier (Q32) | curve steps | rate per second zero after (years) | paid a block zero after (years, 10 blocks/s) | paid total (IGN, 10 blocks/s) | cap minus paid total (IGN) |
|---|---|---|---|---|---|---|---|---|---|---|
| A | current pacing (release-2.0.2 mainnet) | 31,688,087,810,000,000,000 | 1,000.0M | 63,115,200 (2 years) | 2,147,483,648 | 66 | 130.00 | 124.00 | 3,963,038,999.61 | 36,961,000.39 |
| B | longer distribution, same cap (the volume; time axis x2) | 15,844,043,900,000,000,000 | 500.0M | 126,230,400 (4 years) | 2,147,483,648 | 65 | 256.00 | 244.00 | 3,981,519,498.29 | 18,480,501.71 |
| C | smooth glide, same cap (this lane's alternative) | 21,806,679,390,000,000,000 | 688.2M | 2,629,800 (1 month) | 4,233,391,203 | 2831 | 235.83 | 235.08 | 3,974,564,678.81 | 25,435,321.19 |
## 1. Issued supply and its share of the cap, at the end of each year
@ -125,11 +125,11 @@ Meaning: the ratio column is how many coins years 1 to 2 issue for every coin ye
## 5. Late-miner participation (the subsidy a block pays a miner who joins later)
| schedule | year 1 full-rate subsidy a block (IGN, 1 block/s) | joining in year 5: a block (share of year 1) | joining in year 10: a block (share of year 1) | joining in year 20: a block (share of year 1) |
| schedule | year 1 full-rate subsidy a block (IGN, 10 blocks/s) | joining in year 5: a block (share of year 1) | joining in year 10: a block (share of year 1) | joining in year 20: a block (share of year 1) |
|---|---|---|---|---|
| A | 31.6881 | 7.9220 (25.00%) | 1.9805 (6.25%) | 0.0619 (0.20%) |
| B | 15.8440 | 7.9220 (50.00%) | 3.9610 (25.00%) | 0.9903 (6.25%) |
| C | 21.8067 | 10.9033 (50.00%) | 4.5843 (21.02%) | 0.8104 (3.72%) |
| A | 3.16881 | 0.79220 (25.00%) | 0.19805 (6.25%) | 0.00619 (0.20%) |
| B | 1.58440 | 0.79220 (50.00%) | 0.39610 (25.00%) | 0.09903 (6.25%) |
| C | 2.18067 | 1.09033 (50.00%) | 0.45843 (21.02%) | 0.08104 (3.72%) |
Meaning: a miner joining in year 10 sees 6.3% of the year-1 block subsidy under A, 25.0% under B and 21.0% under C; B pays that miner 2.0 times what A pays.
@ -157,7 +157,7 @@ The volume gives no factor; this sweep shows how the trade moves with it.
## 8. The litepaper against the code
| litepaper sentence (site/litepaper.html) | the code, ramp included | the code's curve without the ramp |
| litepaper sentence (site/litepaper.html, present in the tree) | the code, ramp included | the code's curve without the ramp |
|---|---|---|
| "Half of the 4 billion cap is mined in the first two years" | 49.08% | 50.00% |
| "Nearly a quarter of all supply is mined in the first year" | 24.08% | 25.00% |
@ -166,20 +166,62 @@ The volume gives no factor; this sweep shows how the trade moves with it.
Meaning: the litepaper's sentences describe the curve without the 30-day ramp; the code, ramp included, issues slightly less in the first years. The words "approached and never reached" hold for every schedule here: each scheduled total is under the cap (table above, last column).
## 9. Reconciliation with TV-01's supply spec
The generator reads TV-01's spec from the tree and compares every rule field, the cap, the unit and each profile's year-end supplies, terminal DAA score, terminal supply and cap shortfall, exact integers, against its own paid model of A. Result: all 32 rows agree exactly.
| profile | quantity | TV-01 supply spec | this generator (paid model) | agree |
|---|---|---|---|---|
| rules | launch_rate_per_second | `31688087810000000000` | `31688087810000000000` | yes |
| rules | ramp_seconds | `2592000` | `2592000` | yes |
| rules | ramp_start_percent | `10` | `10` | yes |
| rules | step_seconds | `63115200` | `63115200` | yes |
| rules | step_decay_q32 | `2147483648` | `2147483648` | yes |
| rules | year_seconds | `31557600` | `31557600` | yes |
| rules | tail | `cap` | `cap` | yes |
| cap | base_units | `4000000000000000000000000000` | `4000000000000000000000000000` | yes |
| units | decimals | `18` | `18` | yes |
| mainnet (10 blocks/s) | supply at the end of year 1 | `963038999991632485488480000` | `963038999991632485488480000` | yes |
| mainnet (10 blocks/s) | supply at the end of year 2 | `1963038999864488485488480000` | `1963038999864488485488480000` | yes |
| mainnet (10 blocks/s) | supply at the end of year 5 | `3213038999705558485488480000` | `3213038999705558485488480000` | yes |
| mainnet (10 blocks/s) | supply at the end of year 10 | `3838038999626093485488480000` | `3838038999626093485488480000` | yes |
| mainnet (10 blocks/s) | supply at the end of year 12 | `3900538999618146985488480000` | `3900538999618146985488480000` | yes |
| mainnet (10 blocks/s) | supply at the end of year 20 | `3959132749610697141738480000` | `3959132749610697141738480000` | yes |
| mainnet (10 blocks/s) | supply at the end of year 50 | `3963038880400910946483264000` | `3963038880400910946483264000` | yes |
| mainnet (10 blocks/s) | supply at the end of year 100 | `3963038999610196921373136000` | `3963038999610196921373136000` | yes |
| mainnet (10 blocks/s) | terminal DAA score (first unpaid) | `39131424000` | `39131424000` | yes |
| mainnet (10 blocks/s) | terminal supply | `3963038999610200467816224000` | `3963038999610200467816224000` | yes |
| mainnet (10 blocks/s) | cap shortfall | `36961000389799532183776000` | `36961000389799532183776000` | yes |
| mainnet (10 blocks/s) | block rate of the contract profile | `10` | `10` | yes |
| devnet-4 (1 block/s) | supply at the end of year 1 | `963038999991632485498848000` | `963038999991632485498848000` | yes |
| devnet-4 (1 block/s) | supply at the end of year 2 | `1963038999864488485498848000` | `1963038999864488485498848000` | yes |
| devnet-4 (1 block/s) | supply at the end of year 5 | `3213038999705558485498848000` | `3213038999705558485498848000` | yes |
| devnet-4 (1 block/s) | supply at the end of year 10 | `3838038999626093485498848000` | `3838038999626093485498848000` | yes |
| devnet-4 (1 block/s) | supply at the end of year 12 | `3900538999618146985498848000` | `3900538999618146985498848000` | yes |
| devnet-4 (1 block/s) | supply at the end of year 20 | `3959132749610697141748848000` | `3959132749610697141748848000` | yes |
| devnet-4 (1 block/s) | supply at the end of year 50 | `3963038880400910949333816000` | `3963038880400910949333816000` | yes |
| devnet-4 (1 block/s) | supply at the end of year 100 | `3963038999610196931229475200` | `3963038999610196931229475200` | yes |
| devnet-4 (1 block/s) | terminal DAA score (first unpaid) | `4102488000` | `4102488000` | yes |
| devnet-4 (1 block/s) | terminal supply | `3963038999610200483289816000` | `3963038999610200483289816000` | yes |
| devnet-4 (1 block/s) | cap shortfall | `36961000389799516710184000` | `36961000389799516710184000` | yes |
Meaning: the schedule this comparison calls A is TV-01's mainnet contract profile to the base unit, so every difference shown for B and C is measured from the compiled mainnet schedule and not from a model of it.
## Commands and checksums
Every run is on build-3 under the pid file `~/tv-d02/run.pid` (`tools/token-value/d02/run_on_box.sh`), never on the Mac.
| what | command | sha256 |
|---|---|---|
| the generator | `python3 tools/token-value/d02/d02_emission.py --out docs/plans/igneum-2.0-master/token-value/phase0/d02` | `0133addf96266a21a14d7dcff86139edca0c0a5f277d1488add85d09fe80f6ef` |
| the README template | (read by the generator) | `92b14fee872fb1d78ff715a09dcda217fda905793aacde9e05c22f2fb7a3060d` |
| the tests (known-failed first) | `python3 tools/token-value/d02/test_d02.py` | `cbe13d8becb72953bce3531065f27c51b957866a646eba96211feb93649178cc` |
| the generator | `python3 tools/token-value/d02/d02_emission.py --out docs/plans/igneum-2.0-master/token-value/phase0/d02` | `ef1d48182c1702ff59c21eb7373f4cea9e2de64f98a2a86426f2c3309b25ed03` |
| the README template | (read by the generator) | `009b07323513790a05e8bd4575ffd2d6b92d37d2d486796de29c55433dc195f0` |
| the tests (known-failed first) | `python3 tools/token-value/d02/test_d02.py` | `87252bf447f7c4fcd894790ca42839e1e511a9fb1cda53e9eed3807313bae1b9` |
| the byte-identical check | `python3 tools/token-value/d02/d02_emission.py --check docs/plans/igneum-2.0-master/token-value/phase0/d02` | (exit 0 = byte-identical) |
| `d02-schedules.csv` (parameters, curve steps, terminal values) | the generator | `1abd30eb7879607a43052c74bf2a6ee4fc27202754d6700cacbfb342ea20e3ae` |
| `d02-years.csv` (years 1 to 40, every schedule) | the generator | `c03933af686c9c11454a0b1c188bf2dfa7903549dcc274fdbe43cd2c609723fd` |
| `d02-horizons.csv` (years 1, 2, 5, 10, 20) | the generator | `4329ec9f51015577f297f56440b486543e4a40f1cb075270f7b17b02da5f542f` |
| `d02-fee-dependence.csv` (every multiple, every schedule, fees required at each horizon) | the generator | `07375dc4cd075a720591326a792c238c54b28a0d8fa9decf38534bd2d738f854` |
| `d02-tv01-reconcile.csv` (section 9, every row) | the generator | `34fcfc388b138ffcd18600d661debe3458c82c37b087501d0d6b17f471dd2892` |
| `d02-manifest.sha256` (this README and every CSV) | the generator | (lists this file's sha) |
Searches for a crossing year run to year 1,000; an empty cell means the budget holds that long on the subsidy alone.
@ -198,10 +240,10 @@ Searches for a crossing year run to year 1,000; an empty cell means the budget h
| row | question | waits on | earliest clock (UK) |
|---|---|---|---|
| B0 | Which schedule launches: A, B (and at which factor), C, or another same-cap shape. This document does not pick it. | the founder ("pending evidence") after the independent panel reads this | the founder's word |
| B1 | Reconcile against TV-01's supply spec (cap, unit, launch rate, ramp, step, terminal rule) | TV-01's `supply-spec.json` landing | 13:00 today, then this generator gains the read |
| B2 | Replace the 1 percent yardstick with TV-04's role-by-role budget and its revenue multiples' base | TV-04's landing | TV-04's clock |
| B3 | Arrival times and cohort shares under each schedule (delayed entrants as people, not blocks) | TV-03's simulation inputs and a cohort definition | TV-03's clock |
| B4 | The litepaper's "after year 5" tail-vote sentence beside a capped schedule (D01 ratified capped issuance subject to TV-04) | D01's wording landing | the D01 lane's clock |
Closed since the first version (09:44 UK): B1, the reconciliation with TV-01's supply spec (section 9); B4, the litepaper's year-five tail-vote sentence, which the site lane rewrote under D01 (TV-01's conflict C01).
## Registry

View file

@ -1,7 +1,8 @@
# input 0133addf96266a21a14d7dcff86139edca0c0a5f277d1488add85d09fe80f6ef tools/token-value/d02/d02_emission.py
# input 92b14fee872fb1d78ff715a09dcda217fda905793aacde9e05c22f2fb7a3060d tools/token-value/d02/README.template.md
# input ef1d48182c1702ff59c21eb7373f4cea9e2de64f98a2a86426f2c3309b25ed03 tools/token-value/d02/d02_emission.py
# input 009b07323513790a05e8bd4575ffd2d6b92d37d2d486796de29c55433dc195f0 tools/token-value/d02/README.template.md
1abd30eb7879607a43052c74bf2a6ee4fc27202754d6700cacbfb342ea20e3ae d02-schedules.csv
c03933af686c9c11454a0b1c188bf2dfa7903549dcc274fdbe43cd2c609723fd d02-years.csv
4329ec9f51015577f297f56440b486543e4a40f1cb075270f7b17b02da5f542f d02-horizons.csv
07375dc4cd075a720591326a792c238c54b28a0d8fa9decf38534bd2d738f854 d02-fee-dependence.csv
593b8c95381c0f3c4f83c0e0ca77273e81b946d43589a7af008a2507ad1ad3c6 README.md
34fcfc388b138ffcd18600d661debe3458c82c37b087501d0d6b17f471dd2892 d02-tv01-reconcile.csv
4f5a7ac5aba5fee1aef646e4e3f55fdb491db197429654cfdba0bab9bfb38db3 README.md

View file

@ -0,0 +1,33 @@
profile,quantity,tv01_spec,d02_generator,agree
"rules","launch_rate_per_second",31688087810000000000,31688087810000000000,yes
"rules","ramp_seconds",2592000,2592000,yes
"rules","ramp_start_percent",10,10,yes
"rules","step_seconds",63115200,63115200,yes
"rules","step_decay_q32",2147483648,2147483648,yes
"rules","year_seconds",31557600,31557600,yes
"rules","tail",cap,cap,yes
"cap","base_units",4000000000000000000000000000,4000000000000000000000000000,yes
"units","decimals",18,18,yes
"mainnet (10 blocks/s)","supply at the end of year 1",963038999991632485488480000,963038999991632485488480000,yes
"mainnet (10 blocks/s)","supply at the end of year 2",1963038999864488485488480000,1963038999864488485488480000,yes
"mainnet (10 blocks/s)","supply at the end of year 5",3213038999705558485488480000,3213038999705558485488480000,yes
"mainnet (10 blocks/s)","supply at the end of year 10",3838038999626093485488480000,3838038999626093485488480000,yes
"mainnet (10 blocks/s)","supply at the end of year 12",3900538999618146985488480000,3900538999618146985488480000,yes
"mainnet (10 blocks/s)","supply at the end of year 20",3959132749610697141738480000,3959132749610697141738480000,yes
"mainnet (10 blocks/s)","supply at the end of year 50",3963038880400910946483264000,3963038880400910946483264000,yes
"mainnet (10 blocks/s)","supply at the end of year 100",3963038999610196921373136000,3963038999610196921373136000,yes
"mainnet (10 blocks/s)","terminal DAA score (first unpaid)",39131424000,39131424000,yes
"mainnet (10 blocks/s)","terminal supply",3963038999610200467816224000,3963038999610200467816224000,yes
"mainnet (10 blocks/s)","cap shortfall",36961000389799532183776000,36961000389799532183776000,yes
"mainnet (10 blocks/s)","block rate of the contract profile",10,10,yes
"devnet-4 (1 block/s)","supply at the end of year 1",963038999991632485498848000,963038999991632485498848000,yes
"devnet-4 (1 block/s)","supply at the end of year 2",1963038999864488485498848000,1963038999864488485498848000,yes
"devnet-4 (1 block/s)","supply at the end of year 5",3213038999705558485498848000,3213038999705558485498848000,yes
"devnet-4 (1 block/s)","supply at the end of year 10",3838038999626093485498848000,3838038999626093485498848000,yes
"devnet-4 (1 block/s)","supply at the end of year 12",3900538999618146985498848000,3900538999618146985498848000,yes
"devnet-4 (1 block/s)","supply at the end of year 20",3959132749610697141748848000,3959132749610697141748848000,yes
"devnet-4 (1 block/s)","supply at the end of year 50",3963038880400910949333816000,3963038880400910949333816000,yes
"devnet-4 (1 block/s)","supply at the end of year 100",3963038999610196931229475200,3963038999610196931229475200,yes
"devnet-4 (1 block/s)","terminal DAA score (first unpaid)",4102488000,4102488000,yes
"devnet-4 (1 block/s)","terminal supply",3963038999610200483289816000,3963038999610200483289816000,yes
"devnet-4 (1 block/s)","cap shortfall",36961000389799516710184000,36961000389799516710184000,yes
1 profile quantity tv01_spec d02_generator agree
2 rules launch_rate_per_second 31688087810000000000 31688087810000000000 yes
3 rules ramp_seconds 2592000 2592000 yes
4 rules ramp_start_percent 10 10 yes
5 rules step_seconds 63115200 63115200 yes
6 rules step_decay_q32 2147483648 2147483648 yes
7 rules year_seconds 31557600 31557600 yes
8 rules tail cap cap yes
9 cap base_units 4000000000000000000000000000 4000000000000000000000000000 yes
10 units decimals 18 18 yes
11 mainnet (10 blocks/s) supply at the end of year 1 963038999991632485488480000 963038999991632485488480000 yes
12 mainnet (10 blocks/s) supply at the end of year 2 1963038999864488485488480000 1963038999864488485488480000 yes
13 mainnet (10 blocks/s) supply at the end of year 5 3213038999705558485488480000 3213038999705558485488480000 yes
14 mainnet (10 blocks/s) supply at the end of year 10 3838038999626093485488480000 3838038999626093485488480000 yes
15 mainnet (10 blocks/s) supply at the end of year 12 3900538999618146985488480000 3900538999618146985488480000 yes
16 mainnet (10 blocks/s) supply at the end of year 20 3959132749610697141738480000 3959132749610697141738480000 yes
17 mainnet (10 blocks/s) supply at the end of year 50 3963038880400910946483264000 3963038880400910946483264000 yes
18 mainnet (10 blocks/s) supply at the end of year 100 3963038999610196921373136000 3963038999610196921373136000 yes
19 mainnet (10 blocks/s) terminal DAA score (first unpaid) 39131424000 39131424000 yes
20 mainnet (10 blocks/s) terminal supply 3963038999610200467816224000 3963038999610200467816224000 yes
21 mainnet (10 blocks/s) cap shortfall 36961000389799532183776000 36961000389799532183776000 yes
22 mainnet (10 blocks/s) block rate of the contract profile 10 10 yes
23 devnet-4 (1 block/s) supply at the end of year 1 963038999991632485498848000 963038999991632485498848000 yes
24 devnet-4 (1 block/s) supply at the end of year 2 1963038999864488485498848000 1963038999864488485498848000 yes
25 devnet-4 (1 block/s) supply at the end of year 5 3213038999705558485498848000 3213038999705558485498848000 yes
26 devnet-4 (1 block/s) supply at the end of year 10 3838038999626093485498848000 3838038999626093485498848000 yes
27 devnet-4 (1 block/s) supply at the end of year 12 3900538999618146985498848000 3900538999618146985498848000 yes
28 devnet-4 (1 block/s) supply at the end of year 20 3959132749610697141748848000 3959132749610697141748848000 yes
29 devnet-4 (1 block/s) supply at the end of year 50 3963038880400910949333816000 3963038880400910949333816000 yes
30 devnet-4 (1 block/s) supply at the end of year 100 3963038999610196931229475200 3963038999610196931229475200 yes
31 devnet-4 (1 block/s) terminal DAA score (first unpaid) 4102488000 4102488000 yes
32 devnet-4 (1 block/s) terminal supply 3963038999610200483289816000 3963038999610200483289816000 yes
33 devnet-4 (1 block/s) cap shortfall 36961000389799516710184000 36961000389799516710184000 yes

View file

@ -1,10 +1,11 @@
host igneum-build-3 python Python 3.12.3 commit 20872fa0c9e1668fa5e7aad3d5cbeaa671939d96 utc 2026-10-09T08:27:50Z pidfile /home/build/tv-d02/run.pid
host igneum-build-3 python Python 3.12.3 commit 71e1e14841a1678b3357c42e3fd8376e1acf85c6 utc 2026-10-09T09:19:28Z pidfile /home/build/tv-d02/run.pid
1abd30eb7879607a43052c74bf2a6ee4fc27202754d6700cacbfb342ea20e3ae d02-schedules.csv
c03933af686c9c11454a0b1c188bf2dfa7903549dcc274fdbe43cd2c609723fd d02-years.csv
4329ec9f51015577f297f56440b486543e4a40f1cb075270f7b17b02da5f542f d02-horizons.csv
07375dc4cd075a720591326a792c238c54b28a0d8fa9decf38534bd2d738f854 d02-fee-dependence.csv
593b8c95381c0f3c4f83c0e0ca77273e81b946d43589a7af008a2507ad1ad3c6 README.md
b3278f06aaf0aca950dbba77c4bd67c670c3742049d3cb7367d0b0888daea407 d02-manifest.sha256
34fcfc388b138ffcd18600d661debe3458c82c37b087501d0d6b17f471dd2892 d02-tv01-reconcile.csv
4f5a7ac5aba5fee1aef646e4e3f55fdb491db197429654cfdba0bab9bfb38db3 README.md
f632f8d14e6c7446c47b0ec0cf03a934f47ed4a43d691e0a687451a6bd705431 d02-manifest.sha256
test_a_one_byte_change_is_caught (__main__.ByteIdentical.test_a_one_byte_change_is_caught) ... ok
test_outputs_regenerate_byte_identically (__main__.ByteIdentical.test_outputs_regenerate_byte_identically) ... ok
test_current_at_8_decimals_is_the_33_step_table (__main__.NodeConstants.test_current_at_8_decimals_is_the_33_step_table) ... ok
@ -12,9 +13,11 @@ test_q32_root_reproduces_the_node_glide_constant (__main__.NodeConstants.test_q3
test_ramp_and_block_subsidy_match_the_node_rules (__main__.NodeConstants.test_ramp_and_block_subsidy_match_the_node_rules) ... ok
test_every_schedule_is_same_cap_and_node_valid (__main__.SameCap.test_every_schedule_is_same_cap_and_node_valid) ... ok
test_the_longer_schedules_pay_less_in_year_one (__main__.SameCap.test_the_longer_schedules_pay_less_in_year_one) ... ok
test_paid_and_closed_form_agree_within_one_coin (__main__.TV01Spec.test_paid_and_closed_form_agree_within_one_coin) ... ok
test_the_paid_model_reproduces_tv01_exactly (__main__.TV01Spec.test_the_paid_model_reproduces_tv01_exactly) ... ok
----------------------------------------------------------------------
Ran 7 tests in 0.008s
Ran 9 tests in 4.011s
OK
exit 0