Skip to content

feat(governance): add recipe-fix-pmpl-drift + script + update SPDX exclude_repos#423

Merged
hyperpolymath merged 5 commits into
mainfrom
feat/pmpl-drift-recipe
Jun 2, 2026
Merged

feat(governance): add recipe-fix-pmpl-drift + script + update SPDX exclude_repos#423
hyperpolymath merged 5 commits into
mainfrom
feat/pmpl-drift-recipe

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

Adds category-aware PMPL drift detection + auto-fix to the hypatia recipe system, per the 2026-06-02 owner directive (canonical: estate-license-policy-umbrella memory).

Changes

  1. New recipe data/verisim/recipes/recipe-fix-pmpl-drift.json — detects PMPL-1.0-or-later SPDX stamps that drift from the per-repo category target. Includes full category classification (sole-owner → MPL-2.0, son-shared → AGPL-3.0-or-later, 007 → ARR, palimpsest carve-out → keep PMPL, third-party/forks → leave alone). Lists the 26 initial sweep PRs as reference.

  2. New script scripts/fix-scripts/fix-pmpl-drift.sh — auto-classifies a repo via its LICENSE file, sweeps PMPL→target safely with sub-path exclusions (rescript-tea, rescript-vite, affinescript-vite, idaptik-rescript13-staging, consent-aware-http subdir) and submodule exclusion.

  3. Update data/verisim/recipes/recipe-fix-spdx-license.json — adds the now-confirmed AGPL category-3 repos (burble, standards, rattlescript, vcl-ut) + palimpsest carve-outs + 007 to exclude_repos so this older recipe stops trying to AGPL→MPL flip them.

Why this matters

Before this PR, the existing SPDX recipe could flip AGPL→MPL on repos that are correctly AGPL (would break the categorization). After this PR, both recipes are aligned with the 2026-06-02 policy and the gitbot can auto-PR PMPL drift fixes without manual per-repo triage going forward.

Test plan

  • Run fix-pmpl-drift.sh against a known sole-owner repo with PMPL drift (e.g. ephapax local clone) — verify clean MPL-2.0 output
  • Run against a known son-shared (e.g. standards local clone) — verify clean AGPL-3.0-or-later output
  • Run against a known carve-out (e.g. palimpsest-license) — verify SKIP message
  • Run with --dry-run on each — verify file list output without changes

🤖 Generated with Claude Code

hyperpolymath and others added 2 commits June 2, 2026 18:56
…clude_repos

Adds category-aware PMPL drift detection + auto-fix per 2026-06-02 owner directive:

- New recipe recipe-fix-pmpl-drift.json — detects PMPL-1.0-or-later SPDX stamps that drift from the per-repo category target (MPL-2.0 for sole-owner, AGPL-3.0-or-later for son-shared). Skips palimpsest carve-outs (palimpsest-license, palimpsest-plasma) + 007 + third-party content.
- New fix-pmpl-drift.sh — classifies via LICENSE file, sweeps PMPL→target, respects submodules + sub-path exclusions (rescript-tea, rescript-vite, affinescript-vite, idaptik-rescript13-staging, consent-aware-http).
- Update recipe-fix-spdx-license.json exclude_repos to add the now-confirmed AGPL category-3 repos (burble, standards, rattlescript, vcl-ut) + carve-outs (palimpsest-license, palimpsest-plasma, paint-type) + 007 (ARR).

References the 26-repo initial sweep (neurophone#102, dev-ecosystem#103-106, ngdb#29-30, standards#344-345, stapeln#86-87, reposystem#90, ephapax#285, + 21 single-PR sweeps). See memory feedback_estate_license_policy_umbrella.md for canonical policy.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…026-06-02 policy

Adds confirmed AGPL category-3 repos (burble, standards, rattlescript, vcl-ut) + palimpsest carve-outs + 007 to exclude_repos so this AGPL-3.0→MPL-2.0 flip recipe stops trying to re-flip correctly-AGPL repos.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 2, 2026

🔍 Hypatia Security Scan

Findings: 146 issues detected

Severity Count
🔴 Critical 0
🟠 High 0
🟡 Medium 146
View findings
[
  {
    "reason": "Action urin 21 JRE\n        uses: actions/setup-java@be666c2fcd27 needs attention",
    "type": "unpinned_action",
    "file": "verify-proofs.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in clusterfuzzlite.yml",
    "type": "missing_timeout_minutes",
    "file": "clusterfuzzlite.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

@hyperpolymath hyperpolymath marked this pull request as ready for review June 2, 2026 18:14
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 2, 2026

🔍 Hypatia Security Scan

Findings: 146 issues detected

Severity Count
🔴 Critical 0
🟠 High 0
🟡 Medium 146
View findings
[
  {
    "reason": "Action urin 21 JRE\n        uses: actions/setup-java@be666c2fcd27 needs attention",
    "type": "unpinned_action",
    "file": "verify-proofs.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in clusterfuzzlite.yml",
    "type": "missing_timeout_minutes",
    "file": "clusterfuzzlite.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

@hyperpolymath hyperpolymath merged commit 4fac967 into main Jun 2, 2026
11 of 19 checks passed
@hyperpolymath hyperpolymath deleted the feat/pmpl-drift-recipe branch June 2, 2026 19:17
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 2, 2026

🔍 Hypatia Security Scan

Findings: 166 issues detected

Severity Count
🔴 Critical 0
🟠 High 0
🟡 Medium 166
View findings
[
  {
    "reason": "Action urin 21 JRE\n        uses: actions/setup-java@be666c2fcd27 needs attention",
    "type": "unpinned_action",
    "file": "verify-proofs.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in clusterfuzzlite.yml",
    "type": "missing_timeout_minutes",
    "file": "clusterfuzzlite.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant