Seven frontier models try to build the same C# workflow engine

A static review of model-generated .NET code, scored with a deliberately fussy 143-point checklist.

Run date: July 8, 2026
Evaluation mode: manual static review
Task: implement a production-quality in-memory C#/.NET 8 workflow execution library
Important caveat: I did not compile or execute the submissions in this review pass.

This is not a broad intelligence benchmark. It is one narrow thing: I asked several reasoning models to write the same small workflow engine, then I read the outputs like I would read a pull request from someone who claims the code is production-ready.

The prompt is intentionally unglamorous. No UI. No database. No clever product context. Just a DAG, async scheduling, cancellation, retry, deterministic reporting, and tests. That is enough. These are exactly the places where code assistants often sound confident while leaving behind race windows, bad terminal states, fake cancellation support, or tests that only prove the happy path.

The short version: Claude Opus 4.8 produced the strongest reviewed answer, GPT-5.5 was very close, and GLM 5.2 was the most convincing quality-per-cost run. Grok and Xiaomi were strong but messy in different ways. MiniMax and DeepSeek were usable, but they exposed more of the usual edge-case debt.


The scoreboard

The scores below use the 143-point diagnostic rubric included later in this document. One passed checklist item equals one point. No fatal gates, no automatic zeros.

Rank Model slug Score Percent What actually mattered
1 anthropic/claude-4.8-opus-20260528 141 / 143 98.6% Best overall static-review implementation, but only after continuation
2 openai/gpt-5.5-20260423 139 / 143 97.2% Best single-shot top-tier answer; slow and not cheap
3 x-ai/grok-4.5-20260708 136 / 143 95.1% Strong implementation buried in duplicated/malformed output
3 xiaomi/mimo-v2.5-pro-20260422 136 / 143 95.1% Very strong final answer, but the first generation did not finish
5 z-ai/glm-5.2-20260616 135 / 143 94.4% Best practical tradeoff: clean, fast, inexpensive enough
6 minimax/minimax-m3-20260531 131 / 143 91.6% Core engine mostly there; tests and fault handling drag it down
7 deepseek/deepseek-v4-pro-20260423 130 / 143 90.9% Good skeleton, weaker defensive engineering

A one- or two-point lead here should not be overread. A five-point pattern should. These scores are useful less as a podium and more as a map of where each model’s code starts to fray.


Cost, runtime, and output shape

The economics matter because some answers were not “one clean shot.” Claude burned a full reasoning-only generation before producing the usable continuation. Xiaomi produced an incomplete first generation, then a complete second answer. I count both realities below because the final code and the actual benchmark spend are not the same thing.

Model slug Score Cost Tokens Time tok/s Output shape
anthropic/claude-4.8-opus-20260528 141 $0.7987815 final / $2.4290145 combined 18,833 final / 84,369 combined 2m 45.170s final / 15m 44.730s combined 114.022 final / 89.305 combined First generation was reasoning-only; usable answer came after continuation
openai/gpt-5.5-20260423 139 $0.91867545 25,245 17m 35.268s 23.923 Single usable generation
x-ai/grok-4.5-20260708 136 $0.27704754 46,292 7m 52.625s 97.947 Single generation, but delivered answer contained duplicated/malformed sections
xiaomi/mimo-v2.5-pro-20260422 136 $0.036923730228 final / $0.093789163116 combined 10,104 final / 75,640 combined 1m 54.539s final / 21m 7.218s combined 88.214 final / 59.690 combined First generation incomplete; second generation complete
z-ai/glm-5.2-20260616 135 $0.110626362 25,102 4m 49.011s 86.855 Single clean usable generation
minimax/minimax-m3-20260531 131 not reported / BYOK 54,571 6m 25.336s 141.619 Single usable generation
deepseek/deepseek-v4-pro-20260423 130 $0.04172094135 47,918 13m 49.981s 57.734 Single usable generation

A rough cost-efficiency view, using combined cost where a continuation/retry was needed:

Model slug Score Cost basis Cost per score point Seconds per score point
deepseek/deepseek-v4-pro-20260423 130 $0.04172094135 $0.00032 6.38
xiaomi/mimo-v2.5-pro-20260422 136 $0.093789163116 combined $0.00069 9.32
z-ai/glm-5.2-20260616 135 $0.110626362 $0.00082 2.14
x-ai/grok-4.5-20260708 136 $0.27704754 $0.00204 3.48
openai/gpt-5.5-20260423 139 $0.91867545 $0.00661 7.59
anthropic/claude-4.8-opus-20260528 141 $2.4290145 combined $0.01723 6.70
minimax/minimax-m3-20260531 131 not reported / BYOK n/a 2.94

This is where the story gets less neat. Claude won the code review and was the worst spend. GLM did not win, but it is the run I would pay closest attention to if I cared about repeated throughput rather than a single trophy answer.


Why this prompt is a useful trap

A workflow engine sounds simple until it has to be correct.

The easy version is: topologically sort jobs and run them. The real version is: validate malformed graphs before execution, track reverse dependents, bound concurrency, avoid executor calls for skipped jobs, count retries exactly, use async delays, preserve cancellation semantics, avoid state corruption, return deterministic summaries, and write tests that do not just restate the demo.

The task catches several common failure modes:

That last one matters. A coding answer is not only an internal solution; it is an artifact someone might paste into a repo. Duplicated half-implementations and broken test blocks are not cosmetic problems.


Original prompt

Click to expand original prompt
You are implementing a production-quality C#/.NET 8 workflow execution library.

Build a small but complete in-memory workflow engine that executes jobs with dependency constraints, retry behavior, cancellation, and deterministic execution reporting.

## Requirements

Implement the following public API or an equivalent API with the same behavior:

```csharp
public sealed record WorkflowSpec(IReadOnlyList<JobDefinition> Jobs);

public sealed record JobDefinition(
    string Id,
    IReadOnlyList<string> DependsOn,
    int MaxRetries = 0,
    int RetryDelayMilliseconds = 0
);

public sealed record JobResult(bool Success, string? Message = null);

public interface IJobExecutor
{
    Task<JobResult> ExecuteAsync(string jobId, CancellationToken cancellationToken);
}

public enum JobFinalStatus
{
    Succeeded,
    Failed,
    Skipped,
    Canceled
}

public sealed record JobSummary(
    string JobId,
    JobFinalStatus Status,
    int Attempts,
    string? Message
);

public sealed record WorkflowRunSummary(
    bool Succeeded,
    bool Canceled,
    IReadOnlyList<JobSummary> Jobs,
    IReadOnlyList<string> EventLog
);

public sealed class WorkflowEngine
{
    public Task<WorkflowRunSummary> RunAsync(
        WorkflowSpec spec,
        IJobExecutor executor,
        int maxDegreeOfParallelism,
        CancellationToken cancellationToken);
}
```

## Functional behavior

1. Validate the workflow before execution.

   * Reject duplicate job IDs.
   * Reject missing dependency references.
   * Reject empty, null, or whitespace job IDs.
   * Reject cycles and include useful information about the cycle in the exception message.
   * Reject `maxDegreeOfParallelism <= 0`.
   * Reject negative retry counts or retry delays.

2. Execute jobs according to dependency order.

   * A job may start only after all dependencies have succeeded.
   * Independent jobs may run concurrently.
   * Never run more than `maxDegreeOfParallelism` jobs at once.
   * If a dependency fails, all downstream dependent jobs must be marked `Skipped`.
   * A skipped job must not call the executor.

3. Implement retry behavior.

   * If a job fails, retry it up to `MaxRetries`.
   * `Attempts` should equal the total number of executor calls for that job.
   * A job succeeds if any attempt returns `Success = true`.
   * A job fails only after all attempts are exhausted.
   * If `RetryDelayMilliseconds > 0`, wait before retries using `Task.Delay` and pass the cancellation token.

4. Implement cancellation correctly.

   * Honor cancellation before starting new jobs.
   * Pass the cancellation token to every executor call.
   * If cancellation is requested, do not start additional jobs.
   * Jobs that have not started and cannot run because of cancellation should be marked `Canceled`, unless they are already deterministically skipped due to failed dependencies.
   * The returned summary should set `Canceled = true` if cancellation was requested during execution.
   * Do not swallow unexpected exceptions silently.

5. Produce deterministic summaries.

   * Return one `JobSummary` per job.
   * Sort summaries by job ID using ordinal string comparison.
   * Include a human-readable event log containing meaningful events such as queued, started, retrying, succeeded, failed, skipped, and canceled.
   * The event log does not need to be globally sorted by time, but it must not be corrupted by concurrency.

6. Use idiomatic modern C#.

   * Use `async`/`await` correctly.
   * Avoid blocking calls such as `.Wait()`, `.Result`, `Thread.Sleep`, or busy waiting.
   * Use thread-safe state management.
   * Use clear exception types and messages.
   * Do not use external NuGet packages for the engine implementation.

7. Include tests.
   Provide unit tests or self-contained test examples that cover at least:

   * A successful linear workflow.
   * A successful branching workflow with parallel jobs.
   * Failure causing downstream skips.
   * Retry success.
   * Retry exhaustion.
   * Cycle detection.
   * Missing dependency detection.
   * Duplicate job ID detection.
   * Cancellation behavior.
   * Maximum parallelism enforcement.

## Output format

Return:

1. The complete implementation code.
2. The test code.
3. A brief explanation of important design choices and complexity.
4. Any assumptions you made.

Do not omit edge cases. Do not replace the implementation with pseudocode.

Rubric

The rescoring uses a flat diagnostic checklist. There are no fatal gates and no automatic zeros. Each passed item is worth one point.

Maximum score: 143 points.

Click to expand the 143-point diagnostic rubric

1. Public API and integration

  1. Defines WorkflowSpec.
  2. Defines JobDefinition.
  3. Defines JobResult.
  4. Defines IJobExecutor.
  5. Defines JobFinalStatus.
  6. Defines JobSummary.
  7. Defines WorkflowRunSummary.
  8. Exposes WorkflowEngine.RunAsync(...) or a behaviorally equivalent API.

2. Input validation

  1. Rejects null WorkflowSpec.
  2. Rejects null IJobExecutor.
  3. Rejects null Jobs collection.
  4. Rejects null job entries.
  5. Rejects null job IDs.
  6. Rejects empty or whitespace job IDs.
  7. Rejects duplicate job IDs using ordinal string comparison.
  8. Normalizes null dependency collections to empty arrays.
  9. Rejects null, empty, or whitespace dependency IDs.
  10. Rejects missing dependency references.
  11. Rejects negative MaxRetries.
  12. Rejects negative RetryDelayMilliseconds.

3. Cycle detection

  1. Detects self-cycles.
  2. Detects two-node cycles.
  3. Detects multi-node cycles.
  4. Detects cycles in disconnected graph components.
  5. Reports a useful cycle path or involved job IDs.
  6. Performs cycle validation before any executor call.
  7. Does not rely on runtime deadlock to reveal cycles.

4. Dependency graph semantics

  1. Builds a correct dependency graph.
  2. Tracks reverse dependents correctly.
  3. Handles root jobs with zero dependencies.
  4. Handles linear chains.
  5. Handles branching graphs.
  6. Handles diamond graphs.
  7. A job becomes runnable only after all dependencies succeeded.
  8. A failed dependency prevents dependent execution.
  9. A skipped dependency prevents dependent execution.
  10. Skip propagation reaches all downstream jobs.
  11. Skipped jobs have zero attempts.

5. Scheduler and concurrency

  1. Enforces maxDegreeOfParallelism > 0.
  2. Never exceeds maxDegreeOfParallelism concurrent executor calls.
  3. Allows independent jobs to run concurrently.
  4. Does not serialize the whole DAG unnecessarily.
  5. Does not hold global locks while awaiting executor calls.
  6. Does not hold global locks while awaiting retry delays.
  7. The scheduler restricts concurrent execution without creating background threads per job.
  8. Tracks in-flight work accurately.
  9. Terminates when all jobs reach terminal states.
  10. Handles empty workflows deterministically.

6. Cancellation semantics

  1. Checks cancellation before scheduling a ready job.
  2. Checks cancellation immediately before first executor attempt.
  3. Checks cancellation before retry attempts.
  4. Passes the cancellation token to every executor call.
  5. Passes the cancellation token to every retry delay.
  6. Does not start additional executor calls after cancellation is observed.
  7. Marks not-started ready jobs as Canceled when cancellation prevents execution.
  8. Marks pending jobs as Canceled when cancellation prevents dependency resolution and no failed dependency determines skip.
  9. Preserves Skipped over Canceled when a failed or skipped dependency exists.
  10. Handles cancellation while a job is running.
  11. Handles cancellation during retry delay.
  12. Sets WorkflowRunSummary.Canceled based on whether cancellation was requested or observed during execution.

7. Retry and backoff semantics

  1. Treats MaxRetries as additional attempts after the first attempt.
  2. Counts attempts exactly as executor invocations.
  3. Succeeds immediately after any successful attempt.
  4. Fails only after all allowed attempts are exhausted.
  5. Does not retry after success.
  6. Does not retry after cancellation.
  7. Uses Task.Delay(delay, cancellationToken) or an equivalent non-blocking async timer.
  8. Releases the thread during backoff.
  9. Does not corrupt attempt counts when exceptions occur.

8. Exception handling and isolation

  1. Executor exceptions are either propagated by documented policy or converted into failed attempts with type and message.
  2. Executor exceptions do not corrupt scheduler state.
  3. Executor exceptions do not prevent summaries for other jobs.
  4. Internal scheduler faults are not swallowed.
  5. Worker task faults are observed.
  6. Completion counters, TCS completions, and channel writes are protected against exception paths.
  7. Unexpected faults cannot leave dependents waiting forever.
  8. Failure messages preserve useful diagnostic information.

9. Deterministic reporting and observability

  1. Returns exactly one JobSummary per job.
  2. Sorts summaries by job ID using ordinal comparison.
  3. Reports final status accurately.
  4. Reports attempts accurately.
  5. Preserves relevant success, failure, cancellation, and exception messages.
  6. Event log is thread-safe.
  7. Event log includes queued events.
  8. Event log includes started, retrying, succeeded, failed, skipped, and canceled events where applicable.
  9. Event log cannot be corrupted by concurrent writes.

10. Tests

  1. Tests successful linear workflow.
  2. Tests successful branching workflow with parallel jobs.
  3. Tests failure causing downstream skips.
  4. Tests skipped jobs do not call executor.
  5. Tests retry success.
  6. Tests retry exhaustion.
  7. Tests cycle detection.
  8. Tests missing dependency detection.
  9. Tests duplicate job ID detection.
  10. Tests cancellation before starting queued work.
  11. Tests cancellation during running job.
  12. Tests cancellation during retry delay.
  13. Tests maximum parallelism enforcement.
  14. Tests exact attempt counts for retry scenarios.
  15. Tests output summaries match ordinal job ID sorting.

11. Core Implementation Constraints

  1. The answer is not primarily pseudocode.
  2. The answer contains a complete engine implementation.
  3. The answer provides a usable public API equivalent to the request.
  4. The answer is not truncated.
  5. The answer provides a single clear final implementation.
  6. The implementation has no obvious syntax or type errors preventing compilation under .NET 8.

12. Strict Dependency Enforcement

  1. A job cannot start before all dependencies have succeeded.
  2. A skipped job cannot call the executor.
  3. A dependent job cannot run after any dependency has Failed.
  4. Skip propagation is transitive.
  5. Cycles are detected before execution.
  6. Missing dependency references are rejected before execution.

13. Strict Concurrency Safety

  1. The engine cannot exceed maxDegreeOfParallelism for executor calls.
  2. The engine is free of known deadlock paths on success, failure, cancellation, or branching DAGs.
  3. Shared state cannot race or corrupt final job state.
  4. Collections and state fields are mutated with explicit synchronization or coordinator ownership.
  5. Worker tasks are not fire-and-forget; their lifecycle prevents hanging schedulers.
  6. Job terminal states cannot be overwritten after finalization.

14. Non-Blocking Constraints

  1. The engine does not use .Wait(), .Result, Thread.Sleep, or synchronous wait handles for coordination.
  2. The engine does not use busy loops, spin waits, or polling loops.
  3. Retry backoff uses asynchronous delay, not thread blocking.
  4. Cancellation waiting uses asynchronous mechanisms, not thread blocking.
  5. Ready jobs cannot starve indefinitely under ordinary execution.

15. Strict Cancellation and Exception Propagation

  1. Cancellation is explicitly passed to executor calls.
  2. Cancellation is explicitly passed to retry delays.
  3. No new executor calls can start after cancellation is observed by the scheduler.
  4. Jobs prevented from starting solely by cancellation are marked Canceled.
  5. Dependency-failure skip precedence over cancellation is preserved.
  6. Executor exceptions cannot crash the scheduler.
  7. Worker and internal exceptions do not disappear silently.
  8. Exceptions cannot leave completion sources, channels, or counters unresolved.
  9. Unexpected engine faults are explicitly propagated or surfaced.

16. Engineering Protocol

  1. Any custom struct introduced by the solution is declared readonly.
  2. No lock is held across await.
  3. The executor is never called inside a lock.
  4. A retry delay never occurs inside a lock.
  5. A cancellation wait never occurs inside a lock.
  6. Runtime state transitions are routed through one explicit transition path.
  7. Lock scopes do not include user code.
  8. Dependency counters cannot underflow.
  9. Duplicate dependencies are rejected or normalized consistently.
  10. Summary construction only reads finalized state.

Methodology

Each model received the same prompt. Reasoning or maximum-effort mode was enabled where the provider supported it. I exported each conversation as OpenRouter JSON and extracted the model metadata plus the final assistant output.

For every run I recorded:

Then I reviewed the implementation and tests manually against the 143 checklist items.

This is a static review. I did not compile the code. I did not run the tests. I did not use a hidden test suite. A real production benchmark should do all three.


Full diagnostic score breakdown

Model slug API /8 Validation /12 Cycle /7 Graph /11 Scheduler /10 Cancel /12 Retry /9 Exceptions /8 Reporting /9 Tests /15 Core /6 Strict dep /6 Concurrency /6 Non-block /5 Strict cancel/ex /9 Protocol /10 Total
anthropic/claude-4.8-opus-20260528 8 12 7 11 9 12 9 8 9 15 6 6 6 5 9 9 141
openai/gpt-5.5-20260423 8 11 7 11 9 12 9 8 9 15 6 6 5 5 9 9 139
x-ai/grok-4.5-20260708 8 11 7 11 10 11 9 8 9 14 4 6 6 5 8 9 136
xiaomi/mimo-v2.5-pro-20260422 8 10 7 11 9 11 9 7 8 15 6 6 6 5 9 9 136
z-ai/glm-5.2-20260616 8 11 7 11 10 9 9 8 9 14 6 6 6 5 8 8 135
minimax/minimax-m3-20260531 8 11 7 11 10 12 9 6 8 11 6 6 6 5 6 9 131
deepseek/deepseek-v4-pro-20260423 8 7 7 11 10 11 9 7 9 14 6 6 4 5 8 8 130

Per-model notes

anthropic/claude-4.8-opus-20260528

Score: 141 / 143
Cost: $0.7987815 final continuation / $2.4290145 combined
Tokens: 18,833 final continuation / 84,369 combined
Time: 2m 45.170s final continuation / 15m 44.730s combined
tok/s: 114.022 final continuation / 89.305 combined

Claude wrote the most convincing final implementation. It was not just broad; it was boring in the right places. The validation was defensive, the scheduler was coherent, the tests reached into the uncomfortable cases, and the answer did not confuse “I passed a token around” with actual cancellation semantics.

The catch is ugly: the first generation produced reasoning only. The usable answer came after continuation. If this were scored as strict single-shot completion, Claude’s result would look very different.

What it got right

Deductions

Verdict

Best answer in the review. Also the least flattering answer from a cost/control perspective because it needed a continuation after a dead first pass.


openai/gpt-5.5-20260423

Score: 139 / 143
Cost: $0.91867545
Tokens: 25,245
Time: 17m 35.268s
tok/s: 23.923

GPT-5.5 produced the strongest single-generation top-tier answer. It was slower than it should have been, but the artifact itself was disciplined: real validation, real tests, careful scheduler state, and good cancellation thinking.

This answer felt less like a dump of code and more like a system design that had been forced through an implementation. It still lost a few protocol-level points, but those were mostly about strict rubric preferences rather than core behavior.

What it got right

Deductions

Verdict

If I cared about one clean answer without asking for continuation, this is the top run. If I cared about latency, this run was painful.


x-ai/grok-4.5-20260708

Score: 136 / 143
Cost: $0.27704754
Tokens: 46,292
Time: 7m 52.625s
tok/s: 97.947

Grok is the messy one. The best implementation inside the answer is strong, but the delivered output contains duplicated and malformed sections. That matters. A benchmark should not give a model full credit for making the reviewer excavate the correct version from a pile of partials.

The scheduler and validation ideas are good. The artifact discipline is not.

What it got right

Deductions

Verdict

A strong answer trapped inside an undisciplined output. This is exactly why “final artifact quality” belongs in coding benchmarks.


xiaomi/mimo-v2.5-pro-20260422

Score: 136 / 143
Cost: $0.036923730228 final / $0.093789163116 combined
Tokens: 10,104 final / 75,640 combined
Time: 1m 54.539s final / 21m 7.218s combined
tok/s: 88.214 final / 59.690 combined

Xiaomi’s final answer is much better than its run shape. The first generation did not finish; the second was compact, useful, and surprisingly well tested. It is the kind of result that looks excellent if you only inspect the final answer and much less excellent if you count the path taken to get there.

What it got right

Deductions

Verdict

The final answer is strong. The run was not. I would not ignore it, but I would not call it reliable single-shot behavior either.


z-ai/glm-5.2-20260616

Score: 135 / 143
Cost: $0.110626362
Tokens: 25,102
Time: 4m 49.011s
tok/s: 86.855

GLM is the run I keep coming back to. It did not win, but it produced a clean single answer, at a reasonable speed, for a reasonable cost, without making me sort through wreckage.

Its main weakness is narrow but real: strict cancellation atomics. There are small gaps around executor attempt start and retry boundaries. In normal use, the implementation is probably fine. Under adversarial cancellation tests, it loses points.

What it got right

Deductions

Verdict

Best practical tradeoff in this batch. Not the highest score, but the least annoying high-quality run.


minimax/minimax-m3-20260531

Score: 131 / 143
Cost: not reported / BYOK
Tokens: 54,571
Time: 6m 25.336s
tok/s: 141.619

MiniMax moved fast and covered the main DAG behavior. The core engine is not embarrassing. The problem is that the surrounding engineering discipline is weaker: tests contain issues, messages can be wrong, and internal fault handling is not robust enough for production claims.

What it got right

Deductions

Verdict

Fast and competent on the middle of the task. Less convincing at the edges, where production workflow engines tend to hurt you.


deepseek/deepseek-v4-pro-20260423

Score: 130 / 143
Cost: $0.04172094135
Tokens: 47,918
Time: 13m 49.981s
tok/s: 57.734

DeepSeek had a good central idea and a decent scheduler, but too many defensive-engineering items were missing. It reads like an implementation that handles the intended graph but is less prepared for hostile or sloppy input.

The low cost is real. So are the missing null checks.

What it got right

Deductions

Verdict

Cheap and directionally good, but not as production-ready as the top half of the field.


What actually separated the models

The obvious stuff was not the problem. Almost every model could define the records, find a cycle, and run a linear chain. The separation happened in the unglamorous edges.

1. Cancellation was the real discriminator

Lots of answers passed a token into the executor. Fewer checked the token at every decision boundary where a new executor call could begin. The tricky spots were:

That last one is especially revealing. If a dependency failed, downstream jobs should be Skipped, not merely Canceled because a token happened to fire nearby. Several implementations had plausible cancellation behavior until this precedence question appeared.

2. “Tests included” did not always mean “tests useful”

A few answers had impressive-looking tests that would not catch the bugs in their own engine. Some tests had bad assertions. Some tested cancellation only before anything interesting happened. Some never tested retry delay cancellation.

The best answers wrote tests that tried to hurt the implementation.

3. Output hygiene matters

Grok is the clearest case. There was a good implementation in the output, but the answer also contained duplicated, malformed, and partially broken material. In a real code review, that is not a footnote. It creates integration risk.

4. Null and duplicate dependency handling exposed discipline

Many models handled missing dependencies but not null dependency collections. Many built counters that would behave badly if a dependency appeared twice. These are not glamorous bugs, but they are exactly the sort of input-shape bugs a reusable library should decide deliberately.

5. Retry backoff was correct but often inefficient

Several high-scoring models kept the scheduler slot occupied during retry delay. This does not violate the hard cap on concurrent executor calls, and it is not a fatal correctness problem. But it is a scalability smell: an independent ready job can wait behind a sleeping retry.


What I would change in the next benchmark

This static review was useful, but the next version should be less forgiving.

  1. Compile everything. No more “appears compilable.”
  2. Run a hidden .NET 8 test suite. Especially cancellation races and duplicate dependency inputs.
  3. Score single-shot and continuation-allowed separately. Claude and Xiaomi show why this distinction matters.
  4. Add a runtime stress test. A 10,000-job DAG would expose scheduling choices that static review only hints at.
  5. Track output cleanliness as its own metric. Duplicated partial implementations should not be buried inside a generic maintainability score.
  6. Separate price-to-quality from absolute quality. Those are different buying decisions.

Limitations

This document is a manual review, not a proof.

Still, static review is not useless. A lot of serious implementation problems are visible without running anything. The important thing is to say what kind of evidence this is and not pretend it is more complete than it is.


Reproducibility notes

The source artifacts were OpenRouter JSON exports from July 8, 2026. The reviewed model slugs were:

For a stronger public release, I would attach:


Bottom line

Claude won the static review. GPT-5.5 was the best clean single-generation top-tier run. GLM 5.2 was the result I would most want to rerun at scale. Grok showed why artifact quality matters. Xiaomi showed why final-answer scoring and run-level scoring are not the same thing. MiniMax and DeepSeek were useful but less convincing at the edges.

That is the main lesson here: the models are not failing at the shape of the solution anymore. They are failing, when they fail, at engineering judgment under pressure — cancellation races, malformed output, state transitions, tests that should have been meaner, and the small defensive choices that turn a plausible library into a reusable one.