fix(evidence): validate curated runtime corpus
This commit is contained in:
@@ -174,7 +174,10 @@ function renderEvidence(
|
||||
}
|
||||
|
||||
return {
|
||||
evidence: { sources: [renderedSource] },
|
||||
evidence: {
|
||||
...(workspace.evidence.schema_version === 2 ? { schema_version: 2 } : {}),
|
||||
sources: [renderedSource],
|
||||
},
|
||||
vector: {
|
||||
max_chunk_chars: workspace.evidence.policy.max_chunk_chars,
|
||||
retain_published_generations: workspace.evidence.policy.retain_published_generations,
|
||||
|
||||
@@ -341,11 +341,11 @@ const workspaceEvidenceSchema = z.object({
|
||||
path: ["source", "patterns"],
|
||||
message: "schema-versioned filesystem Evidence patterns cannot span source and curated",
|
||||
});
|
||||
} else if (!patterns.every((pattern) => pattern === "curated" || pattern.startsWith("curated/"))) {
|
||||
} else if (patterns.length !== 1 || patterns[0] !== "curated/**/*.md") {
|
||||
context.addIssue({
|
||||
code: "custom",
|
||||
path: ["source", "patterns"],
|
||||
message: "schema-versioned filesystem Evidence patterns must acquire curated documents only",
|
||||
message: "schema-versioned filesystem Evidence patterns must be exactly curated/**/*.md",
|
||||
});
|
||||
}
|
||||
}).transform((evidence) => ({
|
||||
|
||||
@@ -207,6 +207,7 @@ test("renders filesystem Evidence below the immutable revision content root with
|
||||
|
||||
expect(rendered.runtime_identity.workspace_revision).toBe(evidenceRevision);
|
||||
expect(rendered.evidence).toEqual({
|
||||
schema_version: 2,
|
||||
sources: [{
|
||||
type: "filesystem",
|
||||
root: `/srv/registry/snapshots/${evidenceRevision}/psd-clinical/evidence`,
|
||||
|
||||
@@ -442,6 +442,26 @@ test("rejects a schema-versioned Evidence layout that acquires source documents
|
||||
}, /curated/i);
|
||||
});
|
||||
|
||||
test.each(["curated/**/*.yaml", "curated/**"])(
|
||||
"rejects a schema-versioned Evidence layout that uses the non-canonical curated pattern %s",
|
||||
(pattern) => {
|
||||
expectSafeEvidenceError({
|
||||
...withEvidence({
|
||||
type: "filesystem",
|
||||
uri: "psd-clinical/evidence",
|
||||
}),
|
||||
evidence: {
|
||||
schema_version: 2,
|
||||
source: {
|
||||
type: "filesystem",
|
||||
uri: "psd-clinical/evidence",
|
||||
patterns: [pattern],
|
||||
},
|
||||
},
|
||||
}, /curated\/\*\*\/\*\.md/i);
|
||||
},
|
||||
);
|
||||
|
||||
test("keeps evidence optional on schema v3", () => {
|
||||
expect(validateWorkspaceDescriptor(validWorkspaceObject())).not.toHaveProperty("evidence");
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user