feat(targeting): add BCP 47 language discovery - #6605
Conversation
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated schema paths require human/CODEOWNERS review.
This PR widens targeting.language from the ISO 639-1 pattern to the canonical BCP 47 locale-tag primitive and adds a structured boolean|object language capability with exact supported_languages membership. The reviewer verified the change is non-breaking (every prior 2-letter value still matches locale-tag's [a-z]{2,8} subtag), schema↔docs coherent across all three edited pages, and the changeset correct as a minor additive widening.
Why escalate (not approve): This PR modifies files under the deterministic hard approval gate (static/schemas/source/**):
static/schemas/source/core/targeting.jsonstatic/schemas/source/protocol/get-adcp-capabilities-response.json
gated_paths: true and review_decision: REVIEW_REQUIRED (not APPROVED), so decision-table row 2 fires: human/CODEOWNERS review is required before merge.
Medium findings
- scripts/oneof-discriminators.baseline.json:329 — new oneOf baseline entry ratcheted in via
--accept-newwithout the PR-body justification the repo's ratchet rule requires. The reviewer assessed the entry as type-disjoint and safe, but the process gate (explicit PR-body justification) is unmet.
No critical/high findings were reported. The single medium finding is not itself blocking, but the gated-path gate stands until review is approved.
Escalation reasons
- Touches gated schema source
static/schemas/source/core/targeting.jsonandstatic/schemas/source/protocol/get-adcp-capabilities-response.json; requires human/CODEOWNERS approval (review_decision is REVIEW_REQUIRED).
Medium findings
- scripts/oneof-discriminators.baseline.json:329 — oneOf baseline ratcheted via --accept-new without PR-body justification
Why human review
- Modifies gated schema source static/schemas/source/core/targeting.json and static/schemas/source/protocol/get-adcp-capabilities-response.json; review_decision is REVIEW_REQUIRED, so human/CODEOWNERS approval is required before merge.
- This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/core/targeting.json (modified) matches
static/schemas/source/**; static/schemas/source/protocol/get-adcp-capabilities-response.json (modified) matchesstatic/schemas/source/**) and the current GitHub review decision is 'REVIEW_REQUIRED', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.
Summary
Compatibility note
languageoneOf is type-disjoint: the legacy form is a boolean and the structured capability form is an object. The baseline entry documents a walker limitation, not a decode ambiguity.Validation
Closes #5706.
Closes #5720.