Repository navigation
Commit 7299b94
docs(skills): teach the isDefault everyone baseline and its app-capability rule in objectstack-data security.md (#18531)
Fixes #17359
**Status 2026-09-17 — the paragraph below is historical and
discharged**: the follow-up it names landed as #18535 (PR #18602,
`origin/main` `21b7c12b4`), the ceiling was ruled, and this branch
merged `origin/main`; see "Patch round" at the end.
⛔ **Blocked-by: the #17189 step-② follow-up (the `plugin-security` boot
refusal and the `packages/lint` `security-anchor-high-privilege` rule
passing the declared-capability list) — not landed on `origin/main`
`2496415`, and no open card names it.** Do not land this PR before that
follow-up: today the bullet's second sentence describes the protocol
(`packages/spec/src/security/high-privilege.ts` + the ADR-0090 D5
revision, landed by PR #17814 and PR #17811) and not yet the running
lint/boot — see "Premise check" below.
## What
One 3-line bullet in `skills/objectstack-data/rules/security.md`,
inserted after the `Source:` line of "## Object-level permissions
(RBAC)" — the construct accepted on the card (assessment 5616225081,
ACCEPT 5616301504) with the ACCEPT's boot-wording correction applied
(「fails lint and boot」 overstated the boot side; boot refuses the
binding with a warning, it does not fail). Every other line of the file
is byte-identical (`git diff --numstat` = `3 0`);
`skills/objectstack-platform/SKILL.md` unchanged; no other file.
Lines 35–37, widths 81 / 82 / 91 characters (the file's widest line is
93):
```markdown
- **`isDefault: true` = the `everyone` baseline (ADR-0090 D5).** It may carry app
capabilities declared under `capabilities:` (`defineCapability`) and granted via
`systemPermissions`; lint and boot refuse a platform capability or undeclared name there.
```
Wording deviation, declared: the dispatch's suggested passive form 「is
refused by lint and at boot」 puts line 3 at 101 characters, over the 93
cap; the active form above keeps every noun of the accepted text and the
ACCEPT's own verb ("refuse") at 91. No other word moved.
## Premise check on `origin/main` `2496415`
- **A1 holds**: `security.md` is 211 lines, widest line 93, lines 31–34
verbatim as quoted in the assessment. Its last touch is `7d350a4`
(#17476, the Multi-tenancy section), not `6a3bcd8` as the dispatch read;
the neighbours are unaffected.
- **A2 holds in substance**: `git grep -F` over `skills/**` at `2496415`
— `defineCapability` 0, `systemPermissions` 0, `isDefault` 1 (a
list-view example), `capabilities:` 5 — and all five are the data-hook
VM tokens (`capabilities: ['api.read', …]` in
`objectstack-data/references/data-hooks.md` ×4 and
`objectstack-ui/rules/actions.md` ×1), a third registry, not the
ADR-0066 D1 stack key. Positive control `definePermissionSet` = 5 hits.
The bullet duplicates nothing.
- **A3 holds, and the boot side is narrower than the dispatch assumed**:
`bindBaselineToEveryone`
(`packages/plugins/plugin-security/src/security-plugin.ts:3581`) logs
`ctx.logger.warn('[security] refusing to bind fallback set to everyone —
high-privilege bits', { set, offending })` and `continue`s — a warning
and no binding, never a failure. 1 parent d5e64d8 commit 7299b94
2 files changed
Lines changed: 13 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
421 | 421 | | |
422 | 422 | | |
423 | 423 | | |
424 | | - | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
425 | 434 | | |
426 | 435 | | |
427 | 436 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
35 | 38 | | |
36 | 39 | | |
37 | 40 | | |
| |||
0 commit comments