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