Skip to content

pm-dispatch skills: say who confirms a pending-changeset correction (the seat's record, never a maintainer wait) everywhere a dev or the gate is told to "get it confirmed", and keep PR bodies from narrating pre-fix behaviour on security fixes #30271

Open

Description

@objectstack-fleet

security#1 · os-justin · session_01QSeKYn5CmmdShCJifm6WYj

Why

references/landing-operations.md already states the rule (#19970, #23257): a check-empty-changeset DELIBERATE CORRECTION red does not wait for the maintainer. The confirmation is the dispatching seat's own record:

  • For a text-only diff: the ACCEPT, quoting each note before and after.
  • Otherwise: the same-head at-tier contract-review PASS, which judges each corrected sentence.

The texts a dev and a seat actually meet do not say this.

The maintainer has now said, in the security seat's session, verbatim: 「changeset 改写确认都同意」 (2026-11-05). This restates the existing rule. It does not create a new one.

Changes

  1. Gate remedy text. FOREIGN_CORRECTION_REMEDY (scripts/check-empty-changeset.mjs) names the confirmer by pointing at landing-operations.md (the seat's ACCEPT or its same-head at-tier PASS record). Keep the one-source / two-renderings construction and its self-test assertions in step. Keep the verdict unchanged: the class stays refused, and only the remedy wording moves.
  2. The dev's side. references/execution-duties.md, or os-dev.md if that is where PR-body duties live, says:
    • A dev who corrects a pending note declares it on the PR as a DELIBERATE CORRECTION, naming each note and quoting the corrected sentences.
    • ⛔ The dev does not ask the maintainer to confirm it. The dispatching seat's record confirms it.
  3. Security PR bodies state the rule, never the pre-fix path. This goes in references/security-findings.md §6, or in the os-dev pointer to it. Twice this week a security fix's PR body narrated what the code did before the fix (fix(spec)!: an object permission that edits or deletes a record also reads it #30180, fix(plugin-security)!: a write from a caller the read door refuses is refused, whatever rows it addresses #30219), and the contract review failed it on §6. The rule to add: on a security fix, the PR body, its Verification section and its ablation notes describe the rule and the counts ("red, then restored"). ⛔ They never describe what the unguarded code does. That detail goes in the dev's private security_findings only.

Acceptance

  • Each rule lives in the one reference that owns it, with no restatement. The hot files' line ratchets are respected.
  • check-empty-changeset's self-test is green, and its verdicts are unchanged.
  • The skills gates the diff derives are green.
  • lanes/security.md and security-findings.md still carry no finding, id, path, object or mechanism.

Activity

  1. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: first-touch audit · p2 kept · domain:skills kept · pm:queue · 2026-11-05T04:57Z

    ⛔ 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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions