Repository navigation
Commit 0949fe5
docs(skills): objectstack-data's security rules name the risk of renaming or removing a shipped access item in a later version (#25429)
Clause-②: no
Metadata-protocol: none
## What this does
It adds a risk note to `skills/objectstack-data/rules/security.md`, the
access-control rules of the published data-modelling skill: **renaming
or removing a shipped access item in a later package version can quietly
undo an administrator's choice on upgrade.**
Administrators act on a package's permission sets, positions, sharing
rules and capabilities by name. They switch items off, clone sets, and
reference the package's objects and fields from their own sets. So in a
later version:
- a **rename** makes the old switch-off stop matching, and the renamed
item arrives switched on;
- a **removal** leaves a customer's clone or own set naming something
that no longer exists;
- an **added field deny** on a shipped set is not carried into a
customer's clone.
The note asks authors to keep shipped names stable and, when such a
change is genuinely needed, to say in the release notes what an
administrator should re-check. It is guidance only: no gate and no
behaviour change. This is the maintainer's ruling of 2026-10-23:
「这种应该写到元数据应用的开发规范中」「提示风险就行」.
## Why here
This came out of objectstack-ai/cloud#3173 (ADR-0126 wall 3 on cloud's
install paths). The only package on the cloud marketplace is first-party
(HotCRM), so the maintainer chose a development-convention note over a
runtime check or a publish gate.
## The token budget
The file sat at its ratchet ceiling, so the new text is paid for by
deleting restatements in the same file. No rule changes meaning. Each
deletion:
1. **The RBAC stack-key bullet.** The "`permissions`, not
`permissionSets`" fact is the code sample's own comment just above it.
2. **"takes the set's `name`".** This repeats the sentence above it.
3. **The assignment payload.** It repeats the columns listed two
sentences earlier.
4. **The `view_pii` sample's comment.** It repeats the sentence directly
above it.
5. **The `viewAllRecords` corollary.** It follows from "it never crosses
the Layer 0 wall" in the same bullet.
6. **The callout tail.** It restates the two Layer 0 bullets and the
recipe's AND-gate comment; the ADR-0095 D1 citation stays in the first
bullet.
The changes were written at the tier that `dispatch-gates.mjs` mandates
for `skills/**`.
## Verification
Run on head `3d46b7b8`:
- `check-skills-token-ratchet`: `security.md` is 2541 / 2543 tokens;
`--self-test` passes.
- `check:doc-authoring`, `check:agent-test-spelling`, `check:role-word`,
`check:skill-compatibility`, `check:skill-frame-sync`,
`check:skill-identifier-liveness`, `check:pm-skill-id-lint`,
`check:corpus-claim-drift` and `check-doc-route-spelling --advisory`:
each exits 0.
**Noticed, not touched:** the assignment paragraph still says an
`organization_id` of `null` means every organization context. Since
#24583 step 7, an organization-less grant confers nothing, so that
clause looks stale. Fixing it changes a rule, so it is left for its own
change.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent b53057a commit 0949fe5
2 files changed
Lines changed: 38 additions & 20 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
28 | 26 | | |
29 | 27 | | |
30 | 28 | | |
| |||
43 | 41 | | |
44 | 42 | | |
45 | 43 | | |
46 | | - | |
47 | | - | |
48 | | - | |
| 44 | + | |
| 45 | + | |
49 | 46 | | |
50 | 47 | | |
51 | | - | |
52 | | - | |
| 48 | + | |
53 | 49 | | |
54 | 50 | | |
55 | 51 | | |
| |||
144 | 140 | | |
145 | 141 | | |
146 | 142 | | |
147 | | - | |
| 143 | + | |
148 | 144 | | |
149 | 145 | | |
150 | 146 | | |
| |||
188 | 184 | | |
189 | 185 | | |
190 | 186 | | |
191 | | - | |
192 | | - | |
193 | | - | |
| 187 | + | |
194 | 188 | | |
195 | 189 | | |
196 | 190 | | |
| |||
205 | 199 | | |
206 | 200 | | |
207 | 201 | | |
208 | | - | |
209 | | - | |
210 | | - | |
211 | | - | |
212 | | - | |
213 | | - | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
0 commit comments