Repository navigation
fix(platform-objects, plugin-security, plugin-approvals, service-messaging, objectql): Setup field help is written for administrators, and the inert access-review fields are hidden - #25377
Conversation
…aging, objectql): Setup field help written for administrators; the inert access-review pair hidden Claude-Session: https://claude.ai/code/session_01RsXNmkeex9WY5XsjNwtRYv Co-authored-by: Claude <noreply@anthropic.com>
…eld help in zh-CN, ja-JP and es-ES Claude-Session: https://claude.ai/code/session_01RsXNmkeex9WY5XsjNwtRYv Co-authored-by: Claude <noreply@anthropic.com>
…elp, the evidence the capability wording is derived from Claude-Session: https://claude.ai/code/session_01RsXNmkeex9WY5XsjNwtRYv Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RsXNmkeex9WY5XsjNwtRYv Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift CheckThis PR changes 6 package(s): 24 hand-written doc(s) name something this change touched — list omitted above 15 rows. Re-derive on the tree named below: ⛔ 14 release-owned page(s) also affected — read-only, see AGENTS.md Documentation Guardrails. What this run could not see
Coarse fallback — 34 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin fd77bc1452d1c8769c8421b9d04498921ba3a503 && git checkout fd77bc1452d1c8769c8421b9d04498921ba3a503
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin fb63d396b15c91f3f16041817e9934e2dea93759 ee5da23123ab035c1916fa9055da5dd748d36373 && git checkout -B drift-repro fb63d396b15c91f3f16041817e9934e2dea93759 && git merge --no-ff ee5da23123ab035c1916fa9055da5dd748d36373
node scripts/docs-audit/affected-docs.mjs --json fb63d396b15c91f3f16041817e9934e2dea93759
|
席位核对ACCEPT ·
Generated by Claude Code |
Requested by Tesla · project thread
Fixes #25331
Clause-②: no
Metadata-protocol: none
Ruling carried: objectstack-ai/hotcrm#2194, record
6354968262:It adopts T2-U02. The card's Done when is the acceptance.
What changes
Each developer string the Setup pass met is replaced by help an administrator can act on: what the field means and what to do with it. Where the old text held a fact a developer needs, that fact moved into the code comment beside the field.
sys_user_permission_set.user_id,sys_user_position.user_idsys_user_permission_set.permission_setlast_certified_at,certified_by(both objects)hidden: truesys_approval_delegation.valid_fromsys_notification_preference.digest*channel rowsys_notification_preference.quiet_hours*channel rowsys_user.ai_access,sys_user.localesys_oauth_access_token/_refresh_token/_consent/_client_resourcereference fieldssys_oauth_application.client_id,sys_session.id,sys_oauth_refresh_token.id,sys_oauth_resource.identifier)sys_metadata.package_version_idThe behaviour claims in the new digest and quiet-hours help were read from
service-messaging/src/preference-resolver.ts(resolveDigest/resolveQuietHoursread only the channel*row;criticalbypasses both;digestDeferralflushes at local midnight and Monday 00:00).Hidden, not deleted.
last_certified_atandcertified_byonsys_user_permission_setandsys_user_positionnow carryhidden: true, the field's own "Hidden from default UI" flag. objectui's form auto-layout (plugin-form/src/autoLayout.ts) and the record detail panel (plugin-detail/src/RecordDetailPanel.tsx) both skip ahiddenfield. The columns, their stored values and the API are unchanged. No other field's help says it is inert.Bundles.
enregenerated from the sources (node scripts/check-i18n-bundles.mjs --write). Thezh-CN,ja-JPandes-ESvalues of every rewritten leaf were translated by hand (they were translations of the old developer text, or for theja-JP/es-ESapprovals and messaging leaves, byte copies of it). The generator then dropped the foursource-hashes.generated.tsentries that recorded those byte copies, which is its documented behaviour once a leaf is translated. The AI Access help keeps the word "capability" (ai_seatcapability, 能力 / ケイパビリティ): two translation-decision tests derive the capability wording from that leaf.Pin. The four existing admin-copy vocabulary tests (
platform-objectssetup-copy-vocabulary.test.ts,plugin-security,plugin-approvals,service-messagingadmin-copy-vocabulary.test.ts) gain five entries: a foreign-key note, theisGrantActivefunction name, an internal component (middleware, "better-auth is oblivious",Reaper), the "NULL only on" storage note and the "Inert today" notice, each with a positive control. They walk every object this package ships and every leaf of all four locale bundles.plugin-security's test also asserts the four access-review fields arehidden. The settings manifest had no copy test, soobjectql/src/lifecycle/lifecycle-settings.test.tsis new (ADR number, section reference, internal component names).Surface note: one string outside the declared surface
packages/metadata-core/src/objects/sys-metadata.object.ts(package_version_idhelp) is outside the claim's file surface. It is the same defect class, a one-line mechanical rewrite, and it is in the populationplatform-objects' vocabulary test already walks (that test reads metadata-core's objects, and the help lands in theplatform-objectsbundle), so the new "foreign key" entry could not go green without it. Taken under os-dev's bounded in-place fix; the seat amends the file surface.Verification (head
ee5da23123)pnpm turbo run test --only --continueon the six packages: metadata-core 19/19 files, platform-objects 88/88, plugin-security 212/212, plugin-approvals 94/94, service-messaging 60/60, objectql 465/465 (lock VERDICT command-exit 0). A first run went red in twoplatform-objectstranslation-decision tests that readsys_user.fields.ai_access.helpas evidence for the capability wording; fixed by keeping the capability in that help.pnpm turbo run typecheck --onlyon the six packages: 6/6 (VERDICT command-exit 0).node scripts/check-i18n-bundles.mjs: all ten packages in sync.dispatch-gates --commands: 71 families, 70 exit 0, 1 NOT MEASURED (check:dual-build-cjs-loadsexit 3, PREREQUISITE NOT MET: this worktree has no full workspace build).--ranreconciles 71/71. CI runs the rest of the farm.Acceptance notes
better-authstill appears in 34platform-objectsenfield-help leaves (for example "Managed by better-auth"), and a few helps name code identifiers (resolveCtx-style names,sys_business_unit_member.is_primary,sys_file.name). They are outside this card's list and on surfaces the pass did not report; noted, not filed. Carrier: none.[ADR-0086 D3]from the card has 0 hits in any object or metadata-forms bundle onorigin/main. It survives inpackages/specschema.describe()text (security/capabilities.tspackageId,permission.zod.tspackageId). Whether the Capabilities detail page the tester saw renders that.describe()text is NOT MEASURED here (no running console); if it does, the fix is inpackages/spec, outside this card's surface.sys_approval_delegation.organization_idhelp is untouched (plugin-approvals: an approval delegation with no organization still applies across every tenant (the retired NULL-means-global reading, ADR-0131) #25280 owns it).cost_center,business_unit,unit_and_subordinates,autoMigrate) and labels followed by their machine key ("Display name* name") — show labelled options only (hotcrm#2194 T2-U03) #25332 regenerates the sameplatform-objectsbundles; whichever lands second mergesmainand re-runs the generator.🤖 Generated with Claude Code
https://claude.ai/code/session_01RsXNmkeex9WY5XsjNwtRYv