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. |
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.
57e5fd8 to
ddd7a1a
Compare
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>
ddd7a1a to
abd37b4
Compare
Validate approved SHA-bound third-party notice transitions before updating managed inventory, including an explicit empty-inventory regression case. Signed-off-by: John McChesney TenEyck Jr <59268465+jmcte@users.noreply.github.com>
|
Exact-head evidence for
The current head enforces the previously missing |
abd37b4 to
c124df2
Compare
|
Exact-head evidence for
This current head enforces the previously missing @athena-omt @pheidon please re-review this exact head. The remaining governance failure is the required independent approval; auto-merge is armed. |
athena-omt
left a comment
There was a problem hiding this comment.
Approved. The exact head enforces SHA-bound evidence before a managed THIRD_PARTY_NOTICES.md change, rejects missing/mismatched evidence and direct edits/deletions, and covers valid plus empty-inventory transitions. I verified the full diff and call path on the Athena node; npm run check, npm run build, and git diff --check origin/main...HEAD passed. Live CI is otherwise green; its current governance failure is solely the pending independent approval.
Summary
fromandtomodes plus SHA-256 bindings while preserving compatibility with existing flat manifests.THIRD_PARTY_NOTICES.md, including the canonical empty-inventory transition.Governing Issue
Closes #110. Follows the licensing foundation in #86 and PR #96.
Validation
autoreviewagainst the exact current PR diff with no accepted/actionable findings.Local proof on
c124df25cad3266d29208997af455fa0e9f0b1a8against currentorigin/main:TMPDIR=/tmp npm run check— 23 test files, 195 tests passed.npm run build— passed.git diff --check origin/main...HEAD— passed.814242d3805993df00f24c2e302c50624c681f89.Bootstrap Governance
CONTRIBUTING.md,.github/PULL_REQUEST_TEMPLATE.md, anddocs/bootstrap/onboarding.mdwhen applicable.Material change: yes
ADR: docs/decisions/ADR-0002-explicit-license-modes.md
Merge Automation
Notes