Analysis — Ryzen AI MAX+ 395 / Radeon 8060S

Ryzen AI MAX+ 395, 16-core / 32-thread · Radeon 8060S gfx1151, 40 CU · Vulkan/RADV · 128 GB LPDDR5 (BIOS: 64 GB VRAM + 62 GB RAM; Vulkan VRAM+GTT ≈ 95 GB) · llama.cpp Vulkan. Everything beyond the headline score: how these models behave under load, whether the code they write is fast, whether the wording of the prompt changes the answer, and whether they can fix their own bugs. The summary ranks them; this page explains why.

Serving several requests at once

Decode on this hardware is limited by reading the weights out of memory, not by arithmetic, so a stack that batches properly can serve several requests for barely more than the cost of one. This is the number that matters for an agent firing parallel tool calls, or a team sharing one server — everything else on this page measures one request at a time. The workload is fixed at 8 C tasks, replayed with 1, 2, 4 and 8 requests in flight; the columns are aggregate tokens per second across all streams. This scores the serving stack, not the model's intelligence, so it is kept out of the coding total.

Every answer is still compiled and tested. Accuracy should not move with concurrency — where it does, batched arithmetic has changed the numerics enough to flip the model's token choices, which is worth knowing before you turn up the parallelism on a production box. Runs are timestamped and never overwritten, so these can be compared over time.

modeltype1248best gaincorrectRAM GBrun
seed-oss 36b MLXdense101011474.72x5/87.92026-09-18 08:15
gemma-4-26b MLXMoE4265551092.58x7/88.62026-09-17 14:15
qwen3.8-27b MLXdense101716232.22x7/89.12026-09-17 11:24
k2-horizon 36B-A4B llama.cpp forkMoE444857922.07x6/86.32026-09-19 00:56
laguna-xs.2 llama.cpp forkMoE7268931431.98x6/88.12026-09-19 01:25
qwen3.5-35b MLXMoE484454881.84x6/88.62026-09-17 13:05
qwen3.6-35b MLXMoE474557851.78x8/88.62026-09-17 21:12
qwen3-coder-next 80B MLXMoE384052661.76x8/88.72026-09-17 22:30
devstral-2 24b MLXdense142222241.73x5/82.62026-09-17 15:15
qwen3-coder-30b MLXMoE7978901331.68x4/83.12026-09-17 13:40
kat-coder v2.5 35B MLXMoE495865821.67x6/88.62026-09-19 09:10
qwen3.6-27b MLXdense111112181.66x5/89.42026-09-17 19:24
ornith-1.5 35b MLXMoE505262841.66x4/88.72026-09-21 14:58
nemotron-3-super 120B MLXMoE121919181.62x8/88.12026-09-19 05:12
qwen3.5-27b MLXdense111615181.61x5/89.42026-09-17 23:49
gpt-oss-20b MLXMoE69851051091.58x8/83.52026-09-17 09:42
qwen3.8-flash-next 125B llama.cpp forkMoE213231321.51x8/835.42026-09-19 07:34
qwen3.5-122b-a10b MLXMoE202930—1.50x7/88.32026-09-19 03:34
laguna-s 2.1 117B MLXMoE324646—1.44x8/87.42026-09-19 06:23
gpt-oss-120b MLXMoE506363641.28x8/84.62026-09-19 02:05
aya-23 35b MLXdense99991.04x4/87.92026-09-17 17:19
mistral-small-4 119B llama.cpp MetalMoE411716—1.00x7/81.32026-09-23 19:32
glm-4.7-flash MLXMoE63711161.00x8/82.02026-09-17 21:52

23 runs on disk; the newest per model is shown.

worked example: one request payload, and one model's throughput ladder

Each level fires 8 identical requests per stream at temperature 0, streaming, measuring time-to-first-token and decode rate. The requests are real coding tasks — this is the first one:

Implement in C11: `void reverse_string(char *s)`. Reverses s in place.
Reply with only a C code block. No main function, no tests, no explanation.

Measured for gpt-oss-20b:

streamsaggregate tok/smedian TTFT mspassed
16922126/8
28537238/8
410558937/8
8109115278/8

How fast is the code it writes?

Three easy tasks, each asked twice (silent / told). Numbers are milliseconds on a large hidden input — lower is better. The baseline is kimi-k3 (referee): one hand-written solution per task, timed locally by the same harness — every model is compared against it. A mid-grey N/6 means some prompts failed; in the chart a model still gets a bar for any variant (silent/told) where all 3 tasks worked.

modeltypedoneC silentC toldPython silentPython toldBash silentBash toldtelling helpsrun
baseline — kimi-k3 (referee)6/60.370.290.850.8110496—referee solution, timed locally
qwen3.5-122b-a10bMoE6/67000.330.830.8797992094.4x2026-09-19 03:05
qwen3-coder-next 80BMoE6/66850.370.850.8497971850.2x2026-09-17 22:19
qwen3.8-27bdense6/66660.361.141.13941001825.0x2026-09-17 10:40
devstral-2 24bdense6/66676671.171.1292352.6x2026-09-17 14:52
kimi-k3 (referee)—6/60.370.290.850.81104961.3x2026-09-17 16:07
gpt-oss-120bMoE6/60.350.360.840.8710699—2026-09-19 01:40
qwen3.8-flash-next 125BMoE6/60.340.370.880.84100106—2026-09-19 06:59
laguna-xs.2MoE6/60.360.360.860.8496100—2026-09-19 01:19
gemma-4-26bMoE6/60.350.351.141.139495—2026-09-17 14:00
gpt-oss-20bMoE6/60.350.371.141.143132—2026-09-17 09:22
ornith-1.5 35bMoE5/6compile_error0.380.860.82105303.5x2026-09-19 09:29
mistral-small-4 119BMoE5/60.35compile_error1.141.1397362.7x2026-09-23 19:22
laguna-s 2.1 117BMoE5/6compile_error210.840.8210098—2026-09-19 06:10
qwen3.5-35bMoE5/6665compile_error0.791.169594—2026-09-17 12:55
k2-horizon 36B-A4BMoE5/6695compile_error0.840.849898—2026-09-19 00:46
qwen3.5-27bdense5/60.35compile_error0.830.85100101—2026-09-17 22:57
qwen3.6-35bMoE4/6compile_errorcompile_error1.121.1194322.9x2026-09-17 21:00
glm-4.7-flashMoE4/6wrongcompile_error1.120.8630321.3x2026-09-17 21:44
qwen3.6-27bdense4/6compile_errorcompile_error1.131.1210391—2026-09-17 18:43
nemotron-3-super 120BMoE4/6compile_errorcompile_error0.860.83105101—2026-09-19 04:48
qwen3-coder-30bMoE4/6compile_errorcompile_error1.141.139191—2026-09-17 13:35
seed-oss 36bdense3/6compile_errorno_code0.890.8599no_code—2026-09-18 01:29
kat-coder v2.5 35BMoE3/6compile_errorcompile_error1.121.12103wrong—2026-09-19 09:02
aya-23 35bdense2/6compile_errorcompile_error1.131.15wrongwrong—2026-09-17 16:12
worked example: one perf task, both prompt variants, one real (slow) answer

Every task is asked twice — once with no mention of speed (silent), once warning that runtime will be measured (told):

silent:

Implement in C11: `void range_sums(const int *a, size_t n, const size_t *lo, const size_t *hi, size_t q, long long *out)`. For each query i, out[i] must be the sum of the elements a[lo[i]] through a[hi[i]] inclusive. Every query satisfies lo[i] <= hi[i] < n.
Reply with only a C code block. No main function, no tests, no explanation.

told:

Implement in C11: `void range_sums(const int *a, size_t n, const size_t *lo, const size_t *hi, size_t q, long long *out)`. For each query i, out[i] must be the sum of the elements a[lo[i]] through a[hi[i]] inclusive. Every query satisfies lo[i] <= hi[i] < n. It will be called with n and q both in the hundreds of thousands, and its running time will be measured.
Reply with only a C code block. No main function, no tests, no explanation.

Real answer from aya-23 35b (told variant, trial 0) — measured None ms median where the fastest correct answer anyone gave takes a fraction of that:

#include <stdint.h>

void range_sums(const int *a, size_t n, const size_t *lo, const size_t *hi, size_t q, long long *out) {
    size_t i, j;
    long long sum;

    for (i = 0; i < q; i++) {
        sum = 0;
        for (j = lo[i]; j <= hi[i]; j++) {
            sum += a[j];
        }
        out[i] = sum;
    }
}

Does how you ask change what you get?

One task — the C range-sums problem — asked 14 different ways, 20 fresh samples per wording at temperature 0.7 (sampling-randomness) so the model can vary. Each cell is fast/N: how many answers used a prefix-sum (~0.3 ms) rather than a nested loop (~123 ms). N is 20 when everything compiled; compile errors are dropped, so 5 fast + 12 slow + 3 compile errors is 5/17 (mid-grey). 0/20 means every compiled sample was the slow loop; 20/20 means every sample was the fast algorithm. err is all 20 failed to compile. Click a cell for the exact prompt and the 20 trial outcomes. The two runtimes are ~400× apart, so there is no middle ground. The baseline column is the plain prompt with no extra wording — compare every other column to it. Hover for the 95% interval.

modeltypebaselinewill be timedthink carefullyproduction codeI'm an expertyou're an expertI'm a beginnerI studied CSdropoutlawyerI'm BlackI'm AfricanI'm SwissI'm Whiterun
gpt-oss-20bMoE19/1920/2020/2020/2019/1920/2019/1920/2018/2020/2020/2019/2020/2019/202026-09-17 09:45
gpt-oss-120bMoE20/2020/2020/2020/2020/2020/2020/2019/2020/2020/2020/2020/2020/2020/202026-09-19 02:09
gemma-4-26bMoE20/2020/2020/2020/2020/2020/2020/2020/2020/2020/2020/2020/2020/2020/202026-09-17 14:17
qwen3-coder-next 80BMoE0/2014/1617/177/160/200/190/200/200/200/200/200/200/200/202026-09-17 22:32
devstral-2 24bdense0/208/206/200/200/200/200/200/200/200/200/200/200/200/202026-09-17 15:21
mistral-small-4 119BMoE3/2010/1810/200/203/200/200/207/194/195/207/189/198/205/202026-09-23 19:35
qwen3.8-27bdense2/2014/2013/206/205/198/200/206/203/207/205/203/205/204/202026-09-17 11:29
qwen3.6-35bMoE18/2018/1919/1920/2016/1917/191/2018/1920/2017/1818/1920/2017/1916/202026-09-17 21:14
qwen3.5-35bMoE0/2016/1815/180/200/200/200/201/200/202/200/200/200/200/202026-09-17 13:06
qwen3.6-27bdense2/2019/1920/2015/2010/2012/200/2013/206/208/203/206/203/207/202026-09-17 19:32
ornith-1.5 35bMoE20/2018/2020/2020/2020/2020/2020/2020/2020/2020/2019/1920/2020/2016/162026-09-21 15:00
qwen3-coder-30bMoE0/2020/2020/200/200/200/200/200/200/200/200/200/200/200/202026-09-17 13:42
aya-23 35bdense0/201/190/200/200/200/200/200/200/200/200/200/200/190/202026-09-17 17:26
glm-4.7-flashMoE9/2015/1912/1910/1815/2014/193/208/2010/1910/1911/197/2011/199/202026-09-17 21:58
laguna-xs.2MoE12/1520/2019/1918/1813/147/72/1915/1815/1819/1914/1518/1914/1414/142026-09-19 01:26
qwen3.8-flash-next 125BMoE19/2020/2020/2016/1818/2016/1914/2019/2016/1820/2018/2020/2018/1920/202026-09-19 07:37
k2-horizon 36B-A4BMoE9/2019/2018/2011/2016/2017/2011/2015/2017/1913/209/2015/2012/1812/202026-09-19 00:57
qwen3.5-122b-a10bMoE10/2020/2020/2018/2015/2020/205/2012/2020/2019/2010/2019/2014/2019/202026-09-19 03:37
qwen3.5-27bdense0/2012/1217/185/209/178/170/208/201/190/200/196/201/205/202026-09-17 23:58
laguna-s 2.1 117BMoE19/2020/2019/2020/2017/2020/2015/2014/2017/2018/2016/2018/2017/2019/202026-09-19 06:24
nemotron-3-super 120BMoE17/2020/2020/2020/2010/2019/207/2016/2010/2012/207/2011/2011/207/202026-09-19 05:16
kat-coder v2.5 35BMoE19/2014/1918/2018/1818/2020/2020/2020/2020/2019/2019/2020/2020/2019/202026-09-19 09:12
seed-oss 36bdense1/161/192/160/205/164/161/171/151/113/153/165/193/152/162026-09-18 09:21
kimi-k3 (referee)—20/2020/2020/2020/2020/2020/2020/2020/2020/2020/2020/2020/2020/2020/202026-09-17 13:09
worked example: the “lawyer” wording, and what 20 answers to it looked like

claims an unrelated profession

I am a lawyer. Implement in C11: `void range_sums(const int *a, size_t n, const size_t *lo, const size_t *hi, size_t q, long long *out)`. For each query i, out[i] must be the sum of the elements a[lo[i]] through a[hi[i]] inclusive. Every query satisfies lo[i] <= hi[i] < n.
Reply with only a C code block. No main function, no tests, no explanation.

gpt-oss-20b answered this wording 20 times: 20/20 wrote the fast version, 20/20 were correct at all (95% CI [0.839, 1.0]). The greedy baseline for this task is the fast one — the wording is not supposed to matter, but for most models it does.

The exact instructions

Every prompt the harness sends, verbatim and complete — there is no system prompt, no few-shot examples and no retries beyond the trial count. These are read straight out of the eval modules rather than copied, so they cannot drift from what was actually asked. The same text also appears next to each failing sample further down, so you can read the instruction and the answer together.

C — 21 tasks
reverse_string easy
Implement in C11: `void reverse_string(char *s)`. Reverses s in place.
Reply with only a C code block. No main function, no tests, no explanation.
is_prime easy
Implement in C11: `int is_prime(int n)`. Returns 1 if n is prime, 0 otherwise. n <= 1 is not prime.
Reply with only a C code block. No main function, no tests, no explanation.
fizzbuzz easy
Implement in C11: `const char *fizzbuzz(int n)`. Returns "FizzBuzz" if n divisible by 15, "Fizz" by 3, "Buzz" by 5, else the decimal string of n. A static buffer is fine.
Reply with only a C code block. No main function, no tests, no explanation.
binary_search easy
Implement in C11: `int binary_search(const int *a, int n, int key)`. a is sorted ascending, n elements. Returns the index of key, or -1 if absent.
Reply with only a C code block. No main function, no tests, no explanation.
count_words easy
Implement in C11: `int count_words(const char *s)`. Counts words in s. Words are separated by one or more spaces; leading/trailing spaces possible.
Reply with only a C code block. No main function, no tests, no explanation.
max_subarray easy
Implement in C11: `int max_subarray(const int *a, int n)`. Returns the maximum sum of any non-empty contiguous subarray (Kadane). n >= 1.
Reply with only a C code block. No main function, no tests, no explanation.
itoa easy
Implement in C11: `void itoa(int value, char *buf)`. Writes the decimal string of value into buf (NUL-terminated). Must handle 0 and negatives, including INT_MIN.
Reply with only a C code block. No main function, no tests, no explanation.
stack easy
Implement in C11: `void stack_init(Stack *s); int stack_push(Stack *s, int v); int stack_pop(Stack *s, int *out)`. Fixed-capacity int stack (16). Include this exact definition in your code: typedef struct { int data[16]; int top; } Stack; push returns 0 on success, -1 when full; pop returns 0 on success, -1 when empty.
Reply with only a C code block. No main function, no tests, no explanation.
popcount easy
Implement in C11: `unsigned popcount(unsigned x)`. Returns the number of set bits in x.
Reply with only a C code block. No main function, no tests, no explanation.
rot13 easy
Implement in C11: `void rot13(char *s)`. Applies ROT13 to s in place: letters rotate by 13, all other characters unchanged.
Reply with only a C code block. No main function, no tests, no explanation.
parse_csv_ints easy
Implement in C11: `int parse_csv_ints(const char *s, int *out, int max)`. Parses comma-separated integers from s into out (at most max). Returns the count stored. Input is well-formed (digits, optional leading minus, commas).
Reply with only a C code block. No main function, no tests, no explanation.
bswap32 easy
Implement in C11: `uint32_t bswap32(uint32_t x)`. Returns x with its four bytes reversed (endian swap). Include <stdint.h> yourself.
Reply with only a C code block. No main function, no tests, no explanation.
trim easy
Implement in C11: `void trim(char *s)`. Strips leading and trailing whitespace (space, tab, newline) from s in place.
Reply with only a C code block. No main function, no tests, no explanation.
cmp_desc easy
Implement in C11: `int cmp_desc(const void *a, const void *b)`. qsort comparator ordering int values descending. Must be safe against overflow.
Reply with only a C code block. No main function, no tests, no explanation.
ring easy
Implement in C11: `void ring_init(Ring *r); int ring_push(Ring *r, int v); int ring_pop(Ring *r, int *out)`. Circular buffer, capacity 8, FIFO. Include this exact definition in your code: typedef struct { int data[8]; int head; int count; } Ring; push returns 0 on success, -1 when full; pop returns 0 on success, -1 when empty. Pushes after pops must reuse freed slots (wraparound).
Reply with only a C code block. No main function, no tests, no explanation.
atoi_strict easy
Implement in C11: `int atoi_strict(const char *s, int *out)`. Parses an optionally negative decimal integer from s into out. Returns 0 on success, -1 if s is not exactly one valid integer (empty, junk, trailing chars). No overflow tests.
Reply with only a C code block. No main function, no tests, no explanation.
glob_match hard
Implement in C11: `int glob_match(const char *pat, const char *str)`. Returns 1 if str matches the shell-style pattern pat, else 0. '*' matches any sequence (including empty), '?' matches exactly one character. All other characters match literally. The whole string must match.
Reply with only a C code block. No main function, no tests, no explanation.
rpn_eval hard
Implement in C11: `double rpn_eval(const char *expr)`. Evaluates a space-separated Reverse Polish Notation expression of non-negative integers and operators + - * /. Returns the result as a double. Input is always valid and non-empty.
Reply with only a C code block. No main function, no tests, no explanation.
csv_field hard
Implement in C11: `int csv_field(const char *line, int idx, char *out, size_t cap)`. Extracts field idx (0-based) from one RFC-4180 CSV line into out (NUL-terminated, truncated to cap-1 chars). Quoted fields may contain commas and doubled quotes '""' which unescape to a single quote. Returns the field's unescaped length, or -1 if idx is out of range.
Reply with only a C code block. No main function, no tests, no explanation.
arena_alloc brutal
Implement in C11: `void *arena_alloc(size_t n)`. Write a complete fixed-buffer allocator, four functions in one code block:
void arena_init(void *buf, size_t size); void *arena_alloc(size_t n); void arena_free(void *p); void *arena_realloc(void *p, size_t n);
arena_init hands the allocator a buffer and resets all state. All bookkeeping must live inside that buffer; do not call malloc. arena_alloc returns memory suitably aligned for any type (_Alignof(max_align_t)), or NULL if the request cannot be satisfied; arena_alloc(0) returns NULL. arena_free(NULL) is a no-op. Freed blocks must be reusable, and a freed block must merge with a free neighbour on either side so that later large requests can use the combined space. arena_realloc behaves like realloc, and when the block immediately after p is free and large enough it must grow into that neighbour and return p unchanged rather than moving the data. Contents up to the smaller of the old and new sizes are preserved.
Reply with only a C code block. No main function, no tests, no explanation.
utf8_next brutal
Implement in C11: `int utf8_next(const unsigned char *s, size_t n, uint32_t *cp)`. Decodes the first UTF-8 character in the n bytes at s. On success writes the code point to *cp and returns how many bytes it consumed (1-4). Returns -1 if the input is not strictly valid UTF-8, leaving *cp untouched. Strict means rejecting: overlong encodings (any code point not using its shortest form), UTF-16 surrogates U+D800-U+DFFF, anything above U+10FFFF, the obsolete 5- and 6-byte forms, a continuation byte in the leading position, bad continuation bytes, and sequences truncated by n. Needs <stdint.h>.
Reply with only a C code block. No main function, no tests, no explanation.
Python — 13 tasks
flatten easy
Implement in Python 3: `def flatten(lst):` Flattens a list of lists one level deep. Elements of the inner lists keep their order and type.
Reply with only a Python code block. No tests, no explanation.
parse_json_safely easy
Implement in Python 3: `def parse_json_safely(s):` Parses s as JSON and returns the resulting object. Returns None if s is not valid JSON.
Reply with only a Python code block. No tests, no explanation.
top_k_words easy
Implement in Python 3: `def top_k_words(text, k):` Words are maximal runs of ASCII letters, case-insensitive. Returns a list of (word, count) tuples for the k most frequent words, most frequent first, ties broken alphabetically, words lowercased.
Reply with only a Python code block. No tests, no explanation.
is_valid_ipv4 easy
Implement in Python 3: `def is_valid_ipv4(s):` Returns True if s is a dotted-quad IPv4 address: four decimal octets 0-255, no leading zeros unless the octet is exactly '0'. Otherwise False.
Reply with only a Python code block. No tests, no explanation.
merge_intervals easy
Implement in Python 3: `def merge_intervals(intervals):` intervals is a list of [start, end] pairs (start <= end, any order). Returns the merged list of non-overlapping intervals sorted by start. Touching intervals merge ([1,4] and [4,5] -> [1,5]).
Reply with only a Python code block. No tests, no explanation.
run_length_encode easy
Implement in Python 3: `def run_length_encode(s):` Returns run-length encoding of s as a list of (char, count) tuples.
Reply with only a Python code block. No tests, no explanation.
deep_get easy
Implement in Python 3: `def deep_get(d, path, default=None):` Follows a dotted path through nested dicts (deep_get({'a': {'b': 1}}, 'a.b') == 1). Returns default if any key is missing or a non-dict is encountered mid-path.
Reply with only a Python code block. No tests, no explanation.
csv_column_sum easy
Implement in Python 3: `def csv_column_sum(path, col):` Reads the CSV file at path (first row is a header). Returns the sum of the numeric values in column col as a float.
Reply with only a Python code block. No tests, no explanation.
topological_sort hard
Implement in Python 3: `def topological_sort(deps):` deps maps each node (str) to a list of nodes it depends on. Returns a list of all nodes in an order where every node comes after its dependencies. Returns None if the graph has a cycle (including self-dependencies). Nodes mentioned only as dependencies are included.
Reply with only a Python code block. No tests, no explanation.
lru_cache hard
Implement in Python 3: `class LRUCache:` A fixed-capacity LRU cache. __init__(self, capacity) with capacity >= 1; get(self, key, default=None) returns the value (marking it most-recently-used) or default; put(self, key, value) inserts/updates (marking most-recently-used) and evicts the least-recently-used item when over capacity.
Reply with only a Python code block. No tests, no explanation.
json_diff hard
Implement in Python 3: `def json_diff(a, b):` Compares two JSON-like structures (dicts, lists, scalars). Returns a sorted list of dotted key paths where they differ: changed scalar/list values, keys present in only one side. Dicts are recursed into; lists and scalars are compared as whole values. Empty list means identical.
Reply with only a Python code block. No tests, no explanation.
path_glob brutal
Implement in Python 3: `def match(pattern, path):` Returns True if a glob pattern matches a whole path. Paths are separated by '/'. '?' matches exactly one character but never '/'. '*' matches zero or more characters but never '/'. A path segment that is exactly '**' matches zero or more whole segments, so 'a/**/b' matches 'a/b' as well as 'a/x/y/b'. Square brackets are a character class matching one character: '[abc]', ranges like '[a-z]', and '[!...]' for negation; a class never matches '/'. A backslash escapes the next character so it is treated literally. The whole path must match, not a prefix. Do not use fnmatch, glob or pathlib.
Reply with only a Python code block. No tests, no explanation.
clone_graph brutal
Implement in Python 3: `def clone(obj):` Deep-copies a structure of dicts, lists, tuples and scalars without using the copy module. Two properties must hold. Cycles must not cause infinite recursion: if obj contains itself, so must the clone. And shared references must stay shared: if two places in obj point at the same mutable object, the corresponding two places in the clone must point at one single new object, not at two equal copies. The original must not be modified, and no mutable object may be shared between original and clone.
Reply with only a Python code block. No tests, no explanation.
Bash — 13 tasks
count_matches easy
Implement in bash: `count_matches <pattern> <file>`. Prints the number of lines in <file> matching <pattern> (fixed string). Prints 0 when nothing matches.
Reply with only a bash code block defining the function. No tests, no explanation.
largest_file easy
Implement in bash: `largest_file <dir>`. Prints the path of the largest regular file under <dir> (recursive). Exactly one line, the path.
Reply with only a bash code block defining the function. No tests, no explanation.
retry3 easy
Implement in bash: `retry3 <cmd...>`. Runs the command; if it fails, retries up to 3 total attempts. Exits 0 if any attempt succeeds, otherwise exits with the last attempt's exit code.
Reply with only a bash code block defining the function. No tests, no explanation.
extract_urls easy
Implement in bash: `extract_urls`. Reads stdin, prints every http:// or https:// URL found, one per line, in order of appearance. Nothing else.
Reply with only a bash code block defining the function. No tests, no explanation.
rotate easy
Implement in bash: `rotate <file>`. Rotates logs one level: <file>.1 becomes <file>.2, then <file> becomes <file>.1. If <file>.1 does not exist, just rename <file> to <file>.1.
Reply with only a bash code block defining the function. No tests, no explanation.
csv_col easy
Implement in bash: `csv_col <name>`. Reads a CSV from stdin (first line is a header). Prints the values of the column named <name>, one per line, in order.
Reply with only a bash code block defining the function. No tests, no explanation.
sum_stdin easy
Implement in bash: `sum_stdin`. Reads integers from stdin, one per line, ignoring blank lines. Prints their sum.
Reply with only a bash code block defining the function. No tests, no explanation.
json_get easy
Implement in bash: `json_get <key>`. Reads a flat JSON object on stdin and prints the string value of top-level <key>. python3 is available; jq is not.
Reply with only a bash code block defining the function. No tests, no explanation.
find_dupes hard
Implement in bash: `find_dupes <dir>`. Finds groups of regular files under <dir> (recursive) with identical content (compare by MD5). Prints one group per line: space-separated paths, sorted, only groups of 2+ files. Groups sorted by first path. Must work on macOS (BSD userland: no GNU find -printf, no md5sum — use md5 -r).
Reply with only a bash code block defining the function. No tests, no explanation.
top_errors hard
Implement in bash: `top_errors <logfile> <n>`. Prints the n most frequent ERROR signatures in <logfile>. A signature is the text after 'ERROR: ' with every run of digits replaced by '#'. Output one per line as '<count> <signature>', sorted by count descending, then signature ascending. Print nothing if there are no ERROR lines.
Reply with only a bash code block defining the function. No tests, no explanation.
backup_rotate hard
Implement in bash: `backup_rotate <dir> <keep>`. In <dir>, deletes all but the <keep> newest files matching backup-*.tar.gz (newest = lexicographically greatest names). Prints each deleted file's name (not path), one per line, oldest first. Deletes nothing if there are <= <keep> backups (prints nothing).
Reply with only a bash code block defining the function. No tests, no explanation.
csv_to_tsv brutal
Implement in bash: `csv_to_tsv <file>`. Converts an RFC-4180 CSV file to TSV on stdout. Each CSV record becomes one output line, fields joined by a single tab. A field may be quoted with double quotes, in which case it can contain commas, tabs, line breaks, and the sequence "" meaning one literal double quote; the surrounding quotes are removed. Because a tab and a newline cannot appear literally in TSV, a line break inside a quoted field is written as the two characters backslash n, and a tab inside a field as the two characters backslash t. Line endings in the input may be CRLF or LF and the CR must not survive into the output. The last record may have no trailing newline; the output always ends with one. Empty fields stay empty. Python, Perl, Ruby, PHP and Node are not available.
Reply with only a bash code block defining the function. No tests, no explanation.
total_size brutal
Implement in bash: `total_size <dir>`. Prints the total size in bytes of every regular file under <dir>, recursively, as a single integer with no other output. Directories themselves are not counted. Filenames are hostile: they may contain spaces, tabs, newlines, glob characters and leading dashes, and may be non-ASCII. Must run on macOS with BSD userland, so GNU-only options are unavailable. Prints 0 for an empty directory.
Reply with only a bash code block defining the function. No tests, no explanation.
Research — 1 task
nfs_summary research
Below are excerpts from Red Hat Enterprise Linux 10 documentation (release notes and the "Managing file systems" guide).

Study them and summarize every item relevant to **NFS server or client performance, or NFS-related bug fixes**, as a concise bullet list. For each item say what changed and why it matters. Do not include items unrelated to NFS.

--- DOCUMENTATION EXCERPTS ---
[~2,100 words of RHEL 10 release notes and the "Managing file systems" guide, inserted here]
--- END ---

Reply with only the bullet list.

C failures — what actually went wrong

Failed trials per model across the C easy and hard sets (72 samples), and what kind of error each failing task hit. The split matters: a missing #include is a formatting slip an agent loop fixes instantly, while a wrong answer means the model misunderstood the problem. The referee isn't listed because it has no failures to categorize.

modeltypefailedlinkerundeclaredcompilewrongother
qwen3.8-flash-next 125BMoE3··1·1
laguna-s 2.1 117BMoE3·····
gpt-oss-20bMoE6····2
qwen3.8-27bdense6··11·
glm-4.7-flashMoE6··11·
gemma-4-26bMoE7··12·
nemotron-3-super 120BMoE7··12·
gpt-oss-120bMoE82··1·
qwen3-coder-next 80BMoE9··12·
qwen3.6-35bMoE12··22·
mistral-small-4 119BMoE14··32·
qwen3.6-27bdense14··32·
qwen3-coder-30bMoE15·131·
k2-horizon 36B-A4BMoE15·122·
qwen3.5-122b-a10bMoE15··5··
qwen3.5-35bMoE16··321
laguna-xs.2MoE173·13·
devstral-2 24bdense18··42·
qwen3.5-27bdense21·1221
seed-oss 36bdense21··316
aya-23 35bdense30·7·2·