<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vineet Wagh</title>
    <description>The latest articles on DEV Community by Vineet Wagh (@vineetw07).</description>
    <link>https://dev.to/vineetw07</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4153693%2Fdd74f5ca-3a0c-4cb0-9372-777f3c2de1c6.png</url>
      <title>DEV Community: Vineet Wagh</title>
      <link>https://dev.to/vineetw07</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vineetw07"/>
    <language>en</language>
    <item>
      <title>OmniJudge Post-Mortem: 1-ULP Drift, Prisma Traps, and Alpine musl</title>
      <dc:creator>Vineet Wagh</dc:creator>
      <pubDate>Thu, 01 Oct 2026 06:23:29 +0000</pubDate>
      <link>https://dev.to/vineetw07/omnijudge-post-mortem-1-ulp-drift-prisma-traps-and-alpine-musl-nkd</link>
      <guid>https://dev.to/vineetw07/omnijudge-post-mortem-1-ulp-drift-prisma-traps-and-alpine-musl-nkd</guid>
      <description>&lt;p&gt;Evaluating hackathons at scale is deceptively difficult.&lt;/p&gt;

&lt;p&gt;When 40 software projects are evaluated across 4 specialized tracks by 30 volunteer judges using a 4-criteria weighted rubric, naive arithmetic means fail catastrophically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hawk vs. Dove Skew:&lt;/strong&gt; Strict judges award scores between 2.0 and 3.5. Lenient judges award scores between 4.0 and 5.0. A project evaluated by two hawks loses to a mediocre project evaluated by two doves if raw scores are averaged.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incomplete Block Design (IBD):&lt;/strong&gt; Judges cannot evaluate all 40 projects without severe cognitive fatigue. Each judge inspects an incomplete cohort of 8 to 12 projects, meaning the Law of Large Numbers does not balance out calibration variance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We built &lt;strong&gt;OmniJudge&lt;/strong&gt; with Modified Z-Score (MAD) normalization, server-enforced track jurisdictions, sealed wire redaction, and append-only auditability.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;THE OMNIJUDGE ENGINE PIPELINE:
[40 Projects / 30 Judges]
   │
   ▼
[Track Jurisdiction &amp;amp; COI Defense]
   │ ──► Hour 60 Bug: Unassigned Judge WHERE 1=1 (Patched)
   ▼
[MAD Normalization Engine]
   │ ──► NaN on Zero Variance &amp;amp; 1-ULP 10^15 Float Drift (Patched)
   ▼
[4-Stage Deterministic Tie-Breaker]
   │ ──► Unreviewed Project Score Inversion (Patched)
   ▼
[RFC 4180 CSV Streamer]
   │ ──► CWE-1236 Formula Injection Sanitizer (Patched)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;During the 72-hour build, three silent failures threatened the integrity of the platform:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The IEEE-754 1-ULP Drift:&lt;/strong&gt; Microscopic floating-point discrepancies in rubric composite score computations caused standard zero-variance checks to fail, inflating normalized scores by a factor of 3 × 10¹⁵.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Prisma Parameter-Drop Trap:&lt;/strong&gt; An ORM query compiler behavior at Hour 60 inadvertently dropped SQL WHERE clauses for unassigned judges, granting unauthorized god-mode visibility into all 40 submissions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Unreviewed Score Inversion:&lt;/strong&gt; Mathematical normalization placed unreviewed projects (baseline z = 0.0000) above legitimate submissions that received negative normalized scores from rigorous judges.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here is the raw engineering post-mortem covering what broke, why it broke, and how we hardened it.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Architecture Decision That Shaped Everything: Killing WebSockets for Air-Gapped Invariants
&lt;/h2&gt;

&lt;p&gt;At Hour 20, we had an ambitious Figma-style "live collaborative judging room." Judges on the same track saw real-time peer cursors, instant score ripples, and synchronized notes over WebSockets backed by Redis Pub/Sub.&lt;/p&gt;

&lt;p&gt;At Hour 36, we ruthlessly deleted the entire WebSocket engine and excised Redis from our stack.&lt;/p&gt;

&lt;p&gt;Two non-negotiable architectural constraints forced this decision:&lt;/p&gt;

&lt;h3&gt;
  
  
  1.1 Air-Gapped Single-Container Invariants
&lt;/h3&gt;

&lt;p&gt;Automated hackathon evaluators (&lt;code&gt;run.py&lt;/code&gt;) test applications in isolated Docker environments (often with &lt;code&gt;--network none&lt;/code&gt;). Requiring a Redis sidecar violated our single-container Alpine Linux runtime mandate. &lt;/p&gt;

&lt;p&gt;A single-process Next.js + SQLite binary boots in 800ms, has zero external daemon dependencies, and runs reliably in any air-gapped or network-restricted container.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.2 Cognitive Anchoring Bias (Decision Theory)
&lt;/h3&gt;

&lt;p&gt;In behavioral economics (Kahneman &amp;amp; Tversky), peer awareness during evaluation introduces severe &lt;strong&gt;anchoring cascades&lt;/strong&gt;. If Judge Alpha sees Judge Beta award a 5.0 in real-time, Judge Alpha's independent scoring is subconsciously anchored upward.&lt;/p&gt;

&lt;p&gt;Modified Z-Score normalization mathematically requires &lt;strong&gt;statistical independence across reviewer observations&lt;/strong&gt;. Real-time collaborative WebSockets actively undermined the mathematical validity of our judging engine.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Replacement Architecture
&lt;/h3&gt;

&lt;p&gt;Instead of stateful WebSockets, we implemented:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Atomic HTTP Transactions:&lt;/strong&gt; Scoring updates occur over atomic HTTP POST requests wrapped in &lt;code&gt;prisma.$transaction&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Append-Only SQLite Audit Trail:&lt;/strong&gt; Every score write, vote, and setting toggle writes an immutable before/after diff to the &lt;code&gt;AuditLog&lt;/code&gt; table (never updated, never deleted).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detached Asynchronous Webhook Dispatcher:&lt;/strong&gt; For external integrations, we engineered an asynchronous HMAC-SHA256 webhook dispatcher (&lt;code&gt;src/lib/webhooks.ts&lt;/code&gt;) bounded by a strict 4-second &lt;code&gt;AbortController&lt;/code&gt; timeout to prevent SSRF and event loop blocking:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// src/lib/webhooks.ts&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;dispatchWebhookEvent&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;T&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;unknown&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;WebhookEventName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;dispatchedCount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Queries active subscribers and dispatches asynchronously&lt;/span&gt;
  &lt;span class="c1"&gt;// Enforces 4,000ms AbortController timeout to prevent SSRF and thread-hangs&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;controller&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;AbortController&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;timeoutId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;abort&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="mi"&gt;4000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;X-OmniJudge-Signature&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;signWebhookPayload&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;serialized&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;secret&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;X-OmniJudge-Event&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User-Agent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;OmniJudge-Webhook-Engine/1.0&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;serialized&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;signal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;signal&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="nf"&gt;clearTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;timeoutId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The system achieved zero external dependencies, 100% offline air-gapped compliance, and imperviousness to external subscriber latency.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. The Docker Gotcha That Cost Us Hours: Alpine musl, OpenSSL 3, and Ephemeral Container Boots
&lt;/h2&gt;

&lt;p&gt;Single-container evaluation (&lt;code&gt;docker run -p 8080:8080&lt;/code&gt;) sounds trivial until you combine Node.js 20 on Alpine Linux, Prisma ORM, SQLite volume mounts, and cross-platform developer workstations. &lt;/p&gt;

&lt;p&gt;What should have taken 20 minutes cost over 6 hours of forensic debugging across commits &lt;code&gt;b03425c&lt;/code&gt;, &lt;code&gt;38eabd1&lt;/code&gt;, and &lt;code&gt;cfdea6c&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;THE DOCKER TRAP TAXONOMY:
1. Windows Host (CRLF) ──► entrypoint.sh ──► Alpine /bin/sh: not found (\r trap)
2. node:20-alpine (musl) ──► Prisma Engine ──► Expected linux-musl-openssl-3.0.x
3. Empty Volume Mount ──► SQLite file:/data/dogfood.db ──► SQLITE_CANTOPEN crash
4. Ephemeral Evaluator ──► prisma migrate deploy ──► Migration history desync
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Gotcha A: The Alpine musl libc &amp;amp; OpenSSL 3 BinaryTarget Mismatch (Commit &lt;code&gt;b03425c&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;To minimize image size, we selected &lt;code&gt;node:20-alpine&lt;/code&gt;. However, Alpine uses &lt;code&gt;musl libc&lt;/code&gt; instead of GNU &lt;code&gt;glibc&lt;/code&gt;. Prisma's query engine is a native Rust binary compiled specifically for the host C library.&lt;/p&gt;

&lt;p&gt;When the container booted, Next.js initialized, but the first database query crashed instantly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PrismaClientInitializationError: Unable to load query engine library.
Expected linux-musl-openssl-3.0.x, found nothing in /app/node_modules/.prisma/client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Locally on Windows, Prisma downloaded &lt;code&gt;windows-x64&lt;/code&gt;. In Debian, it expects &lt;code&gt;debian-openssl-3.0.x&lt;/code&gt;. In Alpine 3.19+, it requires &lt;code&gt;linux-musl-openssl-3.0.x&lt;/code&gt; AND a runtime OpenSSL library.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In &lt;code&gt;prisma/schema.prisma&lt;/code&gt;, explicitly declare the Alpine target:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;generator client {
  provider      = "prisma-client-js"
  binaryTargets = ["native", "linux-musl-openssl-3.0.x"]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;In &lt;code&gt;Dockerfile&lt;/code&gt;, install OpenSSL in both &lt;code&gt;builder&lt;/code&gt; and &lt;code&gt;runner&lt;/code&gt; stages:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;RUN &lt;/span&gt;apk add &lt;span class="nt"&gt;--no-cache&lt;/span&gt; openssl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Gotcha B: The Windows CRLF Line-Ending Trap
&lt;/h3&gt;

&lt;p&gt;Editing &lt;code&gt;entrypoint.sh&lt;/code&gt; on Windows checked out CRLF (&lt;code&gt;\r\n&lt;/code&gt;) line endings. When copied into Alpine Linux, &lt;code&gt;/bin/sh&lt;/code&gt; tried to parse the shebang line as &lt;code&gt;#!/bin/sh\r&lt;/code&gt;. Because no binary named &lt;code&gt;/bin/sh\r&lt;/code&gt; exists, the Linux kernel threw an infamously misleading error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/bin/sh: ./entrypoint.sh: not found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The file existed, was marked executable (&lt;code&gt;chmod +x&lt;/code&gt;), and was readable, yet the kernel claimed it didn't exist!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix:&lt;/strong&gt;&lt;br&gt;
In &lt;code&gt;Dockerfile&lt;/code&gt;, add an explicit carriage-return strip:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; entrypoint.sh ./entrypoint.sh&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'s/\r$//'&lt;/span&gt; ./entrypoint.sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;chmod&lt;/span&gt; +x ./entrypoint.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Gotcha C: The Missing &lt;code&gt;/data&lt;/code&gt; Mount Void (&lt;code&gt;SQLITE_CANTOPEN&lt;/code&gt;, Commit &lt;code&gt;38eabd1&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;The platform persists state to &lt;code&gt;DATABASE_URL="file:/data/dogfood.db"&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;When running &lt;code&gt;docker run -v dogfood_data:/data&lt;/code&gt;, Docker mounts the volume. But during cold acceptance tests where no host directory was pre-created, the container started without a &lt;code&gt;/data&lt;/code&gt; folder on disk. SQLite does not recursively create missing parent directories; it failed with &lt;code&gt;SQLITE_CANTOPEN (code 14)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix:&lt;/strong&gt;&lt;br&gt;
In &lt;code&gt;entrypoint.sh&lt;/code&gt;, ensure directory creation prior to invoking Prisma:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Ensure data directory exists for SQLite database&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Gotcha D: &lt;code&gt;prisma migrate deploy&lt;/code&gt; vs. &lt;code&gt;prisma db push&lt;/code&gt; (Commit &lt;code&gt;cfdea6c&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;In standard CI/CD, database migrations use &lt;code&gt;npx prisma migrate deploy&lt;/code&gt;. However, in automated evaluator environments (&lt;code&gt;run.py&lt;/code&gt;), containers are spun up from scratch, mounted to ephemeral storage, and seeded with synthetic datasets (&lt;code&gt;fixtures.json&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;code&gt;migrate deploy&lt;/code&gt; frequently failed with drift detection errors or complained about missing &lt;code&gt;_prisma_migrations&lt;/code&gt; records on freshly initialized SQLite files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix:&lt;/strong&gt;&lt;br&gt;
We switched the boot sequence to &lt;code&gt;prisma db push&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"[1/3] Synchronizing database schema..."&lt;/span&gt;
npx prisma db push &lt;span class="nt"&gt;--accept-data-loss&lt;/span&gt; &lt;span class="nt"&gt;--skip-generate&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"[2/3] Seeding database from fixtures..."&lt;/span&gt;
npx tsx src/lib/seed.ts

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"[3/3] Starting Next.js on port 8080..."&lt;/span&gt;
&lt;span class="nb"&gt;exec &lt;/span&gt;node server.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;prisma db push&lt;/code&gt; synchronizes the schema in-memory directly against SQLite in under 200ms, completely avoiding migration state lockups and providing an air-gapped, zero-drift boot sequence.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The Scoring Algorithm We Almost Shipped Before Realizing It Was Broken
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why Classical Z-Score Collapsed
&lt;/h3&gt;

&lt;p&gt;The standard Z-score relies on sample mean μ and sample standard deviation σ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;z_i = (x_i - μ) / σ
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In our acceptance fixtures (&lt;code&gt;Hack_docs/fixtures.json&lt;/code&gt;), judge &lt;code&gt;jdg_30&lt;/code&gt; (Rafa Okonkwo) gave every assigned project an identical score of 4.0:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;X = [4.0, 4.0, 4.0, 4.0] ⟹ μ = 4.0, σ = 0.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The standard Z-score evaluated to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;z_i = (4.0 - 4.0) / 0.0 = 0 / 0 = NaN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In JavaScript, &lt;code&gt;NaN&lt;/code&gt; poisons &lt;code&gt;Array.prototype.sort()&lt;/code&gt;, causing total corruption of the leaderboard array and throwing exceptions during CSV serialization.&lt;/p&gt;

&lt;h3&gt;
  
  
  Transitioning to Modified Z-Score (MAD)
&lt;/h3&gt;

&lt;p&gt;To achieve robustness against extreme outliers (a 50% breakdown point), we implemented the Boris Iglewicz and David Hoaglin Modified Z-Score:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;modified_z_i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.6745&lt;/span&gt; &lt;span class="err"&gt;×&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x_i&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;median&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;MAD&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;median(X)&lt;/code&gt; is the median score awarded by the judge.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MAD&lt;/code&gt; is the Median Absolute Deviation: &lt;code&gt;MAD = median(|x_i - median|)&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Mathematical Derivation of the Constant 0.6745
&lt;/h3&gt;

&lt;p&gt;The constant 0.6745 is the exact mathematical factor required to make the Modified Z-Score asymptotically equivalent to the standard Z-Score under a standard normal distribution N(0, 1).&lt;/p&gt;

&lt;p&gt;For a standard normal random variable Z ~ N(0, 1), the median is 0. By definition, the population MAD is the value &lt;code&gt;mad&lt;/code&gt; satisfying:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;P(|Z| ≤ mad) = 0.50
2Φ(mad) - 1 = 0.50 ⟹ Φ(mad) = 0.75
mad = Φ⁻¹(0.75) ≈ 0.67448975...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For normally distributed data with standard deviation σ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E[MAD] = Φ⁻¹(0.75) × σ ≈ 0.6745 × σ ⟹ σ ≈ MAD / 0.6745 ≈ 1.4826 × MAD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Multiplying &lt;code&gt;(x_i - median)&lt;/code&gt; by &lt;code&gt;0.6745 / MAD&lt;/code&gt; ensures that when scores follow a Gaussian distribution, the Modified Z-Score is on the exact same scale as the classical Z-Score.&lt;/p&gt;

&lt;h3&gt;
  
  
  The IEEE-754 1-ULP Drift Catastrophe (3 × 10¹⁵ Blowup)
&lt;/h3&gt;

&lt;p&gt;While MAD resolved &lt;code&gt;NaN&lt;/code&gt; on theoretical zero-variance sets, a far more sinister bug emerged in production during floating-point composite evaluations.&lt;/p&gt;

&lt;p&gt;When criteria weights (e.g., 1.5, 1.0, 1.0, 0.5) were applied to criterion scores, decimal fractions could not be represented exactly in IEEE-754 64-bit binary floating-point representation. &lt;/p&gt;

&lt;p&gt;For two projects evaluated identically by a judge, weighted composite computations yielded:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project A Composite: &lt;code&gt;4.0000000000000000&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Project B Composite: &lt;code&gt;4.0000000000000009&lt;/code&gt; (differing by 1 Unit in the Last Place, ULP ≈ 2.22 × 10⁻¹⁶)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When computing MAD:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Deviations: &lt;code&gt;[0.0, 8.88 × 10⁻¹⁶, 0.0, ...]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Computed MAD: &lt;code&gt;MAD = 2.220446049250313 × 10⁻¹⁶&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A naive zero check &lt;code&gt;if (mad === 0)&lt;/code&gt; evaluated to &lt;strong&gt;&lt;code&gt;false&lt;/code&gt;&lt;/strong&gt;! The engine proceeded to compute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;modified_z = 0.6745 × (4.0000000000000009 - 4.0) / (2.22 × 10⁻¹⁶) ≈ +3.0375 × 10¹⁵
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A microscopic rounding error in the 16th decimal place exploded the project's normalized score to &lt;strong&gt;over 3 quadrillion&lt;/strong&gt;, rocketing a mediocre project to the global #1 rank!&lt;/p&gt;

&lt;h3&gt;
  
  
  The Production Fix (&lt;code&gt;src/lib/normalization.ts&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;We neutralized this failure mode by introducing an explicit floating-point epsilon threshold (&lt;code&gt;EPSILON = 1e-9&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// src/lib/normalization.ts&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;EPSILON&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;normaliseJudgeScores&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;
  &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;NormaliseOptions&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;every&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;number&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isFinite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sorted&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;median&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="nx"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
      &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
      &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;deviations&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;median&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sortedDevs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;deviations&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mad&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="nx"&gt;sortedDevs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
      &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;sortedDevs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
      &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sortedDevs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;sortedDevs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="c1"&gt;// Zero-variance &amp;amp; floating-point precision guard:&lt;/span&gt;
  &lt;span class="c1"&gt;// Catches identical scores, single review panels, and IEEE-754 1-ULP drift.&lt;/span&gt;
  &lt;span class="c1"&gt;// When MAD &amp;lt; EPSILON, return neutral zeros — no signal, no 10^15 score blowup.&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mad&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;EPSILON&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;minSpread&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;minSpread&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;scale&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;minSpread&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mad&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;minSpread&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mf"&gt;0.6745&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;mad&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;shrink&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;shrink&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shrink&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.6745&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;median&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If a judge awards identical scores (or scores differing only by IEEE-754 precision noise), &lt;code&gt;MAD &amp;lt; 10⁻⁹&lt;/code&gt;. The engine assigns neutral &lt;code&gt;0.0&lt;/code&gt; modified Z-scores. The judge provides zero discriminating signal, completely protecting the ranking engine from division-by-zero crashes and quadrillion-scale score explosions.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. The Part of the Spec We Thought Was Simple Until We Built It
&lt;/h2&gt;

&lt;p&gt;Two spec requirements appeared straightforward on paper but contained severe edge cases:&lt;/p&gt;

&lt;h3&gt;
  
  
  4.1 Spec Trap 1: "Export evaluation results to CSV"
&lt;/h3&gt;

&lt;h4&gt;
  
  
  A. CWE-1236 CSV Formula Injection Defense
&lt;/h4&gt;

&lt;p&gt;Adversarial participants submitted project titles starting with &lt;code&gt;=cmd|'/C calc'!A0&lt;/code&gt; or &lt;code&gt;@SUM(A1:A10)&lt;/code&gt;. When opened in Microsoft Excel, these execute arbitrary commands.&lt;/p&gt;

&lt;p&gt;However, naive sanitization that prefixes &lt;code&gt;-&lt;/code&gt; with &lt;code&gt;'&lt;/code&gt; breaks negative numbers (e.g., a legitimate negative normalized score like &lt;code&gt;-0.6745&lt;/code&gt; becomes &lt;code&gt;'-0.6745&lt;/code&gt;, corrupting numerical calculations).&lt;/p&gt;

&lt;p&gt;We solved this with regex-based semantic sanitization in &lt;code&gt;escapeCsvField&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// src/app/api/export.csv/route.ts&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;escapeCsvField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// CSV Formula Injection Defense (CWE-1236):&lt;/span&gt;
  &lt;span class="c1"&gt;// Neutralize formula triggers on text strings while preserving valid negative floats&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/^&lt;/span&gt;&lt;span class="se"&gt;[&lt;/span&gt;&lt;span class="sr"&gt;=+&lt;/span&gt;&lt;span class="se"&gt;\-&lt;/span&gt;&lt;span class="sr"&gt;@&lt;/span&gt;&lt;span class="se"&gt;\t\r]&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nf"&gt;isNaN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`'&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// RFC 4180 Escaping: Wrap fields containing commas, quotes, or newlines in quotes&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;"&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\r&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`"&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/"/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;""&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;"`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  B. The Unreviewed Project Score Inversion Trap
&lt;/h4&gt;

&lt;p&gt;An unreviewed project has a baseline normalized score of 0.0000.&lt;br&gt;
An evaluated project that received strict scores from a hawk judge might have a normalized score of -0.4500.&lt;/p&gt;

&lt;p&gt;If sorted purely by score, unreviewed projects outrank evaluated projects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0.0000 (Unreviewed Project B) &amp;gt; -0.4500 (Evaluated Project A)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We introduced a &lt;strong&gt;status partition invariant&lt;/strong&gt;:&lt;br&gt;
Evaluated projects (&lt;code&gt;reviewCount &amp;gt; 0&lt;/code&gt;) strictly outrank unreviewed projects (&lt;code&gt;reviewCount === 0&lt;/code&gt;), regardless of whether the normalized score is negative.&lt;/p&gt;
&lt;h4&gt;
  
  
  C. Deterministic 4-Stage Tie-Breaking
&lt;/h4&gt;

&lt;p&gt;Ties are resolved deterministically through a 4-tier comparator (&lt;code&gt;src/lib/ranking.ts&lt;/code&gt;):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tier 1:&lt;/strong&gt; Evaluated projects strictly outrank unreviewed (&lt;code&gt;reviewCount &amp;gt; 0&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 2:&lt;/strong&gt; Normalized score DESC with ε = 10⁻⁹ floating-point tolerance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 3:&lt;/strong&gt; Raw weighted composite score DESC with ε = 10⁻⁹ tolerance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 4:&lt;/strong&gt; Lexicographical project ID ASC.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  4.2 Spec Trap 2: "Scope judges to assigned tracks" (The Hour 60 Prisma Parameter-Drop Bug)
&lt;/h3&gt;

&lt;p&gt;At Hour 60, during adversarial role-probing (&lt;code&gt;tests/test_phase3_adversarial.py&lt;/code&gt;), an unassigned judge (&lt;code&gt;assignedTracks = []&lt;/code&gt;, &lt;code&gt;trackIds = []&lt;/code&gt;) logged in.&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;src/app/judge/page.tsx&lt;/code&gt;, the project query was written as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// THE FATAL FLAW AT HOUR 60:&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;trackIds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;assignedTracks&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;projects&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;prisma&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;findMany&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;where&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;trackId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;trackIds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;trackIds&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// &amp;lt;-- THE TRAP&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;include&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;team&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;track&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The developer intended: &lt;em&gt;"If the judge has assigned tracks, filter by them; if not, pass undefined so Prisma knows there are no tracks."&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  The Prisma Query Compiler AST Trap
&lt;/h4&gt;

&lt;p&gt;In Prisma Client, &lt;strong&gt;passing &lt;code&gt;undefined&lt;/code&gt; to a &lt;code&gt;where&lt;/code&gt; property instructs the query compiler to strip that field from the SQL query AST entirely.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Prisma did not compile &lt;code&gt;trackId: undefined&lt;/code&gt; into &lt;code&gt;WHERE trackId IN (NULL)&lt;/code&gt; or &lt;code&gt;WHERE 1=0&lt;/code&gt;. It compiled it to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Generated SQL when trackIds.length === 0 and trackId is undefined:&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="nv"&gt;`id`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;`title`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;`summary`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;`trackId`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;`teamId`&lt;/span&gt; 
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="nv"&gt;`Project`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;-- (WHERE clause completely omitted! Effectively WHERE 1=1)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An unassigned judge with zero clearance was granted god-mode visibility into all 40 submissions across every track!&lt;/p&gt;

&lt;h4&gt;
  
  
  The Fix: Relational Defense in Depth (Commit &lt;code&gt;a059d80&lt;/code&gt; and &lt;code&gt;121138c&lt;/code&gt;)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// src/app/judge/page.tsx&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;trackIds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;assignedTracks&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;projectsWhere&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;trackId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="nl"&gt;teamId&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;not&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Always pass { in: trackIds }. In SQLite/Prisma, [] evaluates to 0 records&lt;/span&gt;
  &lt;span class="na"&gt;trackId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;trackIds&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Check if judge is affiliated with any team (Conflict of Interest defense)&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;judgeTeamMember&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;teamId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;projectsWhere&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;teamId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;not&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;judgeTeamMember&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;teamId&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;projects&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;prisma&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;findMany&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;where&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;projectsWhere&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;include&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;team&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;track&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;orderBy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;asc&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And in &lt;code&gt;POST /api/judge/scores/route.ts&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Enforce Conflict of Interest Bar&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isTeamMember&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;prisma&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;teamMember&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;findFirst&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;where&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;teamId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;teamId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isTeamMember&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;NextResponse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Forbidden: Conflict of interest — judges cannot evaluate their own team project&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;403&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  5. Verification Credentials &amp;amp; Reproducibility Matrix
&lt;/h2&gt;

&lt;p&gt;The architecture was verified across five automated testing suites. Every test executed cleanly with zero failures.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Test Suite&lt;/th&gt;
&lt;th&gt;File Path&lt;/th&gt;
&lt;th&gt;Assertions&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;th&gt;Focus Area&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Official Acceptance Suite&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Hack_docs/run.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;7 / 7 checks&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PASS (100%)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Full end-to-end container evaluation (T1 &amp;amp; T2 specs)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Adversarial Regression&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tests/test_phase3_adversarial.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;47 / 47 checks&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PASS (100%)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;IDOR probing, token spoofing, role boundary testing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tier 2 Exhaustive Audit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tests/test_t2_exhaustive_audit.ts&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;17 / 17 checks&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PASS (100%)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;MAD math, zero-variance fixtures, CWE-1236 injection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cryptographic Certificates&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tests/test_t4_certificates.ts&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;16 / 16 checks&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PASS (100%)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Canonical JSON, HMAC-SHA256 anti-tamper verification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Webhooks &amp;amp; Ingest Engine&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tests/test_t4_webhooks_and_import.ts&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;11 / 11 checks&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PASS (100%)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Async webhook dispatch, Zod bulk transaction rollback&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Reproduction Commands
&lt;/h3&gt;

&lt;p&gt;Any judge can reproduce our audit in under 60 seconds directly from PowerShell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Run Tier 2 Exhaustive Audit Suite (17/17 assertions):&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;npx&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tsx&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tests/test_t2_exhaustive_audit.ts&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# 2. Run Cryptographic Certificate Suite (16/16 assertions):&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;npx&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tsx&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tests/test_t4_certificates.ts&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# 3. Run Webhooks &amp;amp; Bulk Import Suite (11/11 assertions):&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;npx&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tsx&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tests/test_t4_webhooks_and_import.ts&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# 4. Official Acceptance Suite:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;python&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Hack_docs/run.py&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dogfood&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toml&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  6. Lessons Learned &amp;amp; System Architecture Principles
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Never Trust ORM &lt;code&gt;undefined&lt;/code&gt; Semantics:&lt;/strong&gt; Modern ORMs like Prisma treat &lt;code&gt;undefined&lt;/code&gt; as "omit this constraint," not "assert null." Always provide explicit values (&lt;code&gt;{ in: array }&lt;/code&gt;) or build defensive schema guards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Never Compare Floating-Point Variances with Zero:&lt;/strong&gt; In weighted numerical systems, exact decimal values do not exist in binary IEEE-754 floats. A delta of 2.22 × 10⁻¹⁶ divided into a difference will inflate numbers to 10¹⁵. Always clamp with an epsilon (&lt;code&gt;EPSILON = 1e-9&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simplicity Over Distributed Complexity:&lt;/strong&gt; Real-time WebSockets and Redis pub/sub add operational fragility and cognitive bias. Replacing them with atomic transactions, append-only audit logs, and non-blocking asynchronous webhooks gave us an air-gapped engine with zero failure states.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Treat CSV as an Attack Surface:&lt;/strong&gt; Any user-supplied text field exported to a CSV is an arbitrary code execution vector (CWE-1236). Neutralize formula characters at the serialization boundary.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Full open-source codebase, OpenAPI specifications, and test suites are available on GitHub:&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://github.com/Vineetw07/OmniJudge" rel="noopener noreferrer"&gt;https://github.com/Vineetw07/OmniJudge&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>docker</category>
      <category>nextjs</category>
    </item>
  </channel>
</rss>
