licensing: dual SPDX header (MPL-2.0 + CC-BY-SA-4.0) as the standard#58
Merged
Conversation
Owner ruling: every source file carries BOTH SPDX-License-Identifier lines —
MPL-2.0 and CC-BY-SA-4.0 — with the root LICENSE (MPL-2.0) remaining the single
licence GitHub detects for the community-health profile.
Applied the dual header to the 7 previously-flagged files (manual, per-file,
owner-directed — not a bulk sweep):
- academic/formal-verification/{agda/*.agda, coq/Phronesis.v, lean4/*.lean}
(were `Apache-2.0 OR MIT`)
- .github/workflows/{scorecard.yml, secret-scanner.yml} (were `PMPL-1.0` drift;
Phronesis is not a Palimpsest carve-out repo)
Updated the policy to match:
- LICENSING.adoc: the standard is now two SPDX lines per file; documents the
GitHub marker, exclusion cases, and the migration status (these 7 done; the
remaining single-SPDX files migrate incrementally — mixed state is sanctioned
during transition).
- .machine_readable/licensing-policy.toml: machine twin updated likewise (and
itself now dual-headed).
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AqMopxUsgu78rg5fhWBUkk
🔍 Hypatia Security ScanFindings: 6 issues detected
View findings[
{
"reason": "binary_to_term without :safe option -- deserialization attack (1 occurrences, CWE-502)",
"type": "elixir_send_unsanitised",
"file": "/home/runner/work/phronesis/phronesis/lib/phronesis/compiler.ex",
"action": "flag",
"rule_module": "code_safety",
"severity": "high"
},
{
"reason": "Nominal-only SAST in phronesis: codeql.yml language matrix contains no language present in the repo and lacks `actions`, so CodeQL records zero results on every commit. Remediation: set the CodeQL matrix to `language: actions`.",
"type": "StaticAnalysis",
"file": "/home/runner/work/phronesis/phronesis",
"action": "auto_fix",
"rule_module": "scorecard",
"severity": "medium",
"remediation": "Add CodeQL or equivalent SAST workflow.",
"scorecard_check": "SAST"
},
{
"reason": "Repository has 7 non-main remote branch(es). Policy: single main branch only.",
"type": "GS007",
"file": ".",
"action": "delete_remote_branches",
"rule_module": "git_state",
"severity": "medium"
},
{
"reason": "Code scanning (Hypatia): hypatia/scorecard/StaticAnalysis -- Hypatia scorecard: StaticAnalysis -- 1 day(s) old",
"type": "CSA001",
"file": "phronesis",
"action": "review",
"rule_module": "code_scanning_alerts",
"severity": "medium"
},
{
"reason": "Code scanning (Hypatia): hypatia/code_safety/elixir_send_unsanitised -- Hypatia code_safety: elixir_send_unsanitised -- 9 day(s) old [STALE]",
"type": "CSA001",
"file": "lib/phronesis/compiler.ex",
"action": "escalate",
"rule_module": "code_scanning_alerts",
"severity": "high"
},
{
"reason": "Code-scanning alert hypatia/code_safety/elixir_send_unsanitised (high) at lib/phronesis/compiler.ex is 9 days old (threshold: 7 days) -- overdue for remediation",
"type": "CSA003",
"file": "lib/phronesis/compiler.ex",
"action": "escalate",
"rule_module": "code_scanning_alerts",
"severity": "high"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
…ues #59/#60 Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AqMopxUsgu78rg5fhWBUkk
🔍 Hypatia Security ScanFindings: 6 issues detected
View findings[
{
"reason": "binary_to_term without :safe option -- deserialization attack (1 occurrences, CWE-502)",
"type": "elixir_send_unsanitised",
"file": "/home/runner/work/phronesis/phronesis/lib/phronesis/compiler.ex",
"action": "flag",
"rule_module": "code_safety",
"severity": "high"
},
{
"reason": "Nominal-only SAST in phronesis: codeql.yml language matrix contains no language present in the repo and lacks `actions`, so CodeQL records zero results on every commit. Remediation: set the CodeQL matrix to `language: actions`.",
"type": "StaticAnalysis",
"file": "/home/runner/work/phronesis/phronesis",
"action": "auto_fix",
"rule_module": "scorecard",
"severity": "medium",
"remediation": "Add CodeQL or equivalent SAST workflow.",
"scorecard_check": "SAST"
},
{
"reason": "Repository has 7 non-main remote branch(es). Policy: single main branch only.",
"type": "GS007",
"file": ".",
"action": "delete_remote_branches",
"rule_module": "git_state",
"severity": "medium"
},
{
"reason": "Code scanning (Hypatia): hypatia/scorecard/StaticAnalysis -- Hypatia scorecard: StaticAnalysis -- 1 day(s) old",
"type": "CSA001",
"file": "phronesis",
"action": "review",
"rule_module": "code_scanning_alerts",
"severity": "medium"
},
{
"reason": "Code scanning (Hypatia): hypatia/code_safety/elixir_send_unsanitised -- Hypatia code_safety: elixir_send_unsanitised -- 9 day(s) old [STALE]",
"type": "CSA001",
"file": "lib/phronesis/compiler.ex",
"action": "escalate",
"rule_module": "code_scanning_alerts",
"severity": "high"
},
{
"reason": "Code-scanning alert hypatia/code_safety/elixir_send_unsanitised (high) at lib/phronesis/compiler.ex is 9 days old (threshold: 7 days) -- overdue for remediation",
"type": "CSA003",
"file": "lib/phronesis/compiler.ex",
"action": "escalate",
"rule_module": "code_scanning_alerts",
"severity": "high"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
hyperpolymath
marked this pull request as ready for review
June 21, 2026 22:46
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Owner ruling on the two previously-flagged licence items: every source file carries both SPDX lines —
MPL-2.0andCC-BY-SA-4.0— with the rootLICENSE(MPL-2.0) remaining the single licence GitHub detects for community health.Dual header applied to the 7 flagged files (manual, per-file, owner-directed)
academic/formal-verification/{agda/Phronesis.agda, agda/PhronesisEcho.agda, coq/Phronesis.v, lean4/Phronesis.lean, lean4/lakefile.lean}— wereApache-2.0 OR MIT.github/workflows/{scorecard.yml, secret-scanner.yml}— werePMPL-1.0(drift; phronesis isn't a Palimpsest carve-out repo)Policy updated to match
LICENSING.adoc— the standard is now two SPDX lines per file; documents the GitHub marker, exclusions, and the migration status..machine_readable/licensing-policy.toml— machine twin updated (and itself dual-headed).Migration status
These 7 files are done. The remaining single-SPDX estate files migrate to the dual header incrementally — a mixed single/dual state is owner-sanctioned during the transition (tracked as a follow-up). No bulk SPDX sweep was performed, per the estate guardrail.
🤖 Generated with Claude Code
https://claude.ai/code/session_01AqMopxUsgu78rg5fhWBUkk
Generated by Claude Code