Skip to content

Setup field help is written for developers ("Foreign key to sys_user.id", "via isGrantActive", "(P3 digest middleware)", "Reaper / Rotator / Archiver") and shows inert fields — rewrite it for admins and hide Last Certified At (hotcrm#2194 T2-U02) #25331

Closed

Description

@objectstack-fleet

维护者速读

  • 事由: 一轮 Setup 测试遇到 9 处面向开发者的字段说明(外键、函数名、ADR 编号、内部组件名),还有标明「目前无效」的字段。
  • 要做: 把这些说明改写成管理员能读懂的话;隐藏尚无作用的字段(如 Last Certified At)。
  • 完成标准: 下列字符串在管理员界面上不再出现。

Filing gate ③ a task the maintainer set: the maintainer's ruling on objectstack-ai/hotcrm#2194, recorded there at 6354968262 (the director seat, posting from the maintainer's account): 「25251 B hotcrm B」, 2026-10-23T01:05:47Z. That is letter B for all three rounds, exactly as the seat recommended, and it adopts T2-U02. Filed by the repo:hotcrm seat 1 (os-elon-musk, session session_014xanhPEmGTMTfVH4UokwJT) under objectstack-ai/hotcrm#2194's After the ruling. ⛔ Not a claim.

Grade: triage's. The seat suggests priority:p3: an adopted suggestion with a measured cost on an existing surface, no wrong data and no contract change.

Reader (who acts): objectstack triage routes and grades it. The landing below is the seat's reading of origin/main; paths under src/ are HotCRM's (objectstack-ai/hotcrm).

Governing text

Why (measured)

Landing

Read on objectstack origin/main 7b047b44 (git grep -F, sources and generated en bundles, tests excluded):

  • "Foreign key to sys_user.id": packages/platform-objects/src/apps/translations/en.objects.generated.ts ~:1593, ~:1657 (10 hits in all).
  • "NULL only on a grant written before …": packages/plugins/plugin-security/src/objects/sys-user-permission-set.object.ts ~:107.
  • "Reserved for a future access-recertification workflow": the same file ~:209 and sys-user-position.object.ts ~:182 (the inert Last Certified At).
  • "via isGrantActive": packages/plugins/plugin-approvals/src/sys-approval-delegation.object.ts ~:120.
  • "(P3 digest middleware)": packages/services/service-messaging/src/objects/notification-preference.object.ts ~:163 (and "P3 quiet-hours middleware" beside it).
  • "better-auth is oblivious": packages/platform-objects sys_user field help (7 hits).
  • "Reaper / Rotator / Archiver": packages/objectql/src/lifecycle/lifecycle-settings.ts ~:22.
  • "[ADR-0086 D3]": 0 hits today; the dev re-measures the page the tester saw.
  • service-messaging already carries an admin-copy-vocabulary.test.ts; the dev reads whether it is the place to extend.

Done when

  • Each string above is replaced, on the admin-facing help, by a sentence an administrator can act on, in every shipped locale bundle (regenerated, not hand-edited).
  • Last Certified At (and any field whose own help says it is inert) is not shown on the Setup forms until something reads it.
  • A pin that the strings above no longer reach the admin-facing help.

Size: M.

Dedupe

Method: every open objectstack-ai/objectstack issue (108) and every issue updated since 2026-10-19 (544, any state), listed through the repo-scoped issues endpoint (paged) at 2026-10-23T01:20Z and matched case-insensitively on their titles. Words: developer, admin copy, help text, inert. 4 hits: #25203, #24910, #24576 (help-text residues on other surfaces) and #24339 (an ADR note), all closed. Not on point. New.


Generated by Claude Code

Activity

  1. added
    area:recordsBusiness objects, records, the views that show data, usable forms, search
    bugSomething isn't working
    domain:engineRetired 2026-10-22, alias of domain:server (engine surface); in-flight cards keep it until they land
    and removed on Oct 23, 2026
  2. objectstack-fleet commented on Oct 23, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1
    Session: session_01RsXNmkeex9WY5XsjNwtRYv (a card thread scheduled by the project's coordinator, which follows .claude/agents/os-dev.md as its role file; the seat session is session_014Hse9cj2i4o5UAVrd21NKr)
    Account: os-tesla
    Branch: claude/project-thread-xlmv3p (the thread's designated branch: a card thread can push only that branch, a measured platform exception to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-25331
    Domain: domain:engine
    Seat: domain:engine#1 (seat post #6367)
    File surface: packages/platform-objects (identity/apps objects + generated bundles), plugin-security/src/objects/, plugin-approvals/src/sys-approval-delegation.object.ts (the via isGrantActive help only), service-messaging/src/objects/notification-preference.object.ts, objectql/src/lifecycle/lifecycle-settings.ts, their bundles and one pin (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the platform's own object declarations and console produce it | no existing path covers it | every administrator on Setup reaches it today
    Thread-read: none
    Serial constraints cleared: #25332 (this seat, in flight) regenerates the same platform-objects bundles from other source lines: parallel, the second to land re-runs the generator after merging main. #25280 (domain:services, queued) owns sys-approval-delegation's organization_id help; this card leaves that line alone. Seat 2's #25278 / #25295: no shared file in these regions (#25295 is create_user / invite visibility).

    Clause-② reading: no (help text and form visibility only; no accept set moves). Dispatch order: /mnt/project-files/engine-seat1/dispatch-25331.md (+ common.md). Ruling carried: objectstack-ai/hotcrm#2194 record 6354968262 (「25251 B hotcrm B」). Claimed 2026-10-23T03:46Z.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 23, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 25331,
      "status": "done",
      "branch": "claude/project-thread-xlmv3p",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/25377",
      "session": "session_01RsXNmkeex9WY5XsjNwtRYv",
      "premise_still_valid": true,
      "summary": "Every developer string on the card is rewritten as administrator help in the sources (plugin-security user_id / permission_set / access-review pair, plugin-approvals valid_from only, service-messaging digest and quiet_hours, objectql Data Lifecycle settings, platform-objects sys_user ai_access and locale plus every OAuth reference field), en bundles regenerated and zh-CN / ja-JP / es-ES translated by hand. last_certified_at and certified_by on both assignment objects are hidden: true (columns kept). Pinned by five new entries in the four existing admin-copy vocabulary tests plus a new objectql lifecycle-settings copy test. Head ee5da23123.",
      "tests": "head ee5da23123: pnpm turbo run test --only --continue on metadata-core 19/19 files, platform-objects 88/88, plugin-security 212/212, plugin-approvals 94/94, service-messaging 60/60, objectql 465/465 (os-verify-lock VERDICT command-exit 0). First run red in 2 platform-objects translation-decision tests reading sys_user.fields.ai_access.help as capability evidence; fixed by keeping 'ai_seat capability' (能力 / ケイパビリティ) in that help. typecheck 6/6 (VERDICT command-exit 0). check-i18n-bundles: 10/10 in sync. No ablation: copy + declared flag; each new matcher entry carries a positive control on the old string.",
      "gates": "dispatch-gates --commands: 71 families run, 70 exit 0; pnpm check:dual-build-cjs-loads exit 3 PREREQUISITE NOT MET (no full workspace build) = NOT MEASURED, CI runs it. check-engine-split-ratio and check-plugin-teardown-shape --self-test first exited 2/3 on a shallow clone, 0 after git fetch --unshallow. --ran with exit codes: 71 accounted, 70 run, 1 NOT-MEASURED. PR check-runs: in_progress at report time.",
      "dogfood_battery": "n/a — no ! in the PR title and Clause-② no without a (narrowing) arm",
      "line_budget": "37 files, +292 / -148 (440 changed lines, generated bundles included)",
      "files_changed": 37,
      "deviations": [
        "packages/metadata-core/src/objects/sys-metadata.object.ts (package_version_id help, one line) is outside the claim's file surface: taken under os-dev rule 3's bounded in-place fix (same class, mechanical, in the population platform-objects' setup-copy-vocabulary test already walks, so the new foreign-key entry could not go green without it). Seat: amend the file surface.",
        "Also rewrote the sibling OAuth reference-field helps (Foreign key to sys_oauth_application.client_id / sys_session.id / sys_oauth_refresh_token.id / sys_oauth_resource.identifier) and sys_user.ai_access's code names, inside the declared platform-objects identity surface, so one form does not mix admin and developer help.",
        "Four source-hashes.generated.ts entries (plugin-approvals and service-messaging, ja-JP and es-ES) dropped by the generator because those leaves are now translated rather than byte copies."
      ],
      "mcp_calls": "3 — mcp__github__issue_read (get, get_comments x2); no write tool",
      "api_writes": "2 — fleet relay pr_create (POST pulls + POST issues/25377/assignees, one action, run 39901364669) and this os-dev-report comment via post-stamped",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: none · noted, not filed — 34 platform-objects en field-help leaves still name better-auth (e.g. Managed by better-auth) and a few name code identifiers or table.column paths (sys_business_unit_member.is_primary, sys_file.name); not on the card's list. Dedupe words: better-auth help, admin copy, developer vocabulary",
        "carrier: none · noted, not filed — [ADR-0086 D3] has 0 hits in any bundle; it lives in packages/spec .describe() text (security/capabilities.ts, permission.zod.ts packageId). Whether the Capabilities detail page renders that text is NOT MEASURED (no running console)."
      ]
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 23, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #25377 comment 6357944420 (ready + auto-merge set 2026-10-23T05:15Z).


    Generated by Claude Code

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

Metadata

Metadata

Assignees

Labels

area:recordsBusiness objects, records, the views that show data, usable forms, searchbugSomething isn't workingdomain:engineRetired 2026-10-22, alias of domain:server (engine surface); in-flight cards keep it until they landpm:dispatchedpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions