Repository navigation
Description
domain:spec#2 · os-sales · session_01L6bhgU7jN46DmQ6XFvz28s
Filing gate: ④ a sub-card of tracking #32654. Layer 3 (#32657, the console renders userMessage) should be Blocked-by: this card, at least for the four locales named below.
Business reason: #32655 (PR #32790) ships non-English user sentences for 7 security-posture advisory rules in 10 locales: 70 entries, of which the field-mask entry has three arms per locale (which half of the restriction is inert) and the owner-policy entry three remedy variants. An agent wrote all of them, borrowing terms from the console packs (ui/packages/i18n), and no native speaker has read them. Once #32656 composes them and #32657 renders them, they become the first platform-composed text a non-English admin reads about their permission sets. A wrong term in a security sentence, such as the setting's name or what the fix grants, sends the admin to the wrong setting or makes them distrust the advice. The rule ids stay the same, so a correction is a data-only PR.
Reader who acts: the domain:ui / area:i18n seat arranges the read. A native read means a human reader per locale: an agent can check the terms against the console packs but cannot sign off a native read. If the fleet has no such reader, this card needs the maintainer's call on who reads it, or on whether to ship on the English-reviewed terms alone.
Dedupe words: native review, security posture user text, validate-security-posture.user-text, agent-written translation.
Back-link: #32655 · #32657 · parent #32654 · ⛔ Not a claim. Grading is triage's.
What to read
packages/lint/src/validate-security-posture.user-text.ts: one sentence per rule id per locale. The BYPASS_LABEL table holds each locale's label for View All Records and Modify All Records.
| Rule id | What the sentence tells the admin |
|---|---|
security-private-no-readscope |
holders of the set see only the records of a private object that they own or that are shared with them; give the set a read scope or widen sharing |
security-master-detail-ungranted |
no permission set grants a detail object, so everyone but administrators is refused it |
security-book-audience-unknown-set |
a book is restricted to a permission set that is not defined, so no one can open it |
security-superuser-field-mask-inert |
hiding a field, making it read-only, or both, has no effect because the set holds View All / Modify All Records on the object (three arms, by the inert param) |
security-controlled-by-parent-master-reference-hidden |
the set hides the link to the master record, so a refused holder is not told which master the change needs |
security-update-policy-no-check |
an update policy sets no check condition, so an update may save rows the default ownership rule allows. Contract review nit N2 (record 6835490406): the sentence prescribes adding a check condition without the side effect the rule's hint states (a creator who is not the owner loses update unless the check admits them); the reader decides whether every locale should carry that caveat |
security-controlled-by-parent-owner-policy-without-opt-in |
an update policy on an object that takes edit access from its master can only narrow who edits it (three remedy variants) |
Locales: zh-Hans, zh-Hant, ja, ko, ar, de, fr, es, pt-BR, ru. Read ar, ja, ko and zh-Hant first. The #32655 developer reported that those console packs had the least existing wording to borrow terms from (report 6823397904).
Done when
Each locale has a named reader's sign-off, or a data-only PR that edits that locale's sentences in the catalog. The rule ids, params and pins stay the same. Each edited sentence must still pass finding-user-text.test.ts, which requires that no sentence is the English stand-in.
Not in scope
The 67 advisory rules that do not have sentences yet (tracking card #32835). Their PRs name their own agent-written sentences for the same kind of read.
Generated by Claude Code
Activity
objectstack-fleet commentedon Nov 12, 2026
triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH
Path: none
Triage: first touch →
needs-user-decision·domain:ui· p2 · 2026-11-12T22:59Z⛔ Not a claim.
ui/packages/i18n. Corrections stay data-only PRs.Blocked-by:this card.domain:ui/area:i18n.Generated by Claude Code
objectstack-fleet commentedon Nov 13, 2026
triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH
Path: none
Ruling recorded · #32843 · A · 2026-11-13T00:58Z
Maintainer, verbatim (triage#1 session): 「32843 32673 同意」, answering triage's A/B with A recommended.
ui/packages/i18n), above all the setting names and what the fix grants, and corrects any mismatch as a data-only PR. Later corrections stay data-only.Blocked-by:this card for that read, the recording seat removes it.needs-user-decision→pm:queue,domain:uip2. The work is the agent term check.Generated by Claude Code
objectstack-fleet commentedon Nov 13, 2026
domain:ui#4 · os-tesla · session_01L9qibvZYR36KAJUv44oXZw
Claim: PM loop round 6 · 2026-11-13T22:58Z
Session:
session_01L9qibvZYR36KAJUv44oXZw(seat); card threadsession_01L9qibxH4HAskLfCAuooiH5is the devAccount:
os-teslaBranch:
claude/project-thread-uw7gkv(the card thread's designated branch; the platform lets a thread push only that branch, so notclaude/issue-32843-*)Worktree:
objectstack-issue-32843Domain:
domain:uiSeat:
domain:ui#4File surface:
packages/lint/src/validate-security-posture.user-text.ts(sentence andBYPASS_LABELvalues only) and its tests; root.changeset/. ⛔ No server change, nopackages/specchange (stop on breach; explain in the report)Container & model: S–M,
mode:thread,model: default tier(thread confirms withcheck-governed-mergeson its final file list),effort: medium(data-only text across 10 locales; fleet token rule 2)Clause-②: no (values of existing catalog entries; rule ids, params and pins unchanged)
Metadata-protocol: none
Responsibility: agent-written security-posture user sentences in 10 locales were never checked against the console packs' setting names (objectstack
packages/lint) | maintainer ruling A 6840566887: ship on English-reviewed terms, an agent checks terms againstui/packages/i18nand corrects mismatches as a data-only PR | every non-English admin who will read these advisories once #32656/#32657 landThread-read: 6840566887
Premise: holds at
origin/main47f6c939:validate-security-posture.user-text.ts(699 lines) holds one sentence per rule id per locale plusBYPASS_LABEL; no term check is recorded on the cardSerial constraints cleared: none of the 24 open PRs touches this surface (seat read 2026-11-13 ~22:30Z). Sibling seat cards in flight: #33098, #33073, #33052, #32592, #32904, with disjoint surfaces; no open PR touches
validate-security-posture.user-text.ts(seat read ~22:58Z).objectstack-fleet commentedon Nov 13, 2026
domain:ui#4 · os-tesla · session_01L9qibxH4HAskLfCAuooiH5
os-dev-report
{ "issue": 32843, "status": "done", "branch": "claude/project-thread-uw7gkv", "pr": "https://github.com/objectstack-ai/objectstack/pull/33169", "session": "session_01L9qibxH4HAskLfCAuooiH5", "premise_still_valid": true, "summary": "Ruling A term check of the seven security-posture user sentences in ten locales against the console packs, with a term table per locale in the PR body. Main finding: View All / Modify All Records, Read scope, Write scope and a policy's CHECK are edited only in the Studio permission editor, whose studio namespace ships en + zh only (zh-Hant served zh), so the eight other locales now quote the English screen label (BYPASS_LABEL values; scope and CHECK labels added in parentheses), zh-Hant reads 查看所有記錄, zh names CHECK. Also corrected: the owner opt-in remedy quotes the object form's 'Owner may edit' switch in every locale; master/detail follow each locale's console child/parent words (es and the zh master record already matched); ko 권한 세트, de Eigentümer, ja 読み取り. N2 (update-policy caveat) not added, reasoning in the PR body. Values only; rule ids, params, en sentences and pins unchanged; no test edits.", "tests": "at 1d5360b3: pnpm --filter @objectstack/lint exec vitest run --maxWorkers=2 (finding-user-text, validate-security-posture x5, finding-user-text.{connector-permission-form,dashboards,data-model,pages-forms}, validate-approval-approvers.unsupported-type) -> Test Files 11 passed (11), Tests 505 passed (505), lock VERDICT command-exit 0; pnpm --filter @objectstack/lint run typecheck exit 0 (at 617f9108). No ablation: string values only.", "gates": "at 1d5360b3: dispatch-gates --commands derived 53, plus check-sdui-manifest; dispatch-gates --ran: 53 accounted, 51 exit 0, 2 NOT MEASURED (exit 3 PREREQUISITE NOT MET: check:dual-build-cjs-loads needs a full build, check:lean-entry-closure needs objectql built; declared narrowing, CI runs both), 0 unrun; check-sdui-manifest exit 0; check-nul-bytes OK; check-governed-merges --test on the final file list: NOT governed. Run list: /mnt/project-files/ui-seat-4/r2026-11-13/out/32843-gates-ran-1d5360b3.list. CI check-runs: in_progress at report time.", "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "3 — mcp__github__issue_read x3 (get, get_comments x2); 0 writes", "api_writes": "2 — relay POST /repos/objectstack-ai/objectstack/dispatches: pr_create (#33169, read-back identical, assignee os-tesla) and this os-dev-report comment", "open_questions": [], "security_findings": "none", "out_of_scope_findings": [ "carrier: none · noted, not filed · console splits seen while checking (PR Acceptance notes): ko Setup assignment screen 권한 집합 vs permission-set form 권한 세트, and sibling catalog validate-retired-permission-residue.user-text.ts writes 권한 집합; zh-Hant pack 共享 vs object form 共用; es pack uso compartido vs form section Compartición; ko book 문서 북 vs form 문서 책", "deviation: the order names the changeset 33073-SLUG.md and the report comment --comment=33073; 33073 is a sibling card of this seat (dispatch-33073.md), so both use 32843, the repo's card-number convention", "deviation: the origin/main merge commit was amended once, before push, to carry the two model-free trailers", "ruling-grep hits on the surface: validate-security-posture.user-text.ts:675 (unknown remedy prescribes nothing) — kept, no remedy arm or selector changed" ] }