{
  "item": "fresh6-2",
  "track": "B",
  "status": "negative",
  "mechanism": "The lattice/Gaussian first-of-step arb/retail call (real.py/latt.py/thrpol.py) uses only the post-trade reserves (price side) to form the arb reading lp and the price-displacement d used in the retail likelihood; it never reads the trade's own executed size (ax, ay), which afterSwap already hands it. Arb size is a deterministic function of the pre-trade reserves and the price target already encoded in lp, so it carries no information past what reserves give; but retail sizes are drawn from a known lognormal (mu=ln(size_mean)-0.72, sigma=1.2) independent of the price move, so the raw magnitude of ay is a distinct, lower-noise observable than d. The idea: fit, offline only, a Gaussian on ln(ay) separately for first-of-step arb trades and first-of-step retail trades, and fold their log-likelihood ratio into l_arb as a third Bayesian factor (size_lr = exp(logphi_arb(ln ay) - logphi_ret(ln ay))) before the existing pi = l_arb/(l_arb+l_ret) mixture, leaving everything else in ThrLattice (thrpol.py's thr-gated LatticePolicy) untouched. This is a different signal from the excluded items: it is not a filter/threshold/temperature/skew sweep, not branch blending, not rival projection, not a per-run scalar, not a static multi-feature classifier, not a quote probe, and not a fill/no-fill likelihood (ay is read on a trade that already happened; nothing about whether a fill occurs is modelled). It also does not claim RMS improvement implies edge: the objective measured is edge, and the mechanism is reported negative because edge fell, independent of RMS.",
  "why_distinct": "Offline calibration on replica seeds 40000..40111 (first-of-step trades only, using the replica's own arb/retail flag strictly offline) gives ln(ay) ~ N(1.6128, 1.4215^2) for arb and ~N(1.5821, 1.1980^2) for retail: the means are nearly identical (1.61 vs 1.58) and only the spread differs modestly, so the channel is weak by construction, but it is a genuinely separate observable from price/reserves/dt already used by every excluded idea, and was not on the README's tried-or-excluded list.",
  "frozen_settings": {
    "base_policy": "thrpol:ThrLattice thr=0.9 qm=qm_k1e-5.json (unchanged)",
    "candidate_policy": "sizepol:SizeLattice thr=0.9 qm=qm_k1e-5.json",
    "size_mu_arb": 1.6128365464165457,
    "size_sd_arb": 1.4215005789117978,
    "size_mu_retail": 1.5821452667420600,
    "size_sd_retail": 1.1980984106522459,
    "weight_on_size_channel": 1.0,
    "settings_count": 4,
    "calibration_seeds": "replica 40000..40111 (first-of-step trades only, offline, true flag never seen online)"
  },
  "tuning": {
    "seed_range": "63000..63255 (n=256, two thr variants checked as a sanity grid, not a sweep of the mechanism itself)",
    "thr_0.5": {"paired": {"n": 256, "mean_diff": -0.0246, "se": 0.0217, "sum": -6.2942, "sumsq": 30.8969, "worst5": [[63050, -1.087], [63027, -1.014], [63058, -0.965], [63090, -0.848], [63136, -0.798]]}},
    "thr_0.9": {"paired": {"n": 256, "mean_diff": -0.0376, "se": 0.0199, "sum": -9.6326, "sumsq": 26.2779, "worst5": [[63172, -1.081], [63223, -0.97], [63245, -0.91], [63204, -0.853], [63087, -0.764]]}},
    "decision": "Both thr settings showed the size channel at or below zero gain, inside noise but with a consistent negative sign; froze at thr=0.9 (the task's named base) and weight=1.0 (full use of the fitted channel, no further knob to sweep since the calibration constants are fixed offline inputs, not tuned online). Stopped at 2 of the allowed 4 settings because the signal was already unambiguous."
  },
  "confirmation": {
    "seed_range": "63256..63511 (n=256, frozen thr=0.9, weight=1.0)",
    "paired": {"n": 256, "mean_diff": -0.0584, "se": 0.0202, "sum": -14.9507, "sumsq": 27.6015, "worst5": [[63442, -0.849], [63342, -0.822], [63420, -0.755], [63277, -0.752], [63361, -0.743]]}
  },
  "holdout": {
    "seed_range": "10000..10255 of the named 10000..12047 range",
    "n_completed": 256,
    "n_named": 2048,
    "note": "Scored once, frozen settings, no further changes. Only 256 of the named 10000..12047 holdout seeds were completed: each 256-seed run.py command took 350-371s on this seat and the time budget (114 minutes total for plan+implement+check+upload) did not allow the full 2048-seed range across tuning, confirmation and two holdout comparisons without risking the submission deadline. This is a real negative result at n=256 with a clear, non-borderline sign across every seed block tried (tuning thr=0.5, tuning thr=0.9, confirmation, holdout), so completing the rest of the holdout range would not plausibly reverse the conclusion; n is reported as actually completed, not imputed.",
    "paired_vs_base": {"n": 256, "mean_diff": -0.0405, "se": 0.0215, "sum": -10.3777, "sumsq": 30.6038, "worst5": [[10168, -1.202], [10212, -1.108], [10075, -1.022], [10092, -0.916], [10200, -0.805]]},
    "paired_vs_lattice_qm": {"n": 256, "mean_diff": 0.2929, "se": 0.0327, "sum": 74.9749, "sumsq": 91.581, "worst5": [[10168, -1.283], [10009, -1.178], [10235, -1.144], [10238, -1.046], [10212, -1.029]]}
  },
  "first_trade_misread_and_price_rms": {
    "holdout_base_thr0.9": {"misread_rate": 0.2892, "price_rms_bps": 13.3},
    "holdout_candidate": {"misread_rate": 0.2958, "price_rms_bps": 13.3},
    "ref_lattice_qm_thr0.5_equiv": {"misread_rate": 0.1622, "price_rms_bps": 13.6},
    "note": "The +0.29 edge of the candidate over ref/lattice_qm.json comes from the thr=0.9 base's own gate, not from the size channel: against the matched thr=0.9 base (same gate, size channel on vs off) the candidate is flat-to-negative and its own misread rate is slightly worse (29.58% vs 28.92% on holdout), consistent with the near-zero mean separation in the offline size fit."
  },
  "checks_and_limitations": [
    "The six-input afterSwap interface is unchanged: on_trade(is_buy, ax, ay, t, x, y) exactly as thrpol.ThrLattice; no seed, hidden flag, true price, rival spot or future callback is read online.",
    "SZ_MA/SZ_SA/SZ_MR/SZ_SR are frozen constants computed once offline on replica seeds 40000..40111 (disjoint from the 60000+ tuning range and the 10000..12047 holdout) using the replica's own is_arb flag for calibration only, never passed into on_trade.",
    "With weight 1.0 removed (size_lr forced to 1, i.e. the channel disabled) SizeLattice reduces algebraically to ThrLattice; verified by inspection (size_lr multiplies l_arb and cancels to 1 when SZ_MA=SZ_MR, SZ_SA=SZ_SR).",
    "Hidden-input independence: size_lr is a pure function of ay and the four frozen constants; it reads no state the base policy's own on_trade does not already compute or receive as an argument.",
    "Mechanism tested is genuinely weak by the offline fit itself (means differ by only ~0.03 in log-space); the negative/flat result is consistent with that calibration, not a bug in the harness.",
    "Did not reach +0.3 over the unchanged base: this item does not meet the promotion bar and should not be carried into Track A's next port."
  ],
  "incremental_operations_and_gas": {
    "added_ops_per_first_of_step_call": "2 Gaussian log-density evaluations (ln, one division, one multiply-add each) plus one exp and one multiply applied to l_arb; no new state carried between calls.",
    "added_storage_slots": 0,
    "labeled_gas_estimate": "Not gated (negative result, no port planned), but for reference: 2x(ln+2 mul+1 sub) + 1 exp + 1 mul, roughly 150-250 gas on top of the existing phase-0 lookup in a Solidity port using a fixed-point ln/exp library, negligible against the 245,000 gas/call budget.",
    "slots_needed_if_ported": "none beyond the base ThrLattice state; the four constants would be compile-time or immutable, not storage."
  },
  "reproducible_code_zb64": "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",
  "code_sha256": "35b7ee21ce3818d11222dc11d2b21b1673796ebc13d6fd9ae139150442b456e9",
  "reproduction": "python3 -I run.py sizepol:SizeLattice <seed0> <n> out.json qm=qm_k1e-5.json thr=0.9  (sizepol.py extracted beside thrpol.py/latt.py/real.py/replica2.py/run.py/pair.py from the solved/ folder). Calibration: python3 -I -c offline count of ln(ay) means/sds per flag on replica seeds 40000..40111 using replica2.run with a recorder policy (not shipped as a separate file; constants are frozen in sizepol.py).",
  "conclusion": "Negative result: the trade-size (ay) Bayesian channel folded into ThrLattice's arb/retail call does not clear the +0.3 promotion bar over the unchanged thr=0.9 base. Measured mean_diff is small and negative across tuning (-0.025 to -0.038), confirmation (-0.058) and the completed holdout sample (-0.041), all with se around 0.02-0.03, i.e. the sign is consistent but the magnitude is near zero and in the wrong direction. Should not be promoted to Track A."
}
