explainx.ai0k
TrendingAI News TodayPathwaysSkills
Pricing
explainx.ai

Upskill in AI — 16 free pathways, live workshops & bootcamps, and 50+ courses from practitioners. Plus the skills, tools, and MCP servers to practice on.

follow us

follow on google

Add explainx.ai as a preferred source

corporate training

support@explainx.ai

get started

Find your pathTake Free Evaluation

community

Join the community

learn

mind: share how you thinkpathways — start freeworkshopsbootcampscoursescompare Explainxcertificationsmock testsexplainx universitycorporate traininglearn skills & mcp

discover

skillsmcp serversexplainx mcptoolsmdx readeragentsllmsdesignsdictionarypeopleagi trackerfelony benchranks

company

aboutvisionmissionteaminstructorsteach on explainxpartnershipscommunityhackathonscareers

content

daily AI newsstate of AI — live resultsblogreleasespromptsgeneratorsresource libraryfor LLMsexplainx.ai kids

solutions

all solutionsdeveloper upskillingmarketing upskillingproduct manager upskillingleadership upskilling

newsletter · weekly

Get AI news, tools, and insights in your inbox.

supportcontactprivacytermsdata rightshow we create contentsubmission guidelines

© 2026 AISOLO Technologies Pvt Ltd

explainx.ai

On this page

  • TL;DR — promise vs prerequisites
  • Step 0 — Your harness is tuned to your incumbent
  • Step 1 — Tool schemas are provider behavior, not prompts
  • Step 2 — Prompt caching is not one feature
  • Step 3 — Reasoning replay must be self-contained
  • Quality caveats — design convergence
  • Migration checklist (explainx.ai)
  • HN meta — prose vs substance
  • explainx.ai read
  • Related on explainx.ai
← Back to blog

explainx / blog

Ploy’s GPT-5.6 Migration — Fix the Harness Before You Trust the Score

GPT-5.6, Production Migration, Agent Evals, Prompt Caching, Tool Schemas, Claude Opus

Ploy switched from Opus 4.8 to GPT-5.6 Sol: 2.2× faster, 27% cheaper — after fixing eval harness bias, nullable tool schemas, workspace-scoped cache keys, and reasoning replay. explainx.ai playbook for cross-model agent migration.

Jul 13, 2026·6 min read·Yash Thakker
add explainx.ai
go deep
Ploy’s GPT-5.6 Migration — Fix the Harness Before You Trust the Score

Ploy did not "switch models." They switched a stack — and discovered the stack was tuned to Opus.

On July 9, 2026, Lorenzo Gentile published how Ploy moved its website-building agent from Claude Opus 4.8 to GPT-5.6 Sol after four months where nothing beat Opus on their bar. Hacker News gave it 132 points — with a parallel argument about whether the prose sounded LLM-generated. Fair complaint. The engineering underneath is what enterprises should steal.

This pairs with Systima's harness overhead study: tokens are not the model; they are model + harness + cache config + tool contracts.

Weekly digest3.5k readers

Catch up on AI

Curated AI updates on agents, skills, and MCP — delivered to your inbox. Unsubscribe anytime.

TL;DR — promise vs prerequisites

table · 3 cols
Metric (redesign suite, completed builds)Opus 4.8 (n=11)GPT-5.6 Sol (n=10)
Cost$3.06$2.22
Wall-clock8m 00s3m 42s
Input tokens2.60M1.70M
Output tokens33.0K17.1K
Visual score0.9360.970

Catch: Raw first eval run lied until they fixed the harness, schemas, cache keys, and reasoning replay.


Step 0 — Your harness is tuned to your incumbent

Ploy runs hundreds of cases against real fixture workspaces — homepage builds, clone-safety checks. Scoring includes:

  • Visual judge: 10 binary design checks
  • Content assertions
  • Tool-trajectory checks
  • File assertions
  • Full trace triage on every failure

First cross-model surprise:

"Your harness is tuned to your incumbent model, and you don't know it."

table · 3 cols
Harness assumptionOpus behaviorGPT-5.6 behavior
Tool-call budgetsSequentialParallel fan-out → budget blow
File readsRarely batchedConstant batch reads → executor unsupported
Pass thresholdMissing minScore → default 1.00.98 hero "failed" while passing checks

~⅓ of first-run failures were harness — not evenly distributed between models.

explainx.ai rule: Before any model procurement decision, run private evals with trace triage as a gate. Same lesson as 37% lab-to-production gap on public benchmarks — worse in private, because your harness is bespoke.


Step 1 — Tool schemas are provider behavior, not prompts

Silent corruption: GPT-5.6 sent all 25 code-tool properties on every call.

json
// GPT-5.6 — invented values look intentional
{ "action": "read", "file_paths": [...], "offset": 0, "timeout": 120000,
  "siteId": "00000000-0000-0000-0000-000000000000", ... }
table · 3 cols
Modelcode(read) callsAll 25 properties
gpt-5.66,6356,635 (100%)
claude-opus-4.82,8984 (0.1%)
claude-sonnet-51,9330

52–64% empty reads — tool returned success: true both ways.

Prompt fixes failed: "omit unused parameters," per-field OPTIONAL hints, OpenAI strict mode (identical behavior; would strip validation patterns).

Fix — nullable required transform (OpenAI only):

typescript
// Optional → required + nullable at provider boundary
// anyOf: [T, null] — model expresses honesty
// Strip nulls at single invocation seam before validation

Results: empty reads 52% → 0%; ~30% fewer tool calls (no re-read loops).

Lesson: "The model" in production is model + tool contract. Structured output guides help; provider-specific emission patterns need boundary transforms.


Step 2 — Prompt caching is not one feature

Surface: both vendors offer "prompt caching." Under the hood: different designs.

Claude (Anthropic)

  • cache_control breakpoints
  • ~29K static prefix (tools + system)
  • Org-scoped shared cache — 92–96% hit rates, fades to background

GPT-5.6 (OpenAI) — what changed

  • Dropped partial-prefix implicit matching
  • New conversations: 0% of shared 29K prefix cached
  • Uncached prompts pay 1.25× cache-write surcharge
  • Requires prompt_cache_breakpoint + prompt_cache_key
  • Key is cache identity — same prompt, different key → zero hits
  • ~15 requests/minute per cache node — global key → fan-out to cold nodes

Ploy's workspace-scoped key

snippet
request ──► hash(prompt head + prompt_cache_key) ──► cache node (~15 rpm/key)

  [ tools + static prefix ]············ A  every session
  [ + workspace context ]·············· B  same context
  [ + turn history + latest ]·········· C  this session
table · 3 cols
Key strategyFirst-call hitProblem
Per-conversation0%Never shares prefix
One globalSpill at scale15 rpm budget blown
Per-workspace83.7% after fixSweet spot

Entry B self-heals: workspace memory change misses B, still hits A — one context write vs full 29K re-bill.

No workaround: cross-workspace static prefix sharing is structurally impossible on OpenAI vs Anthropic org cache. Every workspace pays ~$0.18 per idle-window cold write — bounded, predictable.

Post-fix: uncached input −28%; GPT-5.6 per-suite cost below Opus. The 50% "GPT is expensive" gap was config, not list price.

Tie to Systima cache instability and prompt caching framework.


Step 3 — Reasoning replay must be self-contained

GPT-5.6 Responses API default: prior reasoning as server-side item refs (rs_...).

Ploy hit intermittent Item 'rs_...' not found mid-conversation.

Fix: store: false — encrypted reasoning blobs, self-contained replay.

Debugging corollary: server-side reasoning state means effective prompt can change upstream even when your client bytes are append-only. Log at the boundary.


Quality caveats — design convergence

Ploy's honest read: GPT-5.6 ships clean, modern, gridded layouts — can ignore existing design systems without steering. Opus reproduced Clay brand system; GPT-5.6 shipped generic-but-sharp.

Visual score still won on their suite — but brand adherence needed harness/workflow fixes (separate post promised).

HN thread split: some preferred Opus aesthetics for marketing; others cared about time × dollars × score.

Enterprise framing: define "good" in charter — visual judge + brand rubric + human slice, not one number.


Migration checklist (explainx.ai)

table · 2 cols
PhaseAction
0. Harness auditRe-run incumbent vs challenger; triage traces; fix budgets, batching, thresholds
1. Tool boundaryProvider-specific schema transforms; null-strip seam; no tool impl churn
2. Cache designMap breakpoints; choose key scope; measure first-call hit % cold
3. Reasoningstore: false or equivalent; verify mid-session continuity
4. Regression suiteFreeze golden workspaces; version harness with evals
5. Cost dashboard$/build, p95 latency, human edit ratio — not pass@1 alone

Pair with token governance and loop engineering.


HN meta — prose vs substance

Top comments debated LLM writing style ("llmish"). Substance comments that aged well:

  • Consistency > one benchmark run for production agents
  • Luna routing for tool-touching subtasks (5× samples per Sol dollar)
  • Subagent isolation — research duplication eats uncached tokens (Systima 4.2×)
  • Fable extension to July 19 kept competitive pressure on OpenAI subs

We cite Ploy for engineering, not copy tone. If you publish migration numbers, human-edit the prose — credibility is part of the metric.


explainx.ai read

Ploy's post is the production complement to Nadella's essay and Systima's microscope:

  1. Eval harness bias is invisible until you switch models — ~⅓ failure rate inflation
  2. Tool verbosity is a silent correctness bug — not a prompt problem
  3. Cache key design is architecture — 0% vs 84% first-call hits
  4. Cross-vendor "caching" is homonym — procurement must compare $/successful-task at steady-state cache
  5. Migration is a loop — eval fail → trace → harness fix → re-run (compound learning)

GPT-5.6 Sol winning on website agents does not generalize to your compliance workflow — run your private benchmark. Ploy proved the method; you bring the tasks.


Related on explainx.ai

  • geohot — love LLMs, hate hype, doubt lab moats
  • Claude Code vs OpenCode token overhead — Systima
  • How to build enterprise AI benchmarks
  • Nadella Reverse Information Paradox
  • GPT-5.6 Sol vs Fable 5 comparison
  • Prompt caching framework
  • Structured output & JSON mode
  • Specification gaming
  • AI benchmarks complete guide
  • Agent harness engineering
  • Token spend governance

Sources: Ploy — Migrating a production AI agent to GPT-5.6, Jul 9 2026 · Systima — Claude Code vs OpenCode tokens, Jul 12 2026


Migration details reflect Ploy's July 2026 publication and public HN discussion. Pricing, cache TTLs, and model IDs change — verify against current OpenAI and Anthropic docs before production cutover.

Spotted something out of date? Let us know.

People in this article

  • Satya Nadella →Chairman and CEO of Microsoft
Explore people in AI →
Yash Thakker

Written by

Yash Thakker

Yash is an AI expert with over 300K learners. Join his workshops →

View Yash Thakker in People in AI →

Related posts

Sep 29, 2026

ChatGPT Pro Lists GPT-5.6 Sol, Luna, Terra as Unlimited*

Ian Nuttall spotted GPT-5.6 Sol, Luna, and Terra marked Unlimited* on the ChatGPT Pro plan page, with GPT-6 Astra/Sol/Luna still Expanded. That is the likely offset for Tibo’s halved API-dollar Pro math — if the star is only chat, Codex still meters.

Sep 27, 2026

What a Claude Code Task Costs on Opus 5.5

Anthropic's "40% less to run" line stacks a price cut on top of fewer tokens at Opus 5.5's medium default. Hold the token mix fixed and one illustrative Claude Code session falls from $3.50 to $2.40. This guide prices the knobs that move a single task more than that sticker: cache hit rate, turn count, effort, and /usage.

Sep 9, 2026

Reducing Claude API Cost: Caching, Prompt Audits, and Effort Tuning

On September 8, 2026, Anthropic's ClaudeDevs team published a practical playbook for cutting Claude Platform spend without sacrificing quality — prompt cache mechanics, six prompting anti-patterns that hobble frontier models, and how to calibrate the effort parameter with real benchmark data. This guide reproduces the numbers and turns the guidance into copy-paste commands.