Responses to two model critiques
September 17–20, 2026 · engine 2026-09-17.1
This page records the response to two supplied research reports and the resulting model changes. Discussion responses were provided before implementation. The changes were implemented with AI assistance and have not received independent scientific review. Open the model or its structural comparisons. Later corrections are logged at the end of this page.
Report 5 is Audit and Redesign Recommendations for the Unjournal Cultivated-Meat Cost Model and Belief-Elicitation Workflow, supplied as critique_discussion/deep-research-report (5).md. Report 6 is Deep Review of the Unjournal Cultured Meat Cost Model and Belief Elicitation Workflow, supplied as critique_discussion/deep-research-report (6).md. Their exported citation markers do not resolve to source URLs in these files. We treat the reports as critiques, not as independently verified empirical evidence. The raw reports include participant-specific material and are not bundled with this public page.
What changed
- Both views accept an optional median alongside p10/p90, with explicit validation and the same fitting method.
- Advanced offers direct fresh-media intensity and media-linked growth-factor dosage as alternatives to the baseline equations.
- Advanced compares shared maturity with independent maturity channels, preserving the channel-level marginal distributions.
- Growth-factor controls show the price ranges they imply. The association chart omits inputs made inactive by the selected structure.
- New controls explain provenance on hover and link here. Advanced shared links retain the structural choices and valid custom priors; the Simple-to-Advanced link carries custom priors too. JSON exports include provenance and structural comparisons; CSV exports include version, seed, sample count, and effective parameters (the full configuration is on the first sample row).
- The model now links to the workshop’s structured skeptic–optimist follow-up, which distinguishes disagreement about definitions, evidence, credibility, interpretation, structure, materiality, and commercialization probability.
Baseline numerical assumptions and the workshop-era archive are retained. The new structural settings are opt-in. They are tools for examining assumptions, not fitted replacements.
Target quantity and interpretation
Reports 5 and 6: accepted. A draw currently represents a hypothetical plant/process scenario. Process weights select a process for each draw. They do not represent production shares of coexisting plants within one simulated industry. The model now states this beside the results on both pages.
A production-weighted industry average would require simulated costs and output weights for multiple plants/processes within each world, including cross-plant dependence and adoption shares. A probability that most plants adopt a technology is not an output share. We have not relabeled the existing mixture as an industry average.
Commercialization probability, cost conditional on commercial success, frontier cost, and a volume-weighted industry average remain separate open quantities. Infeasible engineering draws are not screened out. A claim of “2025 USD/kg” would also be premature: the source inputs still mix dollar years. These issues need explicit definitions and evidence before new numerical outputs are defensible.
Custom quantiles
Report 5: accepted with a correction. The previous dashboard accepted p10/p90 only; it did not discard a median entered in this dashboard. But its connection to an elicitation supplying three quantiles was incomplete.
An optional p50 now defines a two-piece lognormal transform. For a standard-normal draw \(z\), use
\[ X=\exp(\log q_{50}+\sigma(z)z),\quad \sigma(z)= \begin{cases} \log(q_{50}/q_{10})/1.281551566,&z<0,\\ \log(q_{90}/q_{50})/1.281551566,&z\geq0. \end{cases} \]
This preserves all three population quantiles; Monte Carlo sample quantiles have sampling error. Equal adjacent quantiles allow a point mass. If p50 is omitted, the previous two-endpoint lognormal remains, with median \(\sqrt{q_{10}q_{90}}\). For example, 8/20/100 retains a median of 20 rather than approximately 28.3. Tail shapes remain modeling assumptions.
Inputs must satisfy \(0<q_{10}\leq q_{50}\leq q_{90}\), omitting the middle comparison if p50 is blank. Incomplete or invalid rows show a message and keep the last valid inputs active. The calculation API rejects invalid priors. No workshop responses or respondent records were modified.
Structural alternatives
Fresh medium
Report 5: accepted as a stress test. The baseline uses \(L/kg=(1000/D)T\), where \(D\) is wet harvest density and \(T\) a media-use multiplier. This makes density reduce media cost mechanically. The alternative samples fresh L/kg directly and computes media cost as L/kg × $/L. Density still sets reactor volume and CAPEX, but no longer sets fresh medium use.
Provenance and justification: the structural recommendation comes from Report 5’s media-identity critique. The alternative’s initial p5–p95 range of 8–60 L/kg is an illustrative developer-selected stress range informed by examples discussed in the report and earlier engine comments. It is not a reported study’s uncertainty interval, expert elicitation, or calibrated commercial process. Users should replace it with process-specific beliefs. Process-specific material balances, oxygen transfer, nutrient yield, and washout remain unmodeled. A direct media-cost prior takes precedence over either media equation.
Growth-factor dose
Report 5: accepted as a stress test. The alternative is
\[ g_{GF}/kg=(L_{fresh}/kg)\times c_{GF}\;(mg/L)/1000\times f_{regime}. \]
The expensive regime uses \(f=1\); the cheap regime initially uses 0.4. Both concentration and cheap-regime dose fraction are editable. Multiplying by the existing price draw gives GF $/kg. Since November 9, 2026 this is the default, not a stress test; see the correction below.
Provenance and justification: concentration 0.102 mg/L reuses the earlier engine’s aggregate formulation assumption; it has not been revalidated for all processes. The 0.4 dose fraction rounds the earlier cheap/expensive median-dose ratio (approximately 0.408). It is a scenario assumption, not an estimated recycling or retention efficiency. This alternative makes dosage respond to realized medium consumption. It does not establish biological feasibility or a protein-specific price basket. A direct GF $/kg prior or complete-medium accounting takes precedence, with a visible note.
Dependence
Reports 5 and 6: accepted in part. Shared maturity remains the baseline. The alternative gives hydrolysates, GF adoption, supplemental proteins, financing, and equipment separate, independent maturity draws from the same Beta distribution. Each channel retains its existing coefficient, mean shift, and clipping. This changes shared dependence without also removing the marginal maturity effect.
The alternative is called independent maturity channels, since density, process mode, media volume, and accounting still create dependencies. It is not a fully independent-input model. An unused common-maturity bar is omitted in this mode. A three-factor model and expert-specified correlations remain open: assigning them new coefficients now would add assumptions without calibration.
What the comparison answers
Advanced reruns each structural alternative with the same seed and other settings, reporting p50, p90, and P(cost < $25/kg). Each row changes one choice relative to the selected scenario. Media and GF comparisons also depend on their alternative input assumptions, so their differences cannot be attributed solely to equation form. These comparisons do not replace Sobol, Morris, or dependence-aware attribution analyses.
A top-down critical perspective and the response round
The workshop materials contain a stronger skeptical argument than a high alternative cost estimate. One public-cleared anonymized respondent starts from mature yeast fermentation and argues that slower animal-cell growth, lower net volumetric productivity, more fragile cultures, hygiene requirements, senescence and cell-line work could leave cultured meat with a two-to-three-order-of-magnitude production-cost disadvantage. They also argue that bottom-up models can combine individually plausible improvements without showing that they work together.
Provenance and status: this is one respondent’s public-cleared argument, summarized in the workshop crux map (full argument). It is neither an independently validated cost floor nor a workshop consensus. The model should test the mechanisms and common-basis quantities behind the claim rather than widen a prior merely to include its headline estimate.
The highest-value comparison would report net harvested grams per litre per day, fresh medium per kilogram, reactor occupancy, utilization, failed-batch losses, and vessel count on the same basis for the model scenario and a documented microbial-fermentation reference. The current engine can expose some of these quantities, but it does not yet provide a harmonized microbial reference band, explicit failed-batch accounting, or a top-down bound. Those remain open work.
The public synthesis now distinguishes eight possible sources of disagreement: target definition, factual estimate, evidence set, source credibility, interpretation or reference class, model structure, the importance of an accepted fact to the final result, and commercialization probability or timing. The crux response form asks both sides to classify the dispute, state what they think the other side believes, and say how much resolution would change their forecast or decision.
Findings already addressed, and clarifications
Supplemental proteins (Report 6). The current engine already includes albumin/transferrin/insulin in a separate cost block; complete medium includes them once. Another block would double-count these costs. Formulation-specific protein quantities and prices still need evidence.
One authoritative core (Report 5). Simple and Advanced already use cost-model.mjs, with adapter parity tests. Python and Squiggle are historical implementations. The new controls preserve the shared browser core.
GF probability and progress (Report 5). Both controls already operate. Probability selects the cheap/expensive state; progress scales prices within each state. At progress 50, p5–p95 price ranges are $10–1,000/g and $500–50,000/g respectively. The ranges now appear beside the controls, and tests check both adoption and progress. These are assumed interpolations, not estimated learning curves.
Sensitivity claims and colors (both reports). The current chart already uses red/green to indicate the sign of the conditional mean difference, and describes the statistic as an association rather than a variance decomposition. The heading was changed on September 17 to “Association under the current uncertainty model” and on September 18 to “Sensitivity analysis (tornado chart): association under the current uncertainty model,” so that readers looking for the sensitivity analysis can find it while the caveat stays in the title. Inactive inputs are removed for the new structures. The hidden-input explanation also avoids an unsupported fixed ranking. Bar lengths remain absolute magnitudes; color carries direction. A separate sensitivity methods page now compares this statistic with alternatives on the same scenario.
Mean components versus median total (Report 5). The existing breakdown already labels component means. The result remains an expected-cost decomposition, which need not sum to the median. Accounting tests check draw-by-draw totals.
Blended product and thresholds (both reports). The dashboard already has an ingredient-mix calculation and a separate demand page. Manufacturing-cost thresholds do not establish retail competitiveness or animal-welfare impact. Commercial margins, processing, demand, and displacement require additional assumptions. No decision recommendation was inferred from the new scenario results.
Recommendations retained as open work
Process engineering and validation. Study-specific reproduction fixtures, formulation-specific protein costs, nutrient balances, contamination and failure loss, discrete equipment trains, geography, hydration/recovery normalization, and common-dollar-year conversion need evidence beyond these critiques. Full material balances or fitted experience curves are not substitutes for missing data. A single result falling between published headline estimates would not validate this model.
Global sensitivity and numerical precision. The new structural comparisons are implemented; formal variance decompositions and dependence-aware analyses are not. Sobol analysis must define independent primitive inputs, and latent-factor sensitivity cannot be interpreted as the value of researching a particular intervention. The accompanying audit script records multiple seeds and sample sizes for p50, p90, p95, and threshold probabilities. Those checks describe simulation stability, not empirical accuracy or proof that tail estimates have converged.
Parameter and assumption registries. The new controls share metadata with the engine. A complete evidence registry covering every numerical primitive, an empirical validation record, and build-time checks of every documented default remain open. The export records effective inputs and engine version; the audit records the engine SHA-256. These do not yet amount to the full build manifest proposed in Report 5.
Elicitation design. Both reports’ recommendations for private initial beliefs, discussion of evidence and interpretation, and private revised beliefs are useful. Preserve original responses and revision reasons. Match units, date, cost scope, output basis, and representative versus frontier definitions before importing any belief. In particular, a maximum-density forecast is not a representative-density prior, and a single protein’s price is not necessarily a dose-weighted GF basket price.
Pooling and facilitation. Equal-weight descriptive mixtures, subgroup comparisons, and leave-one-out checks can reveal disagreement. Performance weighting needs relevant calibration evidence; expertise labels alone do not justify numerical weights. Training, practice questions, neutral evidence packets, and piloting deserve a separate workshop-workflow revision. No form, aggregation, participant assignment, or external discussion thread was changed in this model revision.
Verification scope
Automated checks cover accounting identities, utilization, complete-medium precedence, Simple/Advanced parity, quantile fitting and rejection, GF-control interaction, media-volume coupling, dependence behavior, and reproducibility. Numerical audit output records the exact engine hash and settings. Rendering and browser checks address implementation behavior; they do not establish scientific validity.
At baseline settings with 30,000 draws and seed 42, median cost is $42.62/kg, identical draw-for-draw to the previous engine. Independent maturity channels give $42.57/kg. The illustrative direct-media range gives $34.49/kg, while media-linked GF dosage alone gives $41.05/kg and increases p90 from $159.79 to $191.30/kg. The media alternatives change their input assumptions as well as the equation. These values are scenario comparisons, not updated forecasts.
Across seeds 42, 7, and 99 at 30,000 draws, the baseline p50 ranges from $42.20 to $42.62/kg and p95 from $228.43 to $232.77/kg. The small maturity-comparison difference should be read in light of simulation variability. Download the numerical audit for all variants, sample-size checks, input settings, and engine SHA-256.
Corrections, 9 November 2026
AI-implemented (Claude) at David Reinstein’s request after an audit of statistics errors in AI-assisted work. Not yet independently reviewed.
1. Growth-factor dose was drawn independently of medium use (engine 2026-11-09.1). Growth factors are dissolved in the medium, so grams per kg should follow litres of medium per kg. The default instead drew grams per kg from a separate prior, so a simulated plant could use a lot of medium yet a small growth-factor dose, or the reverse. The medium-linked dose above, previously opt-in, is now the default: g per kg = fresh L per kg × 0.102 mg/L / 1000 × regime fraction (1, or 0.4 with cheap growth factors). Growth-factor cost per litre of medium is then concentration × price. The old rule remains available as Growth-factor dosage → Separate g/kg prior. A test (tests/cost-model.test.mjs, “default GF dose is linked to medium use”) checks the identity draw by draw, the rank correlation of dose with medium use (above 0.999 within a price regime, against about zero under the old rule), and that doubling medium use doubles growth-factor cost. Defaults, seed 42, 30,000 draws, per kg dry cell mass and per kg of hybrid product (25% cells):
| 10th / 50th / 90th percentile, $/kg dry | Mean, $/kg dry | Median $/kg hybrid | Under $5 / $10 / $25 / $50 hybrid | |
|---|---|---|---|---|
Before (2026-11-07.2, separate dose prior) |
107 / 276 / 920 | 444 | 21.25 | 0.14% / 11.6% / 58.2% / 84.0% |
After (2026-11-09.1, medium-linked dose) |
105 / 289 / 1,167 | 570 | 22.11 | 0.14% / 12.0% / 55.6% / 80.0% |
Seed 7 gives the same figures to within $2 at the median. The error did not uniformly flatter the result: it mainly understated the expensive tail (mean growth-factor cost roughly doubles, $109 to $235 per kg dry, because the model’s medium use is higher than the 8–60 L per wet kg the separate prior assumed), while in the cheapest worlds it slightly overstated growth-factor cost, so the share under $10/kg hybrid rises a little. Concentration is still a fixed value; its uncertainty is not represented. The tornado chart no longer shows growth-factor quantity as its own input, since it is now derived from medium use. Prose figures on the docs, sensitivity and model pages, the offline Shapley table and the audit snapshot (docs/model-audit-2026-11-09.json) were regenerated for this engine. The September figures on this page are unchanged: scripts/review-robustness.mjs pins the separate dose prior so they stay comparable.
2. Stale text said process losses were not modeled. Since engine 2026-11-07.1 the default includes recovery losses in harvest and washing (1–15%, 5th–95th percentile) and failed or contaminated runs by process mode, which divide in-house costs per delivered kg (median increase about 11%). Notes on the Advanced and Simple result pages and two items in the docs limitations list still said washing losses and contamination were not modeled. They now say what the engine does, with the switch (Recovery losses and failed runs, under Structural stress tests); the page notes compute the loss ranges and median increase from the engine instead of quoting them.
3. Retail prices beside production costs. The cost pages have compared with US wholesale chicken since 5 November. The demand calculator still compares with retail prices, because its price ratio stands in for what shoppers see. Its table now labels the conventional price as retail and the cultivated figure as a retail-equivalent (factory-gate production cost + scaffold + a stated add-on), states the add-on in use, and offers a button that sets it to chicken’s own wholesale-to-retail gap (retail $9.27 − wholesale $3.50 per kg, computed from the values in model-controls.mjs). Its reference-cost buttons now read the current engine’s default medians instead of quoting July and October figures. The team hub in Notion already quotes the wholesale reference (changed 5 November); its stale note that failed runs are not modeled per mode, and a decisions-log entry for these corrections, were updated there.