{ "release": "2026.09.26.2", "base_release": "2026.09.24.4", "also_applies_to": "2026.09.26.1", "base_archive": "hockey(9).zip", "base_archive_sha256": "32907eb9353ed961090f03cb1637cf63ce1b06bf755c3fc2413a33c2262bccb3", "package_type": "cumulative changed-files update; extract into existing project root", "delete_files": [], "excluded": [ "all user settings JSON", "settings/local/", "settings/backups/", ".env", "Agent secrets and binaries", "databases and logs" ], "files": [ { "path": ".gitignore", "action": "replace", "base_sha256": "0ae0f61680c4212bc1808ad4d63b462b2b96d653346c747e47599520e3fb9fb8", "stage1_sha256": "0ae0f61680c4212bc1808ad4d63b462b2b96d653346c747e47599520e3fb9fb8", "updated_sha256": "b868270ed9be2aed976c03035b07ab1a05a50160cbc6131f3e98c399c87c5c13", "bytes": 2284 }, { "path": "UPDATE_STAGE2_RU.md", "action": "add", "base_sha256": null, "stage1_sha256": null, "updated_sha256": "5347cdd210e7b4cfe896d1a743073c646872108237ed9edc2eccf9b323840983", "bytes": 18312 }, { "path": "VALIDATION_STAGE2_RU.md", "action": "add", "base_sha256": null, "stage1_sha256": null, "updated_sha256": "0020d6174c7470d6afe8987dfa64e685fe23431e1cd7eb691a4285a80bf0d260", "bytes": 11454 }, { "path": "app.py", "action": "replace", "base_sha256": "f3f06139e4a92eac1386616c834dd4a0965e815e9f2f284337b22ff51e81c195", "stage1_sha256": "c9ae453b347624ade097e1023efa2a1c91a30cf44a155723a2c25e254f1504ec", "updated_sha256": "0a7f3cc6c878ed61b0a443c9a7b02351d9590ec9c4d877edfd2a8f82fd7e1e93", "bytes": 19902 }, { "path": "broadcast_settings/expressions.py", "action": "add", "base_sha256": null, "stage1_sha256": "83e84e1943e763ba08db11fd885dea4147309fff87e61a205763c3bc26ed82de", "updated_sha256": "83e84e1943e763ba08db11fd885dea4147309fff87e61a205763c3bc26ed82de", "bytes": 9364 }, { "path": "broadcast_settings/transform.py", "action": "replace", "base_sha256": "20c04429d90165946127945938be1a8822addebe5a286dba47539d140e35bc5b", "stage1_sha256": "276abb72aa02335f566f9e041f81f60f6d8aefeb1b06ee3a271a4a264bb9a3bb", "updated_sha256": "276abb72aa02335f566f9e041f81f60f6d8aefeb1b06ee3a271a4a264bb9a3bb", "bytes": 84253 }, { "path": "hockey_data/agent_bridge.py", "action": "replace", "base_sha256": "4daa00ed80a929bc8ab9cac50525fc983ff7bae4e5abbed5f4fa3598f5078f0f", "stage1_sha256": "7cf3d8dd3e0af7e0f9f3c11a58d018b1c3a88060f1d89a9e6338c0f98a7cba08", "updated_sha256": "7c4da6ba77b17cf906d37645514c80ca8289cbeb7601dbb6907bfa51b0017083", "bytes": 278915 }, { "path": "hockey_data/async_work.py", "action": "add", "base_sha256": null, "stage1_sha256": null, "updated_sha256": "d491a15e5e233c3d30d623f86a46402364d4296c675a238d3df72c4a840986e0", "bytes": 1814 }, { "path": "hockey_data/auth_bridge.py", "action": "replace", "base_sha256": "312b69cd084cdafeb1900f25c340fa21d81fe2e6adb91aef44f8034ddd7e2e05", "stage1_sha256": "312b69cd084cdafeb1900f25c340fa21d81fe2e6adb91aef44f8034ddd7e2e05", "updated_sha256": "4f2ceba8e2f49372454dcf822f5387931739a4abd5c89bb5c9437d0db6f6e2e7", "bytes": 14715 }, { "path": "hockey_data/auth_router.py", "action": "replace", "base_sha256": "616efa9a107cde53bac5bf3304ac2d71dfdd5eb5d709ab243054b48daa772118", "stage1_sha256": "616efa9a107cde53bac5bf3304ac2d71dfdd5eb5d709ab243054b48daa772118", "updated_sha256": "645d8b610a37dda58ea5a70457976640264b8499e72b6e6b79aeef33b94586b9", "bytes": 7870 }, { "path": "hockey_data/database.py", "action": "replace", "base_sha256": "1c298f8bb85bc6a52b3fc6e7e58e215e48d36e94c8861edbe0392003a3bc5c25", "stage1_sha256": "5b058cab427269ed223b99122816b19938c2338e70025fb88eec0b481ba0b1fa", "updated_sha256": "1ca3b7ea41a85d24401d393bf51a6a7a04eb70678f8481145f71da80dd07b2fc", "bytes": 15921 }, { "path": "hockey_data/mapping_context.py", "action": "replace", "base_sha256": "6db8e9aee7164a85f6494f88ad854d2602371de1b8639a22bc670fe23ddeb161", "stage1_sha256": "99553e31f00d65190310666bfac178616f8c37dfbb182510990d02de762ff348", "updated_sha256": "f33d22d64a991d7a1f0ac88e1680151a769b336ee3e9fecef8755b846160b822", "bytes": 87920 }, { "path": "hockey_data/match_access.py", "action": "add", "base_sha256": null, "stage1_sha256": "a44f2aa8de9a347e3b452e0c9e2c173b079444dd89b9d3f40707bf55407d9011", "updated_sha256": "9f4811b83eec2ca55e6d58099b2aedd420cbc2bbdb04dccbb2946a8b33f93068", "bytes": 27276 }, { "path": "hockey_data/models.py", "action": "replace", "base_sha256": "4ff5b2378ab972c991e16ac600b554bf67169a87808777e57ca9b79a05eadf4f", "stage1_sha256": "bff59fc541974dc3c71458d51d5772e4f7d9cac1fc0d03c0ff4c63588aa17991", "updated_sha256": "c77f257bd9f60fe5dfda2b3d62584b50173819468eca4662fcdcc2a9cfe391c6", "bytes": 73138 }, { "path": "hockey_data/router.py", "action": "replace", "base_sha256": "e5c2b94ab83c5a9bde48ca5c500e80e0ae737e22098d31fd392ee6277a000b29", "stage1_sha256": "f80d296fb4e204378f79cb39cb8d5774f4cceb2d3833bb5b8d83c6c030a71ac8", "updated_sha256": "bec255b080cf66d8f4105d965bb8c5d6ac8b0444b2dbe89833ae195484f4821c", "bytes": 67863 }, { "path": "hockey_data/service.py", "action": "replace", "base_sha256": "df1c7e19777dd3a40b1204d3e335eed05cd9586510b9a7db871d47caf4e17284", "stage1_sha256": "37443444da11c10df6d1f29dbfe736b1b17acc007f2dc0cb1238618cad03d1b2", "updated_sha256": "96429c4f5228b01cd115152617fde502a9febc1f685afbc5107e0b5b4a1c3c70", "bytes": 389282 }, { "path": "hockey_data/static/admin-directories.css", "action": "replace", "base_sha256": "e0897e5cf5099dadd7f48348ede5d9043eda7f3273e7ef9f21719a31cf021f4a", "stage1_sha256": "e0897e5cf5099dadd7f48348ede5d9043eda7f3273e7ef9f21719a31cf021f4a", "updated_sha256": "f1d6727f9b697f51c49be3e7df843a07c75a98778707d8535030862686a7ca4b", "bytes": 112514 }, { "path": "hockey_data/static/admin-directories.js", "action": "replace", "base_sha256": "5b9c5a91448c2c524afdb8e64c22fec30438b68a41e4e34445e0c62645927dd8", "stage1_sha256": "efdb1eae5a738250084f4fd9f164f5d569088c91c1d3279daab2b625189cb876", "updated_sha256": "e99d673531d497bdf9d48e12c8d4df4ffa1e961aa4a21df110208385ea5072e7", "bytes": 279460 }, { "path": "hockey_data/static/agent-devices.js", "action": "replace", "base_sha256": "fd1b1a833e712ade1295d872958d8e9b616c62d69659dc3e082254bd2b09652a", "stage1_sha256": "c13fb0efd12debb06e4ac53ffb511bd94515639bfb4320e5f1dbe0abc5e379cb", "updated_sha256": "c13fb0efd12debb06e4ac53ffb511bd94515639bfb4320e5f1dbe0abc5e379cb", "bytes": 22668 }, { "path": "hockey_data/static/agent-diagnostics.js", "action": "replace", "base_sha256": "c9e4e8b975af1b0ae01208bb181f281213a28ae7b527d1d66ed1cf28183d3c98", "stage1_sha256": "89b2ffe30bf961090b4299ee55060697a0753142fd52b101e26d17a4eda87ae8", "updated_sha256": "89b2ffe30bf961090b4299ee55060697a0753142fd52b101e26d17a4eda87ae8", "bytes": 12633 }, { "path": "hockey_data/static/match-access.css", "action": "add", "base_sha256": null, "stage1_sha256": "cc858443000e8b03b460797c4c71696dd668f53d6baba9269eed3ee7a71c9568", "updated_sha256": "013fd8a0312cbe1eabe0200cbfe55f8d85f6aaa0dbcf18e5e6cdeae2704c15b9", "bytes": 3149 }, { "path": "hockey_data/static/match-access.js", "action": "add", "base_sha256": null, "stage1_sha256": "14ed9cbd8239dd60b8e2cc19ec2fe0452b3a0cf701e1b6829730a5592dfafc3f", "updated_sha256": "fb8dc03d384d58a0631b81715b62acdd41ed8875a3ef56d8f4e19fd3180a4041", "bytes": 22601 }, { "path": "hockey_data/static/match-status-header.js", "action": "replace", "base_sha256": "7745dbf87b4cc091de9ea9baeda8e56d09aa83a03059a61638c5023dfc2b4b73", "stage1_sha256": "1c615b1b388c597cde8abc5de641807a468cf6a73681333b580e2544ca5a92a6", "updated_sha256": "1c615b1b388c597cde8abc5de641807a468cf6a73681333b580e2544ca5a92a6", "bytes": 18217 }, { "path": "hockey_data/static/session-activity.js", "action": "add", "base_sha256": null, "stage1_sha256": null, "updated_sha256": "3c835ae5265c13fcd4686355961c2f150b4bcc5cb134a1d03c2c1b9b9d85a52d", "bytes": 4332 }, { "path": "hockey_data/static/tournament-menu.js", "action": "replace", "base_sha256": "7bc4986a216a562354306ae73d417cedd0b08d88141b9a18bede2a0a73f7c0a5", "stage1_sha256": "4e962321212c1b23bce98c1077d26e959ae1550cdbf5b48d88d1225eeec65833", "updated_sha256": "223fb629a785bcbea73533c994dbfde1e84bd358e63880b78f929c315fe1c246", "bytes": 128669 }, { "path": "hockey_data/vmix_portable.py", "action": "replace", "base_sha256": "f74d7eca8e0ff1c46b726857fbc530f9f29ae17b277d5ed15826ba58ffed3c74", "stage1_sha256": "f74d7eca8e0ff1c46b726857fbc530f9f29ae17b277d5ed15826ba58ffed3c74", "updated_sha256": "fa4e3ed13be7d621f4bd19e1b947553896727a3622d89563a874497de85d5cda", "bytes": 24220 }, { "path": "requirements.txt", "action": "replace", "base_sha256": "3fe363a0de01e463e27395cfdb08d93d02100887c9640c7f396a5e0e414c8988", "stage1_sha256": "1407ef85d9e64bf831eb2956a66948f410125decabca0f22bf0e22d624fcb7fb", "updated_sha256": "1407ef85d9e64bf831eb2956a66948f410125decabca0f22bf0e22d624fcb7fb", "bytes": 227 }, { "path": "settings/README.md", "action": "replace", "base_sha256": "c7a4cbbd7ddd727717ff420bb317f36289a0b8b3af688fa5e557a88ccb86c721", "stage1_sha256": "c7a4cbbd7ddd727717ff420bb317f36289a0b8b3af688fa5e557a88ccb86c721", "updated_sha256": "81df38a9e09702750cf09fa7ebf1d7f7021ce28d8b578852bb45a0d2b5ba464a", "bytes": 2252 }, { "path": "tests/stage2_penalty_countdown.cjs", "action": "add", "base_sha256": null, "stage1_sha256": null, "updated_sha256": "d039f424fd2d40044726872937e76f3ea2500dcb3b003db07dcc3642ae6ea524", "bytes": 4772 }, { "path": "tests/stage2_session_activity.cjs", "action": "add", "base_sha256": null, "stage1_sha256": null, "updated_sha256": "14b31ba72d7296b7edd8714cd106e9881423f9c73a8b380d5c34d095a590252b", "bytes": 4702 }, { "path": "tests/support.py", "action": "replace", "base_sha256": "0731ba50f0f05b267e63f8202f133c53a207b16b8385013077941e9db36bba1f", "stage1_sha256": "61d45059086316cf356650b89dd12541a94041ca7cfe844716fa2e41bbf046b2", "updated_sha256": "dea63976c42f9be71a8a348d657475f066bcf23f053e9358101a487523fcd29a", "bytes": 1143 }, { "path": "tests/test_agent_bridge.py", "action": "replace", "base_sha256": "41bcf1490be1111998f6e52c3eed0b7b5158d0a6ad9f16b827d605adef6f66d0", "stage1_sha256": "41bcf1490be1111998f6e52c3eed0b7b5158d0a6ad9f16b827d605adef6f66d0", "updated_sha256": "327cc0cb0c99815271d6733533d5ec4a2eabcaa8dcc29267bbdaaf418c3cd6ab", "bytes": 30897 }, { "path": "tests/test_build110_match_roster_atomic_switch.py", "action": "replace", "base_sha256": "dd683d9a3b9d700b8b04d1aeeb2517c3fe3b650a7f4ef84e84ae8f5e9b8db7e8", "stage1_sha256": "dd683d9a3b9d700b8b04d1aeeb2517c3fe3b650a7f4ef84e84ae8f5e9b8db7e8", "updated_sha256": "ea42b58398db3e87692ab1a9cb8991e8580f0eac86d093f6c32f16cd0591639c", "bytes": 2117 }, { "path": "tests/test_build111_agent_match_handoff.py", "action": "replace", "base_sha256": "2e7e7da77bf6a19930743b0c4dcabcea697adf7ddaf824ab1ad6f783cec41e76", "stage1_sha256": "2e7e7da77bf6a19930743b0c4dcabcea697adf7ddaf824ab1ad6f783cec41e76", "updated_sha256": "7c27dfde250d2fff0db5a387ee131083ea9114e52ad1418a456134796a2d83fc", "bytes": 3873 }, { "path": "tests/test_build47_team_state_scoreboard_overlays.py", "action": "replace", "base_sha256": "f359d352f9b3cb8190bef96b7fdd54dfc1fb0d048a7757b48852ccd93ba5911e", "stage1_sha256": "c25c1df2670def6e1e9bb2683143d6ffacd3791214cfd551da924f31b0b5440b", "updated_sha256": "48e2517d4a3648c34664b7819a2db189d7ceb55d667f5970b1911809935b0417", "bytes": 2788 }, { "path": "tests/test_build65_nonadmin_match_selection.py", "action": "replace", "base_sha256": "31afe69d86947181a5914fe9a997b4af841e6649ec5a000203148462b4131fc5", "stage1_sha256": "6ac2cc2aa37dfdf229ed501a256bab4220ea6d0c27f56806382de9b753f26a61", "updated_sha256": "6ac2cc2aa37dfdf229ed501a256bab4220ea6d0c27f56806382de9b753f26a61", "bytes": 1108 }, { "path": "tests/test_build84_penalty_selection_persistence_prepared_titles.py", "action": "replace", "base_sha256": "5fa19a0af5bcb643d4370e747791163051fca189846735b97ab845fdb8a22a1c", "stage1_sha256": "4c3cdac2e32e022201c2418ad41acd05a5453b3db1c561dd1ef3276d926fa7ed", "updated_sha256": "4c3cdac2e32e022201c2418ad41acd05a5453b3db1c561dd1ef3276d926fa7ed", "bytes": 8624 }, { "path": "tests/test_build86_penalty_context_prepared_titles.py", "action": "replace", "base_sha256": "591b0fe0b3327c4a6b8b42636cd08110ab7bedb376f8fcc22a9f60f1aff717ff", "stage1_sha256": "7dcac6c12740cb08a123f155665784f4a9474294d88b12046b65396e01b1abd3", "updated_sha256": "7dcac6c12740cb08a123f155665784f4a9474294d88b12046b65396e01b1abd3", "bytes": 4756 }, { "path": "tests/test_build89_single_penalty_plate_transition.py", "action": "replace", "base_sha256": "bfecd73b555b301a1babf4e9cae9ee4ad2797a046422812a11df474b474f4739", "stage1_sha256": "bfecd73b555b301a1babf4e9cae9ee4ad2797a046422812a11df474b474f4739", "updated_sha256": "d9a8255c5ad2ace83b9d688dd0f5f4615f409eb94b3ddd1740f8b07b2753be66", "bytes": 3727 }, { "path": "tests/test_build93_countdown_reseed_on_start.py", "action": "replace", "base_sha256": "293a38e71b43d496cdf9137986928d9f3ae493042b9b53791762dff2554642c2", "stage1_sha256": "293a38e71b43d496cdf9137986928d9f3ae493042b9b53791762dff2554642c2", "updated_sha256": "b85692e09ddc0e885575ccca43c43d380d49f8dc9707e4379a25cb052e071007", "bytes": 1900 }, { "path": "tests/test_build95_countdown_explicit_start_stop_sync.py", "action": "replace", "base_sha256": "be4b797d95387275e2ca7cb1acbc7e32adf919fe51994a93470685e04200bc62", "stage1_sha256": "be4b797d95387275e2ca7cb1acbc7e32adf919fe51994a93470685e04200bc62", "updated_sha256": "82058d1bb2a7d5e676307fe721d14a4a39f14e8f8e36e9918d0967b34dee70eb", "bytes": 2596 }, { "path": "tests/test_build98_timer_countdown_sync_fixed_pin.py", "action": "replace", "base_sha256": "5a1753660ee712fb083efbccbacc42d1b4578bd8c020a2739fab9972e8930982", "stage1_sha256": "5a1753660ee712fb083efbccbacc42d1b4578bd8c020a2739fab9972e8930982", "updated_sha256": "eeff1d148467167952060628ab9aa0775f2eb3345939ea101efe59b83dcd8d2a", "bytes": 3105 }, { "path": "tests/test_multi_agent_routing.py", "action": "replace", "base_sha256": "961a43822dfd8e957e8dfa8b6d348f72bde0a377244ef962cd08c503ae94ce59", "stage1_sha256": "961a43822dfd8e957e8dfa8b6d348f72bde0a377244ef962cd08c503ae94ce59", "updated_sha256": "0c5857ef6e306bba679f9ba9648afd34b89b013f4d4a1c2f799b718391d0a3dd", "bytes": 4614 }, { "path": "tests/test_stage1_expressions.py", "action": "add", "base_sha256": null, "stage1_sha256": "d11e26fdfd759f4aa1c62ffb08ff4762b652ccdb9ef7ab6efc796c1e32883113", "updated_sha256": "d11e26fdfd759f4aa1c62ffb08ff4762b652ccdb9ef7ab6efc796c1e32883113", "bytes": 2116 }, { "path": "tests/test_stage1_match_access.py", "action": "add", "base_sha256": null, "stage1_sha256": "f998ae041bd6951f75ca403ca0af9da1c86bd02586e809aa0bdb05653c101907", "updated_sha256": "f998ae041bd6951f75ca403ca0af9da1c86bd02586e809aa0bdb05653c101907", "bytes": 16208 }, { "path": "tests/test_stage2_custom_pluses.py", "action": "add", "base_sha256": null, "stage1_sha256": null, "updated_sha256": "ebd11f142427c35c963fad151313f2ce7175a4afe2d9e870db1a2e2ff9bce836", "bytes": 3211 }, { "path": "tests/test_stage2_idle_session.py", "action": "add", "base_sha256": null, "stage1_sha256": null, "updated_sha256": "dc47703fccac5db7b9e2b8aa3fd8d2c5b9f6637f7bb07e3336f729f2e2ce83b4", "bytes": 6138 }, { "path": "tests/test_stage2_mapping_inventory.py", "action": "add", "base_sha256": null, "stage1_sha256": null, "updated_sha256": "752f1b07ec360b28e4823747095c6287183b65060ef6579dcf1a1b70dacbd150", "bytes": 3602 }, { "path": "tests/test_stage2_penalty_countdown.py", "action": "add", "base_sha256": null, "stage1_sha256": null, "updated_sha256": "088e1de13a214c8816287e39f80934ea25b02276617bb4571f4f54f92a4e4f44", "bytes": 589 }, { "path": "tests/test_stage2_performance.py", "action": "add", "base_sha256": null, "stage1_sha256": null, "updated_sha256": "d733a2bda2047ed77d6222e23ba468d5c62f02d5d566d4ecccf2fa4394d85c03", "bytes": 11947 }, { "path": "tests/test_stage2_ui_storage.py", "action": "add", "base_sha256": null, "stage1_sha256": null, "updated_sha256": "5ebc4d3e60fe17449256aefa42839043a2a324ccebca934a3af84dc64f0cec1b", "bytes": 5543 }, { "path": "ui_builder/integration.py", "action": "replace", "base_sha256": "d5379c5a63003e805a5e37f6585c1271952edd87b310bc7ce716c138420a89a9", "stage1_sha256": "024a49a82032d18acc85d51a2bcd00296ae8ce008347477e62881a8ef9a15da1", "updated_sha256": "a3845126817966b0c02e140f6c6a5f146b621a6ee716667f4456f612c579d465", "bytes": 5738 }, { "path": "ui_builder/manager.py", "action": "replace", "base_sha256": "a13a1601debdd0b76bea3ee336907656e1fff23b26c45deb308bd5627a6c158d", "stage1_sha256": "a13a1601debdd0b76bea3ee336907656e1fff23b26c45deb308bd5627a6c158d", "updated_sha256": "ae930ed4de95d36eb442d2492db3e1c04726582c99fb6713429ab6a91335b469", "bytes": 37223 }, { "path": "ui_builder/router.py", "action": "replace", "base_sha256": "199922831e0329e87f9a23b99b35c7910014b5ffaed169fcbdec9f92f6c6d18e", "stage1_sha256": "199922831e0329e87f9a23b99b35c7910014b5ffaed169fcbdec9f92f6c6d18e", "updated_sha256": "740398f215b7061ee8d58eb47e1f31f17d4fe9a0b6707ed3ebc0159e8f327f48", "bytes": 4517 }, { "path": "ui_builder/static/app.js", "action": "replace", "base_sha256": "3baaf37c406702355c7576c92971191c7ffb576a56a0865b040046a6c741a06a", "stage1_sha256": "83a744e90d7f8de87bfa3b697fe0b83cadf3490657509488fdac4376a7bbf636", "updated_sha256": "7e8ccb7aefc47eb547a21f6dd06b9bd941c857b9709499e266213c5d353a86d8", "bytes": 894534 }, { "path": "ui_builder/static/index.html", "action": "replace", "base_sha256": "3bf6ec196fe469796edc97c04dd163bc13537cc771048106f0b765aaf2b047a4", "stage1_sha256": "36cf899859d278d98283d4898f42d670c113c038b71f72b007b92c63c2abd5ae", "updated_sha256": "36cf899859d278d98283d4898f42d670c113c038b71f72b007b92c63c2abd5ae", "bytes": 10717 }, { "path": "ui_builder/static/runtime.html", "action": "replace", "base_sha256": "3047e75e7799d4e2bcf3e54916214c0c3159461b31c3ab000fb2dd80ee8bb4f9", "stage1_sha256": "37b8272650ccf88e7f9504b7d04f13294f59abf431c107e0603cfbd86df2580b", "updated_sha256": "37b8272650ccf88e7f9504b7d04f13294f59abf431c107e0603cfbd86df2580b", "bytes": 3316 }, { "path": "ui_builder/static/styles.css", "action": "replace", "base_sha256": "0ec10c94650ae81e2bd9d623975d0fcd959ca66362f6df75cd2a7ceda3a62df4", "stage1_sha256": "0ec10c94650ae81e2bd9d623975d0fcd959ca66362f6df75cd2a7ceda3a62df4", "updated_sha256": "c4158a36896f5ff95ae070915ca4b7cfd63e9ca6097499721e7a9df5fffa3e24", "bytes": 287204 }, { "path": "ui_builder/storage.py", "action": "add", "base_sha256": null, "stage1_sha256": null, "updated_sha256": "67a720a4bff48fcfd2c185c4a65ec85a4574090f474fd83c556789f3cb1c5f1d", "bytes": 3566 } ], "validation": { "passed": 409, "failed": 40, "new_failures": [], "unchanged_failure_ids": [ "tests/test_build101_simple_timer_runtime.py::test_timer_start_stop_protocol_is_minimal", "tests/test_build103_space_timer_fast_transport.py::test_space_edge_is_single_fire_and_local_timer_changes_before_transport", "tests/test_build103_space_timer_fast_transport.py::test_timer_fast_contract_and_build_version", "tests/test_build104_timer_stop_no_rollback.py::test_explicit_edit_still_can_seed_stopped_clock", "tests/test_build104_timer_stop_no_rollback.py::test_pause_stop_sends_only_pause_only_command", "tests/test_build104_timer_stop_no_rollback.py::test_penalty_pause_preserves_native_vmix_frozen_value", "tests/test_build105_suspend_countdown_pause.py::test_explicit_reset_set_path_keeps_stop_then_set", "tests/test_build105_suspend_countdown_pause.py::test_penalty_normal_pause_uses_suspend", "tests/test_build105_suspend_countdown_pause.py::test_space_pause_uses_suspend_not_stop_reset", "tests/test_build106_runtime_authoritative_timer.py::test_build106_version", "tests/test_build106_runtime_authoritative_timer.py::test_countdown_start_hard_reseeds_before_start", "tests/test_build106_runtime_authoritative_timer.py::test_pause_is_reseeded_from_runtime_not_native_clock", "tests/test_build106_runtime_authoritative_timer.py::test_scoreboard_show_syncs_timer_before_overlay_steps", "tests/test_build107_pause_change_countdown.py::test_runtime_version", "tests/test_build107_pause_change_countdown.py::test_start_uses_change_then_start_without_stop_or_set_duration", "tests/test_build108_native_pause_no_resync.py::test_explicit_time_change_seeds_even_before_first_space", "tests/test_build108_native_pause_no_resync.py::test_game_clock_helper_only_seeds_on_set", "tests/test_build110_match_roster_atomic_switch.py::test_first_time_match_waits_for_core_roster_before_polling", "tests/test_build110_match_roster_atomic_switch.py::test_selected_game_cache_is_match_scoped_and_local", "tests/test_build111_agent_match_handoff.py::test_mapping_is_refreshed_only_after_roster_enrichment", "tests/test_build44_strength_vmix_sync.py::test_runtime_refreshes_only_changed_mapping_when_strength_changes", "tests/test_build56_trigger_save_onair.py::test_quick_panel_on_air_tracking_has_ack_confirmed_fallback", "tests/test_build59_toasts_and_adaptive_runtime.py::test_runtime_can_grow_in_f11_and_large_viewports", "tests/test_build62_quick_panel_onair_reconcile.py::test_overlay_parser_accepts_legacy_function_strings", "tests/test_build86_penalty_context_prepared_titles.py::test_prepared_titles_is_forced_to_last_runtime_tab_and_uses_hockey_api_directly", "tests/test_build93_countdown_reseed_on_start.py::test_game_countdown_resume_is_reseeded_before_start", "tests/test_build93_countdown_reseed_on_start.py::test_hockey_timer_shortcut_reseeds_game_and_penalty_on_resume", "tests/test_build93_countdown_reseed_on_start.py::test_native_mode_still_has_no_per_second_countdown_transport", "tests/test_build95_countdown_explicit_start_stop_sync.py::test_combined_shortcut_changes_web_first_then_synchronizes_vmix", "tests/test_build95_countdown_explicit_start_stop_sync.py::test_main_countdown_start_pause_stop_all_hard_sync_web_value", "tests/test_build97_mapping_chunked_transport.py::test_build97_runtime_version_and_mapping_diagnostics", "tests/test_build97_mapping_chunked_transport.py::test_mapping_chunk_transport_sends_300_plus_links_in_small_batches", "tests/test_build97_mapping_chunked_transport.py::test_mapping_transport_retries_isolated_failed_command", "tests/test_build97_mapping_chunked_transport.py::test_mapping_transport_splits_timeout_batch_and_keeps_going", "tests/test_build98_timer_countdown_sync_fixed_pin.py::test_countdown_start_is_simple_set_start", "tests/test_build98_timer_countdown_sync_fixed_pin.py::test_pause_and_stop_freeze_without_reseed", "tests/test_mapping_admin_visibility.py::test_mapping_has_series_autolink_and_visible_sql_table_grid", "tests/test_shortcut_sequences.py::test_build90_native_countdown_avoids_per_second_transport", "tests/test_shortcut_sequences.py::test_hockey_timer_shortcut_supports_native_countdown_and_legacy_text_mirror", "tests/test_shortcut_sequences.py::test_overlay_group_repeat_uses_transition_out_not_all_off" ], "new_stage2_tests_passed": 31, "stage1_tests_passed": 64, "python_syntax_files": 39, "javascript_syntax_files": 10, "python_3_11_syntax": true, "real_postgresql_tested": false, "real_vmix_tested": false, "ui_checks": [ "operator spectator and explicit handoff", "rights dialog", "bilingual custom pluses", "penalty native Countdown to fake Agent", "Mapping dropdowns and offline scan deletion", "infraction menu close" ], "auth_checks": [ "idle expiry", "rolling cookie", "7h active browser simulation", "no renewal by polling", "multi-tab session", "offline and timeout recovery" ], "sql_before": { "resolve_context": { "SELECT": 52 }, "save_four_context_values": { "SELECT": 224, "INSERT": 4 }, "scoreboard_json": { "SELECT": 9, "UPDATE": 1 }, "100_command_ack_statuses": { "SELECT": 100, "UPDATE": 100 }, "100_overlay_messages": { "SELECT": 100, "UPDATE": 100 }, "20_scheduler_checks_no_due_sources": { "SELECT": 20 }, "selected_game_with_100_historical_matches": { "SELECT": 9, "UPDATE": 3, "queries_scanning_tournament": 1 } }, "sql_after": { "resolve_context": { "SELECT": 4 }, "save_four_context_values": { "SELECT": 5, "INSERT": 1 }, "scoreboard_json": { "SELECT": 9 }, "100_command_ack_statuses": {}, "100_overlay_messages": { "SELECT": 1, "UPDATE": 1 }, "20_scheduler_checks_no_due_sources": { "SELECT": 1 }, "selected_game_with_100_historical_matches": { "SELECT": 2, "UPDATE": 1, "queries_scanning_tournament": 0 } } } }