League: league_6764202e-2ac1-4c98-a77e-cabc75582939 (Zero Sum)
Division: div_e6d3697f-8a5f-4cb4-87a8-1e0497132f84 (Competition)
Coworld: zero-sum:0.1.17 / cow_380d383e-952e-4f1d-8c99-2056841e587b
Ask
Please set, on the league above:
scheduler.team_count: 16 -> 8
scheduler.team_layout: (unset) -> "blocks"
scheduler.insufficient_players: "filler_policy" -> "multiple_seats"
I'm the confirmed owner (viewer_is_owner: true on /v2/leagues/{id}/owners) but can't apply this myself: OPTIONS /v2/leagues/{id} and /v2/leagues/{id}/settings both return 405, allow: GET, and /divisions is the only writable sub-resource. That's the staff round-trip #34 is about.
Why
Zero Sum is 16 agents as 8 teams of 2, teams defined contiguously (team = slot div 2). The league runs team_n with team_count: 16, which gives each entrant exactly one seat. With 4 entrants that means 4 submitted seats and 12 filler — and because seats 0–3 are teams A and B, the submitted policies are seated as each other's teammates rather than as opponents. They share private team chat and can't fight.
Current round, seat by seat:
| slot |
team |
policy |
filler |
| 0 |
A |
relh-zero-sum:v6 |
no |
| 1 |
A |
sivanlevy-zs-courier:v3 |
no |
| 2 |
B |
ryanschiller-zero-sum-player-v1:v2 |
no |
| 3 |
B |
zs-patient:v3 |
no |
| 4–15 |
C–H |
zero-sum-arisklar:v1 ×12 |
yes |
Measured over all 1,841 episode-requests in the division: a non-filler holds position 0 in 1,841/1,841, no non-filler has ever held more than one seat, and positions 4–15 are filler in every episode. For the league's first ~1,400 rounds there were only two entrants, at slots 0 and 1 — i.e. a single team — so the two real policies were partners against 14 filler bots, and that is what the ladder history was built on.
team_count: 16 also makes the intended end state unreachable: at 8 entrants it would still be 8 real seats and 8 filler.
Why these three values
Seats-per-entrant appears to be slots / team_count, and team_layout selects strided vs contiguous. Measured across the team_n leagues:
| league |
team_count |
team_layout |
slots |
observed seating |
| Paintbot |
4 |
(unset) |
16 |
4 seats/entrant, strided: 0,4,8,12 |
| Tribal Village |
3 |
blocks |
18 |
6 seats/entrant, contiguous: 0–5, 6–11, 12–17 |
| Zero Sum |
16 |
(unset) |
16 |
1 seat/entrant |
So team_count: 8 over 16 seats gives 2 seats per entrant, and team_layout: "blocks" makes them contiguous — {2k, 2k+1}, which is exactly one in-game team. Without blocks the default strided layout would hand an entrant slots k and k+8, landing in two different teams; with friendly fire always on and a finale that turns the last team against itself, that's the mis-seating from #33.
insufficient_players: "multiple_seats" is what makes filler recede as entrants arrive, reaching zero at 8. It's already the majority setting (25 of 50 leagues); Zero Sum is one of 6 still on filler_policy.
Worth noting blocks is suggested-fix #3 from #33 and appears to have shipped since — when I filed that issue it didn't exist, which is why we built the game-side adapter described in that thread. For this league, blocks looks like the cleaner route than running the adapter build.
One question I can't answer from outside
With multiple_seats and fewer than 8 entrants, an entrant will hold more than one team. effective_ladder_config exposes clone_score_aggregation (currently null) — what should it be so a policy holding multiple teams scores sensibly rather than double-counting?
Related: in the duos design discussed on #33, the platform averaging a policy's seat rewards meant we wrote the team total to both seats so mean(total, total) = total. The solo profile writes each seat its own score, so an entrant holding both seats of a team would score the mean of the pair rather than the team total. If that's the wrong shape for blocks seating, I'd rather know before the change than after.
Separately: num_episodes looks inert
scheduler.num_episodes is 32, but every one of the league's 1,841+ rounds has produced exactly one episode — 144/day at round_interval_minutes: 10. Confirmed by counting episode-requests across the division (1,841 requests / 1,841 rounds) and by per-round episode listings.
GET /v2/leagues/{id}/settings shows the effective scheduler carrying a separate episodes_per_round field at null, and defaults.episodes_per_round is also null. Does team_n read episodes_per_round rather than num_episodes? If so, could you set episodes_per_round to something in the 8–16 range? Per-episode score sd in this game is ~7.5, so one episode per round makes the ladder very noisy.
Refs: #33 (team_n seat geometry), #34 (owners can't change league settings).
League:
league_6764202e-2ac1-4c98-a77e-cabc75582939(Zero Sum)Division:
div_e6d3697f-8a5f-4cb4-87a8-1e0497132f84(Competition)Coworld:
zero-sum:0.1.17/cow_380d383e-952e-4f1d-8c99-2056841e587bAsk
Please set, on the league above:
I'm the confirmed owner (
viewer_is_owner: trueon/v2/leagues/{id}/owners) but can't apply this myself:OPTIONS /v2/leagues/{id}and/v2/leagues/{id}/settingsboth return405, allow: GET, and/divisionsis the only writable sub-resource. That's the staff round-trip #34 is about.Why
Zero Sum is 16 agents as 8 teams of 2, teams defined contiguously (
team = slot div 2). The league runsteam_nwithteam_count: 16, which gives each entrant exactly one seat. With 4 entrants that means 4 submitted seats and 12 filler — and because seats 0–3 are teams A and B, the submitted policies are seated as each other's teammates rather than as opponents. They share private team chat and can't fight.Current round, seat by seat:
relh-zero-sum:v6sivanlevy-zs-courier:v3ryanschiller-zero-sum-player-v1:v2zs-patient:v3zero-sum-arisklar:v1×12Measured over all 1,841 episode-requests in the division: a non-filler holds position 0 in 1,841/1,841, no non-filler has ever held more than one seat, and positions 4–15 are filler in every episode. For the league's first ~1,400 rounds there were only two entrants, at slots 0 and 1 — i.e. a single team — so the two real policies were partners against 14 filler bots, and that is what the ladder history was built on.
team_count: 16also makes the intended end state unreachable: at 8 entrants it would still be 8 real seats and 8 filler.Why these three values
Seats-per-entrant appears to be
slots / team_count, andteam_layoutselects strided vs contiguous. Measured across theteam_nleagues:team_countteam_layoutblocksSo
team_count: 8over 16 seats gives 2 seats per entrant, andteam_layout: "blocks"makes them contiguous —{2k, 2k+1}, which is exactly one in-game team. Withoutblocksthe default strided layout would hand an entrant slotskandk+8, landing in two different teams; with friendly fire always on and a finale that turns the last team against itself, that's the mis-seating from #33.insufficient_players: "multiple_seats"is what makes filler recede as entrants arrive, reaching zero at 8. It's already the majority setting (25 of 50 leagues); Zero Sum is one of 6 still onfiller_policy.Worth noting
blocksis suggested-fix #3 from #33 and appears to have shipped since — when I filed that issue it didn't exist, which is why we built the game-side adapter described in that thread. For this league,blockslooks like the cleaner route than running the adapter build.One question I can't answer from outside
With
multiple_seatsand fewer than 8 entrants, an entrant will hold more than one team.effective_ladder_configexposesclone_score_aggregation(currentlynull) — what should it be so a policy holding multiple teams scores sensibly rather than double-counting?Related: in the duos design discussed on #33, the platform averaging a policy's seat rewards meant we wrote the team total to both seats so
mean(total, total) = total. The solo profile writes each seat its own score, so an entrant holding both seats of a team would score the mean of the pair rather than the team total. If that's the wrong shape forblocksseating, I'd rather know before the change than after.Separately:
num_episodeslooks inertscheduler.num_episodesis32, but every one of the league's 1,841+ rounds has produced exactly one episode — 144/day atround_interval_minutes: 10. Confirmed by counting episode-requests across the division (1,841 requests / 1,841 rounds) and by per-round episode listings.GET /v2/leagues/{id}/settingsshows the effective scheduler carrying a separateepisodes_per_roundfield atnull, anddefaults.episodes_per_roundis alsonull. Doesteam_nreadepisodes_per_roundrather thannum_episodes? If so, could you setepisodes_per_roundto something in the 8–16 range? Per-episode score sd in this game is ~7.5, so one episode per round makes the ladder very noisy.Refs: #33 (team_n seat geometry), #34 (owners can't change league settings).