Repository navigation
docs(pm-dispatch): advisory_report needs the same advisory write grant as advisory_create - #29619
Conversation
…t as advisory_create
security-findings.md §3 said `advisory_report` was for a repository where the
App has no advisory write grant. The relay mints `repository-advisories: write`
for both rows, so on such a repository both are refused at the mint and the
fallback is the session hand-off. The bullet now says so, on one line.
execute.mjs pointed at ops.mjs's section by its old name ("The three rows");
it now names "The four rows that touch a security advisory" and the separate
read section for `advisory_read`.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8VVAjYkaBE16yPTYraBmt
|
domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J Contract-review-claim: session_01J8VVAnMUWA9rufXzFaEh4J · head 1d36ecf · 2026-11-02T22:04Z The seat review runs at CONTRACT_REVIEW_TIER in an isolated subagent (the seat session is not at that tier). |
|
domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J Contract reviewServed-tier: Reviewer: an isolated contract reviewer at CONTRACT_REVIEW_TIER, read-only on GitHub (REST reads only; nothing written, pushed, labelled or commented), fed the card body and comments, the PR body, the diff against the merge-base, the head's check-runs, contract-review.md and review-checklist.md. The PR body's verification section was read as input, not as conclusions; every count below is this review's own measurement. No environment variable value is printed anywhere in this record, and no advisory, finding or mechanism is named: the diff is rule text and a code comment about the relay's advisory rows. ① Derived judgments
② Semver levelNone. No published package, no ③ Boundary flags
④ Design judgmentPer hits file, against the card's scenario (a seat meeting a security finding reads §3 and must be sent to a row the relay can run):
Must-fix: none. Should-fix: none. Check-runs at record time (2026-11-02T22:23Z): 46 check-runs on 1d36ecf, 26 success, 20 skipped, 0 failure, 0 in progress on the second read; the first read ten minutes earlier had 45 runs, 24 success, 20 skipped and Test Core (1/8) in progress, and the second read added Test Core (1/8) and the Test Core aggregator as success with no non-success completion at either read; combined status Implemented-by: VERDICT: PASS Generated by Claude Code |
|
domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J 维护者速读
席位核对 — ACCEPT · domain:skills#1 · head
|
Requested by Irene · project thread
Part of #29448
What changes
Two text drifts from the card, items 1 and 2. Item 3 (the workflow comment) is a separate Tier H PR so this diff stays out of Tier H.
.claude/skills/pm-dispatch/references/security-findings.md§3: theadvisory_reportbullet said the row is for a repository where the App has no advisory write grant. It now saysadvisory_reportandadvisory_createmint the same advisory write grant, so a repository without it refuses both, and that a report also has a per-account daily limit. The fallback stays the existing "both refused ⇒ session hand-off" bullet two lines below. Reworded in place on one line; the file stays at 56 lines (ceiling 56) and the line is 117 bytes (budget 120).scripts/pm/fleet-write/execute.mjs, the header of "The four advisory rows": it pointed atops.mjs's section by its old name, "The three rows that touch a security advisory". It now names the current "The four rows that touch a security advisory", andops.mjs's separate "The one row that READS an advisory" for theadvisory_readsubsection below it. Comment only.Why
The code mints
repository-advisories: writeforadvisory_reportexactly as foradvisory_create(OPS.advisory_report.permissionisrepository-advisorieswith nogrant, pinned byvalidate.mjs --self-test), so the old bullet sent a seat to a row that dies at the mint on the very repositories it was "kept for". Theexecute.mjscross-reference named a section heading that no longer exists inops.mjs.Verification
pnpm check:pm-skill-ratchetexit 0 (security-findings.md 56/56, no line over the byte budget),pnpm check:pm-skill-id-lintexit 0,node scripts/check-skills-token-ratchet.mjsexit 0.node scripts/pm/dispatch-gates.mjs --commandsderived 42 commands for this diff; all 42 exit 0 on this head, includingcheck:pm-fleet-write-execute,check:pm-fleet-write-validate,check:pm-fleet-write-dispatch,check:scripts-symbol-anchors,check:skill-frame-sync,check-comment-mask-corpusandcheck:doc-formula-expressions(after building@objectstack/formulaand@objectstack/lint).node scripts/check-commit-card-trailers.mjs --range origin/main..HEADexit 0.Clause-②: no
Metadata-protocol: none
Keep one value on each of the two lines above, each line starting with its key.
Human Minimum
item 5 says what they mean.
Human Minimum
packages/specholds no runtime logic. (not touched)pnpm lintpasses. (no formatter ran;pnpm lintitself was not run locally, the diff touches no linted package source)main, one pull request. (the card is split in two PRs by the seat's order, both offmain, neither stacked)skip-changeset)packages/spectouched: its generated artifacts are regenerated and committed. (not touched)content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.🤖 Generated with Claude Code
https://claude.ai/code/session_01J8VVAjYkaBE16yPTYraBmt