855 lines
18 KiB
JSON
855 lines
18 KiB
JSON
{
|
|
"fixtureVersion": 1,
|
|
"warning": "Synthetic model assumptions only; no runtime truth or enforcement established.",
|
|
"cases": [
|
|
{
|
|
"name": "exact-reference",
|
|
"kind": "reference",
|
|
"input": {
|
|
"reference": {
|
|
"kind": "task",
|
|
"id": "task-a",
|
|
"scope": "workspace-a",
|
|
"revision": 1,
|
|
"digest": "synthetic-digest-a"
|
|
},
|
|
"target": {
|
|
"kind": "task",
|
|
"id": "task-a",
|
|
"scope": "workspace-a",
|
|
"revision": 1,
|
|
"digest": "synthetic-digest-a"
|
|
},
|
|
"pruned": false
|
|
},
|
|
"expected": true
|
|
},
|
|
{
|
|
"name": "wrong-reference-kind",
|
|
"kind": "reference",
|
|
"input": {
|
|
"reference": {
|
|
"kind": "task",
|
|
"id": "task-a",
|
|
"scope": "workspace-a",
|
|
"revision": 1,
|
|
"digest": "synthetic-digest-a"
|
|
},
|
|
"target": {
|
|
"kind": "mission",
|
|
"id": "task-a",
|
|
"scope": "workspace-a",
|
|
"revision": 1,
|
|
"digest": "synthetic-digest-a"
|
|
},
|
|
"pruned": false
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "wrong-reference-id",
|
|
"kind": "reference",
|
|
"input": {
|
|
"reference": {
|
|
"kind": "task",
|
|
"id": "task-a",
|
|
"scope": "workspace-a",
|
|
"revision": 1,
|
|
"digest": "synthetic-digest-a"
|
|
},
|
|
"target": {
|
|
"kind": "task",
|
|
"id": "task-b",
|
|
"scope": "workspace-a",
|
|
"revision": 1,
|
|
"digest": "synthetic-digest-a"
|
|
},
|
|
"pruned": false
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "wrong-reference-scope",
|
|
"kind": "reference",
|
|
"input": {
|
|
"reference": {
|
|
"kind": "task",
|
|
"id": "task-a",
|
|
"scope": "workspace-a",
|
|
"revision": 1,
|
|
"digest": "synthetic-digest-a"
|
|
},
|
|
"target": {
|
|
"kind": "task",
|
|
"id": "task-a",
|
|
"scope": "workspace-b",
|
|
"revision": 1,
|
|
"digest": "synthetic-digest-a"
|
|
},
|
|
"pruned": false
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "wrong-reference-revision",
|
|
"kind": "reference",
|
|
"input": {
|
|
"reference": {
|
|
"kind": "task",
|
|
"id": "task-a",
|
|
"scope": "workspace-a",
|
|
"revision": 1,
|
|
"digest": "synthetic-digest-a"
|
|
},
|
|
"target": {
|
|
"kind": "task",
|
|
"id": "task-a",
|
|
"scope": "workspace-a",
|
|
"revision": 2,
|
|
"digest": "synthetic-digest-a"
|
|
},
|
|
"pruned": false
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "wrong-reference-digest",
|
|
"kind": "reference",
|
|
"input": {
|
|
"reference": {
|
|
"kind": "task",
|
|
"id": "task-a",
|
|
"scope": "workspace-a",
|
|
"revision": 1,
|
|
"digest": "synthetic-digest-a"
|
|
},
|
|
"target": {
|
|
"kind": "task",
|
|
"id": "task-a",
|
|
"scope": "workspace-a",
|
|
"revision": 1,
|
|
"digest": "synthetic-digest-b"
|
|
},
|
|
"pruned": false
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "missing-reference",
|
|
"kind": "reference",
|
|
"input": {
|
|
"reference": {
|
|
"kind": "task",
|
|
"id": "task-a",
|
|
"scope": "workspace-a",
|
|
"revision": 1,
|
|
"digest": "synthetic-digest-a"
|
|
},
|
|
"target": null,
|
|
"pruned": false
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "pruned-is-not-current-evidence",
|
|
"kind": "reference",
|
|
"input": {
|
|
"reference": {
|
|
"kind": "task",
|
|
"id": "task-a",
|
|
"scope": "workspace-a",
|
|
"revision": 1,
|
|
"digest": "synthetic-digest-a"
|
|
},
|
|
"target": {
|
|
"kind": "task",
|
|
"id": "task-a",
|
|
"scope": "workspace-a",
|
|
"revision": 1,
|
|
"digest": "synthetic-digest-a"
|
|
},
|
|
"pruned": true
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "all-layers-allow",
|
|
"kind": "permission",
|
|
"input": {
|
|
"authenticated": true,
|
|
"intentCurrent": true,
|
|
"assigned": true,
|
|
"operation": "file.change",
|
|
"layers": {
|
|
"agent": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"project": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"workspace": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"mission": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"task": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"execution": [
|
|
"file.read",
|
|
"file.change"
|
|
]
|
|
}
|
|
},
|
|
"expected": true
|
|
},
|
|
{
|
|
"name": "deny-authenticated",
|
|
"kind": "permission",
|
|
"input": {
|
|
"authenticated": false,
|
|
"intentCurrent": true,
|
|
"assigned": true,
|
|
"operation": "file.change",
|
|
"layers": {
|
|
"agent": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"project": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"workspace": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"mission": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"task": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"execution": [
|
|
"file.read",
|
|
"file.change"
|
|
]
|
|
}
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "deny-intentCurrent",
|
|
"kind": "permission",
|
|
"input": {
|
|
"authenticated": true,
|
|
"intentCurrent": false,
|
|
"assigned": true,
|
|
"operation": "file.change",
|
|
"layers": {
|
|
"agent": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"project": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"workspace": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"mission": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"task": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"execution": [
|
|
"file.read",
|
|
"file.change"
|
|
]
|
|
}
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "deny-assigned",
|
|
"kind": "permission",
|
|
"input": {
|
|
"authenticated": true,
|
|
"intentCurrent": true,
|
|
"assigned": false,
|
|
"operation": "file.change",
|
|
"layers": {
|
|
"agent": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"project": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"workspace": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"mission": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"task": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"execution": [
|
|
"file.read",
|
|
"file.change"
|
|
]
|
|
}
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "missing-required-agent",
|
|
"kind": "permission",
|
|
"input": {
|
|
"authenticated": true,
|
|
"intentCurrent": true,
|
|
"assigned": true,
|
|
"operation": "file.change",
|
|
"layers": {
|
|
"agent": null,
|
|
"project": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"workspace": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"mission": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"task": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"execution": [
|
|
"file.read",
|
|
"file.change"
|
|
]
|
|
}
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "missing-required-project",
|
|
"kind": "permission",
|
|
"input": {
|
|
"authenticated": true,
|
|
"intentCurrent": true,
|
|
"assigned": true,
|
|
"operation": "file.change",
|
|
"layers": {
|
|
"agent": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"project": null,
|
|
"workspace": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"mission": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"task": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"execution": [
|
|
"file.read",
|
|
"file.change"
|
|
]
|
|
}
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "missing-required-workspace",
|
|
"kind": "permission",
|
|
"input": {
|
|
"authenticated": true,
|
|
"intentCurrent": true,
|
|
"assigned": true,
|
|
"operation": "file.change",
|
|
"layers": {
|
|
"agent": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"project": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"workspace": null,
|
|
"mission": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"task": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"execution": [
|
|
"file.read",
|
|
"file.change"
|
|
]
|
|
}
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "missing-required-mission",
|
|
"kind": "permission",
|
|
"input": {
|
|
"authenticated": true,
|
|
"intentCurrent": true,
|
|
"assigned": true,
|
|
"operation": "file.change",
|
|
"layers": {
|
|
"agent": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"project": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"workspace": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"mission": null,
|
|
"task": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"execution": [
|
|
"file.read",
|
|
"file.change"
|
|
]
|
|
}
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "missing-required-task",
|
|
"kind": "permission",
|
|
"input": {
|
|
"authenticated": true,
|
|
"intentCurrent": true,
|
|
"assigned": true,
|
|
"operation": "file.change",
|
|
"layers": {
|
|
"agent": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"project": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"workspace": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"mission": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"task": null,
|
|
"execution": [
|
|
"file.read",
|
|
"file.change"
|
|
]
|
|
}
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "missing-required-execution",
|
|
"kind": "permission",
|
|
"input": {
|
|
"authenticated": true,
|
|
"intentCurrent": true,
|
|
"assigned": true,
|
|
"operation": "file.change",
|
|
"layers": {
|
|
"agent": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"project": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"workspace": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"mission": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"task": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"execution": null
|
|
}
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "no-cross-assignment-union",
|
|
"kind": "permission",
|
|
"input": {
|
|
"authenticated": true,
|
|
"intentCurrent": true,
|
|
"assigned": true,
|
|
"operation": "file.change",
|
|
"layers": {
|
|
"agent": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"project": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"workspace": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"mission": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"task": [
|
|
"file.read"
|
|
],
|
|
"execution": [
|
|
"file.read",
|
|
"file.change"
|
|
]
|
|
},
|
|
"otherAssignment": [
|
|
"file.change"
|
|
]
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "taskless-scoped-read",
|
|
"kind": "permission",
|
|
"input": {
|
|
"authenticated": true,
|
|
"intentCurrent": true,
|
|
"assigned": false,
|
|
"operation": "file.read",
|
|
"layers": {
|
|
"agent": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"project": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"workspace": [
|
|
"file.read",
|
|
"file.change"
|
|
],
|
|
"execution": [
|
|
"file.read",
|
|
"file.change"
|
|
]
|
|
}
|
|
},
|
|
"expected": true
|
|
},
|
|
{
|
|
"name": "descendant",
|
|
"kind": "path",
|
|
"input": {
|
|
"path": "src/a.js",
|
|
"grants": [
|
|
"src"
|
|
]
|
|
},
|
|
"expected": true
|
|
},
|
|
{
|
|
"name": "prefix-is-not-ancestor",
|
|
"kind": "path",
|
|
"input": {
|
|
"path": "src-other/a.js",
|
|
"grants": [
|
|
"src"
|
|
]
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "root-explicit",
|
|
"kind": "path",
|
|
"input": {
|
|
"path": "docs/a.md",
|
|
"grants": [
|
|
null
|
|
]
|
|
},
|
|
"expected": true
|
|
},
|
|
{
|
|
"name": "empty-grant",
|
|
"kind": "path",
|
|
"input": {
|
|
"path": "src/a.js",
|
|
"grants": []
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "parent-traversal",
|
|
"kind": "path",
|
|
"input": {
|
|
"path": "src/../secret",
|
|
"grants": [
|
|
"src"
|
|
]
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "independent-acceptance",
|
|
"kind": "acceptance",
|
|
"input": {
|
|
"reviewerAuthorized": true,
|
|
"reviewer": "reviewer-a",
|
|
"authors": [
|
|
"author-a"
|
|
],
|
|
"requiredCriteria": [
|
|
"criterion-a"
|
|
],
|
|
"verifiedCriteria": [
|
|
"criterion-a"
|
|
]
|
|
},
|
|
"expected": true
|
|
},
|
|
{
|
|
"name": "refuse-acceptance-reviewer",
|
|
"kind": "acceptance",
|
|
"input": {
|
|
"reviewerAuthorized": true,
|
|
"reviewer": "author-a",
|
|
"authors": [
|
|
"author-a"
|
|
],
|
|
"requiredCriteria": [
|
|
"criterion-a"
|
|
],
|
|
"verifiedCriteria": [
|
|
"criterion-a"
|
|
]
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "refuse-acceptance-reviewerAuthorized",
|
|
"kind": "acceptance",
|
|
"input": {
|
|
"reviewerAuthorized": false,
|
|
"reviewer": "reviewer-a",
|
|
"authors": [
|
|
"author-a"
|
|
],
|
|
"requiredCriteria": [
|
|
"criterion-a"
|
|
],
|
|
"verifiedCriteria": [
|
|
"criterion-a"
|
|
]
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "refuse-acceptance-verifiedCriteria",
|
|
"kind": "acceptance",
|
|
"input": {
|
|
"reviewerAuthorized": true,
|
|
"reviewer": "reviewer-a",
|
|
"authors": [
|
|
"author-a"
|
|
],
|
|
"requiredCriteria": [
|
|
"criterion-a"
|
|
],
|
|
"verifiedCriteria": []
|
|
},
|
|
"expected": false
|
|
},
|
|
{
|
|
"name": "duplicate-launch",
|
|
"kind": "claim",
|
|
"input": {
|
|
"events": [
|
|
{
|
|
"operation": "launch"
|
|
},
|
|
{
|
|
"operation": "launch"
|
|
}
|
|
]
|
|
},
|
|
"expected": [
|
|
true,
|
|
false
|
|
]
|
|
},
|
|
{
|
|
"name": "audit-failure-before-effect",
|
|
"kind": "claim",
|
|
"input": {
|
|
"events": [
|
|
{
|
|
"operation": "audit-failed"
|
|
},
|
|
{
|
|
"operation": "launch"
|
|
}
|
|
]
|
|
},
|
|
"expected": [
|
|
false
|
|
]
|
|
},
|
|
{
|
|
"name": "idle-is-not-reaped",
|
|
"kind": "claim",
|
|
"input": {
|
|
"events": [
|
|
{
|
|
"operation": "launch"
|
|
},
|
|
{
|
|
"operation": "engine-idle"
|
|
},
|
|
{
|
|
"operation": "launch"
|
|
}
|
|
]
|
|
},
|
|
"expected": [
|
|
true,
|
|
false
|
|
]
|
|
},
|
|
{
|
|
"name": "uncertain-effects-block-replacement",
|
|
"kind": "claim",
|
|
"input": {
|
|
"events": [
|
|
{
|
|
"operation": "launch"
|
|
},
|
|
{
|
|
"operation": "uncertain-effects"
|
|
},
|
|
{
|
|
"operation": "launch"
|
|
}
|
|
]
|
|
},
|
|
"expected": [
|
|
true,
|
|
false
|
|
]
|
|
},
|
|
{
|
|
"name": "recovery-needs-audit",
|
|
"kind": "claim",
|
|
"input": {
|
|
"events": [
|
|
{
|
|
"operation": "launch"
|
|
},
|
|
{
|
|
"operation": "audit-failed"
|
|
},
|
|
{
|
|
"operation": "verified-stopped-and-reconciled"
|
|
},
|
|
{
|
|
"operation": "launch"
|
|
}
|
|
]
|
|
},
|
|
"expected": [
|
|
true,
|
|
false
|
|
]
|
|
},
|
|
{
|
|
"name": "recovery-invalidates-old-input",
|
|
"kind": "claim",
|
|
"input": {
|
|
"events": [
|
|
{
|
|
"operation": "launch"
|
|
},
|
|
{
|
|
"operation": "uncertain-effects"
|
|
},
|
|
{
|
|
"operation": "verified-stopped-and-reconciled"
|
|
},
|
|
{
|
|
"operation": "launch"
|
|
},
|
|
{
|
|
"operation": "input",
|
|
"generation": 1
|
|
},
|
|
{
|
|
"operation": "input",
|
|
"generation": 2
|
|
}
|
|
]
|
|
},
|
|
"expected": [
|
|
true,
|
|
true,
|
|
false,
|
|
true
|
|
]
|
|
}
|
|
]
|
|
}
|