pog-mcp 0.9.9 → 0.9.10

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.10",
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",
@@ -2282,8 +2282,9 @@ gives the same answer, which is a fact only the sweep can establish.
2282
2282
 
2283
2283
  The plan's "start at 0.5, never exceed 1.0" is therefore about **2.5× the safe value**.
2284
2284
 
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.
2285
+ **0.2 was provisional when this run was published.** The role×condition interaction was then
2286
+ unmeasured and could move it either way. The 2026-09-06 follow-up below closes that gate for the
2287
+ pre-registered #728 role ladder and makes 0.2 final within that contract.
2287
2288
 
2288
2289
  ### The document already had this in its own table
2289
2290
 
@@ -2306,7 +2307,7 @@ five grid points give 17.5–18.0 and 26.6–27.4 respectively. (An earlier revi
2306
2307
  Growth turned out not to be an amplifier at all. That was one of the three axes §3-2 asked
2307
2308
  for, and the answer is negative.
2308
2309
 
2309
- ### What this does not cover
2310
+ ### What this run did not cover at publication
2310
2311
 
2311
2312
  Role concentration — the third axis §3-2 named — is not measured here. It requires patching
2312
2313
  the engine to carry per-player, per-scene weight sheets (`appr-role.mts` does this), which
@@ -2320,6 +2321,220 @@ judgments AWAY from thresholds and reduce sensitivity. The axis can move 0.3 in
2320
2321
  direction, and it has to be measured before the value is adopted — 0.3 is what two axes
2321
2322
  give, not the answer for three.
2322
2323
 
2324
+ ### Role×condition and cup-depletion follow-up — the missing gates close (2026-09-06)
2325
+
2326
+ `role-cond.mts` reused the six legal §3-15 squads over 36 ordered matchups and both engine modes.
2327
+ Scanning `computeBuff` directly under the product invariant `0≤tenure≤career`, through potential
2328
+ 1 and through the `career=700` boundary after which every buff is zero, gives the actually
2329
+ reachable dense integer support **0..4**. The first maximum-4 witness is tenure/career **67/67**,
2330
+ and lower potential cannot escape that envelope. The growth
2331
+ axis uses four uniform endpoint combinations, five rotated heterogeneous vectors, and one
2332
+ reachable extreme with **the focal role slot at 4 and all other 21 players at 0**. Every slot of
2333
+ both XIs visits every value 0..4 across the rotated states; the final state directly covers the
2334
+ previously omitted input where the concentrated carrier has grown more than every teammate and
2335
+ opponent. This is a pre-fixed rotated/role-extreme sample, not an exhaustive enumeration of the
2336
+ per-player `5^22` combinations, and the guarantee below is limited to those ten growth states.
2337
+ From inputs alone, offense chose each focal
2338
+ squad's largest FW (`total → pass → shoot → slot`) as
2339
+ #728's pre-registered carrier. Defense swept **all ten outfield slots** rather than selecting one
2340
+ DF; the keeper stays out consistently with `appr-role.mts`'s contract that keeper A0 is outside
2341
+ roles. The engine was patched with #728's same per-player, per-scene `appr`/`apprDef` sheets;
2342
+ the **whole focal XI moved from condition 5.0 to 4.8** while keeping the role, and the opponent
2343
+ kept the shipped role table.
2344
+
2345
+ Home/away and regulation/knockout were first joined within each seed cluster, with the latter
2346
+ mixed at canonical `KO_EXPOSURE=8.14%`. Six offensive and 60 defensive shards (six squads ×
2347
+ ten slots), **66 shards** in total, all paid against the unsharded simultaneous family
2348
+ **67,320 = 35,640 effects + 31,680 interactions versus ×1**. There are
2349
+ **3,960 = (6 offense + 60 defense) × 6 opponents × 10 growth states** structural cells. The
2350
+ final run used the independent seed column `role-cond-r37-final` and pre-fixed looks
2351
+ `50,000→100,000→200,000`. Each structural cell stopped at the first look where all nine effect
2352
+ intervals closed below 5pp. Both endpoints and all three looks were Bonferroni-priced at endpoint
2353
+ `δ=1.238e-7 = .05/(2×67,320×3)`, so the interaction intervals remain valid after optional
2354
+ stopping. **3,959 cells stopped at 50,000, one at 100,000 and none reached 200,000**, for
2355
+ **14,259,600,000 measured matches**. Empirical-Bernstein support widths are 400pp for effects and
2356
+ 800pp for interactions. Each shard's 80 stock↔patch whole results and 80 ×1 role results were
2357
+ byte-identical. At the maximum pre-registered rung ×1024, the focal player's minimum nominal
2358
+ share among its non-zero draws is **98.71–98.91%** on offense and **94.03–99.15%** on defense;
2359
+ ×1024 is therefore not called a uniform defensive “practical asymptote.”
2360
+
2361
+ These are the cells with the largest absolute simultaneous upper bound among the 360 offensive
2362
+ and 3,600 defensive cells at every multiplier. All 360/360 offensive and 3,600/3,600 defensive
2363
+ cells at every row are established below 5pp.
2364
+
2365
+ | role multiplier | offensive worst effect | offensive absolute upper | defensive worst effect | defensive absolute upper |
2366
+ | ---: | ---: | ---: | ---: | ---: |
2367
+ | 0 | +3.62 ±0.98pp | 4.60pp | +3.80 ±0.99pp | 4.79pp |
2368
+ | 0.25 | +3.62 ±0.98pp | 4.60pp | +3.85 ±0.99pp | 4.84pp |
2369
+ | 0.5 | +3.69 ±1.00pp | 4.69pp | +3.85 ±0.99pp | 4.84pp |
2370
+ | 1 | +3.65 ±1.00pp | 4.65pp | +3.86 ±0.99pp | 4.85pp |
2371
+ | 2 | +3.68 ±0.99pp | 4.67pp | +3.80 ±0.99pp | 4.79pp |
2372
+ | 4 | +3.75 ±0.98pp | 4.73pp | +3.81 ±0.99pp | 4.80pp |
2373
+ | 8 | +3.70 ±0.99pp | 4.69pp | +3.81 ±0.99pp | 4.80pp |
2374
+ | 32 | +3.84 ±0.99pp | 4.83pp | +3.89 ±1.01pp | 4.90pp |
2375
+ | **1024** | **+3.97 ±1.01pp** | **4.98pp** | **+3.95 ±1.01pp** | **4.96pp** |
2376
+
2377
+ The global ×1024 witnesses are `352/stars/flat` slot 9 versus `433/even/flat`, growth
2378
+ `rotated-1`, `n=50,000` on offense, and `442/stars/atk` slot 1 versus `433/even/flat`, growth
2379
+ `rotated-4`, `n=50,000` on defense. Against ×1, offense has **5 established increases / 8 established
2380
+ decreases / 2,867 undecided interactions** (2,880 total), while defense has
2381
+ **42 / 20 / 28,738** (28,800 total). The largest positive upper endpoint is
2382
+ **+1.82 ±1.49pp = 3.31pp** on offense and **+2.23 ±1.41pp = 3.64pp** on defense. The most
2383
+ negative lower endpoint is **−1.62 ±1.47pp → −3.09pp** and **−1.55 ±1.47pp → −3.02pp**,
2384
+ respectively. Every effect and interaction interval endpoint over the whole ladder is inside
2385
+ 5pp. **The 0.2 band ceiling is final for this role contract.**
2386
+
2387
+ The scope is the focal side's **pre-registered offensive carrier, every outfield defensive
2388
+ slot, the whole-XI 0.2 band and the ten pre-fixed growth states**. The exhaustive `5^22`
2389
+ growth-vector product, opponent role sheets, other offensive slots, a keeper defensive role
2390
+ and continuous multipliers outside the ladder are not covered. Since roles do
2391
+ not exist in the product yet, #735 must adopt this measured ladder or a subset; expanding that
2392
+ space requires a new gate.
2393
+
2394
+ The 2026-08-29 qualifier premise is also **withdrawn**. The generic
2395
+ `tournament-runner.ts` `runTournament()` does run qualifiers when given more than 48 teams, but
2396
+ that file explicitly says production cups do not use it. The production daemon combines ranked
2397
+ entrants with fill-bots into exactly 48 teams; registration replay and the legacy path also slice
2398
+ to 48 before building the group schedule. A champion therefore plays at most three group plus
2399
+ five knockout matches. There is no shipped eleven-match path and no three-match qualifier-luck
2400
+ gap to calibrate.
2401
+
2402
+ The corrected product criteria cover the shipped eight-match path. In the verified production
2403
+ entry population plus explicit persistent-new, daily-fill-bot and observed-extreme stresses,
2404
+ every pre-registered offensive carrier and every non-keeper defensive role must finish with
2405
+ `cond8>4.8`; independently of entry state, that cup itself must consume at most 0.2 condition.
2406
+ Each cell passes only when the simultaneous upper bound on each violation probability is below
2407
+ 1%. The first is an empirical population gate, not a universal floor for arbitrary future
2408
+ history: F-2 has neither a load cap nor a cup-entry reset, and its curve asymptote is below 4.8.
2409
+
2410
+ #### Withdrawn scale-only result — 0.375 is historical, not the product value
2411
+
2412
+ This result remains as an audit trail. It applied each scale to prior cup history and the new
2413
+ eight-match path, but kept the neutral point, `L₀`, and safe amplitude from result 7c, whose
2414
+ lifetime integration treated cup events at ×1. Since the fold changes the whole EWMA history,
2415
+ that was not a self-consistent product combination. Its conditional 0.375 pass below is superseded
2416
+ by the re-integrated two-dimensional boundary that follows.
2417
+
2418
+ `engagement-load.mts` integrated the canonical production export with SHA-256
2419
+ `1c7335ba9fa11388363de57628207ecc4820dc9bb02285066bda849adf571b6f` at τ=24h on the
2420
+ claim clock under predicate D. Taking each human team's first pre-match vector in each cup after
2421
+ the 2τ warm-up yields **108 profiles across nine cups**. The hand-off file has SHA-256
2422
+ `dfd3032c9bab22c42c0616e708705e2f9a187fde719766af37cc68cc6c60515e`, and a fresh export
2423
+ from the current code was byte-identical. It preserves ladder and raw-cup components separately:
2424
+ candidate `s` enters at **`L=ladderL+s·cupRawL`**, so already-accumulated cup history is scaled too
2425
+ rather than leaving old cups at ×1 while scaling only the new cup. At `s=1`, entry-slot L has
2426
+ median **4.959667**, p95 **10.902379**, and maximum **33.888645**.
2427
+
2428
+ Form was not deployed in that production window. The historical `cupRawL` column is therefore the
2429
+ growth-zero workload on the committed fixture ledger while condition was fixed at 5, not a
2430
+ closed-loop equilibrium in which an earlier candidate scale had already changed condition and then
2431
+ changed later engagement draws. Scaling that fixed historical column is exact for its event counts;
2432
+ only the new eight-match path below directly replays condition-to-engagement feedback. This is
2433
+ another reason the entry result is a fixed-basket empirical gate rather than a universal future-state
2434
+ claim.
2435
+
2436
+ `cup-role-load.mts` crosses persistent-new load zero, the daily fill-bot neutral load, the observed
2437
+ population, a role-slot maximum and a whole-XI condition-deficit maximum in six entry scenarios.
2438
+ It measures all six offensive carriers and all 60 non-keeper defensive slots at ×1024. Six
2439
+ opponent squads × home/away × six entry scenarios produce **4,752 cells per scale**, each with
2440
+ 3,000 independent paths through the shipped three group plus five knockout matches. Every match
2441
+ adds both XIs' growth-zero F-1 predicate-D raw engagements, with no inter-round recovery. The
2442
+ repeated synthetic opponent keeps the shipped role sheet while carrying its own accumulated load.
2443
+
2444
+ The **16-point** grid is
2445
+ `{1, .5, .45, .4, .375, .35, .325, .3, .275, .25, .225, .2, .125, .1, .075, .05}`. Measuring
2446
+ the six largest candidates established 0.375 as passing and rejected every larger value, so the
2447
+ ten smaller points are irrelevant to selecting the largest pass. Every shard still paid against
2448
+ the full family **152,064 = 16 scales × 4,752 cells × 2 criteria**, using one-sided
2449
+ Bernoulli-KL/Chernoff `α=3.288089e-7`. That is **114,048,000 measured matches per scale** and
2450
+ **684,288,000 measured matches** total. Each shard also passed 80 stock↔patch involvement-result
2451
+ and 880 ×1-role byte-identity controls. The independent seed column is `cup-role-r36-final`.
2452
+
2453
+ The two explicit product criteria require each cell's simultaneous upper bound on (1)
2454
+ `cond8≤4.8` and (2) `initialCond−cond8>0.2` to be **below 1%**. The first asks for an absolute
2455
+ floor in the observed entry basket; the second isolates this cup's band consumption from entry
2456
+ state. A sampled minimum or maximum may cross its threshold while the scale passes—the gate is on
2457
+ violation probability, not deterministic zero violations.
2458
+
2459
+ | consumption scale | worst floor violations (simultaneous upper) | worst cup-drop violations (simultaneous upper) | min initial/cond8 | max drop | raw8 mean/max | verdict |
2460
+ | ---: | ---: | ---: | ---: | ---: | ---: | --- |
2461
+ | 1.000 | 3,000/3,000 (100.00%) | 2,996/3,000 (100.00%) | 4.897/4.692 | 0.330 | 70.3/148 | FAIL |
2462
+ | 0.500 | 405/3,000 (17.15%) | 139/3,000 (7.04%) | 4.911/4.770 | 0.238 | 70.2/148 | FAIL |
2463
+ | 0.450 | 67/3,000 (4.04%) | 21/3,000 (1.88%) | 4.912/4.780 | 0.224 | 70.2/148 | FAIL |
2464
+ | **0.400** | **6/3,000 (1.02%)** | 2/3,000 (0.72%) | 4.914/4.791 | 0.209 | 70.2/148 | **FAIL** |
2465
+ | **0.375** | **1/3,000 (0.63%)** | **1/3,000 (0.63%)** | **4.915/4.797** | **0.201** | **70.2/148** | **PASS** |
2466
+ | 0.350 | 0/3,000 (0.50%) | 0/3,000 (0.50%) | 4.915/4.803 | 0.192 | 70.2/148 | PASS |
2467
+
2468
+ At 0.375, the floor witness is defensive slot 6, `433/stars/atk` versus `433/even/flat`,
2469
+ home, `observed-slot-max/team-max`; the cup-drop witness is defensive slot 4,
2470
+ `433/even/flat` versus `442/even/def`, away, `persistent-new/new`.
2471
+
2472
+ That run therefore selected **0.375 per raw F-1 predicate-D engagement conditional on the old
2473
+ curve**. It is not the current product decision; the self-consistent rerun below replaces it.
2474
+
2475
+ Inter-match time is zero in this declared zero-gap product stress distribution. It includes actual
2476
+ entry history and observed extremes, but remains an empirical guarantee for this fixed nine-cup
2477
+ basket. Without a load cap or cup-entry reset, it cannot guarantee an absolute floor for every
2478
+ possible future history—the curve's asymptote itself is below 4.8. Nor does it mathematically
2479
+ dominate changing real-bracket opponents or opponent role sheets; adding those spaces to the
2480
+ product contract requires re-gating.
2481
+
2482
+ #### Final re-integrated boundary — `s=0.1375`, `b=0.4914` (2026-09-06)
2483
+
2484
+ To remove that feedback error, the canonical lifetime timeline was re-integrated from scratch
2485
+ with structural cup events at `s=0.1375` and ladder events at 1. At τ=24h the active-appearance
2486
+ median is **1.146304**, p95 is **14.756304**, and the 4× curvature scale is therefore
2487
+ **`L₀=59.025216`**. The all-τ safe-amplitude search and an independent selected-curve
2488
+ confirmation pass **`b=0.4914`**. The neutral offset is derived, not copied from rounded prose:
2489
+ **`a=b·L_neutral/(L_neutral+L₀)=0.009361468442213193`**. Zero load maps to
2490
+ 5.00936146844 and the asymptote to 4.51796146844. These are the canonical result-7d and F-2-v2
2491
+ constants.
2492
+
2493
+ The same 108 profiles across nine cups keep ladder and raw-cup components separate, and each
2494
+ candidate enters as `L=ladderL+s·cupRawL`. At the selected scale, the 1,188 entry slots have
2495
+ minimum 0, median **0.698231**, p95 **3.050740**, maximum **26.617183**, and mean
2496
+ **1.264655**. The remaining cup contract is unchanged: six offensive carriers plus 60 outfield
2497
+ defensive slots, six opponents, home/away and six entry scenarios make 4,752 cells per scale;
2498
+ each cell runs 3,000 independent eight-match paths and accumulates both XIs' growth-zero
2499
+ predicate-D raw engagements.
2500
+
2501
+ The pre-fixed scale grid is
2502
+ `{1, .5, .4, .3, .25, .2, .175, .15, .1375, .125, .1125, .1, .0875, .075, .0625, .05}`.
2503
+ Every point above 0.1375, the selected point, and the next point 0.125 were actually run—no
2504
+ monotonicity inference substitutes for a shard. The amplitude family was also pre-fixed at
2505
+ `{0.4914, 0.5026}`, and both were run at the scale boundary. The global family is
2506
+ **304,128 = 2 amplitudes × 16 scales × 4,752 cells × 2 criteria**, with one-sided
2507
+ Bernoulli-KL/Chernoff `α=1.644045e-7`. Each shard measures 114,048,000 matches; ten scale shards
2508
+ plus one amplitude-neighbour shard total **1,254,528,000 matches**. Every shard's 80
2509
+ stock↔patch involvement and 880 ×1-role results were byte-identical. The independent seed column
2510
+ is `cup-role-r44-final`.
2511
+
2512
+ | amplitude `b` | cup `s` | worst floor violations (simultaneous upper) | worst cup-drop violations (simultaneous upper) | min initial/cond8 | max drop | raw8 mean/max | verdict |
2513
+ | ---: | ---: | ---: | ---: | ---: | ---: | ---: | --- |
2514
+ | 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 |
2515
+ | 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 |
2516
+ | 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 |
2517
+ | 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 |
2518
+ | 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 |
2519
+ | 0.4914 | 0.200 | 921/3,000 (35.53%) | 0/3,000 (0.52%) | 4.855/4.773 | 0.159 | 70.3/149 | FAIL |
2520
+ | 0.4914 | 0.175 | 176/3,000 (8.57%) | 0/3,000 (0.52%) | 4.855/4.782 | 0.145 | 70.2/149 | FAIL |
2521
+ | 0.4914 | **0.150** | **9/3,000 (1.24%)** | 0/3,000 (0.52%) | 4.856/4.791 | 0.130 | 70.2/149 | **FAIL** |
2522
+ | **0.4914** | **0.1375** | **1/3,000 (0.65%)** | **0/3,000 (0.52%)** | **4.857/4.796** | **0.122** | **70.2/149** | **PASS** |
2523
+ | 0.4914 | 0.125 | 0/3,000 (0.52%) | 0/3,000 (0.52%) | 4.857/4.800 | 0.113 | 70.2/149 | PASS |
2524
+ | **0.5026** | **0.1375** | **9/3,000 (1.24%)** | 0/3,000 (0.52%) | 4.853/4.791 | 0.125 | 70.2/149 | **FAIL** |
2525
+
2526
+ At the selected point, the floor witness is defensive slot 6, `433/stars/atk` versus
2527
+ `442/stars/atk`, home, `observed-slot-max/team-max`; every cell has zero cup-drop violations.
2528
+ Thus **`s=0.1375`, `b=0.4914` is a passing boundary point in the pre-fixed two-dimensional
2529
+ grid while its upper and right neighbours fail**. It is not claimed as a continuous or global
2530
+ optimum. Points below 0.125 were unnecessary to select the largest passing grid point and were
2531
+ not run; no pass is inferred for them by monotonicity.
2532
+
2533
+ F-1 continues to retain integer raw D counters. F-2 v2 alone reads source-match structural
2534
+ identity (`tournament_id IS NOT NULL`) and applies 0.1375 to cups and 1 to ladder events, through
2535
+ one helper shared by current accumulation and historical rebuild. The fixed population, zero-gap,
2536
+ opponent-role, and changing-bracket limitations are the same as in the historical run above.
2537
+
2323
2538
  ## What a same-sum vector transfer is worth (`attr-vs-cond.mts`)
2324
2539
 
2325
2540
  F-6 lets a registration submission redistribute each player's four attributes **within
@@ -2553,15 +2768,17 @@ product choice. Predicate C versus D was also open at publication and F-1 subseq
2553
2768
  **D** on 2026-09-04. The C-conditioned tables and correction trail below remain historical evidence;
2554
2769
  they are not relabelled as D.
2555
2770
 
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.
2771
+ **Product decision, 2026-09-06 — F-2 v2 reference curve.** Re-integrating the same owner-only
2772
+ export and stored seed column under D, with every structural cup event folded at 0.1375 and every
2773
+ ladder event at 1 throughout the lifetime timeline, chooses **`τ=24h`**, active-appearance neutral
2774
+ load **`L_neutral=1.146304`**, **`L₀=59.025216`** (4× D p95 `14.756304`),
2775
+ **`b=0.4914`**, and therefore
2776
+ **`a=b·L_neutral/(L_neutral+L₀)=0.009361468442213193`**. The versioned equation is
2777
+ `cond=5+a−bL/(L+L₀)`. This does not activate fatigue: F-2 remains behind a default-OFF flag.
2778
+ The §3-15 follow-up closes #728-ladder role×condition and the shipped eight-match cup at the
2779
+ pre-fixed two-dimensional boundary `s=0.1375, b=0.4914`. G-3 can flip only after the
2780
+ launch-amplitude focused-role prize/cost ordering, H ceiling, and I-c CAP clear against this same
2781
+ curve. Result 7d records the current rerun; the older C run and cup×1 result 7c remain audit trails.
2565
2782
 
2566
2783
  ### F-1 implementation status — predicate D is now durable
2567
2784
 
@@ -3424,7 +3641,11 @@ rule-of-three bound was bolted on for it. Under empirical Bernstein the range te
3424
3641
  `3R ln(3/δ)/n` survives at SD = 0, so the interval never collapses in the first place: no
3425
3642
  guard, no special case, and one fewer argument resting on its own iid assumption.
3426
3643
 
3427
- ### Post-F-1 product reruncertify only the selected D · 4× curve
3644
+ ### Withdrawn result 7c — the D · 4× · cup×1 curve
3645
+
3646
+ > **This is not the current product curve.** It correctly used D after F-1, but did not feed the
3647
+ > subsequently selected cup fold back through lifetime integration. The figures and then-current
3648
+ > rationale remain as an audit trail; self-consistent result 7d supersedes them.
3428
3649
 
3429
3650
  Results 6 through the safe-amplitude section above preserve the historical predicate-C run and
3430
3651
  its joint 1×/2×/4× candidate family. The product values were not obtained by scaling that table.
@@ -3464,13 +3685,67 @@ The product choices are:
3464
3685
  all 18 actual cells.
3465
3686
  - **Prize versus cost remains unresolved.** At the safe amplitude's maximum recoverable deficit
3466
3687
  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.
3688
+ 0.16pp, and paired cost−prize is −0.03pp [−0.50, 0.43]. The role×condition and cup extremes
3689
+ now clear in the §3-15 follow-up, but this ordering was not measured directly on the practical-
3690
+ asymptote carrier. That focused prize/cost gate, H, CAP, the cup fold and G-3 keep F-2 OFF.
3469
3691
 
3470
3692
  The canonical constants are therefore `τ=24h` and
3471
3693
  `cond = 5 + 0.044139 − 0.5399·L/(L + 90.717176)`. Implementation derives `a` from the other
3472
3694
  three constants so documentation rounding cannot move the exact neutral point.
3473
3695
 
3696
+ ### Result 7d — structural-cup-folded D · 4× · v2 product curve (current decision)
3697
+
3698
+ Applying 0.375 only after result 7c left prior cup history at ×1 inside the curve while giving
3699
+ new cups a different unit. Result 7d removes that inconsistency by rebuilding the canonical
3700
+ lifetime timeline from scratch with every structural cup event at 0.1375 and every ladder event
3701
+ at 1. It uses the same export SHA-256
3702
+ `1c7335ba9fa11388363de57628207ecc4820dc9bb02285066bda849adf571b6f`, predicate D,
3703
+ only the 4× curve, and all-τ seed column `c2-cupfold-r45-final`. The joint all-τ family is
3704
+ **612**, the sum of each τ's actual-cell upper bound times six opponents.
3705
+
3706
+ | τ(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` |
3707
+ | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
3708
+ | 6 | 0.38 | 4.01 | 8.695 | 1.6454 | **16/17** | 0.4076–0.4161 | 3.68pp | 4.3474 |
3709
+ | 12 | 0.57 | 7.54 | 10.753 | 1.1750 | **10/15** | 0.4725–0.4830 | 3.79pp | 5.3765 |
3710
+ | **24** | **1.15** | **14.76** | **10.498** | **0.6147** | **3/18** | 0.4716–0.4819 | 3.64pp | 5.2492 |
3711
+ | 48 | 2.34 | 26.06 | 9.102 | 0.3087 | **4/18** | 0.5156–0.5244 | 3.67pp | 4.5511 |
3712
+
3713
+ \* “One match” is the secant at each row's 0.2-derived amplitude with raw p95 increment 4, not
3714
+ the cost at the selected product amplitude. The interval's left endpoint is the largest grid
3715
+ point established below; its right endpoint is merely the smallest point that this run did not
3716
+ establish below. It is neither a failure nor an upper threshold. Only the final column, where a
3717
+ lower bound exceeds 5pp, establishes that the threshold lies below a candidate.
3718
+
3719
+ τ is still a product choice, not an estimate fitted to observed fatigue. The 24h derived curve
3720
+ has the fewest over-gate cells in this price table, while 48h halves the one-match secant again,
3721
+ 0.6147→0.3087pp. The product therefore retains **τ=24h** as its daily-rotation/fairness
3722
+ compromise. Its unrounded active-appearance median is **1.146304**, p95 is **14.756304**, and
3723
+ observed maximum is **32.07**, giving **`L₀=59.025216`** at 4×.
3724
+
3725
+ The joint all-τ search prices the four-row table. Its right endpoint is not an upper bound and
3726
+ does not reject `b=0.4914`. After the cup-boundary diagnostic, that exact candidate was fixed
3727
+ without looking at the final result and checked on independent seed column
3728
+ `c2-cupfold-r42-product` under the selected τ24 curve's **family 156**: **18/18 cells were
3729
+ established below**, with worst upper **3.48pp** and maximum deficit **0.173**. The independent
3730
+ §3-15 `cup-role-r44-final` two-dimensional family then rejects the right neighbour `b=0.5026`
3731
+ at `s=0.1375`. Thus 0.4914 is a passing pre-fixed product-grid point, not a continuous threshold
3732
+ estimate.
3733
+
3734
+ The current constants are:
3735
+
3736
+ - **`τ=24h`, `L_neutral=1.146304`, `L₀=59.025216`, `b=0.4914`.**
3737
+ - **`a=b·L_neutral/(L_neutral+L₀)=0.009361468442213193`.** Neutral maps exactly to 5;
3738
+ zero load maps to 5.00936146844, D p95 to 4.911081, the observed maximum to 4.836364, and
3739
+ the asymptote to 4.51796146844.
3740
+ - Under the same curve, the 108-profile cup-entry p95 maps to 4.985211 and its maximum load to
3741
+ 4.856637.
3742
+ - The equation is **`cond = 5 + a − 0.4914·L/(L + 59.025216)`**; implementation derives `a`
3743
+ from the other three constants rather than copying rounded prose.
3744
+
3745
+ In the general-carrier diagnostic, a 0.173 deficit gives prize 0.26pp [0.04, 0.48], cost 0.10pp,
3746
+ and paired cost−prize −0.16pp [−0.53, 0.21], still unresolved. It does not replace the next
3747
+ focused maximum-role carrier gate, so F-2 remains default-OFF.
3748
+
3474
3749
  ### Stage 3 — a multi-wallet feeder is exempt, not merely advantaged
3475
3750
 
3476
3751
  F-1's side rule writes nothing for a ladder away side that is human; `playoff-finalize.ts`
@@ -3479,9 +3754,10 @@ in-division; the cooldown is initiator-only. Observed at-appearance `L` reaches
3479
3754
  honest player while a team taking the same match count as the away side accumulates zero. That
3480
3755
  is exemption, not a ratio — bounded only by what bounds the feature. The historical `g=0.4`
3481
3756
  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.
3757
+ recoverable deficit gives 0.26pp [0.04, 0.48] in the general-carrier diagnostic, and the
3758
+ independently certified team-level worst upper bound is 3.48pp across the 18 observed cells. The §3-15 follow-up establishes the #728 role
3759
+ ladder through ×1024 below 5pp, but the 0.173 prize/cost ordering has still not been measured
3760
+ directly on that focused carrier, so this is not yet an activation verdict.
3485
3761
 
3486
3762
  ### What this does not settle
3487
3763
 
@@ -3516,10 +3792,11 @@ gate either, so such teams are excluded outright and the output says how many. N
3516
3792
  this window.
3517
3793
 
3518
3794
  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 —
3795
+ recoverable deficit 0.173, the general-carrier diagnostic prize is 0.26pp [0.04, 0.48], cost is
3796
+ 0.10pp, and paired cost−prize is −0.16pp [−0.53, 0.21]. The neutral-point fork is now closed at the D
3797
+ active-appearance median, and the §3-15 synthetic basket closes the pre-registered role ladder.
3798
+ What remains here is to measure that 0.173 ordering directly on its practical-asymptote carrier;
3799
+ the replay was what happened, not that role stress. Player identity is the snapshot's `actorIds` playerId, keyed GLOBALLY rather than per team —
3523
3800
  a minted player sold mid-window would otherwise get two chains starting from zero, understating
3524
3801
  the buyer's vector. A missing actor map or even one player that fails to join is rejected by the
3525
3802
  replay-completeness gate; there is no name-key fallback. **Two code paths went
@@ -3542,15 +3819,69 @@ itself. The cost is that nothing with a period longer than 11 days is visible.
3542
3819
  C2_ENV_FILE=<main checkout>/.env.deploy DAYS=30 WINDOW_END=2026-09-01 \
3543
3820
  EXPORT_SNAPSHOTS=/tmp/prod-tl.json \
3544
3821
  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
3822
+ # F-2 v2 all-τ price table: predicate D, structural cup fold 0.1375,
3823
+ # testing only the selected L₀=4×p95.
3546
3824
  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 \
3825
+ LOAD_PRED=D L0_SWEEP=4 CUP_FOLD_SCALE=0.1375 EXPLORE_WORST=0 \
3826
+ CALIBRATION_SEED_COLUMN=c2-cupfold-r45-final LAMBDA_MED=6 LAMBDA_MAX=21 \
3827
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/engagement-load.mts
3828
+
3829
+ # Independent confirmation of the pre-fixed exact product point.
3830
+ MATCHES=3000 SNAPSHOTS=/tmp/prod-tl.json REPLAYS=5 TAU_SWEEP=24 \
3831
+ LOAD_PRED=D L0_SWEEP=4 CUP_FOLD_SCALE=0.1375 EXPLORE_WORST=0 \
3832
+ FIXED_AMPLITUDE=0.4914 CALIBRATION_SEED_COLUMN=c2-cupfold-r42-product \
3833
+ LAMBDA_MED=6 LAMBDA_MAX=21 \
3834
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/engagement-load.mts
3835
+
3836
+ # Canonical hand-off for the cup gate: the first post-warm-up human entry vector
3837
+ # for each cup/team, with ladder and raw-cup components kept separate.
3838
+ SNAPSHOTS=/tmp/prod-tl.json TAU_SWEEP=24 TIME_BASE=claim LOAD_PRED=D \
3839
+ CUP_FOLD_SCALE=0.1375 \
3840
+ EXPORT_CUP_ENTRIES=/tmp/cup-entry-r36.json EXPORT_CUP_ENTRIES_ONLY=1 \
3548
3841
  pnpm --filter pog-mcp exec tsx skill/reference/probes/engagement-load.mts
3549
3842
 
3550
3843
  # Historical C-conditioned 1×/2×/4× table only
3551
3844
  MATCHES=3000 SNAPSHOTS=/tmp/prod-tl.json REPLAYS=5 TAU_SWEEP=6,12,24,48 \
3552
3845
  LOAD_PRED=C L0_SWEEP=1,2,4 LAMBDA_MED=6 LAMBDA_MAX=21 \
3553
3846
  pnpm --filter pog-mcp exec tsx skill/reference/probes/engagement-load.mts
3847
+
3848
+ # 2026-09-06 final role×condition run. All 66 shards retain the full
3849
+ # 67,320-test × 3-look family and share one independent seed column.
3850
+ for focal_index in 0 1 2 3 4 5; do
3851
+ ROLE_SIDE=offense FOCAL_INDEX="$focal_index" \
3852
+ SEED_CHECKPOINTS=50000,100000,200000 SEED_COLUMN=role-cond-r37-final \
3853
+ CONTROL_SEEDS=20 \
3854
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/role-cond.mts \
3855
+ > "/tmp/role-r37-final-offense-${focal_index}.out" &
3856
+ done
3857
+ wait
3858
+ for focal_index in 0 1 2 3 4 5; do
3859
+ for role_slot in 1 2 3 4 5 6 7 8 9 10; do
3860
+ ROLE_SIDE=defense FOCAL_INDEX="$focal_index" ROLE_SLOT="$role_slot" \
3861
+ SEED_CHECKPOINTS=50000,100000,200000 SEED_COLUMN=role-cond-r37-final \
3862
+ CONTROL_SEEDS=20 \
3863
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/role-cond.mts \
3864
+ > "/tmp/role-r37-final-defense-${focal_index}-${role_slot}.out" &
3865
+ done
3866
+ wait
3867
+ done
3868
+
3869
+ # 2026-09-06 v2 cup boundary. 0.1375 is index 8; run it, every larger point,
3870
+ # and its lower neighbour without assuming monotonicity. Both pre-fixed
3871
+ # amplitudes are priced in the full 304,128-test family.
3872
+ for scale_index in 0 1 2 3 4 5 6 7 8 9; do
3873
+ ENTRY_PROFILES=/tmp/cup-entry-r36.json CUP_SCALE_INDEX="$scale_index" \
3874
+ TRIALS=3000 CONTROL_TRIALS=20 FORM_AMPLITUDE=0.4914 \
3875
+ AMPLITUDE_FAMILY_SIZE=2 SEED_COLUMN=cup-role-r44-final \
3876
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/cup-role-load.mts \
3877
+ > "/tmp/cup-r44-final-b04914-s${scale_index}.out" &
3878
+ done
3879
+ wait
3880
+ ENTRY_PROFILES=/tmp/cup-entry-r36.json CUP_SCALE_INDEX=8 TRIALS=3000 \
3881
+ CONTROL_TRIALS=20 FORM_AMPLITUDE=0.5026 AMPLITUDE_FAMILY_SIZE=2 \
3882
+ SEED_COLUMN=cup-role-r44-final \
3883
+ pnpm --filter pog-mcp exec tsx skill/reference/probes/cup-role-load.mts \
3884
+ > /tmp/cup-r44-final-b05026-s8.out
3554
3885
  ```
3555
3886
 
3556
3887
  **The window's end is now stated explicitly, so these figures can be rebuilt.** The default is