Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/action-boundary-vectors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,23 @@ on:
- "pilots/action-boundary/**"
- "protocol/canonicalJson.js"
- "docs/action-dispatch-matrix.json"
- "docs/action-dispatch-mutants.json"
- "docs/dispatch-matrix.html"
- "docs/dispatch-matrix.js"
- "test/action-boundary-dispatch-matrix.test.js"
- "test/action-boundary-mutation-proof.test.js"
- "test/dispatch-matrix-view.test.js"
- ".github/workflows/action-boundary-vectors.yml"
pull_request:
paths:
- "pilots/action-boundary/**"
- "protocol/canonicalJson.js"
- "docs/action-dispatch-matrix.json"
- "docs/action-dispatch-mutants.json"
- "docs/dispatch-matrix.html"
- "docs/dispatch-matrix.js"
- "test/action-boundary-dispatch-matrix.test.js"
- "test/action-boundary-mutation-proof.test.js"
- "test/dispatch-matrix-view.test.js"
- ".github/workflows/action-boundary-vectors.yml"

Expand All @@ -41,5 +45,7 @@ jobs:
- run: python3 pilots/action-boundary/verify_vectors.py
- run: node pilots/action-boundary/dispatch-matrix.mjs --check
- run: python3 pilots/action-boundary/verify_dispatch_matrix.py docs/action-dispatch-matrix.json
- run: node pilots/action-boundary/dispatch-mutants.mjs --check
- run: node --test test/action-boundary-dispatch-matrix.test.js
- run: node --test test/action-boundary-mutation-proof.test.js
- run: node --test test/dispatch-matrix-view.test.js
365 changes: 365 additions & 0 deletions docs/action-dispatch-mutants.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,365 @@
{
"protocol": "aml-action-dispatch-mutants/1",
"provenance": "project-authored exact source substitutions and local callbacks",
"limits": "Selected mutations and finite fixtures only. No external side effect, arbitrary bug coverage, outside witness, or formal proof of production safety.",
"boundary_source_sha256": "4a7d72c4df073c669312f614cad109ea487772c852e4cb00880e566fc9ad329f",
"matrix_report_sha256": "3622583d7f5184e43824c3976a589425f9264b8d3e25ae2c9a784841b8d70fa9",
"matrix_vectors": 192,
"resource_probe_reference": {
"execution_status": "blocked",
"reason": "no_exact_rule",
"policy_decision": "deny",
"callback_count": 0
},
"summary": {
"selected_mutants": 7,
"matrix_detected": 6,
"additional_probe_detected": 1,
"undetected": 0
},
"mutations": [
{
"id": "approval_digest_bypass",
"change": "Ignore an approval digest mismatch",
"matrix_changed_rows": 8,
"first_changed_vector": {
"index": 112,
"axes": {
"policy": "requires_approval",
"approval": "mismatch",
"claim": "accept",
"callback": "return"
},
"reference": {
"receipt": {
"protocol": "aml-action-dispatch/1",
"proposal_sha256": "2b22778cd386ab9c452f9ddf4f9f4eee57ea41a89721ac24efdf761946178813",
"policy_decision": "requires_approval",
"execution_status": "blocked",
"reason": "approval_missing_or_mismatched"
},
"approval_requests": 1,
"claim_attempts": 0,
"claims_consumed": 0,
"callback_count": 0,
"fixture_writes": 0,
"callback_target": null,
"caller_target_after": "team@example.test",
"result_target": null
},
"mutant": {
"receipt": {
"protocol": "aml-action-dispatch/1",
"proposal_sha256": "2b22778cd386ab9c452f9ddf4f9f4eee57ea41a89721ac24efdf761946178813",
"policy_decision": "requires_approval",
"execution_status": "dispatched",
"reason": "host_dispatch_returned"
},
"approval_requests": 1,
"claim_attempts": 1,
"claims_consumed": 1,
"callback_count": 1,
"fixture_writes": 0,
"callback_target": "team@example.test",
"caller_target_after": "team@example.test",
"result_target": "team@example.test"
}
},
"resource_probe_changed": false,
"resource_probe_result": {
"execution_status": "blocked",
"reason": "no_exact_rule",
"policy_decision": "deny",
"callback_count": 0
}
},
{
"id": "one_use_claim_bypass",
"change": "Skip the host's one-use approval claim",
"matrix_changed_rows": 16,
"first_changed_vector": {
"index": 96,
"axes": {
"policy": "requires_approval",
"approval": "match",
"claim": "accept",
"callback": "return"
},
"reference": {
"receipt": {
"protocol": "aml-action-dispatch/1",
"proposal_sha256": "2b22778cd386ab9c452f9ddf4f9f4eee57ea41a89721ac24efdf761946178813",
"policy_decision": "requires_approval",
"execution_status": "dispatched",
"reason": "host_dispatch_returned"
},
"approval_requests": 1,
"claim_attempts": 1,
"claims_consumed": 1,
"callback_count": 1,
"fixture_writes": 0,
"callback_target": "team@example.test",
"caller_target_after": "team@example.test",
"result_target": "team@example.test"
},
"mutant": {
"receipt": {
"protocol": "aml-action-dispatch/1",
"proposal_sha256": "2b22778cd386ab9c452f9ddf4f9f4eee57ea41a89721ac24efdf761946178813",
"policy_decision": "requires_approval",
"execution_status": "dispatched",
"reason": "host_dispatch_returned"
},
"approval_requests": 1,
"claim_attempts": 0,
"claims_consumed": 0,
"callback_count": 1,
"fixture_writes": 0,
"callback_target": "team@example.test",
"caller_target_after": "team@example.test",
"result_target": "team@example.test"
}
},
"resource_probe_changed": false,
"resource_probe_result": {
"execution_status": "blocked",
"reason": "no_exact_rule",
"policy_decision": "deny",
"callback_count": 0
}
},
{
"id": "post_approval_policy_bypass",
"change": "Skip policy recheck after the approval callback",
"matrix_changed_rows": 8,
"first_changed_vector": {
"index": 128,
"axes": {
"policy": "requires_approval",
"approval": "revoke",
"claim": "accept",
"callback": "return"
},
"reference": {
"receipt": {
"protocol": "aml-action-dispatch/1",
"proposal_sha256": "2b22778cd386ab9c452f9ddf4f9f4eee57ea41a89721ac24efdf761946178813",
"policy_decision": "requires_approval",
"execution_status": "blocked",
"reason": "policy_changed"
},
"approval_requests": 1,
"claim_attempts": 0,
"claims_consumed": 0,
"callback_count": 0,
"fixture_writes": 0,
"callback_target": null,
"caller_target_after": "team@example.test",
"result_target": null
},
"mutant": {
"receipt": {
"protocol": "aml-action-dispatch/1",
"proposal_sha256": "2b22778cd386ab9c452f9ddf4f9f4eee57ea41a89721ac24efdf761946178813",
"policy_decision": "requires_approval",
"execution_status": "blocked",
"reason": "policy_changed"
},
"approval_requests": 1,
"claim_attempts": 1,
"claims_consumed": 1,
"callback_count": 0,
"fixture_writes": 0,
"callback_target": null,
"caller_target_after": "team@example.test",
"result_target": null
}
},
"resource_probe_changed": false,
"resource_probe_result": {
"execution_status": "blocked",
"reason": "no_exact_rule",
"policy_decision": "deny",
"callback_count": 0
}
},
{
"id": "post_claim_policy_bypass",
"change": "Skip policy recheck after the claim callback",
"matrix_changed_rows": 4,
"first_changed_vector": {
"index": 102,
"axes": {
"policy": "requires_approval",
"approval": "match",
"claim": "revoke_after_consume",
"callback": "return"
},
"reference": {
"receipt": {
"protocol": "aml-action-dispatch/1",
"proposal_sha256": "2b22778cd386ab9c452f9ddf4f9f4eee57ea41a89721ac24efdf761946178813",
"policy_decision": "requires_approval",
"execution_status": "blocked",
"reason": "policy_changed"
},
"approval_requests": 1,
"claim_attempts": 1,
"claims_consumed": 1,
"callback_count": 0,
"fixture_writes": 0,
"callback_target": null,
"caller_target_after": "team@example.test",
"result_target": null
},
"mutant": {
"receipt": {
"protocol": "aml-action-dispatch/1",
"proposal_sha256": "2b22778cd386ab9c452f9ddf4f9f4eee57ea41a89721ac24efdf761946178813",
"policy_decision": "requires_approval",
"execution_status": "dispatched",
"reason": "host_dispatch_returned"
},
"approval_requests": 1,
"claim_attempts": 1,
"claims_consumed": 1,
"callback_count": 1,
"fixture_writes": 0,
"callback_target": "team@example.test",
"caller_target_after": "team@example.test",
"result_target": "team@example.test"
}
},
"resource_probe_changed": false,
"resource_probe_result": {
"execution_status": "blocked",
"reason": "no_exact_rule",
"policy_decision": "deny",
"callback_count": 0
}
},
{
"id": "mutable_dispatch_target",
"change": "Pass the caller's mutable object to the host callback",
"matrix_changed_rows": 2,
"first_changed_vector": {
"index": 136,
"axes": {
"policy": "requires_approval",
"approval": "mutate_caller",
"claim": "accept",
"callback": "return"
},
"reference": {
"receipt": {
"protocol": "aml-action-dispatch/1",
"proposal_sha256": "2b22778cd386ab9c452f9ddf4f9f4eee57ea41a89721ac24efdf761946178813",
"policy_decision": "requires_approval",
"execution_status": "dispatched",
"reason": "host_dispatch_returned"
},
"approval_requests": 1,
"claim_attempts": 1,
"claims_consumed": 1,
"callback_count": 1,
"fixture_writes": 0,
"callback_target": "team@example.test",
"caller_target_after": "other@example.test",
"result_target": "team@example.test"
},
"mutant": {
"receipt": {
"protocol": "aml-action-dispatch/1",
"proposal_sha256": "2b22778cd386ab9c452f9ddf4f9f4eee57ea41a89721ac24efdf761946178813",
"policy_decision": "requires_approval",
"execution_status": "dispatched",
"reason": "host_dispatch_returned"
},
"approval_requests": 1,
"claim_attempts": 1,
"claims_consumed": 1,
"callback_count": 1,
"fixture_writes": 0,
"callback_target": "other@example.test",
"caller_target_after": "other@example.test",
"result_target": "other@example.test"
}
},
"resource_probe_changed": false,
"resource_probe_result": {
"execution_status": "blocked",
"reason": "no_exact_rule",
"policy_decision": "deny",
"callback_count": 0
}
},
{
"id": "false_blocked_receipt",
"change": "Call an uncertain callback failure blocked",
"matrix_changed_rows": 26,
"first_changed_vector": {
"index": 49,
"axes": {
"policy": "allow",
"approval": "match",
"claim": "accept",
"callback": "throw_after_write"
},
"reference": {
"receipt": {
"protocol": "aml-action-dispatch/1",
"proposal_sha256": "2b22778cd386ab9c452f9ddf4f9f4eee57ea41a89721ac24efdf761946178813",
"policy_decision": "allow",
"execution_status": "unknown",
"reason": "host_dispatch_error"
},
"approval_requests": 0,
"claim_attempts": 0,
"claims_consumed": 0,
"callback_count": 1,
"fixture_writes": 1,
"callback_target": "team@example.test",
"caller_target_after": "team@example.test",
"result_target": null
},
"mutant": {
"receipt": {
"protocol": "aml-action-dispatch/1",
"proposal_sha256": "2b22778cd386ab9c452f9ddf4f9f4eee57ea41a89721ac24efdf761946178813",
"policy_decision": "allow",
"execution_status": "blocked",
"reason": "host_dispatch_error"
},
"approval_requests": 0,
"claim_attempts": 0,
"claims_consumed": 0,
"callback_count": 1,
"fixture_writes": 1,
"callback_target": "team@example.test",
"caller_target_after": "team@example.test",
"result_target": null
}
},
"resource_probe_changed": false,
"resource_probe_result": {
"execution_status": "blocked",
"reason": "no_exact_rule",
"policy_decision": "deny",
"callback_count": 0
}
},
{
"id": "resource_wildcard",
"change": "Accept a policy rule for another resource",
"matrix_changed_rows": 0,
"first_changed_vector": null,
"resource_probe_changed": true,
"resource_probe_result": {
"execution_status": "dispatched",
"reason": "host_dispatch_returned",
"policy_decision": "allow",
"callback_count": 1
}
}
]
}
Loading
Loading