# Round-2 red-team critique — deep-dive corpus

**Reviewed:** 2026-04-23
**Scope:** `research/deep-dive/` — 8 deliverables + 11 lab profiles + index (~53,000 words). Round-1 critique at `review/critique.md` handled the broader corpus; this pass covers the DD1–DD8 shipment only.
**Method:** six parallel red-team subagents (SOP correctness, part-number/pricing audit, peptide chemistry, community-lab profile fact-check, chromatogram sanity, aggregate-statistics rigour). Independent verification against Agilent store, Fisher Scientific, ACC, USP, Waters, Phenomenex, PubChem, Wikipedia, Guide to Pharmacology, Marshall Scientific, finnrick.com, testing.trans.diy, transharmreduction.org, mzbiolabs.com, peptideprotocolwiki.com, Snyder/Kirkland/Dolan RP-HPLC canon.

---

## Summary (5 sentences)

The deep-dive corpus holds up on the bulk of its technical claims — Fisher/ACC/Agilent/Waters part numbers verified to the exact list price on the five biggest kits, charge-state m/z arithmetic is correct for every peptide except tesamorelin, the Finnrick grade-distribution roll-up is internally consistent, and the Round-1 corrections (EP 2.6.32 date, depyrogenation cycle, Pyrotell vs PYROSTAR sensitivity) are cleanly baked in. The highest-impact error is in **DD1 §7.1**: the stated USP <621> method-adjustment limits are materially wrong — the "±70% / ±50%" column-dimension rule is the GC rule (LC uses an L/dp-ratio constraint), "organic phase ±2% absolute" is wrong (the rule is ±30% relative / ±10% absolute cap), and "particle size interchangeable within L-category" overstates compendial permissiveness; an operator doing a robustness study from DD1 would make out-of-spec adjustments they believe are compendial. Three lower-impact but decision-relevant errors: **DD3 has tesamorelin MW off by 60 Da** (5195.89 → 5135.86; both charge-state m/z also wrong), **DD3 places "Met²⁷" in CJC-1295** (the actual residue is Leu²⁷ — the whole point of the modified GRF backbone is to eliminate Met-oxidation — so the listed "Met²⁷ +16 impurity" is a false target), and **DD1 (30 °C) vs DD5 (40 °C) cannot both anchor EV retention time to 8.20 min** on the same column/mobile phase. Two profile-level issues need correction: the **Artemis Analytical profile is out-of-date** (the lab now has a live website at artemisanalytical.cc with HPLC-UV disclosed; "deliberately opaque" is no longer true), and the **Trans Harm Reduction test count is 16, not 18** (the arithmetic that produced 18 in Round-2 was wrong; the live page lists 16 rows). The W055A ACC catalog number is a fabrication (the correct code is W0051-10), and `endotoxin-kit-comparison.md` says reaction tubes are TB240 while its sister SOP explicitly says TB240 is dilution-only and reaction tubes are TS050 — resolve in favor of TS050.

---

## Major issues (prioritised)

### R2-M1. USP <621> method-adjustment limits in DD1 are materially wrong — compendial-compliance risk

**Quoted:** `sop-estradiol-valerate-hplc.md:327` — "column dimensions ±70%/±50%, particle size interchangeable within L-category, flow ±50%, organic phase ±2% absolute, pH ±0.2" as USP <621> adjustment rules.

**What's wrong:**
- **"±70% length / ±50% ID" is the GC adjustment range.** LC <621> specifies that **L/dp must remain constant or within −25% to +50%** (length and particle size are coupled).
- **"Particle size interchangeable within L-category" is false.** <621> does not permit free particle-size swapping within an L-designation; the coupling is the L/dp ratio or the plate-number (−25/+50% N) rule.
- **"Organic phase ±2% absolute" is wrong.** The actual rule for the minor mobile-phase component is **±30% relative, capped at ±10% absolute**. For 80:20 MeOH/water (minor = water at 20%), 30% of 20 = 6% absolute, so MeOH can move 74–86% without revalidation. ±2% absolute is far too tight and would cause an analyst to reject legitimate robustness adjustments.

**Why this matters:** DD1 is a runnable SOP. An operator doing a robustness study per these limits will make adjustments they think are compendial (e.g. swapping a 3 µm for a 5 µm column in the same L-designation) that aren't, or will reject adjustments they think are non-compendial (e.g. 73:27 MeOH/water) that are.

**Fix:** replace §7.1 claim with:
- Column dimensions: length and internal diameter may be adjusted provided L/dp is held constant or within −25% to +50%; equivalently, theoretical-plate count N may be adjusted within −25% to +50% of the reference method.
- Particle size: not freely interchangeable within L-category; must satisfy the L/dp-ratio rule.
- Flow rate: ±50% (unchanged).
- Mobile-phase minor component: ±30% relative, not exceeding ±10% absolute.
- pH: ±0.2 (unchanged).

### R2-M2. DD3 tesamorelin molecular weight off by 60 Da — LC-MS operator will miss the real ion envelope

**Quoted:** `peptide-testing-deep-dive.md:36,296,300` — "Tesamorelin … C₂₂₁H₃₆₆N₇₂O₆₇S / 5195.89 Da … [M+4H]⁴⁺ = 1299.97, [M+5H]⁵⁺ = 1040.18."

**What's wrong:** The tesamorelin molecular formula (C₂₂₁H₃₆₆N₇₂O₆₇S) is correct but the average MW is 60 Da off. PubChem, Wikipedia, and every vendor datasheet give **5135.86 Da**. The charge-state m/z values the doc prints are wrong by ~12–15 m/z as a direct consequence:
- [M+4H]⁴⁺ correct = 1284.97 (doc says 1299.97, off by 15.00)
- [M+5H]⁵⁺ correct = 1028.18 (doc says 1040.18, off by 12.00)

**Why this matters:** On a single-quad LC-MS scan for tesamorelin, the operator tunes the mass range to cover the expected charge states. Scanning at 1299.97 for a compound that actually ionizes at 1284.97 misses the real ion envelope; the operator concludes the vial contains "nothing at the expected m/z" and mis-attributes.

**Fix:** change 5195.89 → 5135.86 on line 36 and line 296; recompute [M+4H]⁴⁺ to 1284.97 and [M+5H]⁵⁺ to 1028.18 on line 300.

### R2-M3. DD3 CJC-1295 sequence has Met²⁷ — the actual residue is Leu²⁷; listed "Met²⁷ oxidation" impurity is false

**Quoted:** `peptide-testing-deep-dive.md:252,257` — sequence "… Arg-Lys-Leu-Leu-Gln-Asp-Ile-**Met**-Ser-Arg-NH₂" for CJC-1295 (no DAC), and impurity list "Met²⁷ oxidation (+16)."

**What's wrong:** CJC-1295 is "modified GRF(1-29)" — the four intentional substitutions are D-Ala², Gln⁸, Ala¹⁵, **Leu²⁷**. The Leu²⁷ modification exists specifically to remove Met-oxidation vulnerability from the native GHRH/sermorelin backbone. The doc conflates CJC-1295 with sermorelin (which does retain Met²⁷).

**Why this matters:** a home-lab operator looking for a +16 Da impurity peak at Met²⁷ on CJC-1295 will either fail to find one (wasting operator time) or find some other +16 Da feature (e.g. N-terminal oxidation) and mis-assign it to a non-existent residue. For CJC-1295 the real low-level impurity targets are D-Ala²/L-Ala² racemization, maleimide hydrolysis (DAC variant), and truncation — not Met²⁷-O.

**Fix:** change "Met" to "Leu" on line 252; delete "Met²⁷ oxidation (+16)" from line 257 and replace with "D-Ala² racemization; maleimide hydrolysis on the DAC variant; incomplete N-terminal substitution."

### R2-M4. DD1 and DD5 retention-time anchors are inconsistent across 30 °C vs 40 °C

**Quoted:** `sop-estradiol-valerate-hplc.md:188` — column compartment **30 °C ± 2 °C**, EV tR ~8.2 min at that temp. `annotated-chromatograms.md:23` — method baseline **40 °C**, EV tR ~8.19–8.22 min. Both docs also list EEn at 9.6 min, E2 at ~3.5 / ~3.9 min, etc.

**What's wrong:** At a ~2 %/°C RP-HPLC temperature coefficient (Snyder/Dolan), a 10 °C rise from 30 → 40 °C reduces retention by ~15–25%. If 30 °C gives EV at 8.2 min, 40 °C should give ~6.5–7.4 min on the same column + mobile phase. The two docs cannot both be correct. The EEn value (9.6 min at both temperatures) is the clearest red flag — it is numerically impossible on the same column.

**Fix:** standardise on **30 °C** across both docs (this matches DD1's canonical method and is the typical community practice for estradiol ester isocratic runs). Change `annotated-chromatograms.md:23` method baseline from 40 °C to 30 °C; the scenario-level RT values (8.20, 9.6, etc.) then remain valid. Also adjust free-E2 Rt in DD5 from ~3.85–3.90 min to ~3.5 min to match DD1.

### R2-M5. Artemis Analytical profile is now out-of-date — the lab has a live website

**Quoted:** `community-lab-profiles/artemis-analytical.md` (whole doc) — "no website", "deliberately opaque", URL field "None published". `community-lab-profiles/_index.md:50` — "Deliberately opaque. 2 tests on testing.trans.diy; no website…"

**What's wrong:** testing.trans.diy/labs/artemis-analytical now lists **https://artemisanalytical.cc** as Artemis's website. The site discloses HPLC-UV instrumentation, volunteer trans-run operational model, sample-code anonymity, ~1-week turnaround, and a scope limited to estradiol esters + a handful of others. The "deliberately opaque" framing was valid as recently as Round 1 but is no longer accurate.

**Fix:** rewrite the Artemis profile — add the URL, update the instruments table with HPLC-UV (cite artemisanalytical.cc), update operational-model section, and narrow the "Unknowns" block to what remains unknown (principals, address, exact throughput, accreditation). Update the `_index.md` blurb and the summary decision-table row.

### R2-M6. DD2 §3.2 cites ACC catalog "W055A" — code does not exist in the ACC catalog

**Quoted:** `sop-oil-lle-gelclot-lal.md:105` — "ACC W055A … $183.27" for LRW 5.5 mL × 10.

**What's wrong:** ACC's own catalog lists **W0051-10** for 5.5 mL × 10-pack LRW. "W055A" appears nowhere in the ACC product pages. The SOP's own sister doc (`endotoxin-kit-comparison.md`'s part-number verification block) correctly uses W0051-10, so this is an internal inconsistency in addition to a fabricated catalog code.

**Fix:** change `W055A` → `W0051-10` in the §3.2 table. The price $183.27 is a Fisher-distributor number not ACC-listed; tag C3.

### R2-M7. HRT aggregate stats — Trans Harm Reduction test count is 16, not 18 (internal inconsistency)

**Quoted:** `aggregate-test-stats.md:40,148–154` and `community-lab-profiles/trans-harm-reduction.md:62,81` and `_index.md:46` — "16 tests as of 2026-04-23" (correct in §4.2 table), but the combined-corpus math says "18 unique tests" from (4 testing.trans.diy + 16 THR − 2 overlap).

**What's wrong:** transharmreduction.org/hrt-testing currently lists **16 rows**. Rechecked 2026-04-23: Jan 2026, Sep 2025, Jan 2025, Aug 2024, Apr 2024, Mar 2024 (×2), Jan 2024, Aug 2023, Jun 2023, Mar 2023 (×2), Dec 2022, Oct 2022, Aug 2022, Jun 2022 = 16. Combined with testing.trans.diy's 4 rows and 2 overlapping entries, unique HRT tests = **4 + 16 − 2 = 18**. The doc's math is right, but the headline "18 unique tests" is correct — the confusion is that §4.2 tabulates 16 and the combined header says 18; that's the expected relationship (16 THR + 4 TTD − 2 overlap = 18). **No fix needed on §4.2.1; this was a reviewer false positive.** Cross-checked the THR profile — it says "18 published result posts" on line 46 of the profile and in `_index.md:46`, but THR's own page lists 16 rows. **Fix:** change "18" → "16" in `community-lab-profiles/trans-harm-reduction.md` and `_index.md:46` (these profile references should track the THR archive alone, not the combined corpus).

### R2-M8. DD8 potency pass rate "16/18 ≈ 89%" mislabels which axis it measures

**Quoted:** `aggregate-test-stats.md:153` — "**Potency-within-±10% pass rate**: 16 / 18 ≈ 89%."

**What's wrong:** both flagged results (Swiss Pure 233/250 = 93%, Zelda 45.77/50 = 92%) are *within* ±10% on potency. The Zelda FAIL was physical contamination; the Swiss Pure CONDITIONAL was identity (mixed ester + androstenedione). Both would pass a potency-only test. Correct potency-only pass rate is **18/18 = 100%**. The 89% applies to the clean-pass rate only — which the very next bullet (line 154) correctly labels "Clean-pass rate (everything THR / ttd called PASS): 16/18 ≈ 89%."

**Fix:** change line 153 to "Potency-within-±10% pass rate: **18/18 = 100%** (no sample failed on mg/mL alone; the two flagged results failed on contamination and identity, not potency)."

### R2-M9. DD3 ε₂₁₄ rule-of-thumb formula is garbled

**Quoted:** `peptide-testing-deep-dive.md:126` — "ε at 214 nm ≈ 923 × (n − 1) × (8,400 for Trp + 1,400 for Tyr + …)."

**What's wrong:** The Kuipers & Gruppen 2007 formula is additive, not multiplicative. Correct form:
```
ε₂₁₄ = 923 × (n − 1)  +  8,400·N_Trp  +  1,400·N_Tyr  +  (Phe/His/Cys/Met terms)
```
As written, "×" between the backbone and side-chain terms produces grossly inflated ε for any aromatic-containing peptide.

**Fix:** rewrite line 126 with the additive form and cite Kuipers & Gruppen 2007 or Edelhoch 1967 as the underlying reference.

### R2-M10. DD1/DD6 internal inconsistency on ACC reaction-tube part number

**Quoted:** `endotoxin-kit-comparison.md:65` — "depyrogenated reaction tubes (ACC **Pyrotubes** TB240)". `sop-oil-lle-gelclot-lal.md:84` — "TS050-10 … **Not TB240** — TB240 is a 12 × 75 mm 'dilutions only' tube per ACC. For the reaction, use TS050 (soda lime) or TK100 (borosilicate, tube-reader geometry)."

**What's wrong:** `endotoxin-kit-comparison.md` says reaction tubes = TB240, directly contradicting the sister SOP that explicitly clarifies TB240 is dilution-only and reaction is TS050. Worse, TK100 is catalogued at **8 × 75 mm**, not 10 × 75 mm; the "tube-reader geometry" hint in DD2 is a little off.

**Fix:** in `endotoxin-kit-comparison.md` §2.1, change "ACC Pyrotubes TB240" → "ACC Pyrotubes **TS050-10** (reaction tubes, 10×75 mm) with **TB240-5** (dilution tubes, 12×75 mm)." In `sop-oil-lle-gelclot-lal.md`, clarify TK100 geometry is **8 × 75 mm** (not tube-reader geometry for most readers that require 10–13 mm OD).

### R2-M11. DD7 Agilent pump-seal price understated by ~3×

**Quoted:** `used-hplc-buyers-guide.md:87` — "Agilent **5063-6589** ~$50–80 pack of 2."

**What's wrong:** Current Agilent / distributor pricing on the 5063-6589 seal kit (pack of 2) is ~**$170/pack**. The $50–80 figure is stale or refers to a single seal. An operator budgeting $50–80 for their first seal swap will be surprised.

**Fix:** update band to "~$150–200 pack of 2 via Agilent store / distributors".

### R2-M12. DD2 PPD paper data conflates extraction efficiency with PPC recovery

**Quoted:** `sop-oil-lle-gelclot-lal.md:15,140` — "5 min → 0%; 15 min → 55%; 30 min → 37%; 50 min → 69–138%."

**What's wrong:** The "69–138%" bundles two different quantities from Lester et al. 2019:
- Table 1 (feasibility CSE-in-oil vortex-time study): **0, 55.3, 37.5, 69.2%** at 5/15/30/50 min — these are **extraction efficiencies**.
- Table 2 (method-verification, 1:100 dilution): **100–138%** drug product / 101–127% placebo — these are **PPC recoveries** from the subsequent validation.

These are not the same metric. The "69–138%" range in the Key-takeaway collapses a 69% extraction efficiency with a 138% PPC recovery — they measure different things.

**Fix:** change line 15 and line 140 to read "at 50 min vortex, extraction efficiency ≈ 69% (Lester et al. Table 1); the subsequent kinetic-format PPC recovery validation at 1:100 dilution achieved 100–138% (drug product) / 101–127% (placebo) (Lester et al. Table 2). Gel-clot PPC acceptance is clot-at-2λ, not numeric recovery."

### R2-M13. DD5 Scenario 3 DAD match 0.985 conflicts with DD1 identity acceptance threshold

**Quoted:** `annotated-chromatograms.md:120` — "DAD match 0.985 is consistent with an estradiol-class chromophore but does not confirm EV specifically." `sop-estradiol-valerate-hplc.md:355` — identity acceptance requires DAD match factor **≥ 0.998**.

**What's wrong:** by DD1's own criteria, 0.985 is a straight identity fail, not a "trap" or "gotcha." The doc presents 0.985 as plausibly passable ("a naive match-factor check would call 0.985 acceptable") but no one running the DD1 SOP would call 0.985 acceptable — DD1 says reject at <0.998. The scenario's lesson is valid (DAD alone can't distinguish estradiol esters) but the specific numeric claim undersells how quickly DD1's own criteria catch it.

**Fix:** change the match factor in Scenario 3 from 0.985 to ~0.995 (still inside plausible ester-sibling match but safely above the 0.998 threshold), so the "a naive match-factor check would pass this" framing is actually true. Or restate: "DAD match 0.996 — passes DD1's identity threshold of ≥0.998-ish, but retention time at 9.6 min is outside the ±2% window, so DD1 catches this on RT."

### R2-M14. DD5 Scenario 8 column-aging trend should name the mechanism

**Quoted:** `annotated-chromatograms.md:366–391` — column ages across 250 injections, Rt drifts 8.20 → 7.80 min, T rises 1.08 → 2.30, N drops 8400 → 3500, pressure rises 30%.

**What's wrong:** the doc presents this as "the" aging trend. In reality, column aging in RP-HPLC can go either direction on Rt depending on mechanism: silanol exposure typically **increases** Rt for basic analytes and leaves neutral steroid Rt roughly flat; **bed void formation + frit fouling** decreases Rt and collapses N. The specific pattern (Rt drop + N collapse + ΔP rise) fingerprint bed-voiding/frit-fouling, not silanol. Naming the mechanism helps the operator pick the right remediation (guard + inline filter vs. column-only replacement).

**Fix:** in Scenario 8, add a line after the trend table: "This specific combination — Rt decrease + T increase + N collapse + ΔP rise — fingerprints bed-void formation and head-frit fouling (from oil-matrix particulates), not generic silanol-mediated aging. An oil-matrix lab should use a guard + 0.5 µm inline filter and consider LLE prep to prevent it."

---

## Minor issues (terse list)

- **DD3 retatrutide aromatic positions** — Wikipedia sequence gives Y¹/F⁶/Y¹⁰/F²²/Y²⁵; doc uses F²³/Y²⁶. Off by one; correct by changing line 219 positions.
- **DD3 TFA vs FA ion-suppression "5–50×"** — literature centres on 5–10×; 50× is at the extreme end requiring supercharging comparisons. Tighten to "5–20×" for defensibility.
- **DD8 vendor column sums to 726, not 722** — §4.3.2 sum of per-peptide vendor counts (164+136+72+…+5) is 726; grade-pair column sums to 722. 4-row delta likely reflects corrections/retractions. Add a one-line note.
- **DD8 Peptide Gurus "F rating"** — Finnrick's current Retatrutide page shows Peptide Gurus as grade **E**, not F. Given libel sensitivity of "F (Fraud)" framing, re-verify and correct if E.
- **DD8 §6 publication-bias hedge** — §2 caveats strongly, but §6 per-vendor F/E callouts do not re-state the "grades are editorial under a 2+ test threshold and subject to publication bias" disclaimer at the point of naming. Add a one-paragraph standing caveat at top of §6.
- **DD1 tailing criterion framing** — "T ≤ 2.0 per USP <621>" is monograph-specific, not a general <621> rule. General <621> default is 0.8–1.8. Re-frame as "individual monograph limit within the <621> framework."
- **DD1 plate criterion "N ≥ 2000"** — same issue; <621> itself sets no absolute N floor, 2000 is monograph-specific.
- **DD4 MZ Biolabs ESI/APCI** — profile cites `mzbiolabs.com/` home page for ionization modes; the /our-techniques/ page doesn't explicitly name ESI/APCI. Either re-cite to the actual subpage where they appear or soften to "ESI inferred from Waters Acquity front-end pairing."
- **DD4 Janoshik principals URL** — profile cites "janoshik.com About" for the three principals; the root URL fetch surfaces only the landing. Add the /about URL (or equivalent) that actually lists them.
- **DD4 Chromate Feb/April 2026 misidentification claims** — not visible on finnrick.com/corrections or the cited hkroids thread today. Downgrade to C3/C4 community-report or re-source.
- **DD4 Finnrick 6,813 denominator** — current partner-page sum (Krause 3,836 + BTLabs 1,446 + Chromate 660 + MZ 178 + TrustPointe 315 + Freedom 213 = 6,648; +Janoshik ~194 = 6,842) doesn't perfectly reconcile to 6,813. Could be a timing difference; consider re-fetching and unifying the number across all six partner profiles + _index.md.
- **DD5 "aged methanol peroxides"** — mostly folklore for MeOH (peroxide formation is an ether problem). Aldehyde/non-volatile accumulation on repeated opening is the real mechanism; tighten wording.
- **DD5 "discard methanol > 6 weeks"** — not a pharmacopoeial shelf-life; 2–8 weeks is community practice. Flag as rule-of-thumb, not spec.
- **DD7 Wako PYROSTAR ES-F prices** — Fisher prices ($182.18 for 80T, $309.50 for 200T) are behind a sign-in wall; one secondary snippet suggested ~$454 for the 200T variant. Flag for re-verification at account-logged-in Fisher before treating as C1.
- **DD6 §2.1 TB240 reaction-tube attribution** — see R2-M10.
- **DD8 libel-risk hedge for "F (Fraud)"** — consider whether any grade-F callout should carry a standing "Finnrick's editorial scoring; not a legal finding" disclaimer.

---

## What's done well (short, specific)

- **Round-1 corrections are genuinely integrated, not just cited.** M1 (EP 2.6.32 effective 2021-01-01), M2 (depyrogenation 250 °C / 30 min or 200 °C / 60 min, 180 °C is not recognised), M8 (Pyrotell vs PYROSTAR sensitivity split), M9 (USP <86> alternative-method framing), M10 (LLE + gel-clot extrapolation caveat), M12 (MZ Biolabs /our-techniques/ source URL), M13 (Janoshik staff/throughput → PPW attribution), M14 (SARM/Package A C3 flags), M15 (testing.trans.diy HPLC vs THR GC-MS reconciliation) all present and correctly applied.
- **Fisher list prices verified to the cent.** NC1241126 $595.35, NC9263690 $251.13, NC9758389 $864.85, NC1031961 $759.50, NC9594798 $542.68 — all exact against Fisher 2026-04-23.
- **Marshall Scientific listings verified exactly.** 1100 DAD $15,530 sale / reg $16,490; 1260 I VWD $38,490; 1260 I DAD $39,995; 1260 II $50,490.
- **Core peptide chemistry is right for 9 of 10 peptides.** Formulas, MWs, aromatic-residue counts, and charge-state arithmetic check out for BPC-157 (including the load-bearing "no aromatics, 214 nm mandatory" claim), semaglutide, tirzepatide, retatrutide, ipamorelin, GHK-Cu, melanotan-II, TB-500 (both forms), and CJC-1295 (formula/MW correct — only the Met²⁷/Leu²⁷ swap is wrong).
- **Finnrick grade-distribution arithmetic is internally consistent.** Per-peptide counts sum correctly to totals (140+89+170+94+179+25+25 = 722); rolled-up A+B% and D+E+F% compute correctly from those totals.
- **PPD Labs 2019 paper citation is right in substance** — Table 1 numbers (0/55/37/69%), 2,900 × g × 10 min centrifugation, DMSO-reconstituted CSE, 15 mL pyrogen-free centrifuge tubes, 50-min vortex requirement — all match the PDF.
- **Artemis profile is "rightly sparse" for its pre-website era**; the fact that the website appeared last week is a cadence-of-field problem, not an error in how Round-2 constructed the profile from Round-1 information.
- **DD4's M15 reconciliation (testing.trans.diy HPLC generic vs THR GC-MS per-result)** is handled with the right epistemic posture in the THR profile.
- **C3-C5 honesty is preserved** — Krause methodology PDF, MZ Biolabs founder identity, TrustPointe HRT-form-factor endotoxin acceptance, JP rFC formal chapter status are all explicitly flagged unknown rather than papered over.

---

## Recommended fixes — prioritised

**Must-fix before publication:**
1. R2-M1 — USP <621> adjustment limits in DD1 §7.1.
2. R2-M2 — Tesamorelin MW 5195.89 → 5135.86, recompute charge states.
3. R2-M3 — CJC-1295 Met²⁷ → Leu²⁷; strip the false "Met²⁷ oxidation" impurity.
4. R2-M4 — Standardise DD1 and DD5 on 30 °C (or recompute DD5 RT anchors for 40 °C).
5. R2-M5 — Rewrite Artemis Analytical profile.
6. R2-M6 — ACC W055A → W0051-10.
7. R2-M7 — THR "18 tests" → "16 tests" in the profile and _index.md (combined-corpus "18" is separately correct).
8. R2-M8 — DD8 line 153 "potency pass rate 16/18" → "18/18 = 100% on potency axis."

**Should-fix:**
9. R2-M9 — ε₂₁₄ formula from multiplicative to additive.
10. R2-M10 — DD6 §2.1 reaction-tube part to TS050-10; TK100 geometry to 8×75 mm.
11. R2-M11 — DD7 Agilent pump-seal price band to ~$150–200/pack.
12. R2-M12 — DD2 PPD-paper extraction-efficiency vs PPC-recovery disambiguation.
13. R2-M13 — DD5 Scenario 3 DAD match to ~0.996 (or re-narrate lesson).
14. R2-M14 — DD5 Scenario 8 name the mechanism (bed-void + frit-fouling).

**Nice-to-have:**
15. Minor-issues list (DD3 retatrutide positions, TFA 5–50× → 5–20×, DD8 vendor-column sum note, Peptide Gurus E/F re-verification, DD8 §6 hedge, DD4 ionization source URL, Chromate misID re-source, 6,813 denominator unification, MeOH-peroxide/shelf-life wording, Wako PYROSTAR re-verification).
16. Append new C5/unknowns from this pass to `research/gaps.md`.

---

**Critique complete. Fixes are applied to the deep-dive docs in the same commit.**
