Repository navigation
Commit 3d73c1d
docs(skills): name the installation-wide uniques stop for a self-hosted os deploy (#31428)
<!-- claude-projects-attribution: {"github_login":"os-project-manager"}
-->
_Requested by **Leehom** · [project
thread](https://claude.ai/code/project/chan_01TenzsRopZj4jMbvjX8uz1X?thread=cmsg_01TenzsRopZj4jMbvjX8uz1XMLQfnXzBGuGxWQMXHib8KU)_
Part of #31338
Clause-②: no
Metadata-protocol: none
## 维护者速读
- 改了什么:平台技能 `operations.md` 中 `use-runtime` 目标的退出码 1
段,在「安装被拒」一项里补上全局唯一约束停止:约束确属全平台时用 `--confirm-global-uniques` 重跑,否则改成
`unique: 'organization'`。
- 为什么改:PR #31369(#31338)已让 `os deploy` 在自托管运行时接受
`--confirm-global-uniques`,但技能只教了两个升级确认,agent 读技能时不知道这个停止和开关。
- 风险与回滚:纯技能文字;token 棘轮先删同文件两处重复(-67 字节),余额 +19 tokens 按常设裁定 6513306068
抬高该行(3375 → 3394);发版 `@objectstack/skills` patch;回滚即 revert。
- 两分钟验证:`node scripts/check-skills-token-ratchet.mjs`(3394 / 3394);对照
`packages/cli/src/commands/package/install.ts` L445-L456 的停止文案。
- 需要你做的:Tier H(`skills/**`),合并前需席位契约复核与 `os-zhuang` 或 `hotlong` 批准。
## What changes
`skills/objectstack-platform/references/operations.md`, the
`use-runtime` target paragraph (added by #31335, merged). Its
install-refusal clause listed the access and schema upgrade
confirmations only. It now also names the installation-wide uniques stop
(`UNIQUE_SCOPE_CONFIRMATION_REQUIRED`, ADR-0120 D5e), whose printed
retry is `os deploy --confirm-global-uniques`, and the stop's other way
on:
```diff
-… an install refusal (rerun with the `--confirm-access-upgrade` / `--confirm-upgrade <token>` it printed); installed but not loaded …
+… an install refusal (rerun with the `--confirm-access-upgrade` / `--confirm-upgrade <token>` it printed, or `--confirm-global-uniques` if its installation-wide `unique` constraints are meant platform-wide, else set them `unique: 'organization'`); installed but not loaded …
```
Source on `main` (`405a78ea`):
`packages/cli/src/commands/package/install.ts` L445-L456 (the stop
prints `${retry} --confirm-global-uniques` and "…or edit the app's
metadata to `unique: 'organization'` and rebuild");
`packages/cli/src/commands/deploy.ts` L100 (`CONFIRMATION_FLAGS`) and
L160 (the flag, self-hosted target only). `os deploy` rebuilds, so "and
rebuild" is the deploy itself.
## Why
PR #31369's acceptance notes left this line to the skills lane ("Not
edited here … the line it needs is in the report's
`out_of_scope_findings`"). Without it, an agent reading the platform
skill meets the stop with no taught way on.
## Token readings (`scripts/check-skills-token-ratchet.mjs`, tokens =
ceil(bytes / 4))
| File | `main` `e6a0b72a90` | This PR | Ceiling |
|:--|:--|:--|:--|
| `skills/objectstack-platform/references/operations.md` | 13500 B =
3375 | 13574 B = 3394 | 3375 → 3394 |
**Deletions, each with its surviving home (-67 bytes):**
1. Health & observability, Logs bullet: the example `new ObjectKernel({
logger: { level: 'info', format: 'json' } })` becomes "(`new
ObjectKernel({ logger })`)" (-36 B). Home of the shape:
`references/plugin-development.md` § ObjectKernel Configuration
(`logger: { level: 'info', format: 'json' }`). The bullet's own fact (a
kernel construction option, not a `defineStack` key) stays.
2. Metrics bullet: "(per-plugin startup durations)" (-31 B). Home:
`references/plugin-development.md` § Health Monitoring,
`kernel.getPluginMetrics(); // Map<name, startup ms>`.
No eval pins either (`skills/objectstack-platform/evals/*.json` swept
for `getPluginMetrics`, `logger`, `format`).
Added: +141 B. Net +74 B → 3394 tokens; headroom was 0, so the
remainder, +19 measured, raises that one row, pinned at the measurement,
under the standing maintainer ruling 2026-10-27, verbatim and
untranslated: 「A:先削重复,余额按实测提高」 (ruling record 6513306068 on #27847). No
rewrap: every untouched line is byte-identical.
## Not edited
- `skills/objectstack-platform/evals/config-plugins-ops.json` case 21
names only `--confirm-access-upgrade` (already listed in #31335's "Other
sites found").
## Verification
Head `da7c715974` (one commit on `main` `e6a0b72a90`). `node
scripts/pm/dispatch-gates.mjs --commands` derived 62 commands for the 3
paths: **57 × exit 0**; 5 NOT MEASURED (exit 3, prerequisite: a build):
`check:dts-closure`, `check:dual-build-cjs-loads`,
`check:lean-entry-closure`, `check:sourcemap-no-sources-content` read
every package's dist, and no package is touched; `@objectstack/lint
check:doc-formula-expressions` needs the formula and lint builds and
this diff adds no formula. Those go to CI. Per-command record: project
file `pm-orders/server/31338-skills-gates-ran.txt`.
- `node scripts/check-skills-token-ratchet.mjs`: exit 0, 3394 / 3394;
`--self-test` exit 0.
- `node scripts/check-empty-changeset.mjs --base origin/main`,
`check-changeset-no-major.mjs`: exit 0.
- `node scripts/check-commit-card-trailers.mjs --range
origin/main..HEAD`: exit 0.
Changeset `.changeset/31338-platform-skill-global-uniques-stop.md`:
`@objectstack/skills` patch, both declaration lines.
## Human Minimum
- [x] 1. Schemas start as Zod; `packages/spec` holds no runtime logic.
(not touched)
- [x] 2. Every name I added uses the casing for its kind. (none added)
- [x] 3. No formatter ran; `pnpm lint` passes. (no lintable source
touched; CI)
- [x] 4. One issue, one branch off an up-to-date `main`, one pull
request.
- [x] 5. A change that publishes carries a changeset, and both
declaration lines are filled in here and in the changeset.
- [x] 6. `packages/spec` touched: n/a.
- [x] 7. No hand edits to `content/docs/references/`,
`packages/*/CHANGELOG.md` or `content/docs/releases/`.
- [x] 8. Title, body and comments are in English. (the 维护者速读 block
follows the project's PR convention)
---
_Generated by [Claude
Code](https://claude.ai/code/session_01FEkQ5oBgusQkTutB9LsDed)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent a58fe66 commit 3d73c1d
3 files changed
Lines changed: 27 additions & 5 deletions
File tree
- .changeset
- scripts
- skills/objectstack-platform/references
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1216 | 1216 | | |
1217 | 1217 | | |
1218 | 1218 | | |
1219 | | - | |
| 1219 | + | |
| 1220 | + | |
| 1221 | + | |
| 1222 | + | |
| 1223 | + | |
| 1224 | + | |
| 1225 | + | |
| 1226 | + | |
| 1227 | + | |
| 1228 | + | |
| 1229 | + | |
| 1230 | + | |
| 1231 | + | |
| 1232 | + | |
1220 | 1233 | | |
1221 | 1234 | | |
1222 | 1235 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
102 | | - | |
| 102 | + | |
103 | 103 | | |
104 | 104 | | |
105 | 105 | | |
| |||
161 | 161 | | |
162 | 162 | | |
163 | 163 | | |
164 | | - | |
165 | | - | |
| 164 | + | |
166 | 165 | | |
167 | | - | |
| 166 | + | |
168 | 167 | | |
169 | 168 | | |
170 | 169 | | |
| |||
0 commit comments