Correction After Independent Review — September 19, 2026
Status: CURRENT. This file amends research/17 and the September 19 report. The review (codex_review_2026-09-19.md, a second model's read of commit 305edb9 against the saved primary data) was right on every substantive point. Prediction rows and the graded ledger were not edited. Erratum (follow-up review, same day): the first correction commit (9c357d4) OVERWROTE archive/2026-09-19/ — the archived original report, grid, parity table and research/17 were replaced, not preserved, and this file wrongly said both revisions were kept. The original was recoverable from commit 305edb9 and has now been restored to archive/2026-09-19-rev1/ (its own hash manifest verifies); the first correction is in archive/2026-09-19-rev2/; archive/2026-09-19/ holds the final revision. archive_snapshot.py now moves a prior revision aside before any same-day rewrite, and the integrity tests hash the -revN directories too.
What was wrong, in order of consequence
- The "$250–260 regional floor" and "reject $180" were false as stated. The Sep 18 Oklahoma report prints 380 tons of Good/Premium large-square 4x4 at $170 FOB (Northwest; no damage note). I recorded it in the market table and left it out of parity with no exclusion rule. Landed at McClave it is ~$211, $70 under the round-bale lot I used. Kansas also printed a Good 3x4 100-t lot at $230 FOB (South Central). Both are now in
market_parity.py. The floor claim is withdrawn. The honest statement: every ≥500-ton Good-or-better large-square lot in the region printed $250–300 at origin (Kansas Fair/Good squares: 500 t $195 FOB, 3,575 t $233 delivered); large-square lots of 100–500 t reached $170; large rounds ran $160–240 (Nebraska 1,000 t Good at $160). - The "$222 export netback" was an assumption presented as an observation. $260 is the origin price of a NE Colorado farm sale; the buyer's location and delivered price are not published. Subtracting freight to Greeley assumes the buyer sat at that farm. Withdrawn. The row is now
origin_price(comparable at origin, no freight applied); no netback is computed this cycle because no delivered price with a known destination printed. - The "SE cash peaked Nov–Dec 2022 and was $40 lower by February" comparison mixed products. Nov 17, 2022: 1,000 t Good/Premium 4x4 new crop at $300. Feb 9, 2023: 25 t Good 3x4 old crop at $260. Dec: 50 t Premium at $320. Grade, age, bale and lot size all change. The same-grade Good rows go $225 (Sep) → $250 (Oct) → $260 (Feb), which is not a decline. The +23% "winter lift" also excluded the November 1,000-t lot from its winter window. The rows are consistent with a Nov–Dec peak and do not establish one. The mid-December completion plan is retained as a risk-management judgment, not a demonstrated optimum. It is not evidence that holding longer is better either.
- Archive coverage overstated. 242 reports is the retrieved sample, not the publication record: ESMIS stops at Sep 2025; Oct–Nov 2025, Jan–Mar 2026 and May 2026 are missing (from every source tried, which is not the same as "no copy exists"). The "2025→26 winter −11%" rests on one December trade. "2 of 8 2026 reports" is a retrieval-sample rate. The six-count filter spans Good through Supreme.
- Enforcement holes. (a) The calibration ratchet read its prior state from its own output; a missing or invalid
calibration.jsonsilently reset the floor to ±$41. (b) Only absolute floors ratcheted, and release pooled all families. (c) New row #37 (+3.1 ±1.3) violated the stated max(abs, pct) rule underanomaly_c's 92.9% relative floor. (d) Thestate_price_usd_tonfamily used by rows #33–35 had no machine floor. (e) Preflight checked the grid, not pending rows. (f) Row #31 ($315 ±65) is under the 21.7% relative price floor. - Indicator policy stated more strongly than enforced. The drought outlook shaped the grid's post-December roll-off and milk moved #31 by $20; neither is an evidence-gated indicator, and preflight never checked what moved the midpoints.
Smaller: $325 is tied for the highest SE large-square farm-origin print (24 t Premium, Nov 11, 2022), across different grades. "Persistence landed within $5" was wrong: pure June persistence missed by $15/$14; the predictions ($220/$217) were within $5. The +$45 basis used the $235 statistical anchor; against the published $240 state-grid midpoint it is +$40. Organic volume: 4,000 t contracts + 500 t trade, not "4,500 t contracts." September diversions are partial through the retrieval date; June–August like-for-like is 26.2% of the historical mean. A qualifying Sep 24 trade would be 7 of 243, and only one meeting the grade/bale/size/basis filter counts.
What was fixed in the system (this commit)
data/current/calibration_floors.json(new, committed) is the durable ratchet state.calibration.pyrefuses to run without it, ratchets absolute and percentage floors, and judges release per family. Percentage floors apply only to scale-proportional families (pct_applies_to);anomaly_c,probability_pct,pctare absolute-only. That reconciles the policy with row #37 (which now complies) instead of pretending a 92.9% relative floor on a temperature anomaly was ever the intent.state_price_usd_tonseeded at ±$30 / 12.5% with its rationale recorded; it ratchets up from there.forecast_preflight.pynow checks every PENDING two-sided row against its family floor. Row #31 is grandfathered (listed with the reason in the floors file); it stands as frozen and is logged here as an erratum. Rows #21/#22 (Aug 27) had the same defect and are already NO-PRINT.tests/test_learning_system.py: three regression tests (durable state present and never below calibration; calibration fails closed in an isolated copy without the floors file; every pending row meets its floor).data/current/forecast_adjustments.json(new): every discretionary midpoint move is recorded with its driver and whether the driver passed the evidence gate. Preflight prints them as DISCRETIONARY EXCEPTIONS. The enforcement claim is narrowed accordingly: the system records judgment; it does not and cannot prove that nothing else moved a typed-in grid.market_parity.py: OK $170 (380 t) and KS $230 (100 t) added; NE CO row changed fromexport_netbacktoorigin_price;test_freight_arithmeticextended.
Recomputed valuation
Tonnage-weighted comparables at origin. Comparison set, defined (follow-up review 2026-09-19): conventional alfalfa, completed per-ton trade, large square bales (3x4/4x4) only, ≥100 t, price at origin, Sep 10–18 reports. Rounds are a different product (handling, payload) and are listed but excluded; the first correction included Oklahoma rounds while silently omitting cheaper Nebraska rounds — that inconsistency is fixed here (ams_cash_benchmarks.csv, raw PDFs in data/2026-09-19/):
| Grade set | Tons | Weighted $/t | Range |
|---|---|---|---|
| Good/Premium large squares (W NE 500 @300, 200 @330; WY 500 @295, 100 @300; OK 160 @240, 380 @170) | 1,840 | $270 | 170–330 |
| Good large squares (NE CO 2,000 @260; WY 1,600 @281, 150 @255; W NE 200 @285; KS 100 @230) | 4,050 | $269 | 230–285 |
| Premium/Supreme large squares (KS 500 @250, 100 @275, 200 @237.50) | 800 | $250 | 238–275 |
| Large rounds — EXCLUDED by rule (NE 1,000 @160, 500 @185, 600 @202, 450 @210, 150 @190; OK 720 @240) | 3,420 | $196 | 160–240 |
| All large squares | 6,690 | $267 | 170–330 |
Landed into Bent County (freight $0.157/t-mi, derived): $211 (OK G/P 4x4) to $336 (W NE). No netback is computable. Estimate: $270 Good/Premium large-square FOB-farm (from $280), Good ~$265, ±$65, LOW. It is a selected regional average, not an observed McClave price. No import-parity uplift is claimed on top of the origin comps, because the cheapest comparable landed ($211) sits under every origin comp.
Revised grid (premium_forecast.csv, version "research/18 correction"): Sep 270 → Oct 280 → Nov–Jan 285 → Feb 280 → Mar 270 → Jun 240 → late-2027 225. The Oct–Jan lift is a discretionary +6% (NE large-tonnage base rate, up 5 of 6 seasons); the post-February roll-off is a discretionary scenario move (drought outlook). Both are in forecast_adjustments.json.
State-benchmark grid unchanged (Aug 235 frozen, Sep 240, Dec 255, Jan–Mar 260).
Revised seller guidance (holdings still UNVERIFIED)
- The stack's grade is not established. "2025 carryover 4x4, untested" could grade Good, Fair, or Utility. Old-crop lots in the current reports printed $125–200 (KS SE F/G old crop $125; OK G/P 4x4 $170).
- Working values are JUDGMENT, not observed: tested Good/Premium ~$255–290; untested carryover ~$220–260 if it tests Good; lower otherwise. No trade of untested carryover 4x4 printed; the OK $170 lot's crop age is not stated.
- $180 is below every ≥500-ton Good-or-better large-square comparable at origin ($250–300; Kansas Fair/Good squares sold $195–233) but not below every trade (OK $170 squares; NE $160 rounds). Do not reject it on a "regional floor"; reject or accept it against actual competing bids after a forage test and weights.
- Sell a meaningful portion on any firm bid at or above the untested range. Plan completion by mid-December as risk management (the ±$65 uncertainty exceeds any plausible lift). Exit rules unchanged and senior.
What the review confirmed
Scorecard 6/16 (+2 NEAR), central cluster 1/5; the 17 mechanically checkable grades; the Sep 10 Colorado report contents; NASS July prices; cattle-on-feed; the canal diversion arithmetic (25.0% Jun–Sep; 26.2% Jun–Aug like-for-like); John Martin 19,412 AF; drought indices and Bent County's collapse to 19% D2+; diesel $6.285; the 75% CPC sentence; the parser reproduces all.json with zero differences across 265 saved reports.
Lesson
L11 is amended: base rates from the local ledger must be same-product comparisons or be labeled heterogeneous; a comparable omitted from parity needs a written exclusion rule; an origin price is never a netback. Added to LESSONS.md under L11.
Follow-up review (same day, codex_followup_review_2026-09-19.md) — five more defects, all confirmed and fixed
- "Every ≥500-ton lot ran $240–300" was false. Nebraska sold 1,000 t of Good rounds at $160, 500 t at $185, 600 t at $202. The first correction included Oklahoma rounds while silently omitting cheaper Nebraska rounds. The comparison set is now defined (large squares only, ≥100 t, origin price) and rounds are listed and excluded by rule.
- The seller reference ranges had no transaction basis (no untested-carryover trade printed; the $170 lot's crop age is not stated). Replaced with named negotiating references plus one range explicitly labeled as judgment.
- The published chart still showed the $280 / $300–305 path. Site figure, dashboards, report HTML and artifact regenerated from the corrected grid; the $170 lot is plotted.
- The archive was overwritten (see erratum above). Restored and the snapshot script fixed.
- The private seller report was published to the site. Removed from
build_site.pyand the generated output; it stays in the repo, unpublished.
Also: preflight and the width test now use the room on the narrower side of the point (min(point − low, high − point)) and check ordering; the adjustments ledger covers every month of both grids; forecast_policy.json v3 says explicitly that failed indicators may move a midpoint only as a logged exception. The Wyoming western 100-t G/P 4x4 at $300 is in the comp set (mean $270). "Our estimate is lower" replaces "spot is lower" throughout.