{"record":{"id":"a10fed44a54d3338","repo":"Hmbown/CodeWhale","slug":"label-is-missing-missing-join","errorCode":null,"errorMessage":"${label} is missing ${missing.join(\", \")}","messagePattern":"(.+?) is missing (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"npm/codewhale/scripts/verify-release-assets.js","lineNumber":329,"sourceCode":"  const checksums = new Map();\n  for (const line of text.split(/\\r?\\n/)) {\n    const trimmed = line.trim();\n    if (!trimmed) {\n      continue;\n    }\n    const match = trimmed.match(/^([a-fA-F0-9]{64})\\s+\\*?(.+)$/);\n    if (!match) {\n      throw new Error(`Invalid checksum manifest line: ${trimmed}`);\n    }\n    checksums.set(match[2], match[1].toLowerCase());\n  }\n  return checksums;\n}\n\nfunction assertChecksumManifestIncludes(checksums, expectedAssets, label) {\n  const missing = expectedAssets.filter((asset) => !checksums.has(asset));\n  if (missing.length > 0) {\n    throw new Error(`${label} is missing ${missing.join(\", \")}`);\n  }\n}\n\nasync function run() {\n  const version = resolveBinaryVersion();\n  const repo = resolveRepo();\n  const cnbMirror = usesCnbMirror();\n  const assets = cnbMirror ? CNB_RELEASE_ASSET_NAMES : allReleaseAssetNames();\n\n  assertPackageVersionMatchesBinaryVersion(version);\n\n  console.log(`Verifying ${assets.length} release assets for ${repo}@v${version}...`);\n  if (hasReleaseBaseOverride()) {\n    console.log(\"Skipping GitHub workflow freshness check because a release asset mirror/base URL override is set.\");\n  } else {\n    await verifyGitHubReleaseFreshness(repo, version, assets);\n  }\n  for (const asset of assets) {","sourceCodeStart":311,"sourceCodeEnd":347,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/433685b2024e7bc4c99e1e2e326bcad39b4d9d65/npm/codewhale/scripts/verify-release-assets.js#L311-L347","documentation":"Checksum-manifest completeness check in verify-release-assets: one or more expected release assets are absent from the parsed SHA-256 checksum manifest. Every artifact the release claims to publish must appear in the manifest so consumers can verify downloads; a missing entry means the manifest was built from an incomplete or stale asset set.","triggerScenarios":"run() parses the release (or bundle) checksum manifest and one or more expected asset names have no entry in the map.","commonSituations":"The manifest was generated before a new platform artifact was added; the build produced assets under renamed filenames; a partial upload produced an incomplete manifest.","solutions":["Regenerate the checksum manifest after building all expected assets.","Compare expected asset names with manifest keys and fix the naming mismatch in the release pipeline.","Re-run the Release workflow so the manifest and assets are produced together."],"exampleFix":"// before\nsha256sum codewhale-linux-x64.tar.gz > SHASUMS256.txt\n// after\nsha256sum dist/* > SHASUMS256.txt  # includes every expected asset","handlingStrategy":"validation","validationCode":"const missing = expectedAssets.filter(a => !manifest.has(a)); if (missing.length) console.error(\"Manifest missing:\", missing.join(\", \"));","typeGuard":"null","tryCatchPattern":"try { run(); } catch (e) { if (e.message.includes(\"is missing\")) { console.error(\"Regenerate the checksum manifest with all expected assets.\"); process.exit(1); } throw e; }","preventionTips":["Generate the manifest over the full dist directory, not individual files","Derive expected asset names from the same config used to build","Rebuild manifest and assets together in one job"],"tags":["checksum","manifest","missing-file","release"],"backgroundTag":"resource-not-found","analyzedSha":"433685b2024e7bc4c99e1e2e326bcad39b4d9d65","analyzedAt":"2026-09-15T12:24:24.634Z","contentChangedAt":"2026-09-15T12:24:24.634Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}