← AI
AI-authored analysis · Fictional correspondent, real sources
The Wang Report's OpenAI Pivot Tests More Than Model Mapping

The initial switch happened on 12 October. Scheduled production followed. Proving the whole migration takes a different kind of evidence.

The Executive Brief, once a month, free. What it is

The old function still had its name

A function in The Wang Report is still called callClaudeAsync. It now runs OpenAI through Codex. The name survived because the callers needed the same contract: give it the editorial instructions and source material, get back a completed result, or receive a failure. That small piece of compatibility helped the paper change its language-model engine without rewriting every desk.

The initial cutover and shared routing layer were installed on 12 October. Scheduled morning production then completed on 13 October, with generated output and deployment records. Subsequent checks continued on 14 October. That is the useful shape of our pivot: an initial change on one date, production evidence afterward, and acceptance that continues beyond both. The record does not support a single stopwatch figure for the whole migration.

Give the model a place in the architecture

The paper already had a shared execution boundary. During the migration, a central registry made the selection policy explicit: provider, model, task role, reasoning effort, capabilities and billing. Callers can ask for fast, balanced or deep work; the registry maps that request to an approved model. Older Haiku, Sonnet and Opus names remain compatibility aliases. They are routing decisions, with no claim that the corresponding models behave identically.

A team designing this from scratch should put provider-specific authentication, request formats and response parsing behind adapters. Keep source retrieval, editorial instructions, saved state and approval decisions in the application. Make exceptions visible: a job pinned to a particular model may bypass the normal role mapping. Inventory those pins as carefully as the default.

Our registry currently enables Codex. It makes model selection more manageable, but it is not a running second provider on standby. Another provider would still need an adapter, approved access and workload tests. Two model names in a settings screen do not prove that a deadline can survive the loss of one supplier.

Carry the work, then check what changed

We carried the paper's sources, voices and checks across. The execution contract needed translation. The Codex adapter parses an event stream and requires a completed turn and a final response. A process that starts, or emits some text, has not necessarily finished the job.

Reasoning effort became an explicit routing setting. Research gets a different allowance from an ordinary completion. Tool access also needed deliberate configuration: a drafting call should not inherit permission to browse, write files or run commands merely because the desktop application can do those things. The research path and the plain writing path have different jobs.

Authentication and billing needed the same care. This installation uses ChatGPT subscription authentication and refuses silent fallback to paid APIs. That is our chosen operating policy. An organisation should select its own approved access method and data-handling controls before making the switch; a subscription session and an API credential are different arrangements. OpenAI's documentation describes those distinctions.

The experience is still being measured

The most concrete Claude-versus-OpenAI differences in this migration were around the work: carrying instructions, mapping models, setting reasoning effort, configuring tools and interpreting completion. Those are observations about our integration. They do not establish that one model writes better, reasons better or is more dependable across every task.

A successful run establishes that a workflow produced output. Editorial equivalence requires someone to read it. Use the same archived source packet to compare factual accuracy, citations, voice, omissions and the effort needed to correct a piece. Measure end-to-end time, retries and failure behaviour as well as the final prose. A fast first answer can still leave the editor with more work.

For a desktop user, test what survives the move: saved instructions, memories, files, connectors and permissions. In our wider migration, some legacy memory material remained readable while native memory import stayed uncompleted. Context portability is its own acceptance task. It cannot be inferred from a successful model call.

A switch needs an owner and a way back

Before a pilot, the application owner should agree with security, data and risk owners which workloads may move, what information may leave, what the new provider may retain, and which actions still require a person. Check location eligibility, contractual terms, capacity and the limits of the proposed alternative. Switching supplier changes the risk assessment even when the prompt stays the same.

Start with a representative workload using public or synthetic inputs, with sending and publishing disabled. Test both ordinary and awkward cases: missing credentials, exhausted quota, invalid output, a partial response, denied tool access and a timeout. Test images and research if the application depends on them. Set the minimum acceptable quality and maximum recovery time before seeing the results.

Our changes were backed up with recorded file hashes so restoration could detect intervening edits. A team also needs to preserve state and prevent duplicate actions. An automated retry must not send the same message or publish the same item twice. If the previous provider is no longer accessible, the fallback may be the last good output, a manual workflow or a paused service. Define that degraded mode before it is needed.

Close the migration with evidence

Track each workload through mapped, tested, enabled and observed in production. Give each an owner and attach evidence from the actual run: its outcome, output, log and state. Scheduler success without the expected output stays unaccepted. A dashboard that says complete must agree with the files and service it describes.

We added application, model, effort and billing attribution to instrumented calls. That made wrong or missing application labels visible during ordinary scheduled work. The records remain partial; an unrecorded call is not zero usage, and token counts do not by themselves establish account-wide spend or available quota.

Measure time to first safe output, time to restore critical workloads and time to finish acceptance separately. Keep watching factual corrections, voice drift, latency, retries and failures after cutover. Set thresholds that bring a workload back to its owner. The next recovery exercise can then use the last one as evidence: how long each approved alternative actually took to produce acceptable work, and which dependency stopped it.

The next supplier change will put that record to use. The workload owner will have a tested route, an accepted output and a measured recovery time before the deadline arrives.

Walter Wang's companion piece: The Wang Report Says Goodbye to Claude

The Wang Report uses OpenAI models through Codex under human editorial oversight. See our Editorial Standards.