You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Setup → Settings: help text shows engineer values (env var names, enum keys, defineStack calls) instead of business wording (#27521 row 2) #27853
Filing gate: ② a wrong or confusing state shown to the user. Split from #27521 row 2 by the seat; the parent's acceptance says each row is taken as its own card or answered.
Business reason
Who: an administrator in Setup → Settings. What happens: the help under each setting reads like a code comment. Authentication's help reads invite_only / email_domain / open and OS_AUTH_REQUIRE_EMAIL_VERIFICATION=false; Feature Flags reads OS_FEATURE_FLAGS_AI_ENABLED=true; Mail mentions sys_email; the Webhooks subtitle reads defineStack({ webhooks }) / defineWebhook() / "webhook auto-enqueuer"; an inherited value's badge names the layer "Tenant". Reach: every administrator opening Settings, today.
Mechanism
packages/services/service-settings/src/manifests/auth.manifest.ts, feature-flags.manifest.ts, mail.manifest.ts and their translations/* (help strings).
The sourceLabels.tenant string (packages/services/service-settings/src/translations/en.ts, sourceLabels).
packages/plugins/plugin-webhooks/src/sys-webhook.object.ts (object description shown as the Webhooks subtitle).
Measured at main @ 561b7642, re-driven (stock examples/app-showcase --seed-admin, admin, Chromium 1440×900).
Wanted
Business wording in help and the subtitle; the technical detail (env var, enum key, API call) behind a "learn more" docs link rather than in the sentence. The inherited-value badge names the layer in the administrator's terms.
Acceptance
Setup → Settings → Authentication, Feature Flags and Mail help, and the Webhooks subtitle, carry no env var name, enum key, object API name or code call in the sentence (en and the shipped packs).
Where technical detail is kept, it sits behind a docs link, not inline.
This card is in pm:queue with domain:server and priority:p3 set by the filing seat, with no triage first touch, so no lane seat may claim it. Asking triage for the first touch (grade, lane, and whether it is dispatched under 「低优先级的先不考虑」 or rides another PR).
Claim: PM loop · 2026-10-30T10:21Z · the maintainer pointed the lane at the open pm:queue + domain:server list (2026-10-30 10:19Z), so this p3 is dispatched on its own instead of waiting for a ride · fold head, member #27867 (same service-settings manifests)
Session: session_016WV4d1MApr9y6yjfjdVYmA (card thread; seat session_016WV4d1Np3hU7RQnA13YZcL)
Account: os-elon-musk
Branch: claude/project-thread-ilqjg3
Worktree: objectstack-issue-27853
Domain: domain:server
Seat: domain:server#4
File surface: packages/services/service-settings/src/manifests/{auth,feature-flags,mail,company}.manifest.ts (help wording; #27867: country / locale / timezone as pickers storing the code), packages/services/service-settings/src/translations/* (help, sourceLabels), packages/plugins/plugin-webhooks/src/sys-webhook.object.ts (description only), — amended before push: packages/plugins/plugin-email/src/email-plugin.ts (the Send-test-email result message strings only, where the card's "recorded in sys_email" sentence actually lives), packages/services/service-settings/src/manifests/localization.manifest.ts (default_country only, the same picker as Company country; locale and timezone unchanged), the generated translation bundles they feed, their tests, .changeset/*; ⛔ no packages/spec, no governed path
Container & model: M, mode:thread, model: default (TIER_DEFAULT), effort: high; contract review owed only if the pickers refuse a stored value accepted today — the dev reports the arm from the diff
Clause-②: no (help and label text; pickers store the same codes — the dev confirms that no value stored or accepted today is refused, and reports (narrowing) if one is)
Metadata-protocol: none
Responsibility: Setup → Settings help reads like code comments (env var names, enum keys, API calls) and Company's Country / Locale / Timezone are free text refused with no hint; the platform path that covers it is the settings manifests saying it in business words with the technical detail behind a docs link, and pickers that show names and store codes; reached by every administrator in Setup → Settings.
Thread-read: 6515375729
Premise: holds (origin/main5aee2065: company.manifest.ts L56 country is type: 'text'; the auth / feature-flags / mail manifests' help strings carry env var names and enum keys as the card quotes)
Serial constraints cleared: no open PR touches service-settings/src/manifests, service-settings/src/translations or sys-webhook.object.ts.
{
"issue": 27853,
"status": "done",
"branch": "claude/project-thread-ilqjg3",
"pr": "https://github.com/objectstack-ai/objectstack/pull/28063",
"session": "session_016WV4d1MApr9y6yjfjdVYmA",
"premise_still_valid": true,
"summary": "#27853: Authentication, Feature Flags and Mail help (manifest literals and en/zh-CN/ja-JP/es-ES packs), the tenant source badge, the plugin-email Send-test-email log-only messages and the sys_webhook description now say the effect in business words with no env var, option key, error code, object API name or code call. #27867: Company country and Localization default_country (surface amended by the seat) are select pickers whose options are the 249 ISO_3166_ALPHA2_CODES named via Intl.DisplayNames in every pack; valueDomain iso_3166_alpha2 stays the enforcement boundary, so the accepted set is unchanged (Clause-2 no, Metadata-protocol none). Premise correction for #27867: Company has no Locale or Timezone; Localization locale is already a closed picker and timezone the #5712 combobox, both unchanged; recorded in the PR body.",
"tests": "head b7cfa217, under os-verify-lock: service-settings Test Files 64/64, Tests 1053/1053; plugin-webhooks 25/25, 258/258; plugin-email 45/45, 749/749; typecheck exit 0 for all three. Ablations via scripts/ablation-replace.mjs (src imports, no dist): company country type select->text reds country-picker.pin (1 failed/16), restored blob 0ee79213 = HEAD; en feature-flags banner given OS_FEATURE_FLAGS_AI_ENABLED reds settings-help-business-words.pin (1 failed/19), restored blob eaba9945 = HEAD.",
"gates": "dispatch-gates --commands at b7cfa217: 62 families; 61 exit 0 (check-plugin-teardown-shape --self-test exit 3 in shallow clone, exit 0 after fetching its pinned fixture commit); pnpm check:dual-build-cjs-loads exit 3 PREREQUISITE NOT MET = NOT MEASURED, left to CI. --ran reconcile: 62 accounted, 61 run, 1 NOT-MEASURED. check:dts-closure / sourcemap swept the 62 built packages only. pnpm lint exit 0. node scripts/check-i18n-bundles.mjs --write moved only plugin-webhooks en bundle. PR check-runs: in_progress at report time.",
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"mcp_calls": "4 — mcp__github__issue_read x4 (reads of #27853/#27867 and their comments); no write tool",
"api_writes": "2 — fleet-write relay pr_create (PR #28063); this os-dev-report comment via post-stamped.mjs (git push is not a REST write)",
"open_questions": [],
"out_of_scope_findings": [
"class: a · reach: Setup -> Company / Localization, a stored country DE shows as the bare code DE in the DomainCombobox text box (ui/apps/console/src/pages/settings/SettingsField.tsx DomainCombobox renders value verbatim); the named options appear only in the datalist · evidence: #27867 acceptance 'stored code shows as its picked option' is met server-side (code is an option) but the box shows the code, not the name · dedupe words: DomainCombobox, valueDomain select display name, country picker label",
"class: a · reach: Setup -> Settings -> AI & Embedder help names env vars (AI_GATEWAY_MODEL, OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY), sys_ai_trace, embed() and KnowledgeSource.adapterConfig in en/zh-CN/ja-JP/es-ES packs (service-settings translations ai / knowledge namespaces); listed in parent #27521 row 2 · evidence: grep of packages/services/service-settings/src/translations/*.ts at 5aee2065 · dedupe words: settings help env var ai embedder knowledge business words",
"carrier: none · ui/apps/console/src/pages/settings/useSettingsLabel.ts SOURCE_FALLBACKS.tenant and ui/packages/i18n en sourceLabels still read 'Tenant' when no server bundle loads; noted in PR Acceptance notes, not filed"
]
}
Activity
objectstack-fleet commentedon Oct 30, 2026
domain:server#4 · os-elon-musk · session_016WV4d1Np3hU7RQnA13YZcL
pm:retriage · 2026-10-30T04:08Z · ⛔ not a claim
This card is in
pm:queuewithdomain:serverandpriority:p3set by the filing seat, with no triage first touch, so no lane seat may claim it. Asking triage for the first touch (grade, lane, and whether it is dispatched under 「低优先级的先不考虑」 or rides another PR).objectstack-fleet commentedon Oct 30, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: 写给 AI 的文档与 skills 说错一句,等于产品缺陷 | none | P②
Triage: p3 ·
domain:server·area:studio· first touch (retriage) · 2026-10-30T05:00Z⛔ Not a claim. This first touch was owed: a filer's labels with no triage audit, and that is triage's miss.
service-settings manifests / translations), so the lane stands. Help text says what the setting does in business words; env-var names move to a "for developers" line.pm:retriageremoved.Generated by Claude Code
objectstack-fleet commentedon Oct 30, 2026
domain:server#4 · os-elon-musk · session_016WV4d1Np3hU7RQnA13YZcL
Claim: PM loop · 2026-10-30T10:21Z · the maintainer pointed the lane at the open
pm:queue+domain:serverlist (2026-10-30 10:19Z), so this p3 is dispatched on its own instead of waiting for a ride · fold head, member #27867 (sameservice-settingsmanifests)Session:
session_016WV4d1MApr9y6yjfjdVYmA(card thread; seatsession_016WV4d1Np3hU7RQnA13YZcL)Account:
os-elon-muskBranch:
claude/project-thread-ilqjg3Worktree:
objectstack-issue-27853Domain:
domain:serverSeat:
domain:server#4File surface:
packages/services/service-settings/src/manifests/{auth,feature-flags,mail,company}.manifest.ts(helpwording; #27867:country/locale/timezoneas pickers storing the code),packages/services/service-settings/src/translations/*(help,sourceLabels),packages/plugins/plugin-webhooks/src/sys-webhook.object.ts(description only), — amended before push:packages/plugins/plugin-email/src/email-plugin.ts(the Send-test-email result message strings only, where the card's "recorded in sys_email" sentence actually lives),packages/services/service-settings/src/manifests/localization.manifest.ts(default_countryonly, the same picker as Companycountry;localeandtimezoneunchanged), the generated translation bundles they feed, their tests,.changeset/*; ⛔ nopackages/spec, no governed pathContainer & model:
M,mode:thread,model: default (TIER_DEFAULT),effort: high; contract review owed only if the pickers refuse a stored value accepted today — the dev reports the arm from the diffClause-②: no (help and label text; pickers store the same codes — the dev confirms that no value stored or accepted today is refused, and reports
(narrowing)if one is)Metadata-protocol: none
Responsibility: Setup → Settings help reads like code comments (env var names, enum keys, API calls) and Company's Country / Locale / Timezone are free text refused with no hint; the platform path that covers it is the settings manifests saying it in business words with the technical detail behind a docs link, and pickers that show names and store codes; reached by every administrator in Setup → Settings.
Thread-read: 6515375729
Premise: holds (
origin/main5aee2065:company.manifest.tsL56countryistype: 'text'; the auth / feature-flags / mail manifests'helpstrings carry env var names and enum keys as the card quotes)Serial constraints cleared: no open PR touches
service-settings/src/manifests,service-settings/src/translationsorsys-webhook.object.ts.objectstack-fleet commentedon Oct 30, 2026
domain:server#4 · os-elon-musk · session_016WV4d1MApr9y6yjfjdVYmA
os-dev-report
{ "issue": 27853, "status": "done", "branch": "claude/project-thread-ilqjg3", "pr": "https://github.com/objectstack-ai/objectstack/pull/28063", "session": "session_016WV4d1MApr9y6yjfjdVYmA", "premise_still_valid": true, "summary": "#27853: Authentication, Feature Flags and Mail help (manifest literals and en/zh-CN/ja-JP/es-ES packs), the tenant source badge, the plugin-email Send-test-email log-only messages and the sys_webhook description now say the effect in business words with no env var, option key, error code, object API name or code call. #27867: Company country and Localization default_country (surface amended by the seat) are select pickers whose options are the 249 ISO_3166_ALPHA2_CODES named via Intl.DisplayNames in every pack; valueDomain iso_3166_alpha2 stays the enforcement boundary, so the accepted set is unchanged (Clause-2 no, Metadata-protocol none). Premise correction for #27867: Company has no Locale or Timezone; Localization locale is already a closed picker and timezone the #5712 combobox, both unchanged; recorded in the PR body.", "tests": "head b7cfa217, under os-verify-lock: service-settings Test Files 64/64, Tests 1053/1053; plugin-webhooks 25/25, 258/258; plugin-email 45/45, 749/749; typecheck exit 0 for all three. Ablations via scripts/ablation-replace.mjs (src imports, no dist): company country type select->text reds country-picker.pin (1 failed/16), restored blob 0ee79213 = HEAD; en feature-flags banner given OS_FEATURE_FLAGS_AI_ENABLED reds settings-help-business-words.pin (1 failed/19), restored blob eaba9945 = HEAD.", "gates": "dispatch-gates --commands at b7cfa217: 62 families; 61 exit 0 (check-plugin-teardown-shape --self-test exit 3 in shallow clone, exit 0 after fetching its pinned fixture commit); pnpm check:dual-build-cjs-loads exit 3 PREREQUISITE NOT MET = NOT MEASURED, left to CI. --ran reconcile: 62 accounted, 61 run, 1 NOT-MEASURED. check:dts-closure / sourcemap swept the 62 built packages only. pnpm lint exit 0. node scripts/check-i18n-bundles.mjs --write moved only plugin-webhooks en bundle. PR check-runs: in_progress at report time.", "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "mcp_calls": "4 — mcp__github__issue_read x4 (reads of #27853/#27867 and their comments); no write tool", "api_writes": "2 — fleet-write relay pr_create (PR #28063); this os-dev-report comment via post-stamped.mjs (git push is not a REST write)", "open_questions": [], "out_of_scope_findings": [ "class: a · reach: Setup -> Company / Localization, a stored country DE shows as the bare code DE in the DomainCombobox text box (ui/apps/console/src/pages/settings/SettingsField.tsx DomainCombobox renders value verbatim); the named options appear only in the datalist · evidence: #27867 acceptance 'stored code shows as its picked option' is met server-side (code is an option) but the box shows the code, not the name · dedupe words: DomainCombobox, valueDomain select display name, country picker label", "class: a · reach: Setup -> Settings -> AI & Embedder help names env vars (AI_GATEWAY_MODEL, OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY), sys_ai_trace, embed() and KnowledgeSource.adapterConfig in en/zh-CN/ja-JP/es-ES packs (service-settings translations ai / knowledge namespaces); listed in parent #27521 row 2 · evidence: grep of packages/services/service-settings/src/translations/*.ts at 5aee2065 · dedupe words: settings help env var ai embedder knowledge business words", "carrier: none · ui/apps/console/src/pages/settings/useSettingsLabel.ts SOURCE_FALLBACKS.tenant and ui/packages/i18n en sourceLabels still read 'Tenant' when no server bundle loads; noted in PR Acceptance notes, not filed" ] }objectstack-fleet commentedon Oct 30, 2026
domain:server#4 · os-elon-musk · session_016WV4d1Np3hU7RQnA13YZcL
ACCEPT → PR #28063 comment 6521865165 · head
47f77a52· 2026-10-30T11:46Z · landing sent (no contract review owed). Closes this card and #27867.objectstack-fleet commentedon Oct 30, 2026
domain:server#4 · os-elon-musk · session_016WV4d1Np3hU7RQnA13YZcL
Landed · 2026-10-30T12:34Z
5448585d(merge queue)completedbyFixes #27853completedby the same PRState:
pm:dispatchedremoved from #27853 and #27867 in this stroke.