{"record":{"id":"67241b154b6f6c40","repo":"earendil-works/pi","slug":"invalid-eval-artifact-name-attachment-name","errorCode":null,"errorMessage":"Invalid eval artifact name: ${attachment.name}","messagePattern":"Invalid eval artifact name: (.+?)","errorType":"validation","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"packages/evals/src/vitest-evals/artifacts.ts","lineNumber":104,"sourceCode":"\nexport async function persistEvalArtifactReferences(\n\tartifacts: ReadonlyArray<TestArtifact>,\n\trunId: string,\n\tartifactDirectory: string,\n): Promise<Array<{ name: string; path: string }>> {\n\tconst references: Array<{ name: string; path: string }> = [];\n\tfor (const artifact of artifacts) {\n\t\tif (\n\t\t\t(artifact.type !== \"@earendil-works/pi-evals:session\" &&\n\t\t\t\tartifact.type !== \"@earendil-works/pi-evals:source\") ||\n\t\t\tartifact.runId !== runId\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst category = artifact.type === \"@earendil-works/pi-evals:session\" ? \"sessions\" : \"sources\";\n\t\tfor (const attachment of artifact.attachments) {\n\t\t\tconst name = basename(attachment.name);\n\t\t\tif (name !== attachment.name) throw new TypeError(`Invalid eval artifact name: ${attachment.name}`);\n\t\t\tconst directory = join(artifactDirectory, category, createHash(\"sha256\").update(runId).digest(\"hex\"));\n\t\t\tawait mkdir(directory, { recursive: true, mode: 0o700 });\n\t\t\tconst path = join(directory, name);\n\t\t\tawait writeFile(path, attachment.body, { encoding: \"utf8\", mode: 0o600 });\n\t\t\treferences.push({ name, path: relative(artifactDirectory, path) });\n\t\t}\n\t}\n\treturn references;\n}\n","sourceCodeStart":86,"sourceCodeEnd":114,"githubUrl":"https://github.com/earendil-works/pi/blob/4af9d21d3b4d664e4a29fcabfec85171077248e3/packages/evals/src/vitest-evals/artifacts.ts#L86-L114","documentation":"Error \"Invalid eval artifact name: ${attachment.name}\" thrown in earendil-works/pi.","triggerScenarios":"Thrown at packages/evals/src/vitest-evals/artifacts.ts:104 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"4af9d21d3b4d664e4a29fcabfec85171077248e3","analyzedAt":"2026-08-24T13:07:14.692Z","schemaVersion":2},"datasetVersion":"2026-08-24T17:17:21.512Z"}