{"record":{"id":"20eaf94c15b8551d","repo":"bmad-code-org/BMAD-METHOD","slug":"obsolete-implementation-terminology-found-in-deplo","errorCode":null,"errorMessage":"Obsolete implementation terminology found in deployable documentation:\n  ${details}","messagePattern":"Obsolete implementation terminology found in deployable documentation:\n  (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"tools/validate-published-implementation-model.mjs","lineNumber":26,"sourceCode":"  /\\bbmad-(?:quick-dev|dev-auto)\\b/gi,\n  /\\bQuick[ -]?Dev\\b/gi,\n  /\\bDev[ -]?Auto\\b/gi,\n  /\\bbmad-(?:create|dev)-story\\b/gi,\n  /\\b(?:create-story|dev-story)\\b/gi,\n  /\\b(?:Create Story|Dev Story)\\b/g,\n  /\\b(?:createStory|devStory|create_story|dev_story)\\b/g,\n  /\\bquick[ -]?flow\\b/gi,\n  /flux rapide|parcours parallèle/gi,\n  /paralelní cesta/gi,\n  /luồng nhanh|nhánh nhanh/gi,\n  /快速流程|并行快线/g,\n];\n\nexport function validatePublishedImplementationModel(siteDir) {\n  const findings = findObsoleteImplementationTerms(siteDir);\n  if (findings.length > 0) {\n    const details = findings.map(({ file, line, match }) => `${file}:${line}: ${match}`).join('\\n  ');\n    throw new Error(`Obsolete implementation terminology found in deployable documentation:\\n  ${details}`);\n  }\n\n  const llmsPath = path.join(siteDir, 'llms.txt');\n  const llmsContent = fs.readFileSync(llmsPath, 'utf-8');\n  if (!llmsContent.includes(CANONICAL_LLMS_ENTRY) || !llmsContent.includes(CANONICAL_LLMS_DESCRIPTION)) {\n    throw new Error('llms.txt must describe Build as canonical for both direct intent and fully planned work');\n  }\n}\n\nexport function findObsoleteImplementationTerms(siteDir) {\n  const findings = [];\n\n  for (const filePath of getPublishedTextFiles(siteDir)) {\n    const content = fs.readFileSync(filePath, 'utf-8');\n    for (const pattern of FORBIDDEN_TERMS) {\n      for (const match of content.matchAll(pattern)) {\n        findings.push({\n          file: path.relative(siteDir, filePath),","sourceCodeStart":8,"sourceCodeEnd":44,"githubUrl":"https://github.com/bmad-code-org/BMAD-METHOD/blob/b70486b9bdcb0a404d329e2a763b57964e7f1360/tools/validate-published-implementation-model.mjs#L8-L44","documentation":"Thrown by validatePublishedImplementationModel when published site files contain forbidden legacy implementation terms (e.g. bmad-quick-dev, create-story, dev-story, quick-flow, plus French/Czech/Vietnamese/Chinese translations). The validator enforces that deployed docs use only the canonical 'Build' workflow vocabulary, scanning .html/.txt/.xml/.json/.svg files under siteDir.","triggerScenarios":"Running the validator (typically in CI or a post-build script) against the built siteDir; any published output file matches one of the FORBIDDEN_TERMS regexes.","commonSituations":"A workflow rename left stale references in docs that flowed into the build; a doc PR reintroduces old terminology; generated/cached HTML wasn't rebuilt after source fixes; translation files still carry deprecated terms.","solutions":["Grep the published site for the terms listed in the error and replace them with the canonical 'Build' vocabulary.","Re-run the site build so stale HTML is regenerated from corrected source markdown.","Add a source-side terminology lint so deprecated words are caught pre-build, not just post-build."],"exampleFix":"<!-- before: docs/reference.md -->\n<!--   Use the bmad-quick-dev workflow for fast iteration. -->\n<!--\n-- after -->\n<!--   Use the Build workflow for fast iteration. -->","handlingStrategy":"validation","validationCode":"const findings = findObsoleteImplementationTerms(siteDir);\nif (findings.length > 0) {\n  console.error('Obsolete terms found pre-publish:', findings);\n  process.exit(1);\n}\nvalidatePublishedImplementationModel(siteDir);","typeGuard":null,"tryCatchPattern":"try {\n  validatePublishedImplementationModel(siteDir);\n} catch (e) {\n  if (/Obsolete implementation terminology/.test(e.message)) {\n    // parse file:line:match lines, fix each source doc, rebuild, re-run\n  } else { throw e; }\n}","preventionTips":["Run findObsoleteImplementationTerms as a pre-commit lint on source docs, not just post-build.","Maintain the canonical-vocabulary list alongside the rename so docs and validator stay in sync.","Rebuild the site fully before validating so stale HTML doesn't trigger false positives."],"tags":["website","docs","validation","terminology","build"],"backgroundTag":null,"analyzedSha":"b70486b9bdcb0a404d329e2a763b57964e7f1360","analyzedAt":"2026-08-13T01:21:12.247Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}