tighten deployment profile artifact vocabulary

This commit is contained in:
Eve
2026-05-08 12:44:27 +08:00
parent c19fd21aab
commit cfdb49d5a2
2 changed files with 121 additions and 5 deletions

View File

@@ -69,8 +69,10 @@ spec:
audit:
portableArtifactsRequired: true
requiredArtifacts:
- canonical_events
- queue_items
- bridge_receipts
- profile_snapshot
capability_expectations:
required:
- create_queue_items
@@ -113,7 +115,7 @@ test('deployment profile schema validator rejects malformed profile', () => {
operatorVisibleRecoveryRequired: true,
allowedTerminalStates: ['acked'],
},
audit: { portableArtifactsRequired: true, requiredArtifacts: ['queue_items'] },
audit: { portableArtifactsRequired: true, requiredArtifacts: ['canonical_events', 'queue_items', 'bridge_receipts'] },
capability_expectations: { required: [] },
},
}),
@@ -143,7 +145,7 @@ test('deployment profile schema validator rejects tightened semantic violations'
},
audit: {
portableArtifactsRequired: true,
requiredArtifacts: ['queue_items'],
requiredArtifacts: ['canonical_events', 'queue_items', 'bridge_receipts'],
},
capability_expectations: { required: [] },
},
@@ -198,13 +200,83 @@ test('deployment profile schema validator rejects tightened semantic violations'
...validBase.spec,
audit: {
portableArtifactsRequired: 'true',
requiredArtifacts: ['queue_items'],
requiredArtifacts: ['canonical_events', 'queue_items', 'bridge_receipts'],
},
},
}),
/deployment profile schema validation failed: .*\/spec\/audit\/portableArtifactsRequired must be boolean/
);
assert.throws(
() => validateDeploymentProfileSchema({
...validBase,
spec: {
...validBase.spec,
notifications: {
operatorVisibleRecoveryRequired: true,
allowedTerminalStates: [],
},
},
}),
/deployment profile schema validation failed: .*\/spec\/notifications\/allowedTerminalStates must NOT have fewer than 1 items/
);
assert.throws(
() => validateDeploymentProfileSchema({
...validBase,
spec: {
...validBase.spec,
notifications: {
operatorVisibleRecoveryRequired: true,
allowedTerminalStates: ['acked', 'acked'],
},
},
}),
/deployment profile schema validation failed: .*\/spec\/notifications\/allowedTerminalStates must NOT have duplicate items/
);
assert.throws(
() => validateDeploymentProfileSchema({
...validBase,
spec: {
...validBase.spec,
audit: {
portableArtifactsRequired: true,
requiredArtifacts: ['canonical_events', 'queue_items', 'queue_items', 'bridge_receipts'],
},
},
}),
/deployment profile schema validation failed: .*\/spec\/audit\/requiredArtifacts must NOT have duplicate items/
);
assert.throws(
() => validateDeploymentProfileSchema({
...validBase,
spec: {
...validBase.spec,
audit: {
portableArtifactsRequired: true,
requiredArtifacts: ['queue_items', 'bridge_receipts'],
},
},
}),
/deployment profile schema validation failed: .*\/spec\/audit\/requiredArtifacts must contain at least 1 valid item\(s\)/
);
assert.throws(
() => validateDeploymentProfileSchema({
...validBase,
spec: {
...validBase.spec,
audit: {
portableArtifactsRequired: true,
requiredArtifacts: ['canonical_events', 'queue_items', 'bridge_receipts', 'made_up_artifact'],
},
},
}),
/deployment profile schema validation failed: .*\/spec\/audit\/requiredArtifacts\/3 must be equal to one of the allowed values/
);
assert.throws(
() => validateDeploymentProfileSchema({
...validBase,
@@ -322,7 +394,9 @@ spec:
audit:
portableArtifactsRequired: true
requiredArtifacts:
- canonical_events
- queue_items
- bridge_receipts
capability_expectations:
required: []
`, 'utf8');