{
  "fixture": "agent-guard-approval-proof",
  "fixtureVersion": 1,
  "package": {
    "name": "@shieldaai/agent-guard",
    "version": "0.1.0-alpha.2"
  },
  "runtime": "v26.12.0",
  "testClock": "2026-11-04T12:00:00.000Z",
  "scope": "Embedded core, one process, synthetic operator, synchronous in-memory deployment adapter. No LLM, network or real deployment.",
  "cases": [
    {
      "id": "caller-mutation-does-not-change-approved-action",
      "originallyApprovedRevision": "r17",
      "callerArgumentsAfterMutation": "r99",
      "outcome": "SUCCEEDED",
      "handlerCalls": 1,
      "effects": 1,
      "value": {
        "deployedRevision": "r17"
      }
    },
    {
      "id": "approval-reused-for-another-prepared-action",
      "approvedRevision": "r18",
      "requestedRevision": "r19",
      "outcome": "APPROVAL_INVALID",
      "handlerCalls": 0,
      "effects": 0
    },
    {
      "id": "original-approved-action-still-works",
      "outcome": "SUCCEEDED",
      "handlerCalls": 1,
      "effects": 1,
      "value": {
        "deployedRevision": "r18"
      }
    },
    {
      "id": "replay-of-dispatched-action",
      "outcome": "ACTION_USED",
      "handlerCalls": 0,
      "effects": 0
    },
    {
      "id": "resource-changed-after-approval",
      "approvedResourceVersion": "config-v1",
      "currentResourceVersion": "config-v2",
      "enforcement": "trusted-adapter",
      "outcome": "TOOL_FAILED",
      "handlerCalls": 1,
      "effects": 0
    },
    {
      "id": "fresh-preparation-and-approval",
      "approvedResourceVersion": "config-v2",
      "outcome": "SUCCEEDED",
      "handlerCalls": 1,
      "effects": 1,
      "value": {
        "deployedRevision": "r20"
      }
    }
  ],
  "totals": {
    "handlerCalls": 4,
    "effects": 3,
    "chargedCalls": 4
  },
  "effects": [
    {
      "revision": "r17",
      "configurationVersion": "config-v1"
    },
    {
      "revision": "r18",
      "configurationVersion": "config-v1"
    },
    {
      "revision": "r20",
      "configurationVersion": "config-v2"
    }
  ],
  "adapterRejections": [
    {
      "approved": "config-v1",
      "current": "config-v2"
    }
  ],
  "limitations": [
    "The host simulates an already authenticated reviewer; this fixture does not test identity authentication.",
    "The resource-version rejection is implemented by the trusted handler. The core binds the version into the approved action but does not query the service again.",
    "A real resource service must compare the approved version atomically with its side effect.",
    "This uses the embedded in-memory core and does not test restart durability or distributed enforcement.",
    "Six scripted cases are not a detection-rate benchmark."
  ]
}
