pog-mcp 0.9.2 → 0.9.3

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.2",
3
+ "version": "0.9.3",
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",
@@ -1228,6 +1228,480 @@ N=2000 WIDE_N=1000 npx tsx … # faster; the bar is fixed, the detectable EFFE
1228
1228
 
1229
1229
  ---
1230
1230
 
1231
+ ## Is a per-player scene weight a decision? (`appr-role.mts`)
1232
+
1233
+ The section above swept engine constants and found nothing that re-prices a
1234
+ squad choice — not because the effects were small, but structurally: every
1235
+ constant it can reach sits in front of BOTH `ofPoint` and `dfPoint`, so it moves
1236
+ the two squads together. Per-player selection weights are the one remaining
1237
+ candidate that creates a **difference between two squads** rather than moving
1238
+ both sides, and they are the axis the tactical-sheet track would ship.
1239
+
1240
+ **The lever measured here does not exist in the engine.** `*_APPR` is a table
1241
+ per POSITION, so two forwards in the same squad are drawn with the same weight
1242
+ and a manager cannot tell them apart. The probe patches `getPlayer` to multiply
1243
+ each candidate's weight by a per-player, per-scene number carried on the player,
1244
+ defaulting to 1 — nothing else — and sweeps that number. So the answer is about
1245
+ the axis, not about one proposed interface.
1246
+
1247
+ ### The statistic, and the controls
1248
+
1249
+ Rows are in **win-equivalent share**: a win is 1, a draw is 0.5, every match
1250
+ counts. Deltas are **paired** — every sheet replays one seed column, so the
1251
+ default cell and the swept cell are matched match for match — and the seed
1252
+ depends on the squads and the side and never on the sheet.
1253
+
1254
+ **Bonferroni over m = 13,314 pre-registered comparisons, two-sided: |z| >= 4.62.**
1255
+ That m prices the SEARCHES as well as the tests. A ladder read against the
1256
+ FIXED shipped default costs only its rungs, because an argmax over the ladder
1257
+ could only ever have surfaced one of the contrasts already counted. A comparison
1258
+ whose BOTH sides are data-chosen — "is the optimum interior", which pits a
1259
+ selected rung against a selected neighbour, and "which sheet is the best
1260
+ response", which pits two selected sheets — is charged K(K−1)/2, the number of
1261
+ pairs the search could have surfaced.
1262
+
1263
+ The noise floor is the whole run's, not one section's: **the largest standard
1264
+ error anywhere in this run is 0.59 points of share**, which puts the
1265
+ significance threshold at **2.74 points** and the 80%-power effect at **3.24**.
1266
+ A paired standard error depends on the outcome variance and on the covariance
1267
+ between the two conditions, so it is not constant across sections merely because
1268
+ `N` is — quoting the concentration ladders' own worst cell and extending it to
1269
+ every later null was a review finding on this section. So every effect called
1270
+ large below is an order of magnitude above the run's own floor, and every "no
1271
+ effect" is a claim about a band 2.74 points wide.
1272
+
1273
+ | Control | Result |
1274
+ | --- | --- |
1275
+ | Mirror, both modes (one squad against itself; true z = 0) | z **+0.4** / **−0.5** |
1276
+ | POLICY mirror, both modes (same squad AND same sheet on both sides; true z = 0) | z **+1.0** / **+0.8** |
1277
+ | Patch identity — the patched engine with no sheet vs the stock engine | 1,000 matches identical, **whole `MatchResult`** |
1278
+ | Permutation null — the same ×32 on either of `role-433`'s two byte-identical midfielders | 1,000 matches identical, scoreline and winner |
1279
+ | Dead-scene null — ×1024 and ×0 on the offence table's ZP/PP1/FK1/FK2 columns | 1,000 matches identical, **whole `MatchResult`** |
1280
+ | Zero-weight null — ×1024 on the keeper, whose offence weight is 0 everywhere | 1,000 matches identical, **whole `MatchResult`** |
1281
+ | Paired alignment — the default column, replayed | 10,000 matches, largest per-match difference **0** |
1282
+ | Anti-focus calibration — funnelling `stars-433`'s 12-point defender must LOSE | **−11.6pp** (z −28.9) / **−14.0pp** (z −26.6) |
1283
+
1284
+ <!-- not a payoff table -->
1285
+
1286
+ **Every one of those aborts the run.** The comparison DEPTH in the right-hand
1287
+ column is part of the control rather than an implementation detail: where the
1288
+ claim is that nothing happened at all, the whole `MatchResult` is compared —
1289
+ every event in order, every player stat, every shootout round — because a
1290
+ rewrite that changed which player was drawn while landing on the same score
1291
+ would pass a scoreline check and leave every table below measuring the rewrite.
1292
+ The permutation null is the one exception and deliberately so: there the two
1293
+ players ARE interchanged, so the event names and per-player stats move by
1294
+ construction and only the outcome can be asserted.
1295
+
1296
+ Three are worth naming for what they separate. The **permutation null**
1297
+ separates "the weight moved the ball to a better player" from "the weight
1298
+ perturbed the RNG": moving the same multiplier between two players who are
1299
+ identical to the byte must change nothing, and it does not. The **anti-focus
1300
+ calibration** is the directional negative control —
1301
+ a harness that reported a gain from concentrating on the squad's worst player
1302
+ would be measuring the act of concentrating rather than who is concentrated on,
1303
+ and every row below would be that artefact. The **dead-scene null** doubles as a
1304
+ re-derivation: the probe enumerates the offensive `getPlayer` call sites FROM
1305
+ THE SOURCE, finds `A0 A1 A2 CA1 CA2 PP2` and nothing else, and confirms that a
1306
+ multiplier on the four remaining offence columns is inert — the dead table the
1307
+ plan describes, checked rather than quoted.
1308
+
1309
+ ### The concentration curve
1310
+
1311
+ `stars-433` is the focal squad because it is the only published archetype whose
1312
+ players differ inside a position group — three forwards at 28-29 points and four
1313
+ defenders at 12. `role-433` rides along as the other half of the question: its
1314
+ three forwards are identical to the byte, so any movement there is cross-GROUP
1315
+ reallocation with the within-group term pinned at exactly zero.
1316
+
1317
+ | Focal slot (`stars-433`) | ×0 | ×1 | ×1024 | League | Knockout |
1318
+ | --- | --- | --- | --- | --- | --- |
1319
+ | slot 8 — FW, 29 pts, pass 6 shoot 9 | 33.1 | 36.7 | **68.0** | **+31.3pp** | **+35.8pp** |
1320
+ | slot 10 — FW, 28 pts, pass 4 shoot 10 | 33.1 | 36.7 | 64.8 | +28.1pp | +32.3pp |
1321
+ | slot 7 — OMF, 26 pts, alone in his group | 37.5 | 36.7 | 29.2 | −7.5pp | −8.8pp |
1322
+ | slot 1 — DF, 12 pts (anti-focus control) | 38.0 | 36.7 | 25.1 | −11.6pp | −14.0pp |
1323
+ | `role-433` slot 8 — FW, identical to its two peers | 46.9 | 48.1 | 58.9 | +10.8pp | +13.2pp |
1324
+
1325
+ > **Measured on** — `stars-433` (4-3-3, `STARS` slot weights, `ATTACKING` mix
1326
+ > from `squad-lib.mts`: keeper 19, four defenders at 12, midfield 17/16/26,
1327
+ > forwards 29/29/28) against `def-433` (4-3-3, `EVEN` weights, `DEFENSIVE` mix),
1328
+ > which plays the shipped weights in every cell. The two squads never change:
1329
+ > all 212 points, both formations, both sets of kicker flags and the whole
1330
+ > defensive table are byte-identical across every row. The only thing that moves
1331
+ > is one number in front of one player's offensive selection weight, in all six
1332
+ > reachable scenes at once. The last row swaps the focal squad for `role-433`
1333
+ > (`EVEN` weights, `ATTACKING` mix), whose forwards are identical to each other.
1334
+ > **Sample** — 10,000 matches per cell, home and away, SHA-256 seeds; 20,668,000
1335
+ > matches in the run, about four minutes.
1336
+ > **Mode** — both, one column each. League is draws-allowed (`gameFlg 0`),
1337
+ > Knockout is winner-guaranteed. The League and Knockout columns are the paired
1338
+ > delta from the ×1 cell; the ×0/×1/×1024 columns are League shares.
1339
+ > **Effect** — 31.3 percentage points of win-equivalent share in League and 35.8
1340
+ > in Knockout, between two squads that are the same eleven players. That is
1341
+ > nearly three times the largest thing the engine-constant sweep could move
1342
+ > (11.8pp) and larger than any squad-construction axis measured anywhere in this
1343
+ > file. Concentrating on the WRONG player is worth −11.6pp, so the axis is
1344
+ > double-edged rather than free. Even with the within-group term removed by
1345
+ > construction — `role-433`'s identical forwards — pure cross-group
1346
+ > reallocation is still worth 10.8pp.
1347
+ > **Source** — `appr-role.mts`, section (1).
1348
+
1349
+ **The best focal player is not the best finisher.** Slot 8 beats slot 10 by
1350
+ 3.2pp in League and 3.5pp in Knockout, and slot 10 is the one with `shoot` 10.
1351
+ That much is measured. **Why is not** — and it cannot be, on a fixed points
1352
+ budget. The two forwards differ in five things at once: `pass` 6 against 4,
1353
+ `dribble` 9 against 10, `shoot` 9 against 10, `defense` 5 against 4, and one
1354
+ point of total; slot 10 also carries the penalty-kicker flag. Moving a single
1355
+ attribute in isolation is impossible when every point spent has to come from
1356
+ another attribute of the same player, so no cell in this probe separates them.
1357
+
1358
+ The candidate mechanism, offered as a hypothesis rather than a result, is the
1359
+ `style = attrs.pass` branch: `playArea2` and `playArea1` both decide
1360
+ pass-versus-dribble-versus-long-shot from `pass` alone, so a low-pass carrier
1361
+ ends possessions with long shots instead of advancing them. What supports it
1362
+ without a cross-player comparison is the scene table below — the same player's
1363
+ multiplier reverses sign between the midfield scene and the box scenes — and
1364
+ what would settle it is an engine change, not another squad.
1365
+
1366
+ ### Does the anti-concentration term bite?
1367
+
1368
+ `atkAttrSum` is the selected player's POSITION GROUP total minus his own, so the
1369
+ better the player selected, the less team-aggregate support stands behind him —
1370
+ and `atkRate` varies by scene, so the size of that penalty does too. The
1371
+ question the plan asks is whether that produces a non-flat optimum.
1372
+
1373
+ It is real, and it is not enough. One point of a selected player's total is
1374
+ worth **+1/3** on `ofPoint` directly and costs at most **rate × 0.1 ×
1375
+ teamPow/100** of group support. The largest `O_*_RATE` anywhere in the shipped
1376
+ tables is 1.00, so the loss coefficient never exceeds 0.100 against a gain
1377
+ coefficient of 0.333. The probe prints that arithmetic from the source tables
1378
+ and then measures it against a COUNTERFACTUAL engine with the subtraction
1379
+ deleted:
1380
+
1381
+ | `stars-433` slot 8, all scenes | ×1 | ×8 | ×1024 |
1382
+ | --- | --- | --- | --- |
1383
+ | shipped, League | 36.7 | 49.2 | 68.0 |
1384
+ | subtraction deleted, League | 36.9 | 52.3 | 73.4 |
1385
+ | shipped, Knockout | 34.6 | 49.6 | 70.4 |
1386
+ | subtraction deleted, Knockout | 35.2 | 52.9 | 75.7 |
1387
+
1388
+ > **Measured on** — the `stars-433` vs `def-433` fixture above, played twice:
1389
+ > once on the shipped engine and once on an engine identical except that all
1390
+ > five `atkAttrSum = <group> - <player>.total` sites — including the home-team
1391
+ > DMF path that reads the ball carrier rather than the selected player — are
1392
+ > replaced by `atkAttrSum = <group>`. Nothing else differs; the ×1 row is the
1393
+ > same squads with no sheet at all, so the gap between the two ×1 cells is what
1394
+ > the term is worth to a game nobody has concentrated.
1395
+ > **Sample** — 10,000 matches per cell, home and away, SHA-256 seeds.
1396
+ > **Mode** — both, two rows each.
1397
+ > **Effect** — 5.4 points of share in League (z 13.4) and 5.3 in Knockout
1398
+ > (z 11.2) is what the term is worth AT MAXIMUM CONCENTRATION; at the shipped ×1
1399
+ > it is worth 0.2 (z 0.5) and 0.7 (z 1.4), both inside the sample's own error.
1400
+ > So it takes 5.2 points off a concentration payoff that would otherwise reach
1401
+ > 36.5 — about a seventh — and changes nothing at all about who you should
1402
+ > concentrate on. **0 of the 50 ladders in the one-opponent sections have a
1403
+ > significant interior optimum: 48 put their argmax at a ladder END and the
1404
+ > other 2 peak on an interior rung the sample cannot separate from its
1405
+ > neighbours,** which is undecided rather than monotone and is counted
1406
+ > separately for that reason. Monotonicity is a different question from where
1407
+ > the argmax is — a ladder can dip significantly in the middle and still peak at
1408
+ > the top — so every adjacent rung is tested too: **134 of the 134 ladders swept
1409
+ > anywhere in this run have no significant step against their own direction.**
1410
+ > The curve is steeper without the term and the same shape.
1411
+ > **Source** — `appr-role.mts`, section (2).
1412
+
1413
+ The place where the term is not small is the **lone player in his group**. A
1414
+ 4-3-3's single OMF gets `omfAttr − his own total` = exactly zero support, while
1415
+ a forward in a three-man group carries 4.56 points of it into every A1
1416
+ selection. That is most of why slot 7 loses in the table above despite holding
1417
+ 26 points: funnelling the attack through him costs the whole group term. It is
1418
+ also a fact about FORMATION rather than about roles — the same player in a 4-4-2
1419
+ would have a partner to be supported by.
1420
+
1421
+ ### Scene-dependence: the same player, opposite instructions
1422
+
1423
+ | `stars-433` sheet on slot 7 (the 26-point OMF) | League | Knockout |
1424
+ | --- | --- | --- |
1425
+ | default — no sheet | 36.7 | 34.6 |
1426
+ | ×32 in A2 only | 39.0 (+2.3pp) | 37.5 (+2.9pp) |
1427
+ | ×0 in A0 and A1 only | 38.4 (+1.7pp) | 36.5 (+2.0pp) |
1428
+ | **both — ×32 in A2, ×0 in A0/A1** | **41.4 (+4.7pp)** | **40.1 (+5.5pp)** |
1429
+ | the same ×32 in EVERY scene | 30.7 (−6.0pp) | 27.6 (−7.0pp) |
1430
+
1431
+ > **Measured on** — the `stars-433` vs `def-433` fixture above, with every sheet
1432
+ > applied to ONE slot: the 26-point attacking midfielder, pass 8 dribble 8 shoot
1433
+ > 7, the only OMF in the formation. Every other slot on both squads is
1434
+ > untouched, and the opponent plays the shipped weights throughout.
1435
+ > **Sample** — 10,000 matches per cell, home and away, SHA-256 seeds.
1436
+ > **Mode** — both, one column each; every row clears the corrected bar (|z| 5.8
1437
+ > to 14.4).
1438
+ > **Effect** — 10.7 percentage points of share in League and 12.5 in Knockout
1439
+ > separate the best and worst way of spending the SAME multiplier on the SAME
1440
+ > player: +4.7pp when its sign follows the scene and −6.0pp when it does not.
1441
+ > A per-player slider would have produced the losing row. The scene signs are
1442
+ > stable across modes: A2 positive, A0/A1/CA1/PP2 negative, CA2 inside the noise.
1443
+ > **Source** — `appr-role.mts`, section (3).
1444
+
1445
+ This is the strongest evidence for the `style = attrs.pass` hypothesis above,
1446
+ and it is stronger for being WITHIN one player: the OMF is the squad's best
1447
+ passer, and his multiplier pays in midfield (A2) and costs in the box (A0/A1),
1448
+ where the forwards' `shoot` and their group support both beat him. No squad
1449
+ attribute changes between those rows — only which scene the weight applies to —
1450
+ so the confound that blocks the cross-player comparison is absent here. It is
1451
+ still not proof: A0/A1 differ from A2 in what they reward as well as in who
1452
+ carries, and separating those needs an engine change. **No scene of the
1453
+ forward's own ladder points the other way**, so
1454
+ scene-dependence is a property of the player rather than of the axis: slot 8
1455
+ gives one distinct argmax in both modes, six positive signs in League and five
1456
+ plus one below the bar in Knockout, and not a single negative one.
1457
+
1458
+ ### Opponent-dependence, and the round robin that decides it
1459
+
1460
+ | Sheet, `stars-433` | vs `role` | vs `def-433` | vs `def-532` | vs `shootonly` | vs `passonly` | vs `flat` |
1461
+ | --- | --- | --- | --- | --- | --- | --- |
1462
+ | default | 37.2 | 36.7 | 34.5 | 42.5 | 36.1 | 47.4 |
1463
+ | **carrier** — slot 8 ×32, all scenes | **60.7** | **60.6** | **52.7** | **71.4** | **62.6** | **75.6** |
1464
+ | finisher — slot 10 ×32, all scenes | 58.6 | 58.4 | 52.3 | 68.1 | 59.1 | 72.3 |
1465
+ | playmaker — slot 7 ×32 A2, ×0 A0/A1 | 42.8 | 41.4 | 37.1 | 50.9 | 44.1 | 55.6 |
1466
+ | sheet — playmaker plus slot 10 ×32 in A0/A1 | 54.6 | 51.3 | 44.0 | 67.6 | 57.7 | 71.8 |
1467
+ | tier — slots 7-10 ×8, all scenes | 50.7 | 49.3 | 43.8 | 62.2 | 52.7 | 68.2 |
1468
+ | spread — the four 12-point defenders ×4 | 28.6 | 30.3 | 30.3 | 30.4 | 26.4 | 33.9 |
1469
+
1470
+ > **Measured on** — `stars-433` against six published archetypes built by
1471
+ > `squad-lib.mts` — `role-433`, `def-433`, `def-532`, `shootonly-433`,
1472
+ > `passonly-433`, `flat-433` — every one of them playing the shipped weights.
1473
+ > The focal squad's 212 points never change across the whole grid; only its
1474
+ > sheet does. `tier` is the coordinated policy: four players lifted together at
1475
+ > a smaller multiplier rather than one player at a large one.
1476
+ > **Sample** — 10,000 matches per cell, home and away, SHA-256 seeds; 84 cells
1477
+ > across the two modes.
1478
+ > **Mode** — League shown; the Knockout grid is in the probe output, where
1479
+ > `carrier` runs 54.0 to 78.6 and every margin over `default` is wider. Its
1480
+ > ranking matches this one in five of its six rows — the sixth is the `def-532`
1481
+ > swap in Effect below.
1482
+ > **Effect** — 41.7 percentage points of share separate the best sheet from the
1483
+ > worst against the same opponent (`flat-433`: 75.6 vs 33.9), and the ordering
1484
+ > of the seven sheets is identical in eleven of the twelve opponent-by-mode
1485
+ > cells. The twelfth is `def-532` in Knockout, where `carrier` and `finisher`
1486
+ > swap by 0.1 points of share — inside the sample's own error, which is why the
1487
+ > band there names both. `carrier` sits in every cell's leader band; `def-532`,
1488
+ > the deepest defensive shape in the grid, is the only opponent that pulls
1489
+ > anything level with it. The distinct raw argmax count is **2**, and one of the
1490
+ > two is never beaten anywhere.
1491
+ > **Source** — `appr-role.mts`, section (4).
1492
+
1493
+ That grid holds the opponent's sheet at the default. The next one lets the
1494
+ opponent choose too, on the SAME squad, so the sheet is the only difference:
1495
+
1496
+ | Round robin, `stars-433` both sides | beats significantly (League / KO) | in the unbeaten band |
1497
+ | --- | --- | --- |
1498
+ | carrier | 5 of 6 / 5 of 6 | yes |
1499
+ | sheet | 4 of 6 / 3 of 6 | yes |
1500
+ | finisher | 3 of 6 / 3 of 6 | no |
1501
+ | tier | 3 of 6 / 3 of 6 | no |
1502
+ | playmaker | 2 of 6 / 2 of 6 | no |
1503
+ | default | 1 of 6 / 1 of 6 | no |
1504
+ | spread | 0 of 6 / 0 of 6 | no |
1505
+
1506
+ > **Measured on** — `stars-433` against `stars-433`: the same eleven players,
1507
+ > the same 212 points and the same kicker flags on both sides of every fixture,
1508
+ > with the sheet as the only difference. Twenty-one fixtures per mode.
1509
+ > **Sample** — 10,000 matches per fixture, home and away, SHA-256 seeds.
1510
+ > **Mode** — both; the two modes agree row for row.
1511
+ > **Effect** — 76.0% of the share for `carrier` against `default` in League and
1512
+ > 78.3% in Knockout — a 52-to-57 point win-rate advantage from the weights
1513
+ > alone. **Significant 3-cycles: 0 in both modes.** The unbeaten set — the
1514
+ > sheets nothing significantly beats — holds `carrier` and `sheet`, 1.4 points
1515
+ > of share apart in League and 1.5 in Knockout, under the corrected bar. Read
1516
+ > that as a PARTIAL order and not a total one: 3 of the 21 pairs in League and 4
1517
+ > in Knockout are inside the bar, so "no cycles and a two-member unbeaten set"
1518
+ > leaves some pairs unresolved rather than ranking all seven. What it does
1519
+ > settle is the direction: nothing here beats `carrier`, and no sheet outside
1520
+ > the unbeaten pair is unbeaten.
1521
+ > **Source** — `appr-role.mts`, section (5).
1522
+
1523
+ ### Crossing the two — the grid the verdict actually rests on
1524
+
1525
+ The two grids above are one-dimensional slices: one varies the opponent's SQUAD
1526
+ with its sheet pinned to the default, the other varies its SHEET with its squad
1527
+ pinned. A best response can be conditional on the product while both slices
1528
+ share a leader, so neither settles the roadmap question on its own. Multiplying
1529
+ them does:
1530
+
1531
+ Each cell is my best-response BAND against that opponent squad playing that
1532
+ sheet, and — after the bar — the argmax rung of the full concentration ladder
1533
+ swept inside the same cell, so "more is better up to the corner" is checked
1534
+ where the best response is rather than only against one fixed opponent.
1535
+
1536
+ | My best response \| ladder argmax | vs `default` | vs `carrier` | vs `finisher` | vs `playmaker` | vs `sheet` | vs `tier` | vs `spread` |
1537
+ | --- | --- | --- | --- | --- | --- | --- | --- |
1538
+ | `role-433` | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 |
1539
+ | `def-433` | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 | C/F \| ×1024 | C \| ×1024 | C \| ×1024 |
1540
+ | **`def-532`** | **C/F** \| ×1024 | **C/F** \| ×1024 | **C/F** \| ×1024 | **C/F** \| ×1024 | **C/F** \| ×1024 | **C/F** \| ×1024 | **C/F** \| ×1024 |
1541
+ | `shootonly-433` | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 |
1542
+ | `passonly-433` | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 |
1543
+ | `flat-433` | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 | C \| ×1024 |
1544
+
1545
+ > **Measured on** — `stars-433` against all six opponent squads, each of them
1546
+ > playing each of the seven sheets, with all seven of my own sheets AND the full
1547
+ > nine-rung concentration ladder tried against every combination. C is
1548
+ > `carrier`, F is `finisher`; a cell names every sheet the sample cannot
1549
+ > separate from that cell's leader. A second focal squad runs the same grid:
1550
+ > `role-433`, the hard case, since its three forwards are identical to the byte
1551
+ > and only cross-group reallocation is left — against the other five squads over
1552
+ > a reduced sheet set (`default`, `carrier`, `spread`), 30 further cells.
1553
+ > **Sample** — 10,000 matches per cell, home and away, SHA-256 seeds: 114
1554
+ > squad-by-sheet-by-mode cells, 14,700,000 matches in this section alone.
1555
+ > **Mode** — League shown. The Knockout grid differs in three `def-433` cells
1556
+ > and nowhere else: it ties `carrier` with `finisher` against `carrier`,
1557
+ > `finisher` and `tier`, where League resolves, and resolves against `sheet`,
1558
+ > where League ties. `def-532` is C/F in all fourteen of its cells in both modes.
1559
+ > **Effect** — 0 cells out of 114 exclude `carrier` from the best-response band,
1560
+ > and the ladder's argmax is the TOP rung in all 84 cells where it was swept: 84
1561
+ > ends, 0 interior optima, 0 unresolved, and 84 with no significant step
1562
+ > downward at any rung along the way. The distinct raw best-response count is
1563
+ > 2, and the three cells where `finisher` edges ahead on the raw number are all
1564
+ > `def-532` in Knockout, by 0.1 to 0.2 points of share against a 2.74-point
1565
+ > threshold. Every cell of the second focal squad's grid reads C/F, which is the
1566
+ > permutation control showing through rather than a conditional answer:
1567
+ > `role-433`'s slot 8 and slot 10 are the same player twice, differing only in
1568
+ > the penalty-kicker flag. So one sheet is a best response against every
1569
+ > squad-and-sheet combination measured, and concentrating harder is better in
1570
+ > every one of them.
1571
+ > **Source** — `appr-role.mts`, section (6).
1572
+
1573
+ ### The other half of the table — defensive selection weights
1574
+
1575
+ `D_*_APPR` picks who contests each scene, and the same multiplier applies there.
1576
+ It is a comparably large lever and it points somewhere surprising.
1577
+
1578
+ | Defensive focal slot | ×1 | ×1024 | League | Knockout |
1579
+ | --- | --- | --- | --- | --- |
1580
+ | `stars-433` slot 8 — FW, defense 5, **29 pts** | 37.2 | **52.0** | **+14.8pp** | **+18.7pp** |
1581
+ | `stars-433` slot 1 — DF, defense 5, 12 pts | 37.2 | 37.8 | +0.6pp | +0.9pp |
1582
+ | `def-433` slot 2 — DF, **defense 9**, 20 pts | 52.4 | 57.1 | +4.7pp | +5.3pp |
1583
+ | `def-433` slot 8 — FW, defense 2, 19 pts | 52.4 | 17.7 | −34.7pp | −35.5pp |
1584
+
1585
+ > **Measured on** — `stars-433` and `def-433`, each against `role-433` playing
1586
+ > the shipped weights. The multiplier is applied to the DEFENSIVE table in every
1587
+ > scene; the keeper's A0 weight is the one entry left alone, and the offensive
1588
+ > table is untouched in all four rows. Both focal squads keep their 212 points
1589
+ > and their formations across every cell.
1590
+ > **Sample** — 10,000 matches per cell, home and away, SHA-256 seeds.
1591
+ > **Mode** — both, one column each. As in the concentration table, the ×1 and
1592
+ > ×1024 columns are League shares and the League/Knockout columns are the paired
1593
+ > delta from that mode's own ×1 cell.
1594
+ > **Effect** — 14.8 percentage points of share in League and 18.7 in Knockout
1595
+ > for funnelling defensive duty onto `stars-433`'s biggest FORWARD, against
1596
+ > +0.6pp for its nominal defender. Every defensive point is
1597
+ > `defense + cond/2 + total/3`, so a 29-point forward with defense 5 outscores a
1598
+ > 12-point defender with defense 5 by more than five points before any group
1599
+ > term. On `def-433`, whose totals are flat, the answer reverts to the defender
1600
+ > with the highest `defense` (+4.7pp) and the forward becomes catastrophic
1601
+ > (−34.7pp). **0 of the 8 defensive ladders have a significant interior
1602
+ > optimum; 7 peak at an end and 1 peaks inside without separating from a
1603
+ > neighbour.**
1604
+ > **Source** — `appr-role.mts`, section (7).
1605
+
1606
+ ### Degrees of freedom this probe LEFT free
1607
+
1608
+ The keeper section below was wrong three times in one day and the cause was a
1609
+ different uncontrolled degree of freedom each time. So, explicitly, and knowing
1610
+ that the verdict under this list is a NEGATIVE one — the things left free are
1611
+ the ways it could be wrong:
1612
+
1613
+ - **`cond`.** Fixed at 5 for all 22 players in every cell, as production does
1614
+ today. **This is the load-bearing one.** Concentration here has no cost
1615
+ because involvement has no cost; an involvement-driven form system is exactly
1616
+ the change that would put a price on the ×1024 column, and it would invalidate
1617
+ every row above rather than shift it.
1618
+ - **Growth buffs.** Every squad is tenure 0, so `teamPow` is exactly 100.
1619
+ Production raises effective `total`, which scales BOTH the individual `total/3`
1620
+ and the group term the anti-concentration section measures — so the 5.4pp that
1621
+ section reports is a tenure-0 figure.
1622
+ - **Manager response.** The opponent grid is fixed and nobody re-solves a squad
1623
+ against a sheet. A squad built KNOWING it will funnel one player is a
1624
+ different 212-point problem, and it is not measured here: the co-optimisation
1625
+ of points and weights would only make the effect larger, which is not the
1626
+ direction that would rescue the axis.
1627
+ - **The sheet space.** Seven hand-built sheets and one nine-rung ladder per
1628
+ slot. That is a sample of a space with eleven slots × six scenes of free
1629
+ parameters, not an argmax over it. "No cycle among these seven" and "one best
1630
+ response over the crossed grid" are both claims about these seven — a
1631
+ conditional best response living outside them would read as an answer here.
1632
+ - **The focal squads.** Two, and only one of them (`stars-433`) has players who
1633
+ differ inside a position group at all, so the within-group half of this axis
1634
+ is measured on one roster. The crossed grid runs `role-433` as a second focal
1635
+ squad, but over a reduced opponent-sheet set and with a formation and a set of
1636
+ kicker flags it shares with the first. **Which** player to funnel is already
1637
+ known to be squad-conditional — the defensive table above reverses its answer
1638
+ between `stars-433` and `def-433` — and nothing here says the best focal SLOT
1639
+ is the same on a roster neither squad resembles. What the grid does support is
1640
+ narrower and is what the verdict uses: whether to concentrate at all does not
1641
+ depend on the opponent.
1642
+ - **Set-piece slots.** `squad-lib` pins the FK taker to slot 9 and the penalty
1643
+ taker to slot 10. Slot 10 appears above as a focal player, so its rows carry
1644
+ kicker duty as well as its weight — slot 8, the headline row, carries neither.
1645
+ - **Formation.** Every focal squad is a 4-3-3. The lone-OMF result is a fact
1646
+ about a group of one, and a 4-4-2 would not reproduce it.
1647
+ - **Interactions.** One sheet at a time against the default. Nothing here says
1648
+ what a role sheet does while an engine constant is also moved.
1649
+ - **The defensive keeper slot.** Section (7) leaves the keeper's A0 weight at
1650
+ 100 in every cell. Whether a manager should be able to keep his keeper OUT of
1651
+ the 1v1 is a question this probe does not ask.
1652
+
1653
+ ### The verdict, and what it means for tactical sheets
1654
+
1655
+ **Detectable: overwhelmingly.** Up to 35.8 points of win-equivalent share on one
1656
+ squad whose 212 points never change, and 76.0% head to head against the same
1657
+ eleven players on the default sheet. Every other section of this file measures a
1658
+ lever by changing the players; this one changes nothing except which of them the
1659
+ ball reaches, and moves more than any of them. The engine-constant sweep — the
1660
+ only other section that holds a squad fixed — moved 11.8pp at its widest and
1661
+ re-priced nothing.
1662
+
1663
+ **A decision: no.** Every diagnostic points the same way. 0 of 50 ladders in the
1664
+ one-opponent sections have a significant interior optimum — 48 peak at an end,
1665
+ the remaining 2 peak inside without separating from a neighbour — 84 of 84
1666
+ ladders swept INSIDE a crossed cell peak at the top rung with nothing
1667
+ unresolved, and all 134 ladders in the run are free of any significant step
1668
+ against their own direction. The anti-concentration term is real but worth about a seventh of the
1669
+ payoff, and it changes the slope without changing the answer. The round robin
1670
+ finds zero 3-cycles in either mode and an unbeaten set of two sheets 1.4 points
1671
+ of share apart. And the crossed grid — every opponent squad against every
1672
+ opponent sheet, on two focal squads, 114 cells — never once excludes `carrier`
1673
+ from the best-response band. **Concentration is monotone: more is better, up to
1674
+ the corner, against every squad and every sheet measured.**
1675
+
1676
+ So the axis is not a decision *yet*, and the word doing the work is `cond`. The
1677
+ reason concentration is free is that involvement costs nothing — the eleventh
1678
+ selection of a player is exactly as good as his first, because `cond` is a
1679
+ constant. That is what a form system changes, and it is the one change that
1680
+ could put an interior optimum on these ladders. **Roles before form would ship
1681
+ the largest monotone answer in the game.**
1682
+
1683
+ Two things in the tables above survive that verdict and are worth keeping:
1684
+
1685
+ - **Scene shape is where the interesting half lives.** The same multiplier on
1686
+ the same player is worth +4.7pp or −6.0pp depending only on which scenes it
1687
+ applies to, and the best focal player is the best PASSER rather than the best
1688
+ finisher. Whatever a sheet eventually exposes, a single "involvement" slider
1689
+ would throw both away.
1690
+ - **The defensive table is a second lever of the same size and nobody has looked
1691
+ at it.** On a squad with uneven totals the best defender to funnel duty to is
1692
+ the biggest FORWARD, because `total/3` is in every defensive point. That is
1693
+ either a feature to expose or a formula to reconsider, and it is decided by
1694
+ the same track.
1695
+
1696
+ Re-run after any engine change:
1697
+
1698
+ ```bash
1699
+ npx tsx packages/mcp/skill/reference/probes/appr-role.mts # ~21M matches, ~4 min
1700
+ N=2000 npx tsx … # ~50s; the bar is fixed, the detectable EFFECT moves
1701
+ ```
1702
+
1703
+ ---
1704
+
1231
1705
  ## Note for the maintainers
1232
1706
 
1233
1707
  > **2026-08-19: this note was rewritten twice in one day.** First it said the