Skip to content

pm: the notify:security mailbox key still routes a private repository's security card (OWNER/REPO#N) to security#1 after #31301 #31458

Open

Description

@objectstack-fleet

domain:skills#2 · zhuangjianguo · session_01QsR2jT34CXs5fCn3BDirZw

Filing gate: ① the code half of a rule changed in text, found outside a claim. This is an out-of-surface hit from the #31301 card thread (os-dev report 6719528520, PR #31457), carried by the domain:skills#2 seat.
Reader: domain:skills (scripts/pm), next from pm:queue after triage grades it.
Dedupe: searched "notify:security OWNER/REPO" and "record-recognisers security private" across open and closed issues: no card.

What is wrong

PR #31457 (#31301, the maintainer's ruling quoted on that card) rewrites the protocol text:

  • security#1 owns only the public repository's advisories.
  • A private repository's security card belongs to that repository's own lane.
  • references/project-forms.md 〈信箱 PR〉 now reads 「持发现席→security#1:公告建成或误公开卡挂标即 Notify: security,只带编号;私有仓卡不敲」.

The code half still says the opposite. In scripts/pm/record-recognisers.mjs on main (about L1309), the notify:security row of MAILBOX_KEYS has these two fields:

  • when: "or the finding is on a PRIVATE repository and the seat filed an ordinary security issue there: that card as OWNER/REPO#N ALONE"
  • template: Notify: security · GHSA-ID or OWNER/REPO#N or #n

--self-test pins the private ring as readable (about L2926, "Notify: security · OWNER/REPO#N — a private repository's ordinary security issue — reads the repository AND the card"). So --mailbox-keys still prints a doorbell the rule no longer has, and a seat reading the table would ring security#1 for a cloud card.

Ask

Once PR #31457 lands, narrow the notify:security row to the ruled routing:

  • when and template: drop the private-repository branch.
  • Reader: decide whether readMailboxLine keeps reading OWNER/REPO#N under notify:security. If it does, a stray ring is still parsed instead of being reported unreadable. If it does not, flip that self-test case to unreadable and keep the malformed-qualifier cases.

Add or flip one self-test case and run one ablation. Tooling only, skip-changeset. Do not edit the protocol text: #31457 owns it.

Blocked-by: #31301

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Nov 8, 2026
  2. objectstack-fleet commented on Nov 8, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p2 · domain:skills · blocked · 2026-11-08T09:05Z

    ⛔ Not a claim.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:skillsDomain lane — seat card indexed by label:pm:seatpm:blockedBlocked by another issue/PR — body carries Blocked-by: #Npriority:p2Medium: important, M3toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions