pog-mcp 0.9.9 → 0.9.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pog-mcp",
3
- "version": "0.9.9",
3
+ "version": "0.9.11",
4
4
  "type": "module",
5
5
  "description": "MCP server that lets an AI agent play Proof of Goal — wallet, sign-in, squad building, and matches as typed tools.",
6
6
  "license": "MIT",
@@ -1907,9 +1907,12 @@ runs from 1 to 5 depending on the core.
1907
1907
  Every match here runs at `cond: 5` with no workload carried between fixtures. So this
1908
1908
  measures **how much a new attribute vector improves one fresh XI** — market quality — and
1909
1909
  not **what depth buys by resting tired players**, which is the mechanism H exists to cap.
1910
- Simulating that needs a recovery rate and a neutral point, and those are C-2's to decide.
1911
- **H's maximum stays open.** What follows is a market-quality result, and it is worth having
1912
- on its own.
1910
+ Simulating that needs a recovery rate and a neutral point. **At this run's publication H's
1911
+ maximum stayed open.** Result 7e later crosses the selected F-2 curve with the maximum-role
1912
+ carrier and establishes the recovery prize; its first two-vector H treatment was later withdrawn
1913
+ under CAP=0. Result 7g closes the product value at `N=17` across every N17 registration in one
1914
+ immutable 18-asset owned universe;
1915
+ the figures below remain market-quality evidence, not that final bound.
1913
1916
 
1914
1917
  **Two errors point opposite ways, so this is not an upper bound.** The buyer is fully
1915
1918
  informed — it sees all 30 listings' vectors, while production hides attributes and even
@@ -2282,8 +2285,9 @@ gives the same answer, which is a fact only the sweep can establish.
2282
2285
 
2283
2286
  The plan's "start at 0.5, never exceed 1.0" is therefore about **2.5× the safe value**.
2284
2287
 
2285
- **0.2 is provisional.** The role×condition interaction is unmeasured and can move it either
2286
- way see below so do not treat it as a fixed value.
2288
+ **0.2 was provisional when this run was published.** The role×condition interaction was then
2289
+ unmeasured and could move it either way. The 2026-09-06 follow-up below closes that gate for the
2290
+ pre-registered #728 role ladder and makes 0.2 final within that contract.
2287
2291
 
2288
2292
  ### The document already had this in its own table
2289
2293
 
@@ -2306,7 +2310,7 @@ five grid points give 17.5–18.0 and 26.6–27.4 respectively. (An earlier revi
2306
2310
  Growth turned out not to be an amplifier at all. That was one of the three axes §3-2 asked
2307
2311
  for, and the answer is negative.
2308
2312
 
2309
- ### What this does not cover
2313
+ ### What this run did not cover at publication
2310
2314
 
2311
2315
  Role concentration — the third axis §3-2 named — is not measured here. It requires patching
2312
2316
  the engine to carry per-player, per-scene weight sheets (`appr-role.mts` does this), which
@@ -2320,14 +2324,228 @@ judgments AWAY from thresholds and reduce sensitivity. The axis can move 0.3 in
2320
2324
  direction, and it has to be measured before the value is adopted — 0.3 is what two axes
2321
2325
  give, not the answer for three.
2322
2326
 
2323
- ## What a same-sum vector transfer is worth (`attr-vs-cond.mts`)
2324
-
2325
- F-6 lets a registration submission redistribute each player's four attributes **within
2326
- that player's own sum**. Two core players with equal sums can therefore submit each
2327
- other's vectors: every check passes, and the strong build lands on whichever ID the
2328
- manager picks. §3-12 answers with a per-registration cap on how far a vector may
2329
- move from its own previous one, which slows a transfer to `ceil(distance / CAP)`
2330
- registrations rather than blocking it; load is never moved. This probe measures what the transfer would have been worth.
2327
+ ### Role×condition and cup-depletion follow-up the missing gates close (2026-09-06)
2328
+
2329
+ `role-cond.mts` reused the six legal §3-15 squads over 36 ordered matchups and both engine modes.
2330
+ Scanning `computeBuff` directly under the product invariant `0≤tenure≤career`, through potential
2331
+ 1 and through the `career=700` boundary after which every buff is zero, gives the actually
2332
+ reachable dense integer support **0..4**. The first maximum-4 witness is tenure/career **67/67**,
2333
+ and lower potential cannot escape that envelope. The growth
2334
+ axis uses four uniform endpoint combinations, five rotated heterogeneous vectors, and one
2335
+ reachable extreme with **the focal role slot at 4 and all other 21 players at 0**. Every slot of
2336
+ both XIs visits every value 0..4 across the rotated states; the final state directly covers the
2337
+ previously omitted input where the concentrated carrier has grown more than every teammate and
2338
+ opponent. This is a pre-fixed rotated/role-extreme sample, not an exhaustive enumeration of the
2339
+ per-player `5^22` combinations, and the guarantee below is limited to those ten growth states.
2340
+ From inputs alone, offense chose each focal
2341
+ squad's largest FW (`total → pass → shoot → slot`) as
2342
+ #728's pre-registered carrier. Defense swept **all ten outfield slots** rather than selecting one
2343
+ DF; the keeper stays out consistently with `appr-role.mts`'s contract that keeper A0 is outside
2344
+ roles. The engine was patched with #728's same per-player, per-scene `appr`/`apprDef` sheets;
2345
+ the **whole focal XI moved from condition 5.0 to 4.8** while keeping the role, and the opponent
2346
+ kept the shipped role table.
2347
+
2348
+ Home/away and regulation/knockout were first joined within each seed cluster, with the latter
2349
+ mixed at canonical `KO_EXPOSURE=8.14%`. Six offensive and 60 defensive shards (six squads ×
2350
+ ten slots), **66 shards** in total, all paid against the unsharded simultaneous family
2351
+ **67,320 = 35,640 effects + 31,680 interactions versus ×1**. There are
2352
+ **3,960 = (6 offense + 60 defense) × 6 opponents × 10 growth states** structural cells. The
2353
+ final run used the independent seed column `role-cond-r37-final` and pre-fixed looks
2354
+ `50,000→100,000→200,000`. Each structural cell stopped at the first look where all nine effect
2355
+ intervals closed below 5pp. Both endpoints and all three looks were Bonferroni-priced at endpoint
2356
+ `δ=1.238e-7 = .05/(2×67,320×3)`, so the interaction intervals remain valid after optional
2357
+ stopping. **3,959 cells stopped at 50,000, one at 100,000 and none reached 200,000**, for
2358
+ **14,259,600,000 measured matches**. Empirical-Bernstein support widths are 400pp for effects and
2359
+ 800pp for interactions. Each shard's 80 stock↔patch whole results and 80 ×1 role results were
2360
+ byte-identical. At the maximum pre-registered rung ×1024, the focal player's minimum nominal
2361
+ share among its non-zero draws is **98.71–98.91%** on offense and **94.03–99.15%** on defense;
2362
+ ×1024 is therefore not called a uniform defensive “practical asymptote.”
2363
+
2364
+ These are the cells with the largest absolute simultaneous upper bound among the 360 offensive
2365
+ and 3,600 defensive cells at every multiplier. All 360/360 offensive and 3,600/3,600 defensive
2366
+ cells at every row are established below 5pp.
2367
+
2368
+ | role multiplier | offensive worst effect | offensive absolute upper | defensive worst effect | defensive absolute upper |
2369
+ | ---: | ---: | ---: | ---: | ---: |
2370
+ | 0 | +3.62 ±0.98pp | 4.60pp | +3.80 ±0.99pp | 4.79pp |
2371
+ | 0.25 | +3.62 ±0.98pp | 4.60pp | +3.85 ±0.99pp | 4.84pp |
2372
+ | 0.5 | +3.69 ±1.00pp | 4.69pp | +3.85 ±0.99pp | 4.84pp |
2373
+ | 1 | +3.65 ±1.00pp | 4.65pp | +3.86 ±0.99pp | 4.85pp |
2374
+ | 2 | +3.68 ±0.99pp | 4.67pp | +3.80 ±0.99pp | 4.79pp |
2375
+ | 4 | +3.75 ±0.98pp | 4.73pp | +3.81 ±0.99pp | 4.80pp |
2376
+ | 8 | +3.70 ±0.99pp | 4.69pp | +3.81 ±0.99pp | 4.80pp |
2377
+ | 32 | +3.84 ±0.99pp | 4.83pp | +3.89 ±1.01pp | 4.90pp |
2378
+ | **1024** | **+3.97 ±1.01pp** | **4.98pp** | **+3.95 ±1.01pp** | **4.96pp** |
2379
+
2380
+ The global ×1024 witnesses are `352/stars/flat` slot 9 versus `433/even/flat`, growth
2381
+ `rotated-1`, `n=50,000` on offense, and `442/stars/atk` slot 1 versus `433/even/flat`, growth
2382
+ `rotated-4`, `n=50,000` on defense. Against ×1, offense has **5 established increases / 8 established
2383
+ decreases / 2,867 undecided interactions** (2,880 total), while defense has
2384
+ **42 / 20 / 28,738** (28,800 total). The largest positive upper endpoint is
2385
+ **+1.82 ±1.49pp = 3.31pp** on offense and **+2.23 ±1.41pp = 3.64pp** on defense. The most
2386
+ negative lower endpoint is **−1.62 ±1.47pp → −3.09pp** and **−1.55 ±1.47pp → −3.02pp**,
2387
+ respectively. Every effect and interaction interval endpoint over the whole ladder is inside
2388
+ 5pp. **The 0.2 band ceiling is final for this role contract.**
2389
+
2390
+ The scope is the focal side's **pre-registered offensive carrier, every outfield defensive
2391
+ slot, the whole-XI 0.2 band and the ten pre-fixed growth states**. The exhaustive `5^22`
2392
+ growth-vector product, opponent role sheets, other offensive slots, a keeper defensive role
2393
+ and continuous multipliers outside the ladder are not covered. Since roles do
2394
+ not exist in the product yet, #735 must adopt this measured ladder or a subset; expanding that
2395
+ space requires a new gate.
2396
+
2397
+ The 2026-08-29 qualifier premise is also **withdrawn**. The generic
2398
+ `tournament-runner.ts` `runTournament()` does run qualifiers when given more than 48 teams, but
2399
+ that file explicitly says production cups do not use it. The production daemon combines ranked
2400
+ entrants with fill-bots into exactly 48 teams; registration replay and the legacy path also slice
2401
+ to 48 before building the group schedule. A champion therefore plays at most three group plus
2402
+ five knockout matches. There is no shipped eleven-match path and no three-match qualifier-luck
2403
+ gap to calibrate.
2404
+
2405
+ The corrected product criteria cover the shipped eight-match path. In the verified production
2406
+ entry population plus explicit persistent-new, daily-fill-bot and observed-extreme stresses,
2407
+ every pre-registered offensive carrier and every non-keeper defensive role must finish with
2408
+ `cond8>4.8`; independently of entry state, that cup itself must consume at most 0.2 condition.
2409
+ Each cell passes only when the simultaneous upper bound on each violation probability is below
2410
+ 1%. The first is an empirical population gate, not a universal floor for arbitrary future
2411
+ history: F-2 has neither a load cap nor a cup-entry reset, and its curve asymptote is below 4.8.
2412
+
2413
+ #### Withdrawn scale-only result — 0.375 is historical, not the product value
2414
+
2415
+ This result remains as an audit trail. It applied each scale to prior cup history and the new
2416
+ eight-match path, but kept the neutral point, `L₀`, and safe amplitude from result 7c, whose
2417
+ lifetime integration treated cup events at ×1. Since the fold changes the whole EWMA history,
2418
+ that was not a self-consistent product combination. Its conditional 0.375 pass below is superseded
2419
+ by the re-integrated two-dimensional boundary that follows.
2420
+
2421
+ `engagement-load.mts` integrated the canonical production export with SHA-256
2422
+ `1c7335ba9fa11388363de57628207ecc4820dc9bb02285066bda849adf571b6f` at τ=24h on the
2423
+ claim clock under predicate D. Taking each human team's first pre-match vector in each cup after
2424
+ the 2τ warm-up yields **108 profiles across nine cups**. The hand-off file has SHA-256
2425
+ `dfd3032c9bab22c42c0616e708705e2f9a187fde719766af37cc68cc6c60515e`, and a fresh export
2426
+ from the current code was byte-identical. It preserves ladder and raw-cup components separately:
2427
+ candidate `s` enters at **`L=ladderL+s·cupRawL`**, so already-accumulated cup history is scaled too
2428
+ rather than leaving old cups at ×1 while scaling only the new cup. At `s=1`, entry-slot L has
2429
+ median **4.959667**, p95 **10.902379**, and maximum **33.888645**.
2430
+
2431
+ Form was not deployed in that production window. The historical `cupRawL` column is therefore the
2432
+ growth-zero workload on the committed fixture ledger while condition was fixed at 5, not a
2433
+ closed-loop equilibrium in which an earlier candidate scale had already changed condition and then
2434
+ changed later engagement draws. Scaling that fixed historical column is exact for its event counts;
2435
+ only the new eight-match path below directly replays condition-to-engagement feedback. This is
2436
+ another reason the entry result is a fixed-basket empirical gate rather than a universal future-state
2437
+ claim.
2438
+
2439
+ `cup-role-load.mts` crosses persistent-new load zero, the daily fill-bot neutral load, the observed
2440
+ population, a role-slot maximum and a whole-XI condition-deficit maximum in six entry scenarios.
2441
+ It measures all six offensive carriers and all 60 non-keeper defensive slots at ×1024. Six
2442
+ opponent squads × home/away × six entry scenarios produce **4,752 cells per scale**, each with
2443
+ 3,000 independent paths through the shipped three group plus five knockout matches. Every match
2444
+ adds both XIs' growth-zero F-1 predicate-D raw engagements, with no inter-round recovery. The
2445
+ repeated synthetic opponent keeps the shipped role sheet while carrying its own accumulated load.
2446
+
2447
+ The **16-point** grid is
2448
+ `{1, .5, .45, .4, .375, .35, .325, .3, .275, .25, .225, .2, .125, .1, .075, .05}`. Measuring
2449
+ the six largest candidates established 0.375 as passing and rejected every larger value, so the
2450
+ ten smaller points are irrelevant to selecting the largest pass. Every shard still paid against
2451
+ the full family **152,064 = 16 scales × 4,752 cells × 2 criteria**, using one-sided
2452
+ Bernoulli-KL/Chernoff `α=3.288089e-7`. That is **114,048,000 measured matches per scale** and
2453
+ **684,288,000 measured matches** total. Each shard also passed 80 stock↔patch involvement-result
2454
+ and 880 ×1-role byte-identity controls. The independent seed column is `cup-role-r36-final`.
2455
+
2456
+ The two explicit product criteria require each cell's simultaneous upper bound on (1)
2457
+ `cond8≤4.8` and (2) `initialCond−cond8>0.2` to be **below 1%**. The first asks for an absolute
2458
+ floor in the observed entry basket; the second isolates this cup's band consumption from entry
2459
+ state. A sampled minimum or maximum may cross its threshold while the scale passes—the gate is on
2460
+ violation probability, not deterministic zero violations.
2461
+
2462
+ | consumption scale | worst floor violations (simultaneous upper) | worst cup-drop violations (simultaneous upper) | min initial/cond8 | max drop | raw8 mean/max | verdict |
2463
+ | ---: | ---: | ---: | ---: | ---: | ---: | --- |
2464
+ | 1.000 | 3,000/3,000 (100.00%) | 2,996/3,000 (100.00%) | 4.897/4.692 | 0.330 | 70.3/148 | FAIL |
2465
+ | 0.500 | 405/3,000 (17.15%) | 139/3,000 (7.04%) | 4.911/4.770 | 0.238 | 70.2/148 | FAIL |
2466
+ | 0.450 | 67/3,000 (4.04%) | 21/3,000 (1.88%) | 4.912/4.780 | 0.224 | 70.2/148 | FAIL |
2467
+ | **0.400** | **6/3,000 (1.02%)** | 2/3,000 (0.72%) | 4.914/4.791 | 0.209 | 70.2/148 | **FAIL** |
2468
+ | **0.375** | **1/3,000 (0.63%)** | **1/3,000 (0.63%)** | **4.915/4.797** | **0.201** | **70.2/148** | **PASS** |
2469
+ | 0.350 | 0/3,000 (0.50%) | 0/3,000 (0.50%) | 4.915/4.803 | 0.192 | 70.2/148 | PASS |
2470
+
2471
+ At 0.375, the floor witness is defensive slot 6, `433/stars/atk` versus `433/even/flat`,
2472
+ home, `observed-slot-max/team-max`; the cup-drop witness is defensive slot 4,
2473
+ `433/even/flat` versus `442/even/def`, away, `persistent-new/new`.
2474
+
2475
+ That run therefore selected **0.375 per raw F-1 predicate-D engagement conditional on the old
2476
+ curve**. It is not the current product decision; the self-consistent rerun below replaces it.
2477
+
2478
+ Inter-match time is zero in this declared zero-gap product stress distribution. It includes actual
2479
+ entry history and observed extremes, but remains an empirical guarantee for this fixed nine-cup
2480
+ basket. Without a load cap or cup-entry reset, it cannot guarantee an absolute floor for every
2481
+ possible future history—the curve's asymptote itself is below 4.8. Nor does it mathematically
2482
+ dominate changing real-bracket opponents or opponent role sheets; adding those spaces to the
2483
+ product contract requires re-gating.
2484
+
2485
+ #### Final re-integrated boundary — `s=0.1375`, `b=0.4914` (2026-09-06)
2486
+
2487
+ To remove that feedback error, the canonical lifetime timeline was re-integrated from scratch
2488
+ with structural cup events at `s=0.1375` and ladder events at 1. At τ=24h the active-appearance
2489
+ median is **1.146304**, p95 is **14.756304**, and the 4× curvature scale is therefore
2490
+ **`L₀=59.025216`**. The all-τ safe-amplitude search and an independent selected-curve
2491
+ confirmation pass **`b=0.4914`**. The neutral offset is derived, not copied from rounded prose:
2492
+ **`a=b·L_neutral/(L_neutral+L₀)=0.009361468442213193`**. Zero load maps to
2493
+ 5.00936146844 and the asymptote to 4.51796146844. These are the canonical result-7d and F-2-v2
2494
+ constants.
2495
+
2496
+ The same 108 profiles across nine cups keep ladder and raw-cup components separate, and each
2497
+ candidate enters as `L=ladderL+s·cupRawL`. At the selected scale, the 1,188 entry slots have
2498
+ minimum 0, median **0.698231**, p95 **3.050740**, maximum **26.617183**, and mean
2499
+ **1.264655**. The remaining cup contract is unchanged: six offensive carriers plus 60 outfield
2500
+ defensive slots, six opponents, home/away and six entry scenarios make 4,752 cells per scale;
2501
+ each cell runs 3,000 independent eight-match paths and accumulates both XIs' growth-zero
2502
+ predicate-D raw engagements.
2503
+
2504
+ The pre-fixed scale grid is
2505
+ `{1, .5, .4, .3, .25, .2, .175, .15, .1375, .125, .1125, .1, .0875, .075, .0625, .05}`.
2506
+ Every point above 0.1375, the selected point, and the next point 0.125 were actually run—no
2507
+ monotonicity inference substitutes for a shard. The amplitude family was also pre-fixed at
2508
+ `{0.4914, 0.5026}`, and both were run at the scale boundary. The global family is
2509
+ **304,128 = 2 amplitudes × 16 scales × 4,752 cells × 2 criteria**, with one-sided
2510
+ Bernoulli-KL/Chernoff `α=1.644045e-7`. Each shard measures 114,048,000 matches; ten scale shards
2511
+ plus one amplitude-neighbour shard total **1,254,528,000 matches**. Every shard's 80
2512
+ stock↔patch involvement and 880 ×1-role results were byte-identical. The independent seed column
2513
+ is `cup-role-r44-final`.
2514
+
2515
+ | amplitude `b` | cup `s` | worst floor violations (simultaneous upper) | worst cup-drop violations (simultaneous upper) | min initial/cond8 | max drop | raw8 mean/max | verdict |
2516
+ | ---: | ---: | ---: | ---: | ---: | ---: | ---: | --- |
2517
+ | 0.4914 | 1.000 | 3,000/3,000 (100.00%) | 3,000/3,000 (100.00%) | 4.830/4.642 | 0.346 | 70.3/149 | FAIL |
2518
+ | 0.4914 | 0.500 | 3,000/3,000 (100.00%) | 1,969/3,000 (70.36%) | 4.845/4.702 | 0.267 | 70.3/149 | FAIL |
2519
+ | 0.4914 | 0.400 | 3,000/3,000 (100.00%) | 299/3,000 (13.30%) | 4.848/4.721 | 0.239 | 70.3/149 | FAIL |
2520
+ | 0.4914 | 0.300 | 2,978/3,000 (99.83%) | 1/3,000 (0.65%) | 4.851/4.744 | 0.205 | 70.3/149 | FAIL |
2521
+ | 0.4914 | 0.250 | 2,665/3,000 (91.78%) | 0/3,000 (0.52%) | 4.853/4.758 | 0.184 | 70.3/149 | FAIL |
2522
+ | 0.4914 | 0.200 | 921/3,000 (35.53%) | 0/3,000 (0.52%) | 4.855/4.773 | 0.159 | 70.3/149 | FAIL |
2523
+ | 0.4914 | 0.175 | 176/3,000 (8.57%) | 0/3,000 (0.52%) | 4.855/4.782 | 0.145 | 70.2/149 | FAIL |
2524
+ | 0.4914 | **0.150** | **9/3,000 (1.24%)** | 0/3,000 (0.52%) | 4.856/4.791 | 0.130 | 70.2/149 | **FAIL** |
2525
+ | **0.4914** | **0.1375** | **1/3,000 (0.65%)** | **0/3,000 (0.52%)** | **4.857/4.796** | **0.122** | **70.2/149** | **PASS** |
2526
+ | 0.4914 | 0.125 | 0/3,000 (0.52%) | 0/3,000 (0.52%) | 4.857/4.800 | 0.113 | 70.2/149 | PASS |
2527
+ | **0.5026** | **0.1375** | **9/3,000 (1.24%)** | 0/3,000 (0.52%) | 4.853/4.791 | 0.125 | 70.2/149 | **FAIL** |
2528
+
2529
+ At the selected point, the floor witness is defensive slot 6, `433/stars/atk` versus
2530
+ `442/stars/atk`, home, `observed-slot-max/team-max`; every cell has zero cup-drop violations.
2531
+ Thus **`s=0.1375`, `b=0.4914` is a passing boundary point in the pre-fixed two-dimensional
2532
+ grid while its upper and right neighbours fail**. It is not claimed as a continuous or global
2533
+ optimum. Points below 0.125 were unnecessary to select the largest passing grid point and were
2534
+ not run; no pass is inferred for them by monotonicity.
2535
+
2536
+ F-1 continues to retain integer raw D counters. F-2 v2 alone reads source-match structural
2537
+ identity (`tournament_id IS NOT NULL`) and applies 0.1375 to cups and 1 to ladder events, through
2538
+ one helper shared by current accumulation and historical rebuild. The fixed population, zero-gap,
2539
+ opponent-role, and changing-bracket limitations are the same as in the historical run above.
2540
+
2541
+ ## What a same-sum vector transfer is worth (`attr-vs-cond.mts`) [historical input]
2542
+
2543
+ This probe was run while F-6 still proposed letting a registration redistribute each player's
2544
+ four attributes **within that player's own sum**. Two equal-sum core players could then submit
2545
+ each other's vectors and move the strong build to a rested ID. The intermediate §3-12 design
2546
+ slowed that transfer with a per-registration L1 cap. Result 7e later measures the missing distance
2547
+ family and rejects every effective positive integer cap, choosing **`CAP=0`**. Production F-6
2548
+ therefore permits no vector redistribution; this section remains evidence for why.
2331
2549
 
2332
2550
  ### Method
2333
2551
 
@@ -2414,12 +2632,13 @@ vector-identical pairs and prints what it skipped (35 cells).
2414
2632
  The exit code covers the control only. A cell failing equivalence is a **result** here,
2415
2633
  not a harness fault — §3-12's rule applies whether or not the swap moves value.
2416
2634
 
2417
- ### What this cannot decide
2635
+ ### What this could not decide
2418
2636
 
2419
- One squad family, one tired/fresh gap (4.5 vs 5.5), and one cross-position pair. It does
2420
- not measure how often the rejection blocks an edit a manager legitimately wants; §3-12
2421
- bounds the geometry (four registrations to reach L1 distance 2, never closer), but the
2422
- distribution of wanted edits is unmeasured. C-2's stress cases own that.
2637
+ One squad family, one tired/fresh gap (4.5 vs 5.5), and one cross-position pair could not choose
2638
+ the cap. It also did not measure how often rejecting edits blocks a legitimate respec. Result 7e
2639
+ adds all 66 maximum roles and exact even distances 2–32, finds a distance-2 witness already worth
2640
+ 11.70pp [10.50, 12.89], and selects `CAP=0`. The distribution and UX value of honest requested
2641
+ edits remain unmeasured; the product deliberately chooses the closed fairness boundary anyway.
2423
2642
 
2424
2643
  ## What is one point of condition worth? (`cond-effect.mts`)
2425
2644
 
@@ -2553,15 +2772,20 @@ product choice. Predicate C versus D was also open at publication and F-1 subseq
2553
2772
  **D** on 2026-09-04. The C-conditioned tables and correction trail below remain historical evidence;
2554
2773
  they are not relabelled as D.
2555
2774
 
2556
- **Product decision, 2026-09-06 — F-2 reference curve.** Re-integrating the same owner-only export
2557
- and stored seed column under D, then independently validating only the selected curve, chooses
2558
- **`τ=24h`**, active-appearance neutral load **`L_neutral=8.076776`**,
2559
- **`L₀=90.717176`** (4× D p95 `22.679294`), **`b=0.5399`**, and therefore
2560
- **`a=b·L_neutral/(L_neutral+L₀)=0.044139`**. The versioned equation is
2561
- `cond=5+a−bL/(L+L₀)`. This does not activate fatigue: F-2 first lands behind a default-OFF flag,
2562
- and G-3 can flip only after the maximum legal role×condition interaction, 8–11-match cup depletion,
2563
- the launch-amplitude prize/cost ordering, H ceiling, and I-c CAP clear against this same curve.
2564
- The D product rerun is recorded below; the older C run remains the audit trail.
2775
+ **Product decision, 2026-09-06 — F-2 v2 reference curve.** Re-integrating the same owner-only
2776
+ export and stored seed column under D, with every structural cup event folded at 0.1375 and every
2777
+ ladder event at 1 throughout the lifetime timeline, chooses **`τ=24h`**, active-appearance neutral
2778
+ load **`L_neutral=1.146304`**, **`L₀=59.025216`** (4× D p95 `14.756304`),
2779
+ **`b=0.4914`**, and therefore
2780
+ **`a=b·L_neutral/(L_neutral+L₀)=0.009361468442213193`**. The versioned equation is
2781
+ `cond=5+a−bL/(L+L₀)`. This does not activate fatigue: F-2 remains behind a default-OFF flag.
2782
+ The §3-15 follow-up closes #728-ladder role×condition and the shipped eight-match cup at the
2783
+ pre-fixed two-dimensional boundary `s=0.1375, b=0.4914`. Result 7e then closes the
2784
+ launch-amplitude focused-role recovery prize and I-c at `CAP=0`; result 7g closes H at `N=17`
2785
+ by comparing every admissible N17 registration against N18 in one immutable owned universe.
2786
+ F-2 stays default-OFF until
2787
+ F-3/F-4/F-6/J and G-3 are implemented. Result 7d records
2788
+ the current rerun; the older C run and cup×1 result 7c remain audit trails.
2565
2789
 
2566
2790
  ### F-1 implementation status — predicate D is now durable
2567
2791
 
@@ -3424,7 +3648,11 @@ rule-of-three bound was bolted on for it. Under empirical Bernstein the range te
3424
3648
  `3R ln(3/δ)/n` survives at SD = 0, so the interval never collapses in the first place: no
3425
3649
  guard, no special case, and one fewer argument resting on its own iid assumption.
3426
3650
 
3427
- ### Post-F-1 product reruncertify only the selected D · 4× curve
3651
+ ### Withdrawn result 7c — the D · 4× · cup×1 curve
3652
+
3653
+ > **This is not the current product curve.** It correctly used D after F-1, but did not feed the
3654
+ > subsequently selected cup fold back through lifetime integration. The figures and then-current
3655
+ > rationale remain as an audit trail; self-consistent result 7d supersedes them.
3428
3656
 
3429
3657
  Results 6 through the safe-amplitude section above preserve the historical predicate-C run and
3430
3658
  its joint 1×/2×/4× candidate family. The product values were not obtained by scaling that table.
@@ -3462,15 +3690,269 @@ The product choices are:
3462
3690
  condition 5. Zero load maps to 5.044, D p95 to 4.936, this window's observed maximum to 4.871,
3463
3691
  and the asymptote to 4.504. At `b=0.5399`, the independent worst upper bound is 3.69pp across
3464
3692
  all 18 actual cells.
3465
- - **Prize versus cost remains unresolved.** At the safe amplitude's maximum recoverable deficit
3693
+ - **Prize versus cost was unresolved at this revision.** At the safe amplitude's maximum recoverable deficit
3466
3694
  0.173, the prize is 0.19pp [−0.07, 0.45], the selected cheapest one-point replacement costs
3467
- 0.16pp, and paired cost−prize is −0.03pp [−0.50, 0.43]. Together with the unmeasured legal
3468
- role×condition and cup extremes, that keeps F-2 default OFF until the follow-up gates and G-3.
3695
+ 0.16pp, and paired cost−prize is −0.03pp [−0.50, 0.43]. The role×condition and cup extremes
3696
+ now clear in the §3-15 follow-up, but this ordering was not measured directly on the practical-
3697
+ asymptote carrier. At result 7c, that focused prize/cost gate, H, CAP, the cup fold and G-3 kept
3698
+ F-2 OFF; results 7d/7e/7f later close every item in that list except G-3.
3469
3699
 
3470
3700
  The canonical constants are therefore `τ=24h` and
3471
3701
  `cond = 5 + 0.044139 − 0.5399·L/(L + 90.717176)`. Implementation derives `a` from the other
3472
3702
  three constants so documentation rounding cannot move the exact neutral point.
3473
3703
 
3704
+ ### Result 7d — structural-cup-folded D · 4× · v2 product curve (current decision)
3705
+
3706
+ Applying 0.375 only after result 7c left prior cup history at ×1 inside the curve while giving
3707
+ new cups a different unit. Result 7d removes that inconsistency by rebuilding the canonical
3708
+ lifetime timeline from scratch with every structural cup event at 0.1375 and every ladder event
3709
+ at 1. It uses the same export SHA-256
3710
+ `1c7335ba9fa11388363de57628207ecc4820dc9bb02285066bda849adf571b6f`, predicate D,
3711
+ only the 4× curve, and all-τ seed column `c2-cupfold-r45-final`. The joint all-τ family is
3712
+ **612**, the sum of each τ's actual-cell upper bound times six opponents.
3713
+
3714
+ | τ(h) | D `L` median | D `L` p95 | 0.2-derived `b` (4×) | one match (pp)\* | cells over | searched safe-`b` interval | worst upper at low end | established-over `b` |
3715
+ | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
3716
+ | 6 | 0.38 | 4.01 | 8.695 | 1.6454 | **16/17** | 0.4076–0.4161 | 3.68pp | 4.3474 |
3717
+ | 12 | 0.57 | 7.54 | 10.753 | 1.1750 | **10/15** | 0.4725–0.4830 | 3.79pp | 5.3765 |
3718
+ | **24** | **1.15** | **14.76** | **10.498** | **0.6147** | **3/18** | 0.4716–0.4819 | 3.64pp | 5.2492 |
3719
+ | 48 | 2.34 | 26.06 | 9.102 | 0.3087 | **4/18** | 0.5156–0.5244 | 3.67pp | 4.5511 |
3720
+
3721
+ \* “One match” is the secant at each row's 0.2-derived amplitude with raw p95 increment 4, not
3722
+ the cost at the selected product amplitude. The interval's left endpoint is the largest grid
3723
+ point established below; its right endpoint is merely the smallest point that this run did not
3724
+ establish below. It is neither a failure nor an upper threshold. Only the final column, where a
3725
+ lower bound exceeds 5pp, establishes that the threshold lies below a candidate.
3726
+
3727
+ τ is still a product choice, not an estimate fitted to observed fatigue. The 24h derived curve
3728
+ has the fewest over-gate cells in this price table, while 48h halves the one-match secant again,
3729
+ 0.6147→0.3087pp. The product therefore retains **τ=24h** as its daily-rotation/fairness
3730
+ compromise. Its unrounded active-appearance median is **1.146304**, p95 is **14.756304**, and
3731
+ observed maximum is **32.07**, giving **`L₀=59.025216`** at 4×.
3732
+
3733
+ The joint all-τ search prices the four-row table. Its right endpoint is not an upper bound and
3734
+ does not reject `b=0.4914`. After the cup-boundary diagnostic, that exact candidate was fixed
3735
+ without looking at the final result and checked on independent seed column
3736
+ `c2-cupfold-r42-product` under the selected τ24 curve's **family 156**: **18/18 cells were
3737
+ established below**, with worst upper **3.48pp** and maximum deficit **0.173**. The independent
3738
+ §3-15 `cup-role-r44-final` two-dimensional family then rejects the right neighbour `b=0.5026`
3739
+ at `s=0.1375`. Thus 0.4914 is a passing pre-fixed product-grid point, not a continuous threshold
3740
+ estimate.
3741
+
3742
+ The current constants are:
3743
+
3744
+ - **`τ=24h`, `L_neutral=1.146304`, `L₀=59.025216`, `b=0.4914`.**
3745
+ - **`a=b·L_neutral/(L_neutral+L₀)=0.009361468442213193`.** Neutral maps exactly to 5;
3746
+ zero load maps to 5.00936146844, D p95 to 4.911081, the observed maximum to 4.836364, and
3747
+ the asymptote to 4.51796146844.
3748
+ - Under the same curve, the 108-profile cup-entry p95 maps to 4.985211 and its maximum load to
3749
+ 4.856637.
3750
+ - The equation is **`cond = 5 + a − 0.4914·L/(L + 59.025216)`**; implementation derives `a`
3751
+ from the other three constants rather than copying rounded prose.
3752
+
3753
+ In the general-carrier diagnostic, a 0.173 deficit gives prize 0.26pp [0.04, 0.48], cost 0.10pp,
3754
+ and paired cost−prize −0.16pp [−0.53, 0.21], still unresolved. It does not replace the
3755
+ focused maximum-role carrier gate. Result 7e closes the recovery prize and I-c, but its first H
3756
+ cost treatment writes a second incumbent vector and is invalid under CAP=0; result 7g supplies the
3757
+ corrected same-owned-universe measurement.
3758
+
3759
+ ### Result 7e — launch role economics and I-c `CAP=0` (H cost verdict withdrawn, 2026-09-07)
3760
+
3761
+ `role-economics.mts` imports the result-7d product function directly and fixes the exact treatment
3762
+ at observed maximum `L=32.07`: **fresh 5.009361468442 versus tired 4.836364480324**, a deficit of
3763
+ **0.172996988118**. It uses the same six legal squads as §3-15, six offensive carriers plus 60
3764
+ non-GK defensive slots, the maximum pre-registered role multiplier ×1024, and a uniform 60-cell
3765
+ basket of six opponents by ten growth states. One observation first groups home/away ×
3766
+ regulation/knockout for one independently sampled basket cell, then applies knockout exposure
3767
+ **8.14%**.
3768
+ The unit is §3-15's win-rate-advantage pp, `win-equivalent-share difference × 2`, so one
3769
+ observation lies in [−200, 200]pp and the support width is 400pp.
3770
+
3771
+ Candidate selection uses **5,000** clusters from `role-economics-r1-select`; independent
3772
+ publication uses `role-economics-r1-final` with **200,000** economics clusters and **50,000** CAP
3773
+ clusters. For each role the selector exhausts **56–160** legal one-point-weaker replacements and
3774
+ **83–633** legal same-sum vectors, then confirms the top four economics candidates and top four
3775
+ high/low pairs at every exact even L1 distance on the publication column. The simultaneous family
3776
+ is **4,818 = 66×73**, each endpoint has `δ=5.188875e-6`, and the bounded empirical-Bernstein
3777
+ support width is **400pp**. Minimum–maximum context counts are **53–119 / 3,087–3,553 /
3778
+ 741–937** for selection/economics/CAP, with all 60/60 cells present for every role. The 80
3779
+ stock↔patch and 80 ×1-role identities per shard are all byte-identical, **5,280** of each in total.
3780
+ The run replays **1,477,620,000 matches**. SHA-256 of the 66 sorted `RESULT_JSON` records is
3781
+ `ea666c7e275a6559b2aa02db77f8069e618821b439d9a9bf518166f12e5c381f`.
3782
+
3783
+ **The valid part — the recovery prize is real.** The lower endpoint of the fresh-versus-tired
3784
+ prize is above zero in 66/66 roles. R1 then chose, per role, the finalist with the largest
3785
+ publication-column net `fresh one-point-weaker − tired anchor` and produced the following table.
3786
+ Its simultaneous-family accounting is sound, but the physical treatment does not implement H;
3787
+ the table is retained as audit history and is not a product verdict.
3788
+
3789
+ | role | prize point-estimate range | fresh replacement better | tired starter better | unresolved |
3790
+ | --- | ---: | ---: | ---: | ---: |
3791
+ | offense 6 | 0.44–0.84pp | **5** | 0 | 1 |
3792
+ | defense 60 | 0.28–1.15pp | **5** | 38 | 17 |
3793
+
3794
+ All finalists belong to the global simultaneous family, so choosing within the publication column
3795
+ does not invalidate their intervals. The largest reported value was
3796
+ `433/stars/atk|offense|slot8`, candidate `defense→slot1.defense`: prize **+0.44±0.16pp**,
3797
+ effect of the one-point-weaker role player plus the compensating point elsewhere
3798
+ **−1.08±0.37pp**, hence fresh replacement net **+1.52±0.37pp [1.15, 1.88]**. However,
3799
+ `costCandidates` lowers the role player's total by one and simultaneously raises a different
3800
+ incumbent's persisted vector and total by one. Adding asset 18 cannot perform that second write when
3801
+ `CAP=0`. This is a counterfactual two-vector XI effect, not the N17→N18 marginal slot, so its use as
3802
+ H evidence is **withdrawn** [Codex P1, 2026-09-07]. Result 7g owns the corrected H verdict.
3803
+
3804
+ **I-c — the assumption that nearby vectors are not worth changing is refuted.** The `ĝ(d)` rows
3805
+ below choose the largest publication mean among the four independently selected pairs. Selection
3806
+ error can miss the true argmax, so these are holdout-confirmed existence witnesses in the lower-
3807
+ bound direction, not mathematical upper bounds over the whole space. That direction is sufficient
3808
+ to reject a CAP.
3809
+
3810
+ | L1 distance d | holdout `ĝ(d)` | simultaneous interval | roles established over 5pp |
3811
+ | ---: | ---: | ---: | ---: |
3812
+ | 2 | **11.70pp** | [10.50, 12.89] | **64/66** |
3813
+ | 4 | 22.81pp | [21.35, 24.27] | 66/66 |
3814
+ | 6 | 33.75pp | [32.16, 35.35] | 66/66 |
3815
+ | 8 | 44.21pp | [42.54, 45.88] | 66/66 |
3816
+ | 10 | 53.74pp | [52.01, 55.46] | 66/66 |
3817
+ | 12 | 63.19pp | [61.44, 64.94] | 66/66 |
3818
+ | 14 | 70.59pp | [68.87, 72.32] | 65/65 |
3819
+ | 16 | 77.78pp | [76.06, 79.50] | 62/62 |
3820
+ | 18 | 76.64pp | [75.09, 78.20] | 50/50 |
3821
+ | 20 | 76.61pp | [75.04, 78.18] | 42/42 |
3822
+ | 22 | 76.77pp | [75.19, 78.35] | 39/39 |
3823
+ | 24 | 76.85pp | [75.27, 78.43] | 36/36 |
3824
+ | 26 | 77.11pp | [75.53, 78.69] | 28/28 |
3825
+ | 28 | 77.18pp | [75.60, 78.77] | 24/24 |
3826
+ | 30 | 77.22pp | [75.63, 78.80] | 17/17 |
3827
+ | 32 | 55.61pp | [54.02, 57.20] | 2/2 |
3828
+
3829
+ The distance-2 maximum witness is `433/stars/atk|defense|slot2`,
3830
+ `(1,6,1,4)→(2,6,1,3)`; both are legal same-sum vectors. Two is the minimum non-zero L1 distance
3831
+ for a sum-preserving integer edit, so every effective positive integer `CAP≥2` admits this
3832
+ 11.70pp move in one registration. `CAP=1` admits no change and is behaviourally equal to zero.
3833
+ Waiting more weeks or reasoning from maximum distance cannot rescue a positive CAP.
3834
+
3835
+ The explicit product value is therefore **`CAP=0`**. The four attributes fixed at creation or
3836
+ acquisition never change in later weekly registrations. This deliberately gives up honest respecs;
3837
+ it does not freeze pool membership, mutable positions/names for unminted players, or FK/PK choices.
3838
+ F-6 must enforce one shared vector-identity gate immediately before every squad write. This result
3839
+ closes C-2's recovery prize and I-c; result 7g below closes H. F-2 and the player pool remain
3840
+ default-OFF until F-3/F-4/F-6/J and G-3 are implemented.
3841
+ This is an existence result over the pre-fixed uniform 60-cell **mean** with shipped-default
3842
+ opponent role sheets. It does not bound crossed opponent-role sheets or the global engine space,
3843
+ but the positive allowed cases needed to reject every effective positive integer CAP already exist
3844
+ inside this scope.
3845
+
3846
+ ### Result 7f — first immutable actual-pool N17⊂N18 correction (H evidence withdrawn, 2026-09-07)
3847
+
3848
+ The Codex P1 reproduces exactly: result 7e's H candidate changes two incumbent vectors, so it is
3849
+ not an action that adding one asset can perform under the selected `CAP=0`. The corrected
3850
+ `MODE=pool-ceiling` directly imports and asserts
3851
+ `WEEKLY_PLAYER_POOL_PRODUCT_SIZE=17` and `WEEKLY_PLAYER_VECTOR_L1_CAP=0` before it runs.
3852
+
3853
+ The next Codex P1 also reproduces exactly. This run compares only one pre-selected N17 with N18.
3854
+ An owner holding the same 18 assets can register core eleven, the new fresh focal and any five low
3855
+ clones at N17, so that N17 already has both outcomes from this run. The exhaustive counts, values
3856
+ and hashes below remain an exact audit of those two specific pools, but they are **not the marginal
3857
+ effect of registration slot 18 or evidence for H. That attribution is withdrawn; result 7g owns
3858
+ the current verdict.**
3859
+
3860
+ The pre-fixed witness is `433/stars/atk|offense|slot8`. N17 consists of the legal source team's
3861
+ core eleven plus six distinct minted assets carrying the source's legal total-12 DF vector. N18
3862
+ preserves those 17 complete rows as a prefix and adds only a new minted asset with the tired slot-8
3863
+ player's same FW position, total 29 and `(pass,dribble,shoot,defense)=(6,9,9,5)` vector. No acquired
3864
+ name, position, attribute or designation is rewritten; the role sheet and condition are
3865
+ match-time tactic/derived values. N17 and N18's preserved-prefix SHA-256 are both
3866
+ `a43d28b29ee2474e2233f4f54315c3198d2a3d18f45ddee1834fc4761f3e1f9e`; full N18 is
3867
+ `147a312a0b3932e41f6530b19170301ef1037d4d215365ccc41458e03b7985cc`.
3868
+
3869
+ The probe exhausts `C(17,11)` and `C(18,11)` and sends every 212-point subset through the engine
3870
+ validator. N17 has **210 legal subsets**, all containing the tired focal, and **one** competitive
3871
+ projection. N18 has **420/two**; **210** use the new asset instead of the tired focal and form the
3872
+ second outcome. The projection contains position, attrs, total, condition, FK/PK and both role
3873
+ sheets, excluding only asset identity and display names, which do not enter the winner calculation.
3874
+ The unchanged N17 outcome remains available in N18, so the treatment is one fresh playerId rather
3875
+ than an incumbent rewrite.
3876
+
3877
+ The independent `role-economics-r2-pool-final` publication has **200,000 clusters** and covers all
3878
+ 60 contexts **3,188–3,481 times per cell**. Each observation is the same home/away × REG/KO group;
3879
+ support width is 400pp and the pre-fixed family of one uses two endpoint `δ=0.025` bounded
3880
+ empirical-Bernstein intervals. Across **1,600,000 matches**, the N18-only fresh outcome gains
3881
+ **+0.431679±0.078950pp [0.352728, 0.510629]**. Two separate processes reproduce byte-identical
3882
+ numbers and `POOL_RESULT_JSON`; its SHA-256 is
3883
+ `48615a458ee8e5696f6259bf8b9ff5d48056be96e50509db9f3d2a3abfcde606`.
3884
+ N17 has one competitive outcome and N18 has only that outcome plus the fresh one, so the positive
3885
+ simultaneous lower endpoint also establishes the fresh arm as N18's best on this pre-fixed mean.
3886
+
3887
+ The positive difference is valid between the pre-selected N17 and N18 above. A better N17
3888
+ registration contains both outcomes, however, so this value alone cannot select H's product maximum.
3889
+
3890
+ ```bash
3891
+ MODE=pool-ceiling POOL_SEEDS=200000 CONTROL_SEEDS=20 \
3892
+ POOL_COLUMN=role-economics-r2-pool-final \
3893
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/role-economics.mts
3894
+ ```
3895
+
3896
+ ### Result 7g — every N17 registration versus N18 in one owned universe, H `N=17` (current product decision, 2026-09-07)
3897
+
3898
+ The second correction fixes the owned universe at 18 assets first and changes only the registration
3899
+ ceiling. The eleven core-XI IDs are mandatory on both sides. The optional assets are seven distinct
3900
+ minted clones byte-identical to the seven core vectors in slots 4–10. Their totals are
3901
+ **10, 13, 16, 19, 27, 28 and 29**; all are FWs, creating seven pre-fixed maximum offensive roles at
3902
+ ×1024. The other four players force GK/DF/DMF/OMF. The XI sums to 212 and exactly saturates
3903
+ `TEN_MAX=3` and `EIGHT_MAX=5`. SHA-256 of the 18-asset owned universe is
3904
+ `a62626d300ea675e82f61c11b06ef9b15577ad52bc173cf3bdf3b73d15adb73b`.
3905
+
3906
+ Because core eleven is mandatory, the maximal N17 registrations are **all seven** choices that omit
3907
+ one clone. Any smaller registration is weakly dominated by one of these because adding an owned
3908
+ asset cannot remove a legal XI. The probe exhausts each N17's `C(17,11)` and N18's `C(18,11)`, then
3909
+ sends every 212-point candidate through the actual engine validator. Each N17 has **293–385**
3910
+ 212-point candidates and exactly **64 legal XIs**; N18 has **876/128**. Every legal XI contains the
3911
+ four structurally mandatory cores and exactly one member of each of the seven core/clone pairs, and
3912
+ has one base competitive outcome after excluding asset identity and display name. In each focused
3913
+ role, N18 has tired/fresh outcomes; only the N17 missing that role's clone has one tired outcome,
3914
+ while the other six N17 registrations have both. The probe exhaustively asserts this **7×7
3915
+ frontier**, removing any opportunity to manufacture the gain by selecting a weak N17.
3916
+
3917
+ After a defensive pilot, the more direct seven offensive roles were fixed on a separate pilot
3918
+ column. The independent `role-economics-r3-pool-final` publication hashes one role and one of the 60
3919
+ opponent×growth cells uniformly per cluster, then replays that role's fresh/tired arms on identical
3920
+ home/away × REG/KO seeds. It has **1,000,000 clusters and 8,000,000 matches**, covering all 420/420
3921
+ role×context cells **2,255–2,511 times**. For each N17 registration, an observation is fresh−tired
3922
+ when the sampled role is its omitted clone and zero otherwise because the pools' best outcomes are
3923
+ identical. The pre-fixed family is seven, endpoint `δ=0.0035714285714285718`, with 400pp support
3924
+ width.
3925
+
3926
+ | omitted N17 clone | N18−that N17 best (pp) | simultaneous 95% interval |
3927
+ | --- | ---: | ---: |
3928
+ | `clone-04` | +0.096454±0.021319 | [0.075136, 0.117773] |
3929
+ | `clone-05` | +0.080273±0.020059 | [0.060214, 0.100332] |
3930
+ | `clone-06` | +0.066324±0.018963 | [0.047362, 0.085287] |
3931
+ | `clone-07` | +0.035576±0.016225 | [0.019351, 0.051801] |
3932
+ | `clone-08` | +0.024480±0.014288 | [0.010192, 0.038768] |
3933
+ | `clone-09` | +0.020601±0.014259 | [0.006342, 0.034861] |
3934
+ | `clone-10` | **+0.013387±0.013130** | **[0.000257, 0.026517]** |
3935
+
3936
+ All **7/7 lower endpoints are positive**. Selecting the lowest publication mean, `clone-10`, as the
3937
+ “best N17” is valid because all seven intervals are simultaneous. Two separate processes reproduce
3938
+ byte-identical complete output; SHA-256 of `POOL_RESULT_JSON` is
3939
+ `3013554c387daa709125b2077c17b22710761d70bf4a4c1d2c053fb21570b51b`.
3940
+
3941
+ H therefore sets the global product maximum to **`N=17`**. Core eleven plus the largest free grant
3942
+ of six already needs 17, and there is an allowed case where even the best N17 registration in the
3943
+ same owned universe is inferior to N18. This is an existence witness for one pre-fixed CAP0 owned
3944
+ universe under shipped-default opponent roles and the uniform role/60-cell mean, not a global lower
3945
+ bound on N18−N17 over every pool. H's P13 question needs one allowed case to show slot 18 is not
3946
+ structurally inert. N=17 still does not erase purchase advantage: the one-free-player branch can
3947
+ leave as many as five optional selected slots. Runtime accepts only
3948
+ `FORM_PLAYER_POOL_MAX_SIZE=17`; N18 remains a complete-enumeration regression case.
3949
+
3950
+ ```bash
3951
+ MODE=pool-ceiling POOL_SEEDS=1000000 CONTROL_SEEDS=20 \
3952
+ POOL_COLUMN=role-economics-r3-pool-final \
3953
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/role-economics.mts
3954
+ ```
3955
+
3474
3956
  ### Stage 3 — a multi-wallet feeder is exempt, not merely advantaged
3475
3957
 
3476
3958
  F-1's side rule writes nothing for a ladder away side that is human; `playoff-finalize.ts`
@@ -3479,9 +3961,12 @@ in-division; the cooldown is initiator-only. Observed at-appearance `L` reaches
3479
3961
  honest player while a team taking the same match count as the away side accumulates zero. That
3480
3962
  is exemption, not a ratio — bounded only by what bounds the feature. The historical `g=0.4`
3481
3963
  single-player prize is 0.59pp [0.25, 0.93]; at the selected D product amplitude the maximum
3482
- recoverable deficit gives 0.19pp [0.07, 0.45], and the independently certified team-level worst
3483
- upper bound is 3.69pp across the 18 observed cells. The unmeasured legal role×condition extreme
3484
- is why that bound is not yet an activation verdict.
3964
+ recoverable deficit gives 0.26pp [0.04, 0.48] in the general-carrier diagnostic, and the
3965
+ independently certified team-level worst upper bound is 3.48pp across the 18 observed cells. The
3966
+ §3-15 follow-up establishes the #728 role ladder through ×1024 below 5pp, and result 7e measures
3967
+ the 0.173 recovery prize directly on all 66 focused roles. Its original two-vector H cost is
3968
+ withdrawn; result 7g provides the same-owned-universe H comparison. The feeder decision itself remains a
3969
+ product tradeoff; the now-closed H/I-c numeric gates do not decide it.
3485
3970
 
3486
3971
  ### What this does not settle
3487
3972
 
@@ -3515,11 +4000,12 @@ states while `allCells` did not. A deficit of exactly zero is not evidence of cl
3515
4000
  gate either, so such teams are excluded outright and the output says how many. None occur in
3516
4001
  this window.
3517
4002
 
3518
- The prize-versus-cost ordering at the D product amplitude remains unresolved: at its maximum
3519
- recoverable deficit 0.173, prize is 0.19pp [0.07, 0.45], cheapest selected cost is 0.16pp, and
3520
- paired cost−prize is −0.03pp [−0.50, 0.43]. The neutral-point fork is now closed at the D active-appearance median;
3521
- what remains is maximum LEGAL role concentration (the
3522
- replay is what happened, not what the rules permit). Player identity is the snapshot's `actorIds` playerId, keyed GLOBALLY rather than per team —
4003
+ The general-carrier prize-versus-cost ordering remains unresolved on its own: at maximum
4004
+ recoverable deficit 0.173 its prize is 0.26pp [0.04, 0.48], cost is 0.10pp, and paired
4005
+ cost−prize is −0.16pp [−0.53, 0.21]. Result 7e does not relabel that diagnostic; it supplies the
4006
+ missing direct 66-role recovery-prize and I-c measurement. Its two-vector H use is withdrawn;
4007
+ result 7g closes H across all admissible N17 registrations in one immutable owned universe. Player identity is
4008
+ the snapshot's `actorIds` playerId, keyed GLOBALLY rather than per team —
3523
4009
  a minted player sold mid-window would otherwise get two chains starting from zero, understating
3524
4010
  the buyer's vector. A missing actor map or even one player that fails to join is rejected by the
3525
4011
  replay-completeness gate; there is no name-key fallback. **Two code paths went
@@ -3542,15 +4028,98 @@ itself. The cost is that nothing with a period longer than 11 days is visible.
3542
4028
  C2_ENV_FILE=<main checkout>/.env.deploy DAYS=30 WINDOW_END=2026-09-01 \
3543
4029
  EXPORT_SNAPSHOTS=/tmp/prod-tl.json \
3544
4030
  pnpm --filter @sws26/api exec tsx scripts/c2-team-load.ts
3545
- # Post-F-1 product curve: predicate D, testing only the selected L₀=4×p95
4031
+ # F-2 v2 all-τ price table: predicate D, structural cup fold 0.1375,
4032
+ # testing only the selected L₀=4×p95.
3546
4033
  MATCHES=3000 SNAPSHOTS=/tmp/prod-tl.json REPLAYS=5 TAU_SWEEP=6,12,24,48 \
3547
- LOAD_PRED=D L0_SWEEP=4 LAMBDA_MED=6 LAMBDA_MAX=21 \
4034
+ LOAD_PRED=D L0_SWEEP=4 CUP_FOLD_SCALE=0.1375 EXPLORE_WORST=0 \
4035
+ CALIBRATION_SEED_COLUMN=c2-cupfold-r45-final LAMBDA_MED=6 LAMBDA_MAX=21 \
4036
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/engagement-load.mts
4037
+
4038
+ # Independent confirmation of the pre-fixed exact product point.
4039
+ MATCHES=3000 SNAPSHOTS=/tmp/prod-tl.json REPLAYS=5 TAU_SWEEP=24 \
4040
+ LOAD_PRED=D L0_SWEEP=4 CUP_FOLD_SCALE=0.1375 EXPLORE_WORST=0 \
4041
+ FIXED_AMPLITUDE=0.4914 CALIBRATION_SEED_COLUMN=c2-cupfold-r42-product \
4042
+ LAMBDA_MED=6 LAMBDA_MAX=21 \
4043
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/engagement-load.mts
4044
+
4045
+ # Canonical hand-off for the cup gate: the first post-warm-up human entry vector
4046
+ # for each cup/team, with ladder and raw-cup components kept separate.
4047
+ SNAPSHOTS=/tmp/prod-tl.json TAU_SWEEP=24 TIME_BASE=claim LOAD_PRED=D \
4048
+ CUP_FOLD_SCALE=0.1375 \
4049
+ EXPORT_CUP_ENTRIES=/tmp/cup-entry-r36.json EXPORT_CUP_ENTRIES_ONLY=1 \
3548
4050
  pnpm --filter pog-mcp exec tsx skill/reference/probes/engagement-load.mts
3549
4051
 
3550
4052
  # Historical C-conditioned 1×/2×/4× table only
3551
4053
  MATCHES=3000 SNAPSHOTS=/tmp/prod-tl.json REPLAYS=5 TAU_SWEEP=6,12,24,48 \
3552
4054
  LOAD_PRED=C L0_SWEEP=1,2,4 LAMBDA_MED=6 LAMBDA_MAX=21 \
3553
4055
  pnpm --filter pog-mcp exec tsx skill/reference/probes/engagement-load.mts
4056
+
4057
+ # 2026-09-06 final role×condition run. All 66 shards retain the full
4058
+ # 67,320-test × 3-look family and share one independent seed column.
4059
+ for focal_index in 0 1 2 3 4 5; do
4060
+ ROLE_SIDE=offense FOCAL_INDEX="$focal_index" \
4061
+ SEED_CHECKPOINTS=50000,100000,200000 SEED_COLUMN=role-cond-r37-final \
4062
+ CONTROL_SEEDS=20 \
4063
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/role-cond.mts \
4064
+ > "/tmp/role-r37-final-offense-${focal_index}.out" &
4065
+ done
4066
+ wait
4067
+ for focal_index in 0 1 2 3 4 5; do
4068
+ for role_slot in 1 2 3 4 5 6 7 8 9 10; do
4069
+ ROLE_SIDE=defense FOCAL_INDEX="$focal_index" ROLE_SLOT="$role_slot" \
4070
+ SEED_CHECKPOINTS=50000,100000,200000 SEED_COLUMN=role-cond-r37-final \
4071
+ CONTROL_SEEDS=20 \
4072
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/role-cond.mts \
4073
+ > "/tmp/role-r37-final-defense-${focal_index}-${role_slot}.out" &
4074
+ done
4075
+ wait
4076
+ done
4077
+
4078
+ # 2026-09-06 v2 cup boundary. 0.1375 is index 8; run it, every larger point,
4079
+ # and its lower neighbour without assuming monotonicity. Both pre-fixed
4080
+ # amplitudes are priced in the full 304,128-test family.
4081
+ for scale_index in 0 1 2 3 4 5 6 7 8 9; do
4082
+ ENTRY_PROFILES=/tmp/cup-entry-r36.json CUP_SCALE_INDEX="$scale_index" \
4083
+ TRIALS=3000 CONTROL_TRIALS=20 FORM_AMPLITUDE=0.4914 \
4084
+ AMPLITUDE_FAMILY_SIZE=2 SEED_COLUMN=cup-role-r44-final \
4085
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/cup-role-load.mts \
4086
+ > "/tmp/cup-r44-final-b04914-s${scale_index}.out" &
4087
+ done
4088
+ wait
4089
+ ENTRY_PROFILES=/tmp/cup-entry-r36.json CUP_SCALE_INDEX=8 TRIALS=3000 \
4090
+ CONTROL_TRIALS=20 FORM_AMPLITUDE=0.5026 AMPLITUDE_FAMILY_SIZE=2 \
4091
+ SEED_COLUMN=cup-role-r44-final \
4092
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/cup-role-load.mts \
4093
+ > /tmp/cup-r44-final-b05026-s8.out
4094
+
4095
+ # 2026-09-07 r1 role recovery / I-c run. Its two-vector H diagnostic is
4096
+ # audit-only. Each one-role shard still pays for the full 4,818-interval
4097
+ # family; grouping only limits concurrency.
4098
+ for focal_index in 0 1 2 3 4 5; do
4099
+ FOCAL_INDEX="$focal_index" ROLE_SIDE=offense \
4100
+ SELECT_SEEDS=5000 ECON_SEEDS=200000 CAP_SEEDS=50000 CONTROL_SEEDS=20 \
4101
+ SELECT_COLUMN=role-economics-r1-select PUBLISH_COLUMN=role-economics-r1-final \
4102
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/role-economics.mts \
4103
+ > "/tmp/role-economics-r1-${focal_index}-offense.out" &
4104
+ for role_slot in 1 2 3 4 5 6 7 8 9 10; do
4105
+ FOCAL_INDEX="$focal_index" ROLE_SIDE=defense ROLE_SLOT="$role_slot" \
4106
+ SELECT_SEEDS=5000 ECON_SEEDS=200000 CAP_SEEDS=50000 CONTROL_SEEDS=20 \
4107
+ SELECT_COLUMN=role-economics-r1-select PUBLISH_COLUMN=role-economics-r1-final \
4108
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/role-economics.mts \
4109
+ > "/tmp/role-economics-r1-${focal_index}-defense-${role_slot}.out" &
4110
+ done
4111
+ wait
4112
+ done
4113
+ rg --no-filename '^RESULT_JSON ' /tmp/role-economics-r1-*.out \
4114
+ | sed 's/^RESULT_JSON //' | jq -s 'sort_by(.roleIndex)' \
4115
+ > /tmp/role-economics-r1-results.json
4116
+ shasum -a 256 /tmp/role-economics-r1-results.json
4117
+
4118
+ # Corrected H: every N17 registration versus N18 in one owned universe.
4119
+ MODE=pool-ceiling POOL_SEEDS=1000000 CONTROL_SEEDS=20 \
4120
+ POOL_COLUMN=role-economics-r3-pool-final \
4121
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/role-economics.mts
4122
+ # POOL_RESULT_SHA256 3013554c387daa709125b2077c17b22710761d70bf4a4c1d2c053fb21570b51b
3554
4123
  ```
3555
4124
 
3556
4125
  **The window's end is now stated explicitly, so these figures can be rebuilt.** The default is