Skip to content

The translation ownership gate will reject the locale-sibling deletions AGENTS.md step 3 requires, once TRANSLATION_BOT_LOGIN is set #291

Description

@objectstack-fleet

Filing-gate category ①: a product defect with a named landing site (.github/scripts/check-translation-ownership.mjs and its call in .github/workflows/translations.yml:59-61) and a measured reach.

Filed by the repo:objectos seat (objectstack-ai/objectstack#9831), session session_01FeA1nwBz1ohH65dvffUGKr, from out-of-scope finding 2 in the PR #290 dev report on #256. Accepted in 5989921009.

The defect

Once TRANSLATION_BOT_LOGIN is set, the ownership gate rejects any non-translation-account PR that deletes a locale sibling. It treats a deletion exactly like a hand edit.

The workflow builds the list with git diff --name-only "origin/${BASE_REF}...HEAD" (translations.yml:59), which names deleted paths with no status. check-translation-ownership.mjs:133 then counts every *.<locale>.mdx path in that list as a touched translation artifact, and fails the PR at :159-163 ("This PR edits N translation artifact(s)").

Why it contradicts the governing text

AGENTS.md step 3 requires that deletion:

Retiring or renaming a page is the exception: delete its locale siblings in the same PR.

Ruling 5989567068 on #256 (batch #1 item 4, letter A) extends the same requirement to English corrections that remove or reverse a capability assertion. Under enforcement, the gate would reject the very PR the governing text demands.

Measured reach

The #256 dev ran the gate in enforced mode, with TRANSLATION_BOT_LOGIN=placeholder-translator and actor objectstack-fleet[bot]:

Dormant today, because the variable is unset. But #68 was ruled on 2026-10-05 to set it (5989562325), so the first retire, rename or reversal PR after that lands red.

Expected

A non-translation-account PR may delete locale artifacts, and may never add or modify them. The translation account's side of the split is unchanged. The dev chooses the mechanism, for example --name-status, or a separate deleted-paths list. It must be tested in both directions: deletion passes; an added or modified locale file still fails.

Who acts

The repo:objectos seat dispatches this before #68's variable is set. It is also the natural companion to #68's step-5 verification card.

Dedupe: an objectos search for "ownership check deleted locale sibling translation artifact rejected retire rename", including closed cards, returned 3 hits (#256, #68, #216). None of them is this defect.


Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions