feat: activate workspaces from the root catalog and bootstrap-only publication

This commit is contained in:
2026-08-11 14:49:46 +02:00
parent 86af45acb4
commit 25ec236f1f
10 changed files with 358 additions and 242 deletions
+21 -21
View File
@@ -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"));
});