test(core): validate upstream provenance policy
This commit is contained in:
@@ -0,0 +1,48 @@
|
|||||||
|
import { describe, expect, it } from "vitest";
|
||||||
|
import { validateUpstreamCapability } from "../src/provenance/registry";
|
||||||
|
|
||||||
|
const base = {
|
||||||
|
id: "visual-css-root-cause",
|
||||||
|
capability: "visual-css-root-cause",
|
||||||
|
disposition: "CHERRY_PICK" as const,
|
||||||
|
source: {
|
||||||
|
repository: "example/upstream",
|
||||||
|
commit: "0123456789abcdef",
|
||||||
|
sourcePaths: ["scripts/compare.mjs"],
|
||||||
|
license: "MIT",
|
||||||
|
},
|
||||||
|
targetModule: "verification",
|
||||||
|
rationale: "Adds deterministic style-root-cause diagnostics",
|
||||||
|
tests: ["geometry-diff"],
|
||||||
|
};
|
||||||
|
|
||||||
|
describe("upstream provenance policy", () => {
|
||||||
|
it("accepts traceable permissive cherry-picks", () => {
|
||||||
|
expect(validateUpstreamCapability(base)).toEqual({
|
||||||
|
valid: true,
|
||||||
|
errors: [],
|
||||||
|
warnings: [],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("rejects AGPL code cherry-picked into core", () => {
|
||||||
|
const result = validateUpstreamCapability({
|
||||||
|
...base,
|
||||||
|
source: { ...base.source, license: "AGPL-3.0" },
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(result.valid).toBe(false);
|
||||||
|
expect(result.errors.join(" ")).toMatch(/adapter\/service boundary/i);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("requires exact provenance for source-derived implementations", () => {
|
||||||
|
const result = validateUpstreamCapability({
|
||||||
|
...base,
|
||||||
|
source: { license: "MIT", sourcePaths: ["compare.mjs"] },
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(result.valid).toBe(false);
|
||||||
|
expect(result.errors).toContain("source.repository is required");
|
||||||
|
expect(result.errors).toContain("source.commit is required");
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user