feat: strengthen licensing transition contracts#101
Conversation
athena-omt
left a comment
There was a problem hiding this comment.
Request changes: the current head fails required governance checks. PR Fast CI run 29680345403 reports PRS-PR-SIZE-001 (1,171 counted changed lines exceeds the 800-line threshold) and PRS-INDEPENDENT-REVIEW-001 (material changes require an approving non-author reviewer); CI Gate consequently fails. Split the change or obtain the required approved review, then rerun CI. I inspected the exact head in an isolated Athena-node checkout; no unresolved review threads were present. Local dependency-based validation could not complete because the Athena node disconnected during npm ci.
91c2fe0 to
42f6cdb
Compare
|
Addressed on the current head
Please re-review the current head. An approving independent review is still expected before auto-merge can complete. |
Normalize license transitions to explicit from/to mode and SHA-256 bindings, add separate third-party notice reconciliation evidence, centralize SPDX identifier validation, and retain compatibility for existing flat transition manifests. Follow-up to #86. Signed-off-by: John McChesney TenEyck Jr <59268465+jmcte@users.noreply.github.com>
42f6cdb to
57e5fd8
Compare
athena-omt
left a comment
There was a problem hiding this comment.
Request changes: thirdPartyNoticesTransition is currently schema-only. src/licensing.ts:310-320 renders the new notices and reads the existing notices, but src/licensing.ts:351-359 only blocks replacement when the existing notices are unmanaged. When notices are already managed and differ, projection proceeds even if thirdPartyNoticesTransition is absent or its SHA-256 bindings are wrong. That defeats the SHA-bound reconciliation contract described by this PR. Please require evidence for a managed notice-content change, verify fromSha256 against the existing bytes and toSha256 against rendered output, and add projectLicensePolicy tests for missing evidence, mismatched hashes, and a valid transition. The added manifest test only confirms parsing. I reviewed the exact fresh head on Athena; git diff --check origin/main...HEAD passed. The live governance check is failing pending independent review; auto-merge is enabled.
athena-omt
left a comment
There was a problem hiding this comment.
Blocking: thirdPartyNoticesTransition is added to the manifest contract but never enforced by projectLicensePolicy. When THIRD_PARTY_NOTICES.md is already Bootstrap-managed, changing license.thirdPartyNotices produces an update without requiring, or validating, fromSha256, toSha256, or the approval fields. I reproduced this by applying a policy with no notices and then planning a policy that adds a dependency: planning succeeds with a THIRD_PARTY_NOTICES.md update and no transition evidence. Please gate managed-notices changes on evidence whose hashes match the existing and rendered notice bytes (and add a regression test).\n\nIndependent review performed at 57e5fd8. npm test -- --run and npm run typecheck pass locally.
Summary
fromandtomode plus SHA-256 bindings while preserving compatibility with existing flat manifests.Governing Issue
Refs #86. This is the first sequential slice of the proprietary/private-package hardening follow-up; integration work will follow after this PR lands.
Validation
autoreviewagainst the intended PR diff with no accepted/actionable findings/Users/johnteneyckjr./.codex/skills/autoreview/scripts/autoreview --mode branch --base origin/main --stream-engine-outputagainst57e5fd8— clean, no accepted/actionable findingsCI GateLocal proof:
npm run test— 182/182 tests passed outside the restricted sandbox required by the CLI IPC testsnpm run typecheck— passednpm run build— passedgit diff --check origin/main— passedBootstrap Governance
CONTRIBUTING.md,.github/PULL_REQUEST_TEMPLATE.md, anddocs/bootstrap/onboarding.mdwhen applicableMaterial change: yes
ADR: docs/decisions/ADR-0002-explicit-license-modes.md
Merge Automation
gh pr merge --auto --squash, or the reason it is unavailable/unsafe is noted belowNotes