Repository navigation
The ownership check is inert on main until TRANSLATION_BOT_LOGIN is set #68
Description
Activity
os-support-ai commented
on Aug 18, 2026 CollaboratorMore actionsTriage: routed to the decision inbox (
needs-user-decision) — every completion step is a maintainer-only action (bot account creation, collaborator grant, repository variable), and step 2 is an access-control boundary (outside collaborator vs org member, precisely to keep the private cloud repo unreadable), which sits on the human floor by rule. Nothing here is dispatchable to a dev until the variable exists; step 5's two-direction verification CAN be dispatched afterwards as a follow-up card. Four-facet note: business pull is real (the ownership gate landed in #65/#74 and is currently inert, so the translation/content split is unenforced on main today); long-term coherence and AI-error-resistance both favour doing this promptly (a gate that cannot go red is being read as protection); scope cost is one account + one variable, no standing obligation. Recommendation: execute steps 1–4 as written (loginobjectos-translator, outside collaborator, Write, no bypass), then file the step-5 verification as a queue card. (Triage seat, sessionsession_01EUZUjvnLsqwHVkXkTv8TKQ.)
Generated by Claude Code
os-support-ai commented
on Aug 18, 2026 CollaboratorMore actionsMaintainer ruling (2026-08-18, live PM chat with the triage seat, session
session_01EUZUjvnLsqwHVkXkTv8TKQ; verbatim: 「其他接受你的建议」).Accepted: execute steps 1–4 as written — login
objectos-translator, added to this repository only as an outside collaborator with Write, no merge rights / CODEOWNERS / bypass, then set theTRANSLATION_BOT_LOGINrepository variable. These are maintainer-only actions, so the card stays in the decision inbox until they are done. Once the variable is set, triage files the step-5 verification as apm:queuecard (both directions must be observed failing, reading the check output rather than the settings page).
Generated by Claude Code
A bootstrap property worth knowing before this variable is set.
Found while shipping #172 (zh-Hant), and recorded here rather than lost in that PR: the ownership check classifies
*.zh-Hant.mdxas a translation artifact. #218's shape is 73 translation artifacts plus 10 other files, so onceTRANSLATION_BOT_LOGINis set, a PR like it would be rejected by the artifact/non-artifact split.That is a one-time property of adding a locale, not an ongoing one. After a derived locale is registered, the routine flow is English alone, then Simplified plus a regeneration — both landing on the account's side of the split. It is only the bootstrap commit, which necessarily carries the whole generated corpus alongside the generator and its registration, that mixes them.
So this is not an argument against enforcing ownership. It is a note that whoever turns it on should expect locale-introduction PRs to need an exemption, and should decide in advance whether that is a label, a documented override, or a "split the bootstrap into two PRs" convention.
Recorded now because #218 is the case that demonstrates it, and the next one will be years apart.
Generated by Claude Code
objectstack-fleet commented
on Oct 5, 2026 ContributorMore actionsRuling: batch #1 item 2 · letter A · maintainer 「同意」 2026-10-05T06:50Z
The
repo:objectosseat (objectstack-ai/objectstack#9831, sessionsession_01FeA1nwBz1ohH65dvffUGKr) presented this card in the director batch format at the maintainer's request. The maintainer answered the batch with 「同意」.A: execute the 2026-08-18 ruling (
5328164163) as written. That means:- create the translation account (suggested
objectos-translator); - add it to this repository only, as an outside collaborator with Write;
- give it no merge rights, no
CODEOWNERSentry and no bypass; - set the repository variable
TRANSLATION_BOT_LOGINto its login.
The alternatives were rejected: shrinking to Simplified Chinese only (B), dropping all translations (C), and keeping the status quo (D).
Why it is urgent, measured 2026-10-01T07:26Z: the
Ownership & freshnessjob on PR #289 still printed⚠ TRANSLATION_BOT_LOGIN is not set — ownership is not enforced yet.The translation backlog onmain@7612ffeis 441 work items. Per locale,ja,de,es,frandkoeach have about 35 stale and 40 missing pages out of 79;zh-Hanshas 49 stale and 17 missing.State: the decision is made, and what remains is a maintainer action outside GitHub. So
needs-user-decision→pm:awaiting-maintainer, with theMaintainer-action:line now at the top of the body.After the variable is set:
- The seat confirms that the job output changed.
- It files the step-5 verification card: both directions must be observed failing.
- That card also settles in advance how a locale-introduction PR is exempted (the bootstrap note in
5421174590). - The seat then dispatches the translation pass in per-locale batches.
Generated by Claude Code
- create the translation account (suggested
Ruled: 5989562325 · letter A · 2026-10-05T06:51Z
Maintainer-action: create the translation account (suggested
objectos-translator), add it to this repository only as an outside collaborator with Write (no merge rights, no CODEOWNERS entry, no bypass), and set the repository variableTRANSLATION_BOT_LOGINto its login — done when theOwnership & freshnessjob on a PR no longer printsTRANSLATION_BOT_LOGIN is not setState
check-translation-ownership.mjslanded in #65 and runs on every PR, but it currently reports and passes without enforcing anything:That was deliberate — the check had to land before the account existed, or it could never land at all. But a gate that cannot go red is indistinguishable from a gate that is working, and the only record of this one being switched off is the body of a merged PR. Hence this card.
Until the variable is set, both halves of the split are unenforced: a content PR can still hand-edit six locale siblings, and a translation PR can still edit English sources or site code.
Completion condition
Create the dedicated translation account (suggested login
objectos-translator; profile should identify it as a bot, since its PRs are visible to outside contributors).Add it to this repository only, as an outside collaborator with
Write— not as an organization member and not via a team. Organization membership can inherit default repository access, and the org contains the privatecloudrepository. A translation account has no reason to be able to read the control-plane source, EE pricing, or unreleased roadmap.Do not give it merge rights, do not add it to
CODEOWNERS, and do not add it to any branch-protection bypass list. Its PRs need a human approval like anyone else's.Set the repository variable
TRANSLATION_BOT_LOGINto that login (Settings → Secrets and variables → Actions → Variables). A variable, not a secret — the login is not sensitive and it must be readable by the workflow on fork PRs.Verify enforcement is actually on, in both directions, rather than assuming:
*.<locale>.mdxfile fails;.mdxfails.Step 5 is the point of the card. Steps 1–4 can all be done and leave the check silently passing if the login is misspelled — and a misspelled login and an unset variable produce different messages, so read the check output rather than the settings page.
Note
No credential is involved. The translation account authenticates locally (
gh auth login) in whatever session runs the periodic pass; no token is stored in this repository. Setting this variable does not change that — this repository still holds no secret beyond the two Cloudflare deploy values.Blocked-on
Nothing technical — this is a maintainer action. See also objectstack-ai/objectstack#9551 for which seat owns work in this repository.