xai-org/x-algorithm · error · ConfigFailure

Team name '$teamName' does not match $teamNameRegex.

Error message

Team name '$teamName' does not match $teamNameRegex.

What it means

Team/owner names in BotMaker configs must match teamNameRegex, defined as ^[a-z][a-z0-9\-]*$ (lowercase, may contain digits and hyphens, must start with a lowercase letter). validateTeamName throws ConfigFailure for any team string violating this.

Source

Thrown at botmaker/src/scala/com/twitter/botmaker/runtime/config/ServiceConfigs.scala:113

  def validateDataset(dataset: String): Unit = {
    if (datasetRegex.findFirstIn(dataset).isEmpty) {
      throw ConfigFailure(
        s"Dataset '$dataset' does not match $datasetRegex."
      )
    }
  }

  def validateTypeName(typename: String): Unit = {
    if (typeNameRegex.findFirstIn(typename).isEmpty) {
      throw ConfigFailure(
        s"TypeName '$typename' does not match $typeNameRegex."
      )
    }
  }

  def validateTeamName(teamName: String): Unit = {
    if (teamNameRegex.findFirstIn(teamName).isEmpty) {
      throw ConfigFailure(
        s"Team name '$teamName' does not match $teamNameRegex."
      )
    }
  }

  def validateClassName(className: String): Unit = {
    ClassCache.forName(className)
  }

  override def addConfig(
    configName: String,
    configType: Type,
    description: String,
    configValue: AnyRef
  ): Unit = synchronized {
    unique(configValue, configName)
    container.put(configName, (configType, description, configValue))
  }

View on GitHub (pinned to 24c60942c5)

Solutions

  1. Use the lowercase hyphenated team slug, e.g. "content-trust"
  2. Pull from a canonical team registry rather than free-typing the name
  3. Validate the team field at config authoring time (lint rule)

Example fix

// before
team("Content Integrity Team")

// after
team("content-integrity")
Defensive patterns

Strategy: type-guard

Validate before calling

TEAM_RE = re.compile(r'^[a-z][a-z0-9\-]*$')
def validTeam(t): return bool(TEAM_RE.match(t))

Type guard

def isValidTeam(name: str) -> bool:
    return bool(re.match(r'^[a-z][a-z0-9\-]*$', name))

Prevention

When it happens

Trigger: Setting the owning team to a value that is not lowercase-leading — e.g. "ContentTeam", "_infra", "trust & safety", or empty string.

Common situations: Using team display names or LDAP group names with spaces/uppercase instead of the lowercase slug; migrating configs where the team field was optional and left blank.

Related errors


AI-assisted analysis of xai-org/x-algorithm@24c60942c5 (2026-08-28). Data as JSON: /api/errors/4e85e7badde2475a. Report an issue: GitHub.