{"record":{"id":"2aa6890eff6fe339","repo":"nodejs/node","slug":"builder-name-s-not-found-under-builder-groups","errorCode":null,"errorMessage":"Builder name \"%s\"  not found under builder_groups[%s] in \"%s\"","messagePattern":"Builder name \"(.+?)\"  not found under builder_groups\\[(.+?)\\] in \"(.+?)\"","errorType":"exception","errorClass":"MBErr","httpStatus":null,"severity":"error","filePath":"deps/v8/tools/mb/mb.py","lineNumber":616,"sourceCode":"        raise MBErr(\n          'Can not specific both -c/--config and -m/--builder-group or '\n          '-b/--builder')\n\n      return self.args.config\n\n    if not self.args.builder_group or not self.args.builder:\n      raise MBErr('Must specify either -c/--config or '\n                  '(-m/--builder-group and -b/--builder)')\n\n    if not self.args.builder_group in self.builder_groups:\n      raise MBErr('Builder groups name \"%s\" not found in \"%s\"' %\n                  (self.args.builder_group, self.args.config_file))\n\n    config = _v8_builder_fallback(\n        self.args.builder, self.builder_groups[self.args.builder_group])\n\n    if not config:\n      raise MBErr(\n        'Builder name \"%s\"  not found under builder_groups[%s] in \"%s\"' %\n        (self.args.builder, self.args.builder_group, self.args.config_file))\n\n    if isinstance(config, dict):\n      if self.args.phase is None:\n        raise MBErr('Must specify a build --phase for %s on %s' %\n                    (self.args.builder, self.args.builder_group))\n      phase = str(self.args.phase)\n      if phase not in config:\n        raise MBErr('Phase %s doesn\\'t exist for %s on %s' %\n                    (phase, self.args.builder, self.args.builder_group))\n      return config[phase]\n\n    if self.args.phase is not None:\n      raise MBErr('Must not specify a build --phase for %s on %s' %\n                  (self.args.builder, self.args.builder_group))\n    return config\n","sourceCodeStart":598,"sourceCodeEnd":634,"githubUrl":"https://github.com/nodejs/node/blob/1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e/deps/v8/tools/mb/mb.py#L598-L634","documentation":"ConfigFromArgs() resolves the builder inside the chosen group via _v8_builder_fallback(), which tolerates ' - builder'/' builder' suffixes. If neither the exact builder name nor the suffix-stripped form is found in builder_groups[group], the fallback returns None and mb raises MBErr('Builder name \"%s\"  not found under builder_groups[%s] in \"%s\"') (note the double space in the source).","triggerScenarios":"Running `mb.py gen -m <group> -b <wrong-builder>` where <wrong-builder> is not a key in builder_groups[<group>] and does not match after stripping ' builder'/' - builder'. _v8_builder_fallback returns None.","commonSituations":"Misspelled builder name; builder renamed/removed in mb_config.pyl; using a tester name where only a builder is defined (or vice versa); pointing at the wrong branch's config.","solutions":["Inspect builder_groups[<group>] in mb_config.pyl and use an exact builder key, or the ' builder'/' - builder' variant the fallback recognizes.","If the builder was split into builder/tester, use the new '- builder' name.","Add the missing builder entry to builder_groups if it should exist on this branch."],"exampleFix":"// before\n  mb.py gen -m tryserver.v8 -b \"V8 Linux64\" out/Default   // not a key\n// after\n  mb.py gen -m tryserver.v8 -b \"V8 Linux64 - builder\" out/Default","handlingStrategy":"validation","validationCode":"group = builder_groups[args.builder_group]\ncandidates = [args.builder]\nif args.builder.endswith(' - builder'): candidates.append(args.builder[:-len(' - builder')])\nelif args.builder.endswith(' builder'): candidates.append(args.builder[:-len(' builder')])\nif not any(c in group for c in candidates):\n    sys.exit(f'builder {args.builder!r} not in group; valid: {sorted(group)}')","typeGuard":"null","tryCatchPattern":"null","preventionTips":["Inspect builder_groups[<group>] keys for exact builder names.","For split builders, use the '- builder' suffix form.","Re-sync mb_config.pyl after builder/tester splits so names match the current branch."],"tags":["mb","builder","lookup","v8-build"],"backgroundTag":null,"analyzedSha":"1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e","analyzedAt":"2026-08-13T00:53:24.642Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}