feat: activate workspaces from the root catalog and bootstrap-only publication
This commit is contained in:
@@ -297,7 +297,7 @@ const validEvidenceSources = [
|
||||
name: "filesystem with explicit values",
|
||||
source: {
|
||||
type: "filesystem",
|
||||
uri: "workspace-content/psd-clinical/evidence",
|
||||
uri: "psd-clinical/evidence",
|
||||
patterns: ["documents/**/*.pdf", "notes/*.md"],
|
||||
max_bytes: 12_000_000,
|
||||
},
|
||||
@@ -374,14 +374,14 @@ test.each(validEvidenceSources)("accepts evidence source: $name", ({ source }) =
|
||||
test("applies filesystem and policy defaults to the canonical descriptor", () => {
|
||||
const parsed = validateWorkspaceDescriptor(withEvidence({
|
||||
type: "filesystem",
|
||||
uri: "workspace-content/psd-clinical/evidence",
|
||||
uri: "psd-clinical/evidence",
|
||||
}));
|
||||
|
||||
expect(parsed).toMatchObject({
|
||||
evidence: {
|
||||
source: {
|
||||
type: "filesystem",
|
||||
uri: "workspace-content/psd-clinical/evidence",
|
||||
uri: "psd-clinical/evidence",
|
||||
patterns: ["**/*.md"],
|
||||
max_bytes: 10 * 1024 * 1024,
|
||||
},
|
||||
@@ -397,7 +397,7 @@ test("keeps evidence optional on schema v3", () => {
|
||||
test("serializes defaulted evidence canonically and parses it without loss", () => {
|
||||
const canonical = validateWorkspaceDescriptor(withEvidence({
|
||||
type: "filesystem",
|
||||
uri: "workspace-content/psd-clinical/evidence",
|
||||
uri: "psd-clinical/evidence",
|
||||
}));
|
||||
if (canonical.workspace.schema_version !== 3) throw new Error("expected schema v3");
|
||||
|
||||
@@ -405,16 +405,16 @@ test("serializes defaulted evidence canonically and parses it without loss", ()
|
||||
});
|
||||
|
||||
const invalidFilesystemPaths = [
|
||||
"/workspace-content/psd-clinical/evidence",
|
||||
"workspace-content/../psd-clinical/evidence",
|
||||
"workspace-content/./psd-clinical/evidence",
|
||||
"workspace-content//psd-clinical/evidence",
|
||||
"workspace-content/psd-clinical/evidence/..",
|
||||
"workspace-content\\psd-clinical\\evidence",
|
||||
"workspace-content/psd-clinical/evidence\u0000",
|
||||
"workspace-content/other-workspace/evidence",
|
||||
"workspace-content/psd-clinical",
|
||||
"workspace-content/psd-clinical/evidence/nested",
|
||||
"/psd-clinical/evidence",
|
||||
"../psd-clinical/evidence",
|
||||
"./psd-clinical/evidence",
|
||||
"/psd-clinical/evidence",
|
||||
"psd-clinical/evidence/..",
|
||||
"\\psd-clinical\\evidence",
|
||||
"psd-clinical/evidence\u0000",
|
||||
"other-workspace/evidence",
|
||||
"psd-clinical",
|
||||
"psd-clinical/evidence/nested",
|
||||
];
|
||||
|
||||
test.each(invalidFilesystemPaths)("rejects unsafe or noncanonical filesystem URI %#", (uri) => {
|
||||
@@ -426,27 +426,27 @@ const invalidPatterns = ["", "/absolute", "../escape", ".", "folder/./file", "fo
|
||||
test.each(invalidPatterns)("rejects unsafe evidence glob %#", (pattern) => {
|
||||
expectSafeEvidenceError(withEvidence({
|
||||
type: "filesystem",
|
||||
uri: "workspace-content/psd-clinical/evidence",
|
||||
uri: "psd-clinical/evidence",
|
||||
patterns: [pattern],
|
||||
}), /evidence.*source.*patterns/i);
|
||||
});
|
||||
|
||||
test("rejects empty and duplicate filesystem patterns", () => {
|
||||
const source = { type: "filesystem", uri: "workspace-content/psd-clinical/evidence" };
|
||||
const source = { type: "filesystem", uri: "psd-clinical/evidence" };
|
||||
expectSafeEvidenceError(withEvidence({ ...source, patterns: [] }), /patterns/i);
|
||||
expectSafeEvidenceError(withEvidence({ ...source, patterns: ["**/*.pdf", "**/*.pdf"] }), /patterns/i);
|
||||
});
|
||||
|
||||
test.each(["ftp", "git", "unknown"])("rejects unsupported evidence discriminator %s", (type) => {
|
||||
expectSafeEvidenceError(withEvidence({ type, uri: "workspace-content/psd-clinical/evidence" }), /evidence.*source.*type/i);
|
||||
expectSafeEvidenceError(withEvidence({ type, uri: "psd-clinical/evidence" }), /evidence.*source.*type/i);
|
||||
});
|
||||
|
||||
test("rejects unknown evidence keys", () => {
|
||||
expectSafeEvidenceError({ ...withEvidence({
|
||||
type: "filesystem",
|
||||
uri: "workspace-content/psd-clinical/evidence",
|
||||
uri: "psd-clinical/evidence",
|
||||
}), evidence: {
|
||||
source: { type: "filesystem", uri: "workspace-content/psd-clinical/evidence", mystery: true },
|
||||
source: { type: "filesystem", uri: "psd-clinical/evidence", mystery: true },
|
||||
policy: explicitPolicy,
|
||||
mystery: true,
|
||||
} }, /unrecognized|mystery/i);
|
||||
@@ -460,7 +460,7 @@ test.each(credentialFields)("rejects credential-shaped evidence field %s without
|
||||
const canary = `CANARY-${field}-DO-NOT-LEAK`;
|
||||
expectSafeEvidenceError(withEvidence({
|
||||
type: "filesystem",
|
||||
uri: "workspace-content/psd-clinical/evidence",
|
||||
uri: "psd-clinical/evidence",
|
||||
[field]: canary,
|
||||
}), /evidence.*source/i, canary);
|
||||
});
|
||||
@@ -545,6 +545,6 @@ test.each([
|
||||
["retain_published_generations", Number.MAX_SAFE_INTEGER + 1],
|
||||
] as const)("rejects invalid evidence policy bound %s=%s", (field, value) => {
|
||||
expectSafeEvidenceError(withEvidence({
|
||||
type: "filesystem", uri: "workspace-content/psd-clinical/evidence",
|
||||
type: "filesystem", uri: "psd-clinical/evidence",
|
||||
}, { ...explicitPolicy, [field]: value }), new RegExp(field, "i"));
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user