Skip to content

Commit 1bae3e4

Browse files
committed
docs(pm-dispatch): name advisory_read in the REST channel and point a seat's advisory read at it
Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J8VVAng9QxNxoEzyWkqbW6
1 parent b01f92a commit 1bae3e4

4 files changed

Lines changed: 13 additions & 3 deletions

File tree

‎.claude/skills/pm-dispatch/references/rest-channel.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
- ✓ `origin/main` 合进 PR head:中继 op `pr_update_branch`(`pull` + 40 位 `expected_head_sha`),真合并提交。
4949
- 挂子卡走中继 op `sub_issue_add`/`sub_issue_remove`(`issue` 父号,`sub_issue` 子号),回读父列表。
5050
- 公告经中继 `advisory_create`(首选)等四操作,规则住 `security-findings.md`;发布归维护者。
51+
- 读公告经中继 `advisory_read`:席位进程一次性密钥,密文回传;`--reveal` 才印明文到 stdout。
5152
- ✓ 落地经中继 `node scripts/pm/fleet-write/dispatch.mjs --repo O/N --actions-file F`;`--via dispatch` 同载。
5253
- ✓ 启动 run 走 op `workflow_dispatch`:解锁物是白名单 run 才启;入表只经 workflow 自己的 PR。
5354
- F = `[{"op":"workflow_dispatch","workflow":"release.yml","ref":"main","inputs":{"refresh_version_pr":true}}]`。

‎.claude/skills/pm-dispatch/references/security-findings.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
- 私卡 = 受影响仓上一份未发布的安全公告,只有管理员、安全经理与受邀协作者可见。
2121
- 首选中继 `advisory_create` 建草稿公告,再 `advisory_collaborators_add` 带具名账号进公告。
22+
- 读公告只走中继 `advisory_read`(席位账号读被拒):一次性密钥只在席位进程,只回密文。
2223
- `advisory_report` 只留给 App 无公告写权的仓:GitHub 按账号限每日新私报,全队共一个 App。
2324
- ⛔ 席位永不以自身账号私报或写公告:GitHub 写只走中继,以 App 身份;发布归维护者。
2425
- 两操作皆被拒 ⇒ 会话专递(选 A):机制只在会话里交维护者,由其建草稿,⛔ 不换账号重发。

‎scripts/pm/check-skill-line-ratchet.mjs‎

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,7 +1195,11 @@ export const CEILINGS = new Map([
11951195
// quotes the maintainer verbatim — 「可以,按方案改中继,能发这个操作的账号名单我稍后点名。」 and
11961196
// 「你写清楚issue就可以,让车道开发」 — names this file and the one line, and confirms the raise the seat stated in
11971197
// its comment 6572738609. Measured delta +1 (80 → 81 lines); landed count, headroom 0.
1198-
['.claude/skills/pm-dispatch/references/rest-channel.md', 81],
1198+
// 81 → 82 (#29420): one line naming the sealed advisory read, `advisory_read`. The ruling of record is that card's
1199+
// body, filed under the maintainer's verbatim 「按一次性密钥立卡」 and 「并派发」, which names this file and "one line
1200+
// naming the op, with the ratchet row raised by the measured delta only". Measured delta +1 (81 → 82 lines); landed
1201+
// count, headroom 0.
1202+
['.claude/skills/pm-dispatch/references/rest-channel.md', 82],
11991203
// Lowered 84 → 77 by the rules-only rewrite of the seven core references
12001204
// (maintainer ruling: provenance narratives, incident post-mortems and rationale
12011205
// tails leave the corpus; one rule per ≤120-byte line, no rule already stated in
@@ -1300,7 +1304,11 @@ export const CEILINGS = new Map([
13001304
// untranslated 「同意方案,选 B,立卡」; the raises below cite it as "#29111".
13011305
// A NEW file, so an added row that funds nothing — set at the landed line
13021306
// count, headroom 0, same convention as above.
1303-
['.claude/skills/pm-dispatch/references/security-findings.md', 55],
1307+
// 55 → 56 (#29420): one line pointing a seat's read of an advisory at the sealed relay read, `advisory_read`, where
1308+
// §3 had it read under its own account (a cloud seat's account is refused). The ruling of record is that card's
1309+
// body, filed under the maintainer's verbatim 「按一次性密钥立卡」 and 「并派发」, which names this file "by the
1310+
// measured delta only". Measured delta +1 (55 → 56 lines); landed count, headroom 0.
1311+
['.claude/skills/pm-dispatch/references/security-findings.md', 56],
13041312
['.claude/skills/pm-dispatch/references/external-contributions.md', 22],
13051313
['.claude/skills/pm-dispatch/references/reading-discipline.md', 37],
13061314
// Lowered 51 → 47 by #25712 item 4: objectui stopped being a sister repo, so

‎scripts/pm/fleet-write/ops.mjs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1192,7 +1192,7 @@ export function advisoryReadKeyFailure(value) {
11921192
export const ADVISORY_READ_SEAL_VERSION = 1;
11931193
/** The scheme, named once for a reader: what `sealAdvisoryRead` does and `openAdvisoryRead` undoes. */
11941194
export const ADVISORY_READ_SCHEME = 'X25519 key agreement · HKDF-SHA256 · AES-256-GCM, a fresh ephemeral key and nonce per seal';
1195-
const ADVISORY_READ_INFO = 'objectstack fleet-write advisory_read v1';
1195+
const ADVISORY_READ_INFO = 'fleet-write:advisory_read:v1';
11961196
const ADVISORY_READ_NONCE_BYTES = 12;
11971197
const ADVISORY_READ_TAG_BYTES = 16;
11981198
/** What a seal adds to the plaintext: the version byte, the ephemeral key, the nonce and the tag — 61 bytes. */

0 commit comments

Comments
 (0)