{"record":{"id":"8f51dd7d71044f5b","repo":"deepseek-ai/deepseek-harness","slug":"typert-loader-pkgname-typert-manifest-names-pa","errorCode":null,"errorMessage":"typert-loader: ${pkgName} TYPERT manifest names package ${JSON.stringify(manifest.package)} — the manifest must be owned by the package that exports it","messagePattern":"typert-loader: (.+?) TYPERT manifest names package (.+?) — the manifest must be owned by the package that exports it","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/typert/loader/src/index.ts","lineNumber":89,"sourceCode":"  throw new Error(`typert-loader: ${pkgName} exports[\"${TYPERT_HOST_EXPORT}\"] must be a string or an object with a string default`)\n}\n\n/**\n * Narrow a dynamically imported typert module's `TYPERT` export to a\n * contribution owned by `pkgName`. This is the module/file boundary: the\n * manifest crosses from a build artifact into the typed registry, so every\n * field is checked and every failure names the package and the defect.\n * @param pkgName - the package whose typert face was imported.\n * @param exported - the module's `TYPERT` export.\n * @returns the validated contribution.\n */\nexport function validateTypertManifest(pkgName: string, exported: unknown): TypertContribution {\n  if (typeof exported !== 'object' || exported === null) {\n    throw new Error(`typert-loader: ${pkgName} exports \"${TYPERT_HOST_EXPORT}\" but its module has no TYPERT manifest object`)\n  }\n  const manifest = exported as Record<string, unknown>\n  if (manifest.package !== pkgName) {\n    throw new Error(\n      `typert-loader: ${pkgName} TYPERT manifest names package ${JSON.stringify(manifest.package)} — the manifest must be owned by the package that exports it`,\n    )\n  }\n  if (manifest.face !== 'host') {\n    throw new Error(`typert-loader: ${pkgName} exports \"${TYPERT_HOST_EXPORT}\" but TYPERT.face is not \"host\"`)\n  }\n  if (!Array.isArray(manifest.schemas)) {\n    throw new Error(`typert-loader: ${pkgName} TYPERT.schemas must be an array`)\n  }\n  for (const value of manifest.schemas as unknown[]) {\n    if (typeof value !== 'object' || value === null) {\n      throw new Error(`typert-loader: ${pkgName} TYPERT.schemas contains a non-object schema`)\n    }\n    const schema = value as Record<string, unknown>\n    requireString(pkgName, schema, 'name', 'schema')\n    if (typeof schema.schema !== 'object' || schema.schema === null || !('_zod' in schema.schema)) {\n      throw new Error(`typert-loader: ${pkgName} TYPERT schema \"${schema.name as string}\" is not a zod v4 schema instance`)\n    }","sourceCodeStart":71,"sourceCodeEnd":107,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/typert/loader/src/index.ts#L71-L107","documentation":"Error \"typert-loader: ${pkgName} TYPERT manifest names package ${JSON.stringify(manifest.package)} — the manifest must be owned by the package that exports it\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/typert/loader/src/index.ts:89 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Regenerate the manifest from the owning package so the manifest package name matches the exporter."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}