docs: record accepted phase-2 foundation contract
This commit is contained in:
@@ -0,0 +1,854 @@
|
||||
{
|
||||
"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
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user