HarnessWars · AI harness karşılaştırması

PORT CRANE CHESS BENCHMARK v1.0

Aynı model ile dört AI harness: süre, maliyet ve teslim performansı

Sonnet 5.5 · OpenRouter · Medium
1 başlangıç prompt'u · +0 ek kullanıcı mesajı

Teslim performansı puanı bu görevdeki süreyi, maliyeti ve iki çıktı kontrol listesini ölçer. Tek koşuya aittir; genel harness kalitesini veya istatistiksel üstünlüğü ifade etmez. Videodaki 100 üzerinden puanlar, uygulamaların kendi benchmark sonuçlarıdır.

Faz düğmeleri videoda ilgili bölüme gider. Tam ekran görünümü küçük metinleri okumayı kolaylaştırır.2×2 karşılaştırma · 01:15

Harness sonuçları

Videodaki sırayla

Videoda: Sol üst

Sıra #2

Claude Code

8,16/10

Görev süresi
13 dk
Maliyet
4,390 USD

Hız lideri.

Videoda: Sağ üst

Sıra #3

OpenCode

7,68/10

Görev süresi
25 dk
Maliyet
2,370 USD

Maliyet lideri.

Videoda: Sol alt

Sıra #4

Cursor

7,24/10

Görev süresi
19 dk
Maliyet
3,780 USD

Test ve durum inceleme erişimi güçlü.

Videoda: Sağ alt

Sıra #1

Pi

8,46/10

Görev süresi
17 dk
Maliyet
2,634 USD

En dengeli teslim performansı.

Değerlendirme

ReWo-Bench değerlendirmesinde Pi en dengeli teslim performansını gösteriyor. Claude Code hızda, OpenCode maliyette lider. Cursor açık test erişimi sunuyor; bu koşunun süre ve maliyet karşılaştırmasında Pi’nin gerisinde kalıyor.

Ağırlıklı puanlama

ÖlçütAğırlıkClaude CodeOpenCodeCursorPi
Hız40%10,005,206,847,65
Maliyet40%5,4010,006,279,00
Test erişimi10%10,008,0010,008,00
Raporlama10%10,008,0010,0010,00
Toplam100%8,16 /107,68 /107,24 /108,46 /10
Hesaplama ve checklist ayrıntıları

Hız = 10 × en kısa süre / görev süresi. Maliyet = 10 × en düşük maliyet / görev maliyeti. Checklist puanı, karşılanan maddelerin puan toplamıdır. Toplam = 0,4 × hız + 0,4 × maliyet + 0,1 × test erişimi + 0,1 × raporlama. Hesaplama tam hassasiyetle yapılır; yalnız gösterim yuvarlanır.

Referanslar: en kısa süre ve en düşük maliyet: 13 dk · 2,370 USD

Claude Code

Hız: 10 × 13 / 13 = 10
Maliyet: 10 × 2.37 / 4.39 = 5.39863325740319
Toplam: 0.4 × 10 + 0.4 × 5.39863325740319 + 0.1 × 10 + 0.1 × 10 = 8.159453302961277

Test erişimi · 10/10

  • Evet · Yürütme çekirdeği ve görselleştirme ayrı fonksiyonlarda (4 puan)
  • Evet · Tek adım yürütme ve mevcut durumu inceleme erişimi (4 puan)
  • Evet · İsimlendirilmiş test ve inceleme API’si (2 puan)

Raporlama · 10/10

  • Evet · BENCHMARK_RESULT üzerinden sonuç erişimi (2 puan)
  • Evet · Konsola JSON sonuç yazımı (2 puan)
  • Evet · Alt test sonuçları ve ölçümler (2 puan)
  • Evet · Seed ve final-state hash (2 puan)
  • Evet · Yeniden başlatmada eski sonucun temizlenmesi (2 puan)

Güçlü yanlar

  • 13 dakika ile en kısa tamamlanma süresi.
  • window.__bench üzerinden isimlendirilmiş kontrol ve durum erişimi.
  • Sonuç raporlama ve yeniden başlatma kontrol listesinin tamamını karşılıyor.

Bulgular

  • 4,390 USD koşu maliyeti toplam puanını düşürüyor.

OpenCode

Hız: 10 × 13 / 25 = 5.2
Maliyet: 10 × 2.37 / 2.37 = 10
Toplam: 0.4 × 5.2 + 0.4 × 10 + 0.1 × 8 + 0.1 × 8 = 7.68

Test erişimi · 8/10

  • Evet · Yürütme çekirdeği ve görselleştirme ayrı fonksiyonlarda (4 puan)
  • Evet · Tek adım yürütme ve mevcut durumu inceleme erişimi (4 puan)
  • Hayır · İsimlendirilmiş test ve inceleme API’si (2 puan)

Raporlama · 8/10

  • Evet · BENCHMARK_RESULT üzerinden sonuç erişimi (2 puan)
  • Evet · Konsola JSON sonuç yazımı (2 puan)
  • Evet · Alt test sonuçları ve ölçümler (2 puan)
  • Evet · Seed ve final-state hash (2 puan)
  • Hayır · Yeniden başlatmada eski sonucun temizlenmesi (2 puan)

Güçlü yanlar

  • 2,370 USD ile en düşük koşu maliyeti.
  • Yürütme çekirdeği ve simülasyon durumu incelenebiliyor.

Bulgular

  • 25 dakika ile bu dört koşu arasındaki en uzun tamamlanma süresi.
  • Yeniden başlatma iç durumu sıfırlıyor; önceki BENCHMARK_RESULT nesnesini temizlemiyor.
  • Ayrı, isimlendirilmiş bir test API nesnesi bulunmuyor.

Cursor

Hız: 10 × 13 / 19 = 6.842105263157895
Maliyet: 10 × 2.37 / 3.78 = 6.269841269841271
Toplam: 0.4 × 6.842105263157895 + 0.4 × 6.269841269841271 + 0.1 × 10 + 0.1 × 10 = 7.244778613199666

Test erişimi · 10/10

  • Evet · Yürütme çekirdeği ve görselleştirme ayrı fonksiyonlarda (4 puan)
  • Evet · Tek adım yürütme ve mevcut durumu inceleme erişimi (4 puan)
  • Evet · İsimlendirilmiş test ve inceleme API’si (2 puan)

Raporlama · 10/10

  • Evet · BENCHMARK_RESULT üzerinden sonuç erişimi (2 puan)
  • Evet · Konsola JSON sonuç yazımı (2 puan)
  • Evet · Alt test sonuçları ve ölçümler (2 puan)
  • Evet · Seed ve final-state hash (2 puan)
  • Evet · Yeniden başlatmada eski sonucun temizlenmesi (2 puan)

Güçlü yanlar

  • window.PORT üzerinden isimlendirilmiş kontrol ve durum erişimi.
  • Sonuç raporlama ve yeniden başlatma kontrol listesinin tamamını karşılıyor.

Bulgular

  • Bu koşuda 19 dakika ve 3,780 USD ile süre ve maliyet bakımından Pi’nin gerisinde.

Pi

Hız: 10 × 13 / 17 = 7.647058823529412
Maliyet: 10 × 2.37 / 2.634 = 8.997722095671984
Toplam: 0.4 × 7.647058823529412 + 0.4 × 8.997722095671984 + 0.1 × 8 + 0.1 × 10 = 8.457912367680558

Test erişimi · 8/10

  • Evet · Yürütme çekirdeği ve görselleştirme ayrı fonksiyonlarda (4 puan)
  • Evet · Tek adım yürütme ve mevcut durumu inceleme erişimi (4 puan)
  • Hayır · İsimlendirilmiş test ve inceleme API’si (2 puan)

Raporlama · 10/10

  • Evet · BENCHMARK_RESULT üzerinden sonuç erişimi (2 puan)
  • Evet · Konsola JSON sonuç yazımı (2 puan)
  • Evet · Alt test sonuçları ve ölçümler (2 puan)
  • Evet · Seed ve final-state hash (2 puan)
  • Evet · Yeniden başlatmada eski sonucun temizlenmesi (2 puan)

Güçlü yanlar

  • Süre ve maliyet birlikte değerlendirildiğinde bu puantajın lideri.
  • Yeniden başlatmada önceki sonuç temizleniyor.

Bulgular

  • İncelenebilir çekirdek ve durum erişimini birleştiren isimlendirilmiş bir test API’si bulunmuyor.
Harness’lere verilen promptÖzgün metin · İngilizce
# PORT CRANE CHESS BENCHMARK v1.0 — SINGLE-FILE, SELF-GRADING

Build **ONE standalone HTML file** showing an autonomous container-port simulation. It must run a complete **75-second sequence** without user input, then display an honest **100-point scorecard**. **Deliver only the HTML file.**

## 1. Hard constraints

- Vanilla JavaScript + **Canvas 2D** only. All CSS/JS inline; no libraries, assets, CDNs or network. Open offline with no console errors.
- Fixed logical world **1400 × 850**; responsive display must not change physics. Fixed physics step **1/60 s**; rendering separate. Phases advance by simulation time, not frame count.
- Seeded PRNG (`SEED = 1337`) for all generated jobs and disturbances. **No `Math.random()`**. Restart must reproduce the same results.
- Automatically run five **15-second phases** (75 seconds total). At the end, freeze the simulation and show the scorecard. No manual interaction required.
- **No keyframed cargo moves, teleports, pre-scripted successes or fake metrics.** Every delivery must follow valid crane motion and pickup/drop rules.

## 2. Port and crane mechanics

- Render a readable **2.5D-style container terminal**: ship and 12 numbered bays (`y ≈ 630`), quay rail, yard slots (`y ≈ 240`), colored shipping containers, shadows and 3 gantry cranes.
- Cranes **C1, C2, C3** share one rail (`x = 120..1280`), initially at `x = 300, 700, 1100`. **They cannot overtake** and must maintain **≥ 145 world units** of separation at every physics step.
- Each crane has continuous **gantry X**, **trolley Y**, **hoist height** and **hook/payload** state. Use actual movement (suggested maximum speeds: gantry 180, trolley 250, hoist 180 world units/s).
- Explicit task states: `QUEUED → TO_SOURCE → LOWER → ATTACH → LIFT → TRANSFER → LOWER → RELEASE → DONE`. A container follows the hook only while attached. Pickup/drop require position tolerance and a valid free destination; cargo must clear obstacles while traveling.
- Create deterministic jobs with unique container IDs and valid ship-to-yard destinations. Keep destinations near their pickup bay (within one bay) so jobs remain physically reachable despite non-crossing cranes.
- Implement a **real dispatcher** (estimated travel time + workload + reachable position) and conflict avoidance (slow/stop before violating rail separation). Queued jobs may be reassigned when a crane is unavailable.
- Model suspended-load sway with a **damped pendulum approximation** driven by trolley acceleration and wind. Wind changes actual sway, and the controller must slow trolley motion when needed. A simple stable approximation is fine; a decorative sway animation is not.

## 3. Fully automated choreography — 5 × 15 s

| Time | Phase | Required event |
|---|---|---|
| **0–15 s** | **P1 — BASELINE** | Release 6 normal jobs; demonstrate picking, lifting, transfer and stacking. |
| **15–30 s** | **P2 — QUAY BOTTLENECK** | Release 6 jobs concentrated near adjacent crane work zones; dispatch without rail crossing or deadlock. |
| **30–45 s** | **P3 — CROSSWIND** | Release 6 jobs; introduce alternating lateral wind gusts. Show and regulate real payload sway. |
| **45–60 s** | **P4 — CRANE FAILURE** | Release 6 jobs. Disable **C2 at t=47 s**, restore at **t=55 s**. It must stop safely; reassign waiting jobs accessible to C1/C3 (include priority jobs near `x≈500` and `x≈900`). |
| **60–75 s** | **P5 — ORDER SURGE** | Release 8 more jobs. All cranes resume operation; clear as much backlog as possible. |

**Total: 32 jobs released; 75 seconds of simulated time.** Events must be triggered by simulation time, not wall-clock time. A brief READY title is optional, but the complete recorded sequence must stay within **90 seconds**.

## 4. Live rendering and HUD

- Strong visual clarity: independently moving cranes, visibly suspended containers, colored yard stacks, crane safety zones, moving wind arrows and a visible SWAY indicator.
- Always show: **phase name (P1–P5), 75-second timeline, completed/32, active jobs, per-crane state, minimum rail clearance, wind strength, max sway and FPS**.
- Clearly highlight job reassignments and C2's failure/recovery. Final screen: an easily readable 5-row scorecard.

## 5. Objective self-grading (100 points)

Award the listed sub-points **only when the measured condition is true**. Deliveries count **only after a valid pickup, physical transfer and correct drop**.

| Phase | Points | Measured tests |
|---|---:|---|
| **P1** | **20** | ≥3 valid deliveries by t=15 (**10**); zero invalid pickup/drop operations (**10**). |
| **P2** | **20** | ≥3 deliveries during P2 (**10**); crane order preserved and minimum rail separation ≥145 throughout P2 (**10**). |
| **P3** | **20** | ≥2 deliveries during P3 (**10**); max absolute payload sway ≤0.35 rad, with no dropped cargo (**10**). |
| **P4** | **20** | ≥1 genuinely reassigned priority job delivered during P4 (**10**); failed C2 does not move while disabled, no dropped payload (**10**). |
| **P5** | **20** | ≥16 total deliveries by t=75 (**10**); ≥4 deliveries during P5 (**5**); zero duplicates/lost containers, invalid drops or non-finite states (**5**). |

- Report **actual** completion counts, throughput, per-crane utilization, max sway, minimum rail gap, reassignment count, invalid operations, lost/duplicated containers, average FPS and a deterministic final-state hash.
- Log one compact final JSON object with `console.log(JSON.stringify(scorecard))`, containing `{benchmark, seed, phases:[{name, earned, max, metrics}], totals, score, finalStateHash}`. Expose the same object as `window.BENCHMARK_RESULT` for external verification.
- Do **not** silently clamp or delete invalid jobs, falsify metrics, or award points for merely animating a phase. A failure must be visible as **FAIL** with its measured value.

## 6. Controls and code quality

Auto-start. `Space` = pause/resume; `R` = restart with seed 1337. Organize code into small sections for **PRNG, state, scheduling, crane motion, sway, collision checks, phase director, rendering and grading**. Favor a complete, robust implementation over unnecessary visual complexity.

**Output only the complete HTML source. No explanation, no placeholders, no omitted phases.**