{"record":{"id":"7aefe31760ff86f4","repo":"badges/shields","slug":"none-7aefe3","errorCode":null,"errorMessage":"none","messagePattern":"none","errorType":"exception","errorClass":"NotFound","httpStatus":null,"severity":"info","filePath":"services/puppetforge/puppetforge-module-pdk-version.service.js","lineNumber":40,"sourceCode":"          {\n            name: 'moduleName',\n            example: 'azure_key_vault',\n          },\n        ),\n      },\n    },\n  }\n\n  static defaultBadgeData = { label: 'pdk version' }\n\n  async handle({ user, moduleName }) {\n    const data = await this.fetch({ user, moduleName })\n    if (data.current_release.pdk) {\n      return renderVersionBadge({\n        version: data.current_release.metadata['pdk-version'],\n      })\n    } else {\n      throw new NotFound({ prettyMessage: 'none' })\n    }\n  }\n}\n","sourceCodeStart":22,"sourceCodeEnd":44,"githubUrl":"https://github.com/badges/shields/blob/766fd8bc89a90b8534dc573ab72dec30215ab1ec/services/puppetforge/puppetforge-module-pdk-version.service.js#L22-L44","documentation":"The Puppet Forge PDK badge throws NotFound with 'none' when the module's `current_release.pdk` flag is false — i.e. the latest release was not built with the Puppet Development Kit, so there is no pdk-version metadata to render.","triggerScenarios":"Requesting the PDK-ready badge for a module whose current release lacks `pdk: true` in its Forge metadata, or whose metadata has no 'pdk-version' entry.","commonSituations":"Modules still built with the legacy puppet-module tooling; a new release reverted to non-PDK builds; user applies the badge to modules that never adopted PDK.","solutions":["Migrate the module to PDK and run `pdk build` for a new release so `current_release.pdk` becomes true","Only display the PDK badge on modules whose current Forge release is PDK-built","Check the module's Forge page to confirm PDK readiness before adding the badge"],"exampleFix":"// before\n$ puppet-module build        // legacy tooling, pdk flag false\n// after\n$ pdk build                  // release marked as PDK-built","handlingStrategy":"validation","validationCode":"const meta = await fetch(`https://forgeapi.puppet.com/v3/modules/${user}-${moduleName}`)\nconst { current_release } = await meta.json()\nif (!current_release?.pdk) console.warn('current release is not PDK-built')","typeGuard":"function isPdkBuilt(data) { return data?.current_release?.pdk === true && typeof data.current_release.metadata?.['pdk-version'] === 'string' }","tryCatchPattern":"try {\n  return await service.handle({ user, moduleName })\n} catch (err) {\n  if (err instanceof NotFound && err.prettyMessage === 'none') {\n    return renderBadge({ label: 'pdk', message: 'not PDK' })\n  }\n  throw err\n}","preventionTips":["Build module releases with `pdk build` so metadata includes pdk-version","Only show the PDK badge on PDK-migrated modules","Re-check after each release that the pdk flag stayed true"],"tags":["badge","puppetforge","not-found"],"backgroundTag":"missing-upstream-metadata","analyzedSha":"766fd8bc89a90b8534dc573ab72dec30215ab1ec","analyzedAt":"2026-08-30T01:40:27.499Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}