Head to head: Kimi-K2.7-Code vs gpt-5.4 In a head-to-head benchmark of 12 fresh text tasks, Kimi-K2.7-Code scored 103.5 against gpt-5.4's 101.5, with only 50% confidence that either model is better. The results show a near tie, with Kimi slightly stronger on code reasoning and gpt-5.4 on format-sensitive writing, but neither model consistently dominates. This matchup is as close as it gets: Kimi-K2.7-Code 103.5 vs gpt-5.4 101.5 , with only 50% confidence that either model is actually better. That is not a win; it is a coin flip dressed up as a scoreline. The task-by-task results back that up. Kimi takes the concurrency bug fix, localization, and the tricky SQL window query, while gpt-5.4 edges the constrained outage note, messy vendor extraction, and LRU cache task. The rest are dead even, including the repeat-buyers SQL, classification, ticket labeling, release notes, and manager update prompts. What matters here is how evenly the strengths cancel out. Kimi looks a touch sharper on code-centric reasoning and one translation task, while gpt-5.4 is a bit more polished on format-sensitive writing and extraction. But neither model consistently dominates the other, and several of the “wins” are narrow enough to be academic. Final call: tie — effectively even, and too close to call. How they were tested We ran 12 fresh text tasks, generated on the fly for this matchup so neither model could prepare in advance, and had gpt-5.4-mini score each one. Kimi-K2.7-Code scored 103.5 to gpt-5.4's 101.5. 1. Top repeat buyers SQL Given this schema: customers customer id, customer name, region orders order id, customer id, order date, status order items order id, sku, quantity, unit price Write a single SQL query to return, for completed orders in Q1 2025 only, the top 3 customers by total revenue from customers in the 'Northwest' region. Revenue is sum quantity unit price . Return columns: customer id, customer name, total revenue. Sort by total revenue descending, then customer id ascending. Winner: Tie — Both queries correctly filter Northwest customers, completed orders, and Q1 2025, aggregate revenue properly, and return the requested top 3 sorted as specified. B is slightly more SQL-dialect-specific with DATE/FETCH syntax, but A is equally valid in many common SQL dialects, so overall they are equivalent. Order-swapped judge pass: Both queries correctly filter Northwest customers, completed orders in Q1 2025, aggregate revenue as SUM quantity unit price , group by customer, and sort as requested. The only difference is dialect-specific row limiting FETCH FIRST vs LIMIT , so neither is clearly better without a specified SQL dialect. 2. Constrained outage note Write a customer-facing service notice about a brief outage in our invoice export feature. Follow ALL rules exactly: - Output exactly 4 bullet points. - Each bullet must start with these labels in order: Impact:, Cause:, Status:, Next step: - Each bullet must be 9-12 words long. - Include the timestamp "2026-03-14 09:20 UTC" exactly once. - Mention product name "LedgerLane" exactly once. - Do NOT use the words: sorry, apologize, issue, bug. - The final bullet must contain a URL placeholder in parentheses, like link . Winner: gpt-5.4 — B is closer to the required format and content, though both violate the 9-12 word constraint and the exact bullet-label ordering requirement. A also has a wording error and is less polished overall. Order-swapped judge pass: Both outputs violate the strict formatting rules, but B is closer overall: it includes the required placeholder in the final bullet and avoids banned words. A misses the required exact bullet-label pattern and final-bullet URL placeholder format more clearly, while B still has a timestamp phrasing issue and other length/format problems. 3. Concurrency bug fix This TypeScript function is meant to memoize an async loader but has a race: concurrent callers can each trigger the underlying fetch. Fix it so the fetch runs at most once per key, and a rejected fetch does NOT poison the cache a later call must retry . Return ONLY the corrected function. ts const cache = new Map