Skip to content

Add a language-pack contract so a third language ships as data, parity-gated #145

Description

@ChelseaKR

What

English and Spanish live in lang.py, locales/<tag>/bundle.yaml, the guards' certification vocabulary (which #137 shows is English-only in one suite), routing phrases, the escalation card, .es.md corpus mirrors, and per-case eval anchors. E6 in docs/RESEARCH-ROADMAP.md calls for language expansion gated on parity, and it has not been filed or built. The blocker is that "a language" is scattered across six places with no contract.

Define a language pack: the locale bundle, deny-list and certification vocabulary, routing and urgency phrases, escalation-card strings, corpus mirrors, and eval mirror cases anchored to their English cases, plus a reviewed_by attestation naming a human reviewer (never raw machine translation, per the research roadmap). Add sprout lang check <tag> that verifies completeness against the English set, and refuse to enable a pack that fails it. The multilingual and language-parity suites include any enabled tag.

Why it matters

Lucía and Ruth (USER-RESEARCH A4, B2) are the case for Spanish; a Vietnamese or Tagalog household is the same case. A pack contract makes the next language a data contribution with a gate, and it makes the existing two languages mechanically complete, which #137 shows they are not.

Scope

  • Pack schema and loader; lang check; per-pack completeness in corpus-report.
  • Refactor the English and Spanish surfaces into packs with no behaviour change.
  • A demo pt pack covering two species, marked unreviewed and therefore not enabled.

Out of scope

  • Authoring a full third language.
  • Machine translation of any string.

Done when

  • Enabling a pack missing one guard string is refused naming the key.
  • en and es eval reports are byte-identical after the refactor.
  • The demo pt pack passes lang check and the parity suites over its two species.
  • A pack without reviewed_by cannot be enabled.

Pointers

Proposed with AI assistance.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfeatureMajor new capability proposal

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions