pog-mcp 0.9.1 → 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 +1 -1
- package/skill/reference/measurements.md +1056 -0
package/package.json
CHANGED
|
@@ -644,6 +644,1062 @@ secondary edge on top. An agent that only differentiates its roles and never
|
|
|
644
644
|
touches the keeper beats a naive squad 44.0% of the time and loses 9.7% — better
|
|
645
645
|
than four wins to one loss, with the rest drawn.
|
|
646
646
|
|
|
647
|
+
## Which engine constant is a detectable lever? (`constant-sweep.mts`)
|
|
648
|
+
|
|
649
|
+
Every other section here sweeps a SQUAD and holds the rules fixed. This one does
|
|
650
|
+
the opposite. It pins a basket of published archetypes and moves the hardcoded
|
|
651
|
+
numbers in `packages/engine/src/engine.ts`, one at a time, because that is the
|
|
652
|
+
shape a "weekly rule" would ship: one global constant moved for everybody.
|
|
653
|
+
|
|
654
|
+
The statistic is not "did the game change" — that is easy — but **"did the
|
|
655
|
+
ordering of squads change"**. A rule that makes every match higher-scoring
|
|
656
|
+
without moving anyone's best answer is a texture knob, not a lever.
|
|
657
|
+
|
|
658
|
+
**How the sweep reaches a `const`.** `engine.ts` is read, one exact string is
|
|
659
|
+
replaced (the match count is asserted, so an engine edit fails the probe loudly
|
|
660
|
+
instead of silently sweeping nothing), its two relative imports are rewritten to
|
|
661
|
+
absolute paths, and the result is written to a `mkdtemp` directory and imported.
|
|
662
|
+
Nothing is written inside the repository. `fair` needs no patch: production never
|
|
663
|
+
sets it — there is no `fair:` outside the engine's own tests, and every engine
|
|
664
|
+
input is built from an explicit field list — so it is a global constant in
|
|
665
|
+
practice, and setting it on both squads IS the rule change.
|
|
666
|
+
|
|
667
|
+
**Not swept: the zone-press coefficient.** Its selector is broken — every
|
|
668
|
+
candidate weight is `0.0`, so `weightedPick` falls back to "the first non-GK
|
|
669
|
+
slot" — and a coefficient in front of an undefined selection measures nothing.
|
|
670
|
+
Forbidden until the selector is decided.
|
|
671
|
+
|
|
672
|
+
### The statistic, and why not the obvious one
|
|
673
|
+
|
|
674
|
+
Rows below are in **win-equivalent share**: a win is 1, a draw is 0.5, a loss is
|
|
675
|
+
0, and every match counts. The obvious alternative — win rate among DECIDED
|
|
676
|
+
matches — conditions on something the swept constants themselves move. Free-kick
|
|
677
|
+
occurrence takes the regulation draw rate from 57.9% to 38.1% across its range,
|
|
678
|
+
so a decided-only percentage mixes "who wins more" with "which matches got
|
|
679
|
+
decided at all". It also inflates the number the activation gate is read
|
|
680
|
+
against: an 11/80/9 record reads 55% decided, clearing a +5pp gate, while the
|
|
681
|
+
squad's actual advantage over all matches is one point. The gate's own
|
|
682
|
+
justification is stated in weekly LEAGUE POINTS, so the statistic it is compared
|
|
683
|
+
to has to include the draws that earn them.
|
|
684
|
+
|
|
685
|
+
Deltas are **paired**. Every condition replays one seed column, so the default
|
|
686
|
+
cell and the swept cell are matched match for match, and the test differences
|
|
687
|
+
the columns rather than treating them as independent samples. An unpaired
|
|
688
|
+
denominator would only be safe if the residual covariance stayed positive, and a
|
|
689
|
+
rule that REVERSES a fixture is exactly where it need not — which would make the
|
|
690
|
+
unpaired test anti-conservative on the cells this probe most wants to be sure
|
|
691
|
+
about. (Both of these were review findings on the first version of this section,
|
|
692
|
+
which used decided-only percentages and an unpaired z.)
|
|
693
|
+
|
|
694
|
+
The same seed column is shared across the two MODES as well, and `gameFlg` is
|
|
695
|
+
read only after minute 90 — so a match decided in regulation keeps that result
|
|
696
|
+
in knockout mode, and the two modes' estimates are positively correlated. The
|
|
697
|
+
exposure-weighted test therefore does not add their errors in quadrature; it
|
|
698
|
+
takes the Cauchy-Schwarz upper bound, which is looser than the truth and cannot
|
|
699
|
+
be anti-conservative. That is the only direction an acceptance gate may err in.
|
|
700
|
+
|
|
701
|
+
### Controls
|
|
702
|
+
|
|
703
|
+
| Control | Result |
|
|
704
|
+
| --- | --- |
|
|
705
|
+
| Mirror, `gameFlg 0` (one squad against itself; true z = 0) | z **+0.31** |
|
|
706
|
+
| Mirror, `gameFlg 1` | z **+0.28** |
|
|
707
|
+
| Patch identity — the temp-dir pipeline at the SHIPPED values vs the stock engine | 1,000 matches identical |
|
|
708
|
+
| `fair` identity — `fair: 5` written out vs `fair` omitted | 1,000 matches identical |
|
|
709
|
+
| Paired alignment — a re-patched shipped-value engine vs the default COLUMN | 200,000 matches, largest per-match difference **0** |
|
|
710
|
+
| Counter trigger, swept 0% to 100% of eligible turnovers, in both baskets | must be REJECTED, and is — the run ABORTS if it is not |
|
|
711
|
+
|
|
712
|
+
**Every control in that table aborts the run; none of them warns.** A mirror
|
|
713
|
+
that fails is the condition that makes every table unreadable, and a negative
|
|
714
|
+
control that PASSES is an acceptance bar that has failed its own calibration.
|
|
715
|
+
Printing "bar too loose" and exiting 0 was itself a defect — an invalid run
|
|
716
|
+
could be consumed as a successful one.
|
|
717
|
+
|
|
718
|
+
One more number is counted every run, and it is a MEASUREMENT rather than a
|
|
719
|
+
control — nothing aborts on it, because a knockout draw is a legitimate outcome
|
|
720
|
+
to count rather than a failure:
|
|
721
|
+
|
|
722
|
+
| Measured every run | Result |
|
|
723
|
+
| --- | --- |
|
|
724
|
+
| Knockout draws, across both baskets | **0 in 5,440,000** knockout matches |
|
|
725
|
+
|
|
726
|
+
That draw count is a claim this section originally got wrong in the other
|
|
727
|
+
direction. It said knockout mode "has no draws by construction". It nearly does:
|
|
728
|
+
`runExtraTimeLoop` breaks a tie on INEQUALITY, so extra time either produces a
|
|
729
|
+
golden goal or falls through to a sudden-death shootout. But an earlier version
|
|
730
|
+
of that check read "a score changed", and one attack CAN score for both sides —
|
|
731
|
+
a post-play layoff gives a second shot, and a `gk_catch` can launch a counter
|
|
732
|
+
that scores — which ended extra time level and skipped the shootout. The
|
|
733
|
+
constants swept here move goal production, which is exactly what that path keyed
|
|
734
|
+
on, so the column is counted every run instead of declared.
|
|
735
|
+
|
|
736
|
+
The patch-identity control is the one this section could not do without: without
|
|
737
|
+
it, "the constant did it" and "the import rewrite did it" are the same
|
|
738
|
+
observation. The alignment control is the one the PAIRED test could not do
|
|
739
|
+
without — a paired test cannot detect misaligned columns from its own output, so
|
|
740
|
+
a freshly patched shipped-value engine is required to reproduce the default
|
|
741
|
+
column match for match, in order.
|
|
742
|
+
|
|
743
|
+
3,400,000 matches in the narrow basket (5 archetypes, 10 fixtures, 10,000
|
|
744
|
+
matches each, 17 conditions, both modes) plus 7,480,000 in the wide one.
|
|
745
|
+
**Bonferroni over m = 8,320 pre-registered comparisons, two-sided: |z| >= 4.53.**
|
|
746
|
+
That m prices the SEARCHES, not just the tests. A gate cell does not spend one
|
|
747
|
+
hypothesis, and BOTH of its sides are data-chosen. The baseline side picks a
|
|
748
|
+
leader out of K and builds a band around it — noisy standings could have named
|
|
749
|
+
any of the K, so it could have surfaced any pair, K(K−1)/2, not just the K−1 the
|
|
750
|
+
leader it happened to pick needed. The swept side then reads a head-to-head
|
|
751
|
+
against that band, another K(K−1)/2. So K(K−1): **20 hypotheses per narrow gate
|
|
752
|
+
cell and 110 per wide one**, not 5 and 11. Every gate is also derived at all three
|
|
753
|
+
exposure weights, and all three are charged. On top of that sit the two fixture
|
|
754
|
+
families: the narrow basket's 10 fixtures and the wide basket's 55, at every
|
|
755
|
+
swept value — without the second, an axis could be called INERT while
|
|
756
|
+
significantly moving fixtures among the six archetypes the wide basket exists to
|
|
757
|
+
cover.
|
|
758
|
+
|
|
759
|
+
**The bar is a z and does not move with the sample size; the effect it
|
|
760
|
+
corresponds to does.** There are two test families here and they have different
|
|
761
|
+
answers — the fixture deltas are a PAIRED test between two conditions, the
|
|
762
|
+
activation gate is a ONE-SAMPLE test of a head-to-head share, and their standard
|
|
763
|
+
errors are unrelated. For the fixture deltas, per basket (they run at different
|
|
764
|
+
N, so averaging would let the better-powered one speak for the other):
|
|
765
|
+
|
|
766
|
+
Two numbers, because they are two different things. `bar x SE` is the effect
|
|
767
|
+
whose EXPECTED z equals the cutoff — a significance threshold at about 50%
|
|
768
|
+
power, not a minimum detectable effect. The 80%-power figure adds z(0.80):
|
|
769
|
+
|
|
770
|
+
| median / worst | significance threshold | 80%-power effect |
|
|
771
|
+
| --- | --- | --- |
|
|
772
|
+
| narrow, regulation | 1.0 / 2.2pp | 1.2 / 2.6pp |
|
|
773
|
+
| narrow, knockouts | 1.8 / 3.0pp | 2.1 / 3.6pp |
|
|
774
|
+
| wide, regulation | 1.8 / 3.8pp | 2.1 / 4.5pp |
|
|
775
|
+
| wide, knockouts | 2.9 / 4.8pp | 3.4 / **5.7pp** |
|
|
776
|
+
|
|
777
|
+
Read the worst column, not the median, since "every test is powered enough" is a
|
|
778
|
+
claim about the tail — and read it honestly: **the worst wide-knockout fixture
|
|
779
|
+
cell is not powered to catch a 5pp effect at 80%.** Every other cell is. That
|
|
780
|
+
qualification applies to the MARGINS classification, which is what the fixture
|
|
781
|
+
deltas decide; the gate is a different test, and its own answer is below.
|
|
782
|
+
|
|
783
|
+
For the gate itself the answer is different and sharper: **no pair was ever
|
|
784
|
+
formed.** At every swept value, in both baskets, the new optimum was already
|
|
785
|
+
inside the default band, so there was nothing to test.
|
|
786
|
+
|
|
787
|
+
So the gate has no power line to print in THIS run. It has one for a rerun that
|
|
788
|
+
does form a pair, and it reports the same two quantities as the table above plus
|
|
789
|
+
a warning when the 80%-power effect exceeds the 5pp gate itself — because a pair
|
|
790
|
+
that just misses under an SE that wide is underpowered, not refuted. Forcing a
|
|
791
|
+
band of one makes both branches fire, which is how they were checked: the wide
|
|
792
|
+
basket lands at a 7.1pp threshold and an 8.5pp 80%-power effect, i.e. above the
|
|
793
|
+
gate, and says so.
|
|
794
|
+
|
|
795
|
+
That only settles anything if the band is SHARP — noisy standings widen it, and
|
|
796
|
+
a wide enough band absorbs every new leader, which would be a power limitation
|
|
797
|
+
wearing the costume of a result. So the probe reports the band's own
|
|
798
|
+
discrimination: it holds **2 of the 5** narrow squads and **3 of the 11** wide
|
|
799
|
+
ones, with its edge **1.45pp** and **1.60pp** from the leader. A band that tight
|
|
800
|
+
is not swallowing the basket. That is the number a smaller rerun moves, and the
|
|
801
|
+
one to check before reusing this conclusion.
|
|
802
|
+
|
|
803
|
+
### The table
|
|
804
|
+
|
|
805
|
+
Basket: `role-433`, `def-433`, `def-532`, `shootonly-433`, `flat-433` — five
|
|
806
|
+
outfield templates, the shared `squad-lib.mts` builders, so a row here and a row
|
|
807
|
+
in the round-robin above are the same squads.
|
|
808
|
+
|
|
809
|
+
- **`sig`** — fixture deltas clearing the corrected bar, out of 40 in the narrow
|
|
810
|
+
basket (10 fixtures x 4 swept values) and out of 220 in the wide one (55 x 4).
|
|
811
|
+
Both are printed, because an axis can be classified on the wide basket's
|
|
812
|
+
evidence alone and a table that hid it would publish a verdict whose decisive
|
|
813
|
+
measurement is invisible.
|
|
814
|
+
- **`rev`** — of those, how many crossed 50%: the fixture's ANSWER flipped, not
|
|
815
|
+
just its margin.
|
|
816
|
+
- **`gate`** — the new optimum against the whole stale band, under the new rule:
|
|
817
|
+
the SMALLER of the two baskets' gains, and only if both are significant. In
|
|
818
|
+
WIN-RATE advantage points, the unit the plan writes its 5pp threshold in. Track 3.1 activates on this at +5pp, but **on an
|
|
819
|
+
exposure-weighted mix of the two modes, not per mode** — see below.
|
|
820
|
+
|
|
821
|
+
| Axis (shipped) | Mode | sig (narrow) | sig (wide) | rev | Largest narrow delta | gate | What that row leaves FREE |
|
|
822
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
823
|
+
| **FK occurrence** `rand(10)<1` | reg | 21/40 | 102/220 | 0 | **+11.8pp** `role-433` vs `flat-433` @x4 | none | the FK taker: every basket squad kicks from slot 9, so this is "more free kicks", never "more free kicks AND a better taker" |
|
|
824
|
+
| | ko | 18/40 | 100/220 | 0 | +8.8pp `def-532` vs `flat-433` @x4 | none — +7.5pp against `role-433` alone, 0.0pp against the band it belongs to | shootout exposure — it is a property of the PAIRING, and the basket fixes both halves |
|
|
825
|
+
| **Post play** `rand(10)<1.5` | reg | 18/40 | 50/220 | 0 | −4.8pp `role-433` vs `flat-433` @x4 | none | the PP2 shooter is drawn by `getPlayer`, so the row confounds "more post plays" with "who the draw lands on" |
|
|
826
|
+
| | ko | 5/40 | 40/220 | 0 | −3.4pp `role-433` vs `shootonly-433` @x4 | none | same, plus FW count: 433 and 532 field three and two forwards, and `fwIdx.length` gates the branch |
|
|
827
|
+
| **Counter** `THRESHOLD=5` | reg | 3/40 | 5/220 | 0 | −2.0pp `shootonly-433` vs `flat-433` @0% | none | the four sampled thresholds span 0% to 100%, but changing this constant reroutes RNG consumption, so outcomes need not interpolate between them |
|
|
828
|
+
| | ko | **0/40** | 7/220 | 0 | −1.2pp (below bar) | none | as above. This is the control: it never produced a gate in either basket, which is the only behaviour that matters here |
|
|
829
|
+
| **`fair`** default 5 | reg | 13/40 | 37/220 | **1** | **+10.9pp** `shootonly-433` vs `flat-433` @22 | none | `fair` is uniform across all 22 players here; per-player or per-position `fair` is a different (and unmeasured) axis |
|
|
830
|
+
| | ko | 7/40 | 23/220 | 0 | +10.9pp `shootonly-433` vs `flat-433` @22 | none | keeper `defense`, which every extra penalty routes through — held fixed inside each template |
|
|
831
|
+
|
|
832
|
+
**Nothing here becomes a candidate.** All eight rows move margins somewhere — the
|
|
833
|
+
control included, once the wide basket is counted — and
|
|
834
|
+
the one pairing that re-prices anything does so against a squad that was already
|
|
835
|
+
tied for best. The pass set at the plan's own activation gate is empty over both
|
|
836
|
+
baskets, and the answer took a day rather than a release.
|
|
837
|
+
|
|
838
|
+
**Empty for these four axes, which is not the same as empty for the pool.** The
|
|
839
|
+
plan's weekly-rule pool also names set-piece `dBonus`, penalty attack noise, and
|
|
840
|
+
base `dBonus`; none of them is swept here, and this run says nothing about them.
|
|
841
|
+
The axes measured are the ones the issue behind this section listed — the two
|
|
842
|
+
hardcoded rates, `fair`, and the counter control. Anyone reading this as
|
|
843
|
+
"schedule nothing" should read it as "schedule none of these four, and go
|
|
844
|
+
measure the other three before concluding anything about the pool."
|
|
845
|
+
|
|
846
|
+
The verdict is deliberately absent from the rows above: it belongs to the AXIS,
|
|
847
|
+
not to a mode. The next section is where it is issued.
|
|
848
|
+
|
|
849
|
+
### Activation is per AXIS, not per mode
|
|
850
|
+
|
|
851
|
+
The gate is specified on an exposure-weighted mode mix, and the two modes are
|
|
852
|
+
nowhere near equally exposed: the ladder has no cap beyond a five-minute
|
|
853
|
+
cooldown, while the cup runs once a day. **Cup entry is the top 48 of the whole
|
|
854
|
+
ladder, ACROSS divisions** — division decides weekly matchmaking, not cup
|
|
855
|
+
access, so what actually zeroes a manager's knockout exposure is never
|
|
856
|
+
QUALIFYING, at any division. A rule that clears 5pp in knockouts alone has not
|
|
857
|
+
cleared the gate, and reading the verdict per mode would say it had. The weight
|
|
858
|
+
below is a regular qualifier's day: **1.33 / (1.33 + 12 + 3) = 0.081** — 1.33
|
|
859
|
+
knockout matches against 12 ladder matches AND the cup's own three group-stage
|
|
860
|
+
matches, which are played in regulation mode and so belong in the denominator
|
|
861
|
+
too. Leaving them out gives 0.100 and overweights the knockout evidence.
|
|
862
|
+
`KO_EXPOSURE` is an argument, and the sensitivity below is why the choice does
|
|
863
|
+
not matter here.
|
|
864
|
+
|
|
865
|
+
**One value per row: the one that got FURTHEST through the ordered gates.** That is the same thing as "the best schedulable value" only when nothing blocks it, and here everything is blocked. A weekly rule ships one
|
|
866
|
+
global number, so pairing regulation's best value with knockout's best would
|
|
867
|
+
price a rule nobody can schedule — and could clear 5pp when no real value does.
|
|
868
|
+
For the same reason the row is not simply the biggest number: a value blocked on
|
|
869
|
+
one gate must not hide a smaller value that passes them all.
|
|
870
|
+
|
|
871
|
+
**And one SQUAD per row.** A manager fields one build across a schedule that is
|
|
872
|
+
mostly ladder and partly cup; the same eleven cover both. So the mix is applied
|
|
873
|
+
to each squad's season first, and the optimum and the stale band are read off
|
|
874
|
+
that one weighted table — averaging two separate per-mode contrasts would price
|
|
875
|
+
an improvement no single squad achieves.
|
|
876
|
+
|
|
877
|
+
**The wide basket vetoes; it does not compete.** Its eleven archetypes CONTAIN
|
|
878
|
+
the narrow five (the probe refuses to run if they ever stop containing them), so
|
|
879
|
+
a stale response that survives there is a build the manager could actually have
|
|
880
|
+
fielded, and it disproves a re-pricing the smaller set claimed. Taking whichever
|
|
881
|
+
basket happened to pass would let a subset's claim stand against its own
|
|
882
|
+
superset's counter-example, so the gate takes the smaller of the two gains — and
|
|
883
|
+
requires BOTH to be significant, rather than inheriting significance from
|
|
884
|
+
whichever had the smaller point estimate.
|
|
885
|
+
|
|
886
|
+
Track 3.1 has four activation gates, not one — a gain threshold, evidence, "no
|
|
887
|
+
dominant build", and draw-rate and goals-per-match bands. All four are applied
|
|
888
|
+
here, and the third is applied in TWO pieces because only one of them is
|
|
889
|
+
decidable.
|
|
890
|
+
|
|
891
|
+
The plan states that gate twice: absolutely ("no dominant build") and as a
|
|
892
|
+
change ("dominance must not increase"). The absolute form is testable and is
|
|
893
|
+
tested — `domAbs`, one squad significantly beating every other in the wide
|
|
894
|
+
basket, refused at the corrected bar. The change form is not. `dom` is a
|
|
895
|
+
difference of two standardised pairwise z-scores, which carries SD ~1.4 at ANY
|
|
896
|
+
sample size, so a literal "> 0" would refuse half of all rules that changed
|
|
897
|
+
nothing, and no amount of simulation shrinks that. Nor can the difference be
|
|
898
|
+
paired away: the leader and its weakest opponent are argmax and argmin picks
|
|
899
|
+
that can change IDENTITY between the two conditions, so there is no fixed pair
|
|
900
|
+
to difference. What this probe does instead is a 2-sigma DIRECTION screen at
|
|
901
|
+
+3.0. It refuses far more than a corrected test would — that would sit near 6.4
|
|
902
|
+
— which is the safe direction for a gate whose job is to refuse. It is a
|
|
903
|
+
heuristic, it says so in the probe's own legend, and it is not the plan's
|
|
904
|
+
sentence. The plan does not put numbers on the feel bands, so the ones
|
|
905
|
+
used are the probe's declared defaults (|draw| <= 5pp, |goals| <= 20%,
|
|
906
|
+
overridable) and every row prints its measured movement so a different band can
|
|
907
|
+
be applied to the same table by eye.
|
|
908
|
+
|
|
909
|
+
**The gate is measured against the whole stale optimum, not one member of it.**
|
|
910
|
+
Where the default standings do not resolve a single best build — and in knockout
|
|
911
|
+
mode they do not, `role-433` and `gkheavy-433` are not separated — the manager
|
|
912
|
+
who never re-solves could already have been on any squad in that band. Crediting
|
|
913
|
+
a rule for a switch that was free at the shipped rule would be measuring the
|
|
914
|
+
tie, not the rule. So the gain is the WORST margin against the whole band, and a
|
|
915
|
+
new leader drawn FROM the band scores zero by construction.
|
|
916
|
+
|
|
917
|
+
| Axis | Best value | Gate (ko weight 0.081) | dom | domAbs | draw | goals | Blocked by |
|
|
918
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
919
|
+
| FK occurrence | x0.25 | **0.00pp** | +0.4 | 0.4 | **+5.1pp** | −16% | gain — and it would also fail the draw band |
|
|
920
|
+
| Post play | x0.25 | **0.00pp** | −0.1 | 0.0 | −1.0pp | +3% | gain |
|
|
921
|
+
| Counter (control) | 0% | **0.00pp** | +0.7 | 0.9 | +1.4pp | −6% | gain |
|
|
922
|
+
| `fair` | 1 | **0.00pp** | +0.5 | 0.6 | +3.6pp | −12% | gain |
|
|
923
|
+
|
|
924
|
+
`dom` is the CHANGE in the leader's weakest margin; `domAbs` is that margin
|
|
925
|
+
itself, in the eleven-archetype basket. Both block, and the two are not
|
|
926
|
+
interchangeable: a rule that leaves an already-dominant squad exactly where it
|
|
927
|
+
stood scores a `dom` near zero while failing the requirement outright, which is
|
|
928
|
+
why the absolute column exists at all. `domAbs` is the one carrying the plan's
|
|
929
|
+
sentence — at or past the corrected bar, the same |z| the rest of this section
|
|
930
|
+
uses, 4.53 at these sample sizes, one squad significantly beats every other,
|
|
931
|
+
which is what a dominant build is. `dom` is the direction screen described
|
|
932
|
+
above, at a threshold this probe declares rather than quotes.
|
|
933
|
+
|
|
934
|
+
Both are computed on the exposure-WEIGHTED season, from weighted head-to-heads
|
|
935
|
+
at the activation weight. Taking the larger of the two pure modes does not cover
|
|
936
|
+
the mix: a squad's margins against different opponents are each linear in the
|
|
937
|
+
weight, so the minimum of them can peak at an interior crossing even when the
|
|
938
|
+
squad dominates at neither endpoint.
|
|
939
|
+
|
|
940
|
+
**Every gate is zero, and the reason is sharper than "the effects are small".**
|
|
941
|
+
The one cell that re-prices anything — FK x0.25 in knockouts — promotes
|
|
942
|
+
`gkheavy-433`, which was already tied for best at the shipped rule. A manager
|
|
943
|
+
sitting on it gains nothing from the rule; a manager sitting on `role-433` could
|
|
944
|
+
have switched for free before the rule existed. Nothing here beats what was
|
|
945
|
+
already available.
|
|
946
|
+
|
|
947
|
+
And the exposure weight — the one judgement call in this section — does not
|
|
948
|
+
carry it. The probe re-derives the GAIN at both extremes rather than asserting
|
|
949
|
+
the choice does not matter. (Only the gain; dominance, feel and fixture movement
|
|
950
|
+
are worst-of-both-modes by design and are not re-evaluated per weight, so this
|
|
951
|
+
table is not four verdicts.)
|
|
952
|
+
|
|
953
|
+
| Axis | Ladder-only (w=0) | Mixed (w=0.081) | Knockout-only (w=1) |
|
|
954
|
+
| --- | --- | --- | --- |
|
|
955
|
+
| FK occurrence | 0.00pp | 0.00pp | 0.00pp |
|
|
956
|
+
| Post play | 0.00pp | 0.00pp | 0.00pp |
|
|
957
|
+
| Counter (control) | 0.00pp | 0.00pp | 0.00pp |
|
|
958
|
+
| `fair` | 0.00pp | 0.00pp | 0.00pp |
|
|
959
|
+
|
|
960
|
+
Those three points do not settle the interior on their own: each squad's
|
|
961
|
+
weighted score is linear in the weight, the leader is their upper envelope, and
|
|
962
|
+
an envelope can hand the lead to a THIRD squad only somewhere in the middle. Nor
|
|
963
|
+
does a grid settle it — an interval can be narrower than the step.
|
|
964
|
+
|
|
965
|
+
So the interior is **solved**. Everything the gate reads is linear in the
|
|
966
|
+
weight, which makes all three of its boundaries enumerable:
|
|
967
|
+
|
|
968
|
+
- where two squads' win-equivalent shares cross — the leader changes;
|
|
969
|
+
- where a leader's lower edge meets a candidate's upper edge — the stale band
|
|
970
|
+
changes;
|
|
971
|
+
- where two head-to-head margins in one row cross — the gate takes a MINIMUM
|
|
972
|
+
over the band, so the controlling member switches there, and a minimum of
|
|
973
|
+
lines attains its maximum at exactly such a kink.
|
|
974
|
+
|
|
975
|
+
The boundaries of BOTH baskets go into one set, because the activation rule
|
|
976
|
+
reads both at the same weight and takes the smaller gain — solving each basket
|
|
977
|
+
on its own grid answers a different question. Evaluating every boundary, and
|
|
978
|
+
inside every resulting interval its midpoint plus both ONE-SIDED limits (the
|
|
979
|
+
gain jumps where the leader changes, so a shared endpoint reports the wrong
|
|
980
|
+
squad), plus the weights where the two baskets' gain lines cross — that is where
|
|
981
|
+
`min(narrow, wide)` peaks when their slopes oppose — comes to 9,816 probe
|
|
982
|
+
weights across every value:
|
|
983
|
+
|
|
984
|
+
> **The largest gain reachable at ANY exposure weight is 0.00pp**, against a 5pp
|
|
985
|
+
> threshold. At all 9,816 probe weights the swept optimum was already inside the
|
|
986
|
+
> default band in at least one basket.
|
|
987
|
+
|
|
988
|
+
That statement deliberately carries no significance claim, and does not need
|
|
989
|
+
one: a gain that never reaches the threshold cannot clear the gate at any bar.
|
|
990
|
+
Which also keeps the search honest — those thousands of data-derived weights are
|
|
991
|
+
not in the Bonferroni count, so a "significant" result selected from among them
|
|
992
|
+
would be a hypothesis nobody paid for. Reporting the maximum instead needs no
|
|
993
|
+
correction at all. (If a rerun ever pushes that maximum ABOVE the threshold, the
|
|
994
|
+
probe says so and stops claiming it: the satisfying set of the full predicate
|
|
995
|
+
can be a narrow off-centre segment, and finding it would need its own boundaries
|
|
996
|
+
solved and charged.)
|
|
997
|
+
|
|
998
|
+
The boundaries are solved rather than sampled because sampling got this wrong
|
|
999
|
+
twice on the way here. A 0.02 grid reported 0.00pp; solving only some of the
|
|
1000
|
+
boundary families reported 2.70pp; solving all of them but maximising per basket
|
|
1001
|
+
reported 2.87pp — and applying the veto at a common weight, which is what the
|
|
1002
|
+
gate actually does, brings it back to 0.00pp. Each of those was a different
|
|
1003
|
+
question, and only the last one is the gate's.
|
|
1004
|
+
|
|
1005
|
+
`dom`, `draw` and `goals` are the WORST of the two baskets, deliberately — not
|
|
1006
|
+
the basket that supplied the gain. The gate asks "did anything get re-priced";
|
|
1007
|
+
those columns ask "at what cost to the field", and the second question is not
|
|
1008
|
+
scoped to the first one's basket.
|
|
1009
|
+
|
|
1010
|
+
**A pass here would still not mean "schedule it."** The probe's best outcome is
|
|
1011
|
+
`CANDIDATE`, not `REPRICES`: track 3.1's gauntlet additionally requires a result
|
|
1012
|
+
to hold at growth buff 0 AND max, and to split the ACTUAL top-N live squads into
|
|
1013
|
+
two or more distinct best responses. Every squad here is tenure 0 and
|
|
1014
|
+
hand-built, so this probe structurally cannot run either check — it names them
|
|
1015
|
+
on every run instead of implying it did.
|
|
1016
|
+
|
|
1017
|
+
**And the near miss is not a near miss.** FK x0.25 fails the gain gate outright —
|
|
1018
|
+
0.00pp, because the build it promotes was already inside the default band — and
|
|
1019
|
+
it would fail the draw band too, at +5.1pp against a +/-5pp limit. Its dominance
|
|
1020
|
+
is fine on the weighted season (+0.4 change, 0.4 absolute), which is worth
|
|
1021
|
+
stating precisely: an earlier version of this section read dominance off the two
|
|
1022
|
+
pure modes and reported +4.4, and that was an artefact of not weighting. The
|
|
1023
|
+
candidate that looked closest to shippable still fails, but on the gain and the
|
|
1024
|
+
feel band, not on concentration.
|
|
1025
|
+
|
|
1026
|
+
### What the control calibrates
|
|
1027
|
+
|
|
1028
|
+
The counter trigger is in this sweep to check that the bar rejects things, and
|
|
1029
|
+
under a paired test it is **not** inert: 3 of 40 narrow fixture deltas clear the
|
|
1030
|
+
bar, and 12 of 440 across the wide basket's two modes. They are small — and no
|
|
1031
|
+
value of it ever produced a gate, in either basket, at any exposure weight. That
|
|
1032
|
+
is the useful result:
|
|
1033
|
+
|
|
1034
|
+
> **MARGINS means "detectable", not "worth shipping".** A knob that gates 3.9%
|
|
1035
|
+
> of goals reaches MARGINS at this sample size. The class that separates a lever
|
|
1036
|
+
> from a texture knob is the gate, not significance.
|
|
1037
|
+
|
|
1038
|
+
It also supplies a floor. In the NARROW basket — same N, same ten fixtures on
|
|
1039
|
+
both sides, the only comparison here that is apples to apples — the largest
|
|
1040
|
+
movement this known non-lever produces is **2.0pp**. Anything a candidate does
|
|
1041
|
+
that is not comfortably above that is not distinguishable from what a knob
|
|
1042
|
+
nobody would ship already does:
|
|
1043
|
+
|
|
1044
|
+
| Axis | Mode | Largest fixture move | vs the control's 2.0pp |
|
|
1045
|
+
| --- | --- | --- | --- |
|
|
1046
|
+
| FK occurrence | reg | 11.8pp | **6.0x** |
|
|
1047
|
+
| FK occurrence | ko | 8.8pp | **4.4x** |
|
|
1048
|
+
| `fair` | reg | 10.9pp | **5.5x** |
|
|
1049
|
+
| `fair` | ko | 10.9pp | **5.5x** |
|
|
1050
|
+
| Post play | reg | 4.8pp | 2.4x |
|
|
1051
|
+
| Post play | ko | 3.4pp | **1.7x** — the closest any candidate comes to the floor |
|
|
1052
|
+
|
|
1053
|
+
The probe flags a row as indistinguishable from the control below **1.5x**, so
|
|
1054
|
+
post play in knockouts clears that line — but only just, and by less than any
|
|
1055
|
+
other candidate-mode pair in the table.
|
|
1056
|
+
|
|
1057
|
+
The control is swept in BOTH baskets — that is what the gate needs — but this
|
|
1058
|
+
ratio is deliberately narrow-only on both sides. It compares a MAXIMUM over a
|
|
1059
|
+
family of cells, and the two baskets run at different N over different
|
|
1060
|
+
membership, so a cross-basket maximum grows with whichever family has more cells
|
|
1061
|
+
and less power rather than with whichever axis moves more. Mixing them swung
|
|
1062
|
+
these ratios by a factor of two between runs that changed no measurement.
|
|
1063
|
+
|
|
1064
|
+
### Per axis, what actually moved
|
|
1065
|
+
|
|
1066
|
+
**FK occurrence is the strongest axis, and what it does is CONCENTRATE.** From
|
|
1067
|
+
2.5% to 40% the regulation draw rate runs 57.9% -> 52.8% (shipped) -> 38.1% and
|
|
1068
|
+
goals per match 0.653 -> 0.779 -> 1.288. Every large delta at x4 has the same
|
|
1069
|
+
shape: the differentiated squads pull away from `flat-433` (`role-433` vs
|
|
1070
|
+
`flat-433` 68.4% -> 80.2% of the win-equivalent share). Turning it DOWN
|
|
1071
|
+
compresses the field instead — `flat-433`'s points per match rises 0.769 ->
|
|
1072
|
+
0.842 while every other squad's falls. So the axis is a skill-expression dial:
|
|
1073
|
+
more free kicks means more of the match decided by who invested, less means more
|
|
1074
|
+
of it decided by nothing. Turning it down therefore costs on both feel gates at
|
|
1075
|
+
once — more draws AND fewer goals — and in knockouts alone it also raises the
|
|
1076
|
+
leader's weakest margin from z 6.3 to 8.9, which points at concentration rather
|
|
1077
|
+
than rotation. Read that as the knockout-only reading it is: on the
|
|
1078
|
+
exposure-weighted season the same change is +0.4, well inside the direction
|
|
1079
|
+
screen, and the activation table above reports the weighted number.
|
|
1080
|
+
|
|
1081
|
+
**`fair` is the only axis that ROTATES demand rather than amplifying it.**
|
|
1082
|
+
Raising it from 4.5% to 100% moves `shootonly-433` from 1.127 to 1.302 points
|
|
1083
|
+
per match in regulation and 1.370 to 1.518 in knockouts, while `role-433` and
|
|
1084
|
+
`def-433` stand still — more fouls means more free kicks and penalties, and
|
|
1085
|
+
those are converted by `shoot`. It carries the run's single reversal: `role-433`
|
|
1086
|
+
vs `def-433` goes from **47.5%** at the shipped default to **50.8%** at
|
|
1087
|
+
`fair 22`. Read that precisely — the DELTA is significant, the new level is a
|
|
1088
|
+
coin flip. The rule turned "the defensive lean is better" into "there is no
|
|
1089
|
+
difference", which is a re-pricing; it did not turn it into "the attacking lean
|
|
1090
|
+
is better".
|
|
1091
|
+
|
|
1092
|
+
`fair` is also the only axis whose regulation dominance column does not move
|
|
1093
|
+
(+0.0). At the midpoint (`fair 11`, 50%) it still moves four fixtures
|
|
1094
|
+
significantly while taking the draw rate DOWN, 52.8% -> 48.6%, and goals up,
|
|
1095
|
+
0.779 -> 0.899 — the one cell in the whole sweep whose feel side-effects point
|
|
1096
|
+
in a direction anyone would ask for.
|
|
1097
|
+
|
|
1098
|
+
**Post play is the weakest candidate.** Its largest move is 2.4x the control's
|
|
1099
|
+
in regulation and 1.7x in knockouts — the closest any candidate comes to a knob
|
|
1100
|
+
that gates 3.9% of goals. It needs x4 (60% of box entries) to reach even that,
|
|
1101
|
+
the feel barely registers (draw rate +4.3pp, goals −0.095), and across all eight
|
|
1102
|
+
of its wide-basket cells — four swept values in each mode — the top of the
|
|
1103
|
+
eleven-archetype table never changes.
|
|
1104
|
+
|
|
1105
|
+
**The counter trigger never gates.** Swept from "counters never happen" to
|
|
1106
|
+
"every eligible turnover becomes one", goals per match moved 0.036, the basket's
|
|
1107
|
+
top never changed in either mode or either basket, and no cell produced a gate.
|
|
1108
|
+
**What rejects it is the compound activation gate, not the significance bar** —
|
|
1109
|
+
the bar finds its 3 narrow and 12 wide fixture movements perfectly real. That is
|
|
1110
|
+
the calibration: fixture-level significance is not evidence of a useful lever,
|
|
1111
|
+
and a gate worth believing when it accepts something has to reject this.
|
|
1112
|
+
|
|
1113
|
+
### Does the answer move once the manager may re-optimise?
|
|
1114
|
+
|
|
1115
|
+
The narrow basket's biggest weakness is that five archetypes may simply not
|
|
1116
|
+
contain the alternative a rule rewards. So EVERY swept value of every axis — the
|
|
1117
|
+
control included, so it is checked on the same surface as the candidates — is
|
|
1118
|
+
re-asked over the ELEVEN archetypes the round-robin publishes, 55 fixtures,
|
|
1119
|
+
4,000 matches each. That is 34 cells; the probe prints them all, and the shape
|
|
1120
|
+
is simple enough to state:
|
|
1121
|
+
|
|
1122
|
+
Standings here are the **win-equivalent share** — the same 1 / 0.5 / 0 statistic
|
|
1123
|
+
the gate measures, so the leader they name is the squad the gate is then
|
|
1124
|
+
evaluated on. Ranking by league points instead is not a monotonic
|
|
1125
|
+
transformation of it when draw rates differ, and these constants move draw rates
|
|
1126
|
+
by fifteen points.
|
|
1127
|
+
|
|
1128
|
+
| Mode | Shipped rule's top four | Last | Cells whose top changed |
|
|
1129
|
+
| --- | --- | --- | --- |
|
|
1130
|
+
| reg | `gkmin-433` .603, `def-433` .586, `def-532` .585, `role-433` .564 | `flat-433` .365 | **none of 16** |
|
|
1131
|
+
| ko | `role-433` .615, `gkheavy-433` .599, `def-433` .591, `def-532` .573 | `flat-433` .259 | **2 of 16**, both FK down |
|
|
1132
|
+
|
|
1133
|
+
In regulation, `gkmin-433` leads every single cell — nothing moves the answer at
|
|
1134
|
+
any value of any axis. The two knockout exceptions are FK x0.25 and FK x0.5,
|
|
1135
|
+
which both promote `gkheavy-433` (+7.5pp z 4.7 and +6.0pp z 3.8 against
|
|
1136
|
+
`role-433`; 0.0pp against the tied band it belongs to). `flat-433` is last in 32
|
|
1137
|
+
of the 34 cells; the two it is not are FK x0.25 and x0.5 in regulation, where
|
|
1138
|
+
`stars-433` drops below it — that build wins and loses far more than it draws,
|
|
1139
|
+
so a metric that counts draws at half costs it more than a points table does.
|
|
1140
|
+
|
|
1141
|
+
**That one axis-and-direction is the most interesting number in this section.**
|
|
1142
|
+
Read as a pair in both rules:
|
|
1143
|
+
|
|
1144
|
+
> `gkheavy-433` vs `role-433`, knockout: **49.8% (z −0.3) at the shipped FK rate
|
|
1145
|
+
> -> 53.7% (z +4.7) at FK x0.25.** A coin flip becomes a significant win. Those
|
|
1146
|
+
> are shares; the +7.5pp above is the same reading as a win-rate advantage, which
|
|
1147
|
+
> is exactly twice the share advantage over 50%.
|
|
1148
|
+
|
|
1149
|
+
Mechanically that is coherent: fewer free kicks means fewer set-piece goals,
|
|
1150
|
+
more matches level at full time, more shootouts, and the 29-point keeper the
|
|
1151
|
+
round-robin ranks sixth becomes the best build in the basket. It is a real
|
|
1152
|
+
re-pricing of the keeper budget by a rule.
|
|
1153
|
+
|
|
1154
|
+
Read the "changed the answer" claim with the qualification the probe prints
|
|
1155
|
+
beside it: **the shipped knockout leader is not separated from `gkheavy-433`**
|
|
1156
|
+
either. So the honest description is not "the rule dethroned the leader" but
|
|
1157
|
+
"the rule turned a pair that was tied into a pair that is not" — which is still
|
|
1158
|
+
a re-pricing, and still the only one in the sweep.
|
|
1159
|
+
|
|
1160
|
+
**It changes no advice in `SKILL.md`, and that is a decision rather than an
|
|
1161
|
+
oversight.** That file already refuses to settle the keeper total and says the
|
|
1162
|
+
knockout answer turns on shootout exposure. This sweep reaches the same place
|
|
1163
|
+
from the opposite direction — it moves a RULE instead of a squad, and the one
|
|
1164
|
+
thing that moved was the keeper budget in the mode where shootouts live. A
|
|
1165
|
+
second construction agreeing is a reason to trust the sentence that is there,
|
|
1166
|
+
not a reason to write a new one; nothing here is a fact an agent could act on,
|
|
1167
|
+
since none of these constants is scheduled.
|
|
1168
|
+
|
|
1169
|
+
And it is worth **0.0pp at the activation gate** — in the mode with the LEAST
|
|
1170
|
+
exposure, since knockouts are cup-only and the cup runs once a day for the
|
|
1171
|
+
ladder's top 48. Two things reduce it from +7.5pp to nothing, and both are in
|
|
1172
|
+
the activation section above. `gkheavy-433` is inside the shipped rule's
|
|
1173
|
+
unresolved top band, so a manager could already have been on it for free. And
|
|
1174
|
+
the same cell moves the draw rate +5.1pp, outside the +/-5pp band a rule change
|
|
1175
|
+
is allowed to move it, so even a real gain there would have been refused.
|
|
1176
|
+
|
|
1177
|
+
Incidentally, the shipped rows above are an 11-archetype round-robin at 4,000
|
|
1178
|
+
matches per fixture — roughly seven times the 300 seeds behind the published
|
|
1179
|
+
table — and they agree with it where that table says it is decidable:
|
|
1180
|
+
`gkmin-433` clear at the top of regulation, `role-433` at the top of knockouts,
|
|
1181
|
+
`flat-433` at the bottom of all but two. The middle band still reorders between
|
|
1182
|
+
the two runs, as that section says it must — and note that the bottom is where
|
|
1183
|
+
the metric matters: on a points table `stars-433` is above `flat-433`, and on
|
|
1184
|
+
the win-equivalent share the two swap in a couple of cells. The shipped `role-433` vs `def-433`
|
|
1185
|
+
fixture also independently reproduces the Skill's "solidity beats aggression"
|
|
1186
|
+
pair at 10,000 matches: the attacking lean takes 47.5% of the win-equivalent
|
|
1187
|
+
share in regulation and 53.1% in knockouts.
|
|
1188
|
+
|
|
1189
|
+
**Do not read that 47.5% against the Skill's 56.5%** — they are different
|
|
1190
|
+
statistics on the same fact. The Skill quotes DECIDED matches, this section
|
|
1191
|
+
quotes the win-equivalent share, and half of all regulation matches are draws,
|
|
1192
|
+
so the share is compressed toward 50 exactly as the round-robin correction above
|
|
1193
|
+
warns. The knockout figures (53.1% here, 53.6% there) are directly comparable,
|
|
1194
|
+
because knockout draws are vanishingly rare — zero in the 5,440,000 knockout matches
|
|
1195
|
+
this run played, though not structurally impossible.
|
|
1196
|
+
|
|
1197
|
+
### Degrees of freedom this sweep LEFT free
|
|
1198
|
+
|
|
1199
|
+
Counting the degrees of freedom that were controlled is not enough; the keeper
|
|
1200
|
+
section above was wrong three times in one day and the cause was a different
|
|
1201
|
+
uncontrolled degree of freedom each time. So, explicitly:
|
|
1202
|
+
|
|
1203
|
+
- **Manager response.** The basket is fixed; nobody re-solves a squad against
|
|
1204
|
+
the swept rule. The wide-basket section shrinks this hole from five archetypes
|
|
1205
|
+
to eleven but does not close it — eleven hand-built squads are a sample of the
|
|
1206
|
+
legal space, not an argmax over it. Every verdict above is "…across these
|
|
1207
|
+
baskets", and an axis that only rewards a build outside them reads as flat.
|
|
1208
|
+
- **Growth buffs.** Every squad is tenure 0. Production applies
|
|
1209
|
+
`applyMatchGrowth`, which raises effective `total` and therefore `teamPow`,
|
|
1210
|
+
and the zone press, the team-contribution terms and possession all read it.
|
|
1211
|
+
- **Set-piece slots.** `squad-lib` pins the FK taker to slot 9 and the penalty
|
|
1212
|
+
taker to slot 10 for every candidate. The FK rows are the RATE axis only.
|
|
1213
|
+
- **Slot order.** Identical across the basket, which pins the broken zone-press
|
|
1214
|
+
fallback to the same position in all of them. Held constant, not measured.
|
|
1215
|
+
- **Interactions.** One axis moves at a time. Nothing here says what FK x4 does
|
|
1216
|
+
while `fair` is 22, and a pool built from two axes at once is untested.
|
|
1217
|
+
- **`cond`.** Fixed at 5 everywhere, as production does today. A form system
|
|
1218
|
+
would invalidate every row.
|
|
1219
|
+
- **Opponent population.** Archetypes, not the live ladder — and production bots
|
|
1220
|
+
are a single build, which is neither.
|
|
1221
|
+
|
|
1222
|
+
Re-run after any engine change:
|
|
1223
|
+
|
|
1224
|
+
```bash
|
|
1225
|
+
npx tsx packages/mcp/skill/reference/probes/constant-sweep.mts
|
|
1226
|
+
N=2000 WIDE_N=1000 npx tsx … # faster; the bar is fixed, the detectable EFFECT moves
|
|
1227
|
+
```
|
|
1228
|
+
|
|
1229
|
+
---
|
|
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
|
+
|
|
647
1703
|
---
|
|
648
1704
|
|
|
649
1705
|
## Note for the maintainers
|