Skip to content

perf(security-issue-fix): decide the fix flow, public-text scrub, backport and gates as code - #1712

Merged
potiuk merged 1 commit into
mainfrom
perf/security-5-fix
Oct 19, 2026
Merged

potiuk merged 1 commit into
mainfrom
perf/security-5-fix

Conversation

@potiuk

@potiuk potiuk commented Oct 19, 2026

Copy link
Copy Markdown
Member

Layer 5, the last skill of the security-family deep split (#1672), stacked on #1711: security-issue-fix's rule-shaped steps move into an issue-fix family of tools/security-management.

Step Command Decides / renders
Source control flow pull request, patch-then-commit (Subversion), or stop, from magpie-vcs fix-flow's exit and JSON
5a / 5c / 5f / 7 / 9 scrub the forbidden-term check on every public surface — branch, title, body, commit message, newsfragment, comments
5e backport the backport labels for the milestone against the next main release, plus team-confirmed lines
6 parse-reply the plan confirmation (shared.numbered)
7 review-plan whether the adversarial reviewers run (a security skill runs them whenever one is listed), and the command
8 / 9 (Subversion) svn-share, svn-gate the private surfaces the patch goes to; the publication gate and the commit proposal
11 render-recap the recap

The scrub is not a third copy of the 5c list. It runs magpie_vcs.publication.scrub — the check propose-commit already applies — through a typed wrapper, so security-management now depends on the magpie-vcs workspace member. It adds reporter names, verbatim private tracker text, and security as a word in a branch name. Exploitation detail and the "sensitive" wording stay the model's check.

SKILL.md becomes a router (7,435 → 7,331 tokens); the Step 0 checklist moved to outcomes/preflight.md behind a one-line summary of each check. The step-0-fix-flow, 5a, 5c, 5e, 5f, 6 and 11 suites become pytest cases named after each former case (tests/test_issue_fix.py), which also pins the deterministic parts of steps 7–9; the skill's model cases go from 50 to 31, and all 31 pass on a self-eval.

Behaviour changes

  • A Subversion commit or new-branch command without --scrub is never shown.
  • A newsfragment is never proposed by default, and one carrying security framing is flagged.
  • The backport rule reads the next main release explicitly (main_version) instead of inferring it from the milestone name.

Spec security-issue-lifecycle describes the new family.

Part of #1672

Generative AI disclosure

Drafted with Claude Code (Claude Opus 5) and reviewed by the author.

🤖 Generated with Claude Code

@github-actions github-actions Bot added family:security security-* skills family:tools tools/* family:docs Docs, MISSION.md, READMEs family:ci .github workflows, prek, validators capability:fix Implement code change to resolve an issue capability:resolve Close-out: invalidate, dedupe, CVE allocate, announcement substrate:analytics Tool substrate: read-only metrics / dashboards / renderers substrate:framework-dev Tool substrate: build / validate / eval the framework itself labels Oct 19, 2026
Base automatically changed from perf/security-4b2-sync to main October 19, 2026 17:59
…kport and gates as code

A new issue-fix family in tools/security-management takes the rules of
security-issue-fix that are pure functions of their inputs: the fix flow
from magpie-vcs fix-flow, the forbidden-term check on every public
surface (branch, title, body, commit message, newsfragment, comments),
the backport labels, the plan confirmation, when the adversarial
reviewers run, the Subversion private-patch and publication gate, and
the recap. The fixability call, finding existing PRs, the plan, the code
and the PR body stay with the model.

The scrub reuses magpie_vcs.publication.scrub — the same check
propose-commit runs — instead of a third copy of the 5c list;
security-management now depends on the magpie-vcs workspace member.
Reporter names, verbatim private tracker text and `security` as a word
in a branch name are added on top.

SKILL.md becomes a router (7,435 -> 7,331 tokens); the Step 0 checklist
moved to outcomes/preflight.md behind a one-line summary of each check.
The step-0-fix-flow, 5a, 5c, 5e, 5f, 6 and 11 suites become pytest
cases named after each former case (50 -> 31 model cases); the 31
remaining cases pass.

Behaviour changes:
- A Subversion commit or new-branch command without --scrub is never
  shown.
- A newsfragment is never proposed by default, and one carrying security
  framing is flagged.
- The backport rule reads the next main release explicitly
  (main_version) instead of inferring it from the milestone name.

Part of #1672

Generated-by: Claude Opus 5
@potiuk
potiuk force-pushed the perf/security-5-fix branch from 3794c82 to a3a2dea Compare October 19, 2026 17:59
@potiuk
potiuk merged commit 03c15a6 into main Oct 19, 2026
60 checks passed
@potiuk
potiuk deleted the perf/security-5-fix branch October 19, 2026 18:30
potiuk added a commit that referenced this pull request Oct 19, 2026
Hand-sync of tools/spec-loop/specs/ with the functionality that landed
between ccb53a3 and 03c15a6.

Specs changed:
- security-issue-lifecycle: the tools/security-management shared library
  gains drafting, recipients and numbered; the package reuses
  github-body-field, generate-cve-json and magpie-vcs (the embargo
  scrub); every skill of the family now has its CLI family, completing
  the deep split (#1672); the Validation block runs its pytest suite.
- .last-sync bumped to 03c15a6.

No spec change needed (specs already updated in the commit itself):
03c15a6 (#1712), c819c90 (#1711), dacf00a (#1710),
cb6bb8b (#1705).

Exempt: aee01bf (the previous sync), 0bd021f (npm pin bump in prek
hooks).

Generated-by: Claude Opus 5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

capability:fix Implement code change to resolve an issue capability:resolve Close-out: invalidate, dedupe, CVE allocate, announcement family:ci .github workflows, prek, validators family:docs Docs, MISSION.md, READMEs family:security security-* skills family:tools tools/* substrate:analytics Tool substrate: read-only metrics / dashboards / renderers substrate:framework-dev Tool substrate: build / validate / eval the framework itself

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant