Releases8
In forcev2026.9
Retired0
The engine
Every figure in every case file is computed by a program, not typed by a person. That program is versioned, frozen at each release, and named in the jacket at the top of the file it produced. This page is the list.
What the version in a case jacket means
A file says Engine v2026.2 because that release produced its numbers. It stays on that version for good. When a newer engine changes a published figure, the file is reopened and corrected in place with both versions named — a new engine never silently restates an old case.
What the hash proves, and what it does not
Each release is hashed over its whole source tree and the hash is published here on the day it is cut. That makes one specific promise: we cannot quietly rewrite a release after the fact without this page contradicting itself.
It does not prove the arithmetic is right. A hash we publish about an archive we hold is our word plus a timestamp, and we would rather say so than let the string of hex do work it cannot do. What actually stands behind the numbers is the test suite, the fact that every published figure maps to an engine field, and the corrections policy in Standards.
Releases
v2026.9
In force. New files are computed with this engine
- Attestation dates move out of the hashed engine tree into engine/attestations/, hashed under their own attestations_sha256 and shipped in every snapshot from this release. No constant, formula or figure changed: the ledger keeps its source citations and loses only the six 'verified' slots, which recorded when a person last checked a constant rather than what the constant is. Recording a check no longer moves source_sha256, so it no longer requires a release. The pipeline joins the store downstream; the engine no longer emits an attestation date in its output (student_loans policy_verified, benefits verified).
| Released | 2026-09-07 |
| Status | active |
| Supersedes | v2026.8 |
| Superseded by | — |
| Tax years | 2024, 2025, 2026 |
| Tests | 484 of 484 passing |
| Python | 3.10.0 |
Source hash (SHA-256)
4536529171b84cd2865c52db1a9827d0f31526b90c932a0b9a08c550b86ecf1b
No published file was computed under this engine yet. When one is, it is listed here and stays listed.
v2026.8
A newer engine exists. Files published under this one stay under it, and it stays archived and verifiable
- CAS-1019: every quantize in the ledger now states its rounding mode explicitly. The engine-wide default is the new ROUNDING constant in models.py (ROUND_HALF_UP, the mode money() and pct() already used); housing.amortised payment and student_loans keep their deliberate ROUND_CEILING.
- No figure moves. Recomputed engine-results and reader-facts for all 18 live case runs from their frozen scenario-v1.json under v2026.7 and under this release: byte-identical. Cut because rounding logic changed and the standard cuts a version on that whether or not the output moves.
| Released | 2026-09-06 |
| Status | superseded |
| Supersedes | v2026.7 |
| Superseded by | v2026.9 |
| Tax years | 2024, 2025, 2026 |
| Tests | 484 of 484 passing |
| Python | 3.10.0 |
Source hash (SHA-256)
8e51180d05899167281844f0ee7bd7687de5f3b8d5394fa384bd2f6456686053
No published file was computed under this engine yet. When one is, it is listed here and stays listed.
v2026.7
A newer engine exists. Files published under this one stay under it, and it stays archived and verifiable
- CAS-234 waterfall status wording: an unfunded flag is now read from each step's own status, never assumed from position; drops the 'Steps below it are unfunded.' sentence (CAS-389 landing). No computed figure changes.
- student_loans.py docstring: cite the renamed test (CAS-365). Comment-only.
| Released | 2026-09-02 |
| Status | superseded |
| Supersedes | v2026.6 |
| Superseded by | v2026.8 |
| Tax years | 2024, 2025, 2026 |
| Tests | 478 of 478 passing |
| Python | 3.10.0 |
Source hash (SHA-256)
b5d26b7f1e36e48932177ca71cd1aecc0a4870fb37c3de62d64843c8d2d9d722
No published file was computed under this engine yet. When one is, it is listed here and stays listed.
v2026.6
A newer engine exists. Files published under this one stay under it, and it stays archived and verifiable
- Separated repayment-policy freshness from the case tax year so a 2025 financial case using verified 2026 loan rules is not falsely marked stale.
- Added complete policy-era audit fields and a Priya regression test covering distinct case, policy, and publication years.
| Released | 2026-08-21 |
| Status | superseded |
| Supersedes | v2026.5 |
| Superseded by | v2026.7 |
| Tax years | 2024, 2025, 2026 |
| Tests | 471 of 471 passing |
| Python | 3.10.0 |
Source hash (SHA-256)
269538d502ab99f56df2a26fd128da1102463fddab0d42d5874e78f7268e2401
No published file was computed under this engine yet. When one is, it is listed here and stays listed.
v2026.5
A newer engine exists. Files published under this one stay under it, and it stays archived and verifiable
- Connected housing-decision analysis to case packets with explicit purchase, rental, sensitivity and protected-reserve readiness assumptions.
- Corrected the 2026 federal student-loan policy table from current HHS and Federal Student Aid sources, including the 2026 poverty guideline and PAYE/ICR availability through 2028 for eligible loans.
- Added Repayment Assistance Plan payment calculation and a PSLF employer-qualification sensitivity so an unknown hospital employer is never assumed to qualify.
| Released | 2026-08-21 |
| Status | superseded |
| Supersedes | v2026.4 |
| Superseded by | v2026.6 |
| Tax years | 2024, 2025, 2026 |
| Tests | 471 of 471 passing |
| Python | 3.10.0 |
Source hash (SHA-256)
a4cae9ad5a14d089f5ef752c7345f687703aa53def940f20db0f0494c7c28249
No published file was computed under this engine yet. When one is, it is listed here and stays listed.
v2026.4
A newer engine exists. Files published under this one stay under it, and it stays archived and verifiable
- Added education-support sensitivity pricing that measures capped parent cash-flow support as displaced retirement contributions plus foregone growth, while preserving the full reserve and prohibiting new parent debt.
| Released | 2026-08-20 |
| Status | superseded |
| Supersedes | v2026.3 |
| Superseded by | v2026.5 |
| Tax years | 2024, 2025, 2026 |
| Tests | 468 of 468 passing |
| Python | 3.10.0 |
Source hash (SHA-256)
494e7782d82c933089e9107278417833cf6413c49893c7b7289143ef40f9e377
No published file was computed under this engine yet. When one is, it is listed here and stays listed.
v2026.3
A newer engine exists. Files published under this one stay under it, and it stays archived and verifiable
- Withholding position accepts other_payroll_deductions_annual, so implied federal withholding is no longer overstated for households with non-tax payroll deductions. Fixes the 0.00-withholding defect found 2026-08-17.
- Case word-count validation band raised from 1500-2500 to 3000-4000 to match the post-Marisol editorial standard.
- waterfall.py docstring authority repointed from /philosophy/ to /method/ per the migration roadmap; STEP_NAMES[7] respelled to American English (Retirement maximization).
| Released | 2026-08-17 |
| Status | superseded |
| Supersedes | v2026.2 |
| Superseded by | v2026.4 |
| Tax years | 2024, 2025, 2026 |
| Tests | 461 of 461 passing |
| Python | 3.10.0 |
Source hash (SHA-256)
6007fbef7ca1cb36a5e549323f6f24792029acc8401ffe8c2b70d725aba917d0
No published file was computed under this engine yet. When one is, it is listed here and stays listed.
v2026.2
A newer engine exists. Files published under this one stay under it, and it stays archived and verifiable
- Repackaged as 'ledger' for Case in Pointe. Arithmetic unchanged from v2026.1 — the nine-archetype sweep reproduces the v2026.1 output hashes exactly. The version bump reflects new bytes, not new behavior.
| Released | 2026-08-13 |
| Status | superseded |
| Supersedes | — |
| Superseded by | v2026.3 |
| Tax years | 2024, 2025, 2026 |
| Tests | 458 of 458 passing |
| Python | 3.10.12 |
Source hash (SHA-256)
302bbd1e565ca5cb6fb9a59bdbe8f49c22e78d4feb73331594815dc79cf505d4
No published file was computed under this engine yet. When one is, it is listed here and stays listed.
Superseded is not deleted. Every release stays archived with its hash intact, because a file published under it has to remain reproducible.