Repository navigation
Commit d0fe050
fix(spec): the Permission Set, Position and view form help texts Setup shows are plain admin copy (#23870)
Fixes #23853
Clause-②: no
## What changed
Six help texts an administrator reads in Setup carried ADR numbers. Each
one is now plain admin copy. The ADR reference moved to the comment
beside the form row, the shape of #23817.
| Form leaf | Before | After |
|---|---|---|
| `permission` · `isDefault` | App baseline for the everyone position
(ADR-0090 D5): an app-level set is auto-bound at boot; a package-level
set becomes an install-time suggestion an admin confirms. Default false.
| Gives this set to everyone who signs in, through the built-in everyone
position. A set the app itself declares is granted at startup; a set
from an installed package becomes a suggestion an admin confirms in
Setup. A set with high-privilege permissions is never granted this way.
Default false. |
| `permission` · `managedBy` | Record provenance (ADR-0086 D3): who owns
this set across upgrades. | Who owns this set: Package means it ships
with a package and package upgrades update it; Platform and User mean it
was created in this environment and upgrades leave it alone. |
| `permission` · `packageId` | Owning package id for a package-shipped
set (ADR-0086 D3). Leave empty for an environment-authored set. | The
package that ships this set; a value naming any other package is
refused. Leave empty for a set created in this environment. |
| `permission` · `adminScope` | Delegated administration (ADR-0090 D12):
lets holders ... | Delegated administration: lets holders ... (rest
unchanged) |
| `position` · `delegatable` | Holders may delegate this position
themselves, time-boxed and with a reason (ADR-0091 D3). Default false —
delegation is admin-only. | The same sentence without "(ADR-0091 D3)". |
| `view` · section `end_user_controls` description | What end users can
do on this view — quick filters, filter tabs, visualization switching
(ADR-0047, Airtable Interface parity). | What end users can do on this
view — quick filters, filter tabs, visualization switching. |
### Each sentence checked against the code that honours the field
- `isDefault`: `PermissionSetSchema.isDefault`'s docblock and
`plugin-security`'s `builtin-positions.ts`. An app-level set is
auto-bound to the `everyone` position at boot. Every authenticated
member holds that position implicitly. A package-level set materializes
a `sys_audience_binding_suggestion` that an admin confirms in Setup. A
high-privilege set cannot be bound to the anchor.
- `managedBy`: `package` rows are re-seeded on upgrade. `platform` and
`user` rows are environment config that package seeding never touches.
- `packageId`: a value that disagrees with the package that ships the
set, or that the set is saved into, is refused at every door
(`judgePermissionSetOwnerBinding`). That includes any value on a set no
package ships.
- `adminScope` and `delegatable`: the rest of each text was already
operational, and #23488 aligned the `adminScope` keys with the live
schema. Only the ADR prefix moved.
- The view's end-user controls: the `userFilters` `tabs` element
(`view.zod.ts`) and `appearance.allowedVisualizations` are live keys, so
"filter tabs" and "visualization switching" stay. The retired `tabs`
repeater is not named.
### Translations
- `pnpm i18n:extract` regenerated `en.metadata-forms.generated.ts`: 6
leaves.
- The zh-CN, ja-JP and es-ES values for the same 6 leaves were
hand-written translations of the old wording, and merge mode keeps them.
So they were rewritten in place to the new meaning, before the extract.
Values only: no key was added or removed.
- The `*.source-hashes.generated.ts` tables did not change. "Setup"
stays untranslated, as the sibling leaves in each locale already leave
it.
### Test
`packages/platform-objects/src/apps/setup-copy-vocabulary.test.ts` gains
two cases. No assertion was deleted.
- **Bright leg:** across all four `metadataForms` bundles, each of the
six leaves must be a string (the population cannot shrink) and must
carry no ADR number, no decision id (D plus digits), no `finding F`, no
`emit()` and no `kernel`. It uses the matcher this file already uses.
- **Dark leg:** the same walk over the replaced prose names all six
leaves.
The file docblock's population item 3 names the six leaves.
No other test pins these strings. `git grep` for the old wording hits
only `.describe()` text, `content/docs/references/` and changesets, all
outside this card.
### Changeset
`.changeset/23853-form-help-texts-plain.md` is a `patch` for
`@objectstack/spec` and `@objectstack/platform-objects`, with `Clause-②:
no`. No key, type, schema or accept/refuse result changes.
## Verification (head `01167a02`)
- Ablation, one leg, through `scripts/ablation-replace.mjs`. "(ADR-0090
D12)" was put back into the zh-CN `adminScope` leaf. The zh-CN case went
red, naming `zh-CN.metadataForms.permission.fields.adminScope.helpText
(an ADR number, a decision id)`. The restore left the blob equal to HEAD
(`48bc7f4d7c85`) and `git diff HEAD` empty.
- `pnpm --filter @objectstack/platform-objects test`: 71 files, 1108
tests passed. `typecheck`: exit 0.
- `pnpm --filter @objectstack/spec build`, then `check:generated`: exit
0, all 14 generated artifacts up to date.
- `pnpm check:i18n`: exit 0, 10 packages in sync. The first run exited 3
because the extract closure was not built (a prerequisite, not a
finding). It passed after the closure the gate names was built.
- `pnpm check:i18n-stale-fill`: exit 0, 0 stale fills.
- `dispatch-gates --commands` derived 86 families. 84 exited 0. 2 exited
3 on prerequisites and are NOT MEASURED locally, left to CI:
- `check-plugin-teardown-shape --self-test`: shallow clone.
- `check:dual-build-cjs-loads`: not every package is built.
- `--ran` reconciliation: 86 accounted for, 0 UNRUN.
- `main` was merged at `0af559e8` through
`scripts/pm/os-regen-merge.sh`. The incoming commits touch none of these
files and no generated artifact, so there was nothing to regenerate.
## Acceptance notes
- The card's acceptance holds: none of the six strings contains `ADR-`,
a decision id, `finding F`, `emit()` or `kernel`, in source or in any
locale. The `en` and locale files are regenerated.
- The full stops match the sibling help texts in each file. Every
rewritten text already ended with one, and so does the sibling section
description `Chart-specific configuration.`
- The `managedBy` option labels ("Package (upgrade-owned metadata)",
"Platform (environment config)", "User (environment config)") carry no
ADR vocabulary and are outside this card's file surface. They are
unchanged.
- #23829's `domain:services` object descriptions are not addressed here.
PR #23846 regenerates the same `*.metadata-forms.generated.ts` files;
whichever PR lands second merges `main` and regenerates.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01JzEWBwPjA5XW27bESPUVWw)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 94114c1 commit d0fe050
9 files changed
Lines changed: 114 additions & 35 deletions
File tree
- .changeset
- packages
- platform-objects/src/apps
- translations
- spec/src
- identity
- security
- ui
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
27 | | - | |
28 | | - | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
29 | 31 | | |
30 | 32 | | |
31 | 33 | | |
| |||
172 | 174 | | |
173 | 175 | | |
174 | 176 | | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
175 | 226 | | |
176 | 227 | | |
177 | 228 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1019 | 1019 | | |
1020 | 1020 | | |
1021 | 1021 | | |
1022 | | - | |
| 1022 | + | |
1023 | 1023 | | |
1024 | 1024 | | |
1025 | 1025 | | |
| |||
2330 | 2330 | | |
2331 | 2331 | | |
2332 | 2332 | | |
2333 | | - | |
| 2333 | + | |
2334 | 2334 | | |
2335 | 2335 | | |
2336 | 2336 | | |
2337 | | - | |
| 2337 | + | |
2338 | 2338 | | |
2339 | 2339 | | |
2340 | 2340 | | |
2341 | | - | |
| 2341 | + | |
2342 | 2342 | | |
2343 | 2343 | | |
2344 | 2344 | | |
2345 | 2345 | | |
2346 | 2346 | | |
2347 | 2347 | | |
2348 | 2348 | | |
2349 | | - | |
| 2349 | + | |
2350 | 2350 | | |
2351 | 2351 | | |
2352 | 2352 | | |
| |||
2391 | 2391 | | |
2392 | 2392 | | |
2393 | 2393 | | |
2394 | | - | |
| 2394 | + | |
2395 | 2395 | | |
2396 | 2396 | | |
2397 | 2397 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1019 | 1019 | | |
1020 | 1020 | | |
1021 | 1021 | | |
1022 | | - | |
| 1022 | + | |
1023 | 1023 | | |
1024 | 1024 | | |
1025 | 1025 | | |
| |||
2330 | 2330 | | |
2331 | 2331 | | |
2332 | 2332 | | |
2333 | | - | |
| 2333 | + | |
2334 | 2334 | | |
2335 | 2335 | | |
2336 | 2336 | | |
2337 | | - | |
| 2337 | + | |
2338 | 2338 | | |
2339 | 2339 | | |
2340 | 2340 | | |
2341 | | - | |
| 2341 | + | |
2342 | 2342 | | |
2343 | 2343 | | |
2344 | 2344 | | |
2345 | 2345 | | |
2346 | 2346 | | |
2347 | 2347 | | |
2348 | 2348 | | |
2349 | | - | |
| 2349 | + | |
2350 | 2350 | | |
2351 | 2351 | | |
2352 | 2352 | | |
| |||
2391 | 2391 | | |
2392 | 2392 | | |
2393 | 2393 | | |
2394 | | - | |
| 2394 | + | |
2395 | 2395 | | |
2396 | 2396 | | |
2397 | 2397 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1019 | 1019 | | |
1020 | 1020 | | |
1021 | 1021 | | |
1022 | | - | |
| 1022 | + | |
1023 | 1023 | | |
1024 | 1024 | | |
1025 | 1025 | | |
| |||
2330 | 2330 | | |
2331 | 2331 | | |
2332 | 2332 | | |
2333 | | - | |
| 2333 | + | |
2334 | 2334 | | |
2335 | 2335 | | |
2336 | 2336 | | |
2337 | | - | |
| 2337 | + | |
2338 | 2338 | | |
2339 | 2339 | | |
2340 | 2340 | | |
2341 | | - | |
| 2341 | + | |
2342 | 2342 | | |
2343 | 2343 | | |
2344 | 2344 | | |
2345 | 2345 | | |
2346 | 2346 | | |
2347 | 2347 | | |
2348 | 2348 | | |
2349 | | - | |
| 2349 | + | |
2350 | 2350 | | |
2351 | 2351 | | |
2352 | 2352 | | |
| |||
2391 | 2391 | | |
2392 | 2392 | | |
2393 | 2393 | | |
2394 | | - | |
| 2394 | + | |
2395 | 2395 | | |
2396 | 2396 | | |
2397 | 2397 | | |
| |||
0 commit comments