{"record":{"id":"b37c7435c2ab4ce1","repo":"paperclipai/paperclip","slug":"opencode-evals-require-exact-version-1-18-29-rece","errorCode":null,"errorMessage":"OpenCode evals require exact version 1.18.29; received ${version}","messagePattern":"OpenCode evals require exact version 1\\.18\\.29; received (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/paperclip-runner/src/cli/eval-session.ts","lineNumber":164,"sourceCode":"  });\n}\n\nexport function evalRuntimeSystemInstructions(\n  runtimeContext: NativeRuntimeContextSnapshot,\n): string {\n  return composeNativeSystemInstructions(\n    runtimeContext,\n    EVAL_RUNTIME_INSTRUCTIONS,\n  );\n}\n\nexport function evalSessionProviderVersion(\n  request: EvalSessionRequest,\n): string | null {\n  if (request.provider === \"opencode\") {\n    const version = request.opencodeVersion ?? \"1.18.29\";\n    if (version !== \"1.18.29\") {\n      throw new Error(`OpenCode evals require exact version 1.18.29; received ${version}`);\n    }\n    return version;\n  }\n  if (request.provider === \"acpx\") {\n    return resolveQualifiedAcpxProfile(\n      request.acpxAgent ?? \"codex\",\n      request.model,\n    ).acpxVersion;\n  }\n  if (request.provider === \"claude_managed\") {\n    return request.managedProfile!.agentVersion;\n  }\n  if (request.provider === \"aws_agentcore\") {\n    return request.agentCoreProfile!.qualificationRevision;\n  }\n  return null;\n}\n","sourceCodeStart":146,"sourceCodeEnd":182,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/packages/paperclip-runner/src/cli/eval-session.ts#L146-L182","documentation":"OpenCode eval sessions pin the provider binary to exactly version 1.18.29 so eval results are reproducible; evalSessionProviderVersion throws for any other requested version and defaults to the pinned one when none is supplied.","triggerScenarios":"Requesting an eval session with provider 'opencode' and opencodeVersion set to anything other than '1.18.29' (e.g. '1.18.30', 'latest', '1.19.0').","commonSituations":"CI installing the newest OpenCode release; a developer bumping the local CLI and re-running evals; a config template interpolating a version variable.","solutions":["Set request.opencodeVersion to '1.18.29' (or omit it to use the default)","Install/pin the OpenCode binary at exactly 1.18.29 in the environment","Update the pinned version constant in eval-session.ts if the eval matrix legitimately moves"],"exampleFix":"// before\nrunEval({ provider: 'opencode', opencodeVersion: '1.19.0' });\n// after\nrunEval({ provider: 'opencode', opencodeVersion: '1.18.29' });","handlingStrategy":"validation","validationCode":"if ((request.provider === 'opencode') && request.opencodeVersion !== undefined && request.opencodeVersion !== '1.18.29') throw new Error('opencode evals pinned to 1.18.29');","typeGuard":"function isPinnedOpenCodeVersion(v: string | undefined): boolean { return (v ?? '1.18.29') === '1.18.29'; }","tryCatchPattern":"try { runEvalSession(request); }\ncatch (e) { if (String(e.message).startsWith('OpenCode evals require exact version')) { console.error('Pin opencodeVersion to 1.18.29'); process.exitCode = 2; } else throw e; }","preventionTips":["Pin the OpenCode binary version in CI and dev setup to 1.18.29","Omit opencodeVersion to inherit the pinned default instead of passing a dynamic version","Centralize the pin constant rather than repeating versions in configs"],"tags":["versioning","validation","evals"],"backgroundTag":"invalid-enum-value","analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-09-10T03:14:50.855Z","contentChangedAt":"2026-09-10T03:14:50.855Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}