From cc08342e19d47b56ae5fb7ac65ada7f9eb8f7ec4 Mon Sep 17 00:00:00 2001 From: KitsuneTech1 <182616862+KitsuneTech1@users.noreply.github.com> Date: Wed, 2 Sep 2026 15:36:49 -0500 Subject: [PATCH 1/2] fix: add the Kaspersky score and the full division name Verified against the live Kaspersky scoreboard, which renders client side and so could not be read by plain fetch. Score is 4,413. The top three in the division tied on 4,413 and were separated on solve time, which is why the same figure appears on other teams' cards. The division is "North America, South America, Caribbean", not "North America". That is the actual scoreboard tab name. Last place in it is 361, which confirms the existing 3 / 361. Solve count stays absent. The scoreboard publishes no solve or challenge column in any division. --- site/index.html | 3 ++- site/results/index.html | 4 ++-- tests/site-contract.test.mjs | 6 ++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/site/index.html b/site/index.html index a589981..d4b61cb 100644 --- a/site/index.html +++ b/site/index.html @@ -45,9 +45,10 @@

Competition results

RESULT 2026 / team result

Kaspersky{CTF} 2026

-

Division: North America

+

Division: North America, South America, Caribbean

Placement
3 / 361
+
Score
4,413
diff --git a/site/results/index.html b/site/results/index.html index 417db2b..d6039ae 100644 --- a/site/results/index.html +++ b/site/results/index.html @@ -35,8 +35,8 @@

RESULT 2026 / team result

Kaspersky{CTF} 2026

-

Division: North America

-
Placement
3 / 361
+

Division: North America, South America, Caribbean

+
Placement
3 / 361
Score
4,413
diff --git a/tests/site-contract.test.mjs b/tests/site-contract.test.mjs index 26ce679..d40df46 100644 --- a/tests/site-contract.test.mjs +++ b/tests/site-contract.test.mjs @@ -81,7 +81,8 @@ test("the homepage removes the redundant path and publishes every verified resul assert.match(home, /5,997/); assert.match(home, /Kaspersky\{CTF\} 2026/); assert.match(home, /3 \/ 361/); - assert.match(home, /Division: North America/); + assert.match(home, /Division: North America, South America, Caribbean/); + assert.match(home, /4,413/); assert.equal((home.match(/RESULT 2026 \/ team result/g) ?? []).length, 1); assert.equal((home.match(/RESULT 2026 \/ member result with a prior team/g) ?? []).length, 2); assert.doesNotMatch(home, /KK \/ RESULT 2026/); @@ -106,7 +107,8 @@ test("the Results page contains the complete verified competition record", () => assert.match(results, /Open - International/); assert.match(results, /Kaspersky\{CTF\} 2026/); assert.match(results, /3 \/ 361/); - assert.match(results, /Division: North America/); + assert.match(results, /Division: North America, South America, Caribbean/); + assert.match(results, /4,413/); assert.equal((results.match(/RESULT 2026 \/ team result/g) ?? []).length, 1); assert.ok( results.indexOf("Kaspersky{CTF} 2026") < results.indexOf("Cyber Apocalypse 2026"), From 8960d8fe778e96ebdc3e647f17966ac3a3debe2a Mon Sep 17 00:00:00 2001 From: KitsuneTech1 <182616862+KitsuneTech1@users.noreply.github.com> Date: Wed, 2 Sep 2026 15:57:44 -0500 Subject: [PATCH 2/2] feat: record the Kaspersky full clear as 30 of 30 Total challenge count is 30. The kavore/kaspersky2026-writeups collection documents 27, stated in its README and listed in its navigation table, and Sudokrypt, Good pineapple and Garden appear nowhere in that tree. 27 plus 3 is 30. Moo confirmed the team cleared all 30, which is consistent with tying the top two teams in the division on 4,413. --- site/index.html | 1 + site/results/index.html | 2 +- tests/site-contract.test.mjs | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/site/index.html b/site/index.html index d4b61cb..163963d 100644 --- a/site/index.html +++ b/site/index.html @@ -48,6 +48,7 @@

Kaspersky{CTF} 2026

Division: North America, South America, Caribbean

Placement
3 / 361
+
Solved
30 / 30
Score
4,413
diff --git a/site/results/index.html b/site/results/index.html index d6039ae..da5602b 100644 --- a/site/results/index.html +++ b/site/results/index.html @@ -36,7 +36,7 @@

RESULT 2026 / team result

Kaspersky{CTF} 2026

Division: North America, South America, Caribbean

-
Placement
3 / 361
Score
4,413
+
Placement
3 / 361
Solved
30 / 30
Score
4,413
diff --git a/tests/site-contract.test.mjs b/tests/site-contract.test.mjs index d40df46..2a6d095 100644 --- a/tests/site-contract.test.mjs +++ b/tests/site-contract.test.mjs @@ -82,6 +82,7 @@ test("the homepage removes the redundant path and publishes every verified resul assert.match(home, /Kaspersky\{CTF\} 2026/); assert.match(home, /3 \/ 361/); assert.match(home, /Division: North America, South America, Caribbean/); + assert.match(home, /30 \/ 30/); assert.match(home, /4,413/); assert.equal((home.match(/RESULT 2026 \/ team result/g) ?? []).length, 1); assert.equal((home.match(/RESULT 2026 \/ member result with a prior team/g) ?? []).length, 2); @@ -108,6 +109,7 @@ test("the Results page contains the complete verified competition record", () => assert.match(results, /Kaspersky\{CTF\} 2026/); assert.match(results, /3 \/ 361/); assert.match(results, /Division: North America, South America, Caribbean/); + assert.match(results, /30 \/ 30/); assert.match(results, /4,413/); assert.equal((results.match(/RESULT 2026 \/ team result/g) ?? []).length, 1); assert.ok(