@armoriq/policy-ir 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../vectors/canonical.json","../vectors/hash.json","../vectors/schema-hash-vectors.json","../vectors/evaluate.json","../vectors/document.json","../vectors/compile.json","../src/vectors.ts"],"sourcesContent":["[\n {\n \"name\": \"empty object\",\n \"input\": {},\n \"canonical\": \"{}\"\n },\n {\n \"name\": \"keys sorted bytewise\",\n \"input\": {\n \"9\": 6,\n \"10\": 5,\n \"b\": 1,\n \"a\": 2,\n \"B\": 3,\n \"_\": 4\n },\n \"canonical\": \"{\\\"10\\\":5,\\\"9\\\":6,\\\"B\\\":3,\\\"_\\\":4,\\\"a\\\":2,\\\"b\\\":1}\"\n },\n {\n \"name\": \"nested and arrays keep order\",\n \"input\": {\n \"z\": [\n 3,\n 1,\n {\n \"y\": null,\n \"x\": [\n true,\n false\n ]\n }\n ],\n \"a\": \"x\"\n },\n \"canonical\": \"{\\\"a\\\":\\\"x\\\",\\\"z\\\":[3,1,{\\\"x\\\":[true,false],\\\"y\\\":null}]}\"\n },\n {\n \"name\": \"undefined members dropped, null kept\",\n \"input\": {\n \"b\": null,\n \"c\": 0\n },\n \"canonical\": \"{\\\"b\\\":null,\\\"c\\\":0}\"\n },\n {\n \"name\": \"ascii escapes\",\n \"input\": {\n \"s\": \"quote \\\" backslash \\\\ tab \\t newline \\n é ✓ 😀\"\n },\n \"canonical\": \"{\\\"s\\\":\\\"quote \\\\\\\" backslash \\\\\\\\ tab \\\\t newline \\\\n \\\\u00e9 \\\\u2713 \\\\ud83d\\\\ude00\\\"}\"\n },\n {\n \"name\": \"numbers\",\n \"input\": {\n \"i\": 42,\n \"f\": 0.5,\n \"neg\": -1,\n \"exp\": 1e+21,\n \"small\": 1e-7,\n \"zero\": 0,\n \"negzero\": 0\n },\n \"canonical\": \"{\\\"exp\\\":1e+21,\\\"f\\\":0.5,\\\"i\\\":42,\\\"neg\\\":-1,\\\"negzero\\\":0,\\\"small\\\":1e-7,\\\"zero\\\":0}\"\n },\n {\n \"name\": \"unicode key\",\n \"input\": {\n \"ключ\": 1,\n \"key\": 2\n },\n \"canonical\": \"{\\\"key\\\":2,\\\"\\\\u043a\\\\u043b\\\\u044e\\\\u0447\\\":1}\"\n }\n]\n","[\n {\n \"name\": \"hold on create_payment above 5000\",\n \"document\": {\n \"schemaVersion\": \"armor.policy.v2\",\n \"policyId\": \"11111111-1111-4111-8111-111111111111\",\n \"target\": {\n \"agent\": \"d5c85519-3b8e-4f1e-9d2a-000000000001\",\n \"mcpServers\": [\n \"github\"\n ]\n },\n \"layer\": \"agent\",\n \"defaults\": {\n \"tools\": \"hold\",\n \"network\": \"block\",\n \"files\": \"allow\",\n \"skills\": \"allow\"\n },\n \"capture\": {\n \"arguments\": true,\n \"redact\": [\n \"*token*\"\n ],\n \"maxBytesPerCall\": 16384,\n \"sample\": 1\n },\n \"expiresAt\": \"never\",\n \"statements\": [\n {\n \"id\": \"st-pay-hold\",\n \"subject\": null,\n \"match\": {\n \"tool\": \"create_payment\",\n \"keyTier\": \"exact\",\n \"order\": 0\n },\n \"effect\": \"hold\",\n \"conditions\": [\n {\n \"field\": \"args.amount\",\n \"op\": \"gt\",\n \"value\": 5000,\n \"schemaBinding\": {\n \"schemaHash\": \"sha256:1111111111111111111111111111111111111111111111111111111111111111\"\n }\n }\n ],\n \"approval\": {\n \"approvers\": 2,\n \"roles\": [\n \"finance_lead\"\n ]\n },\n \"expiresAt\": \"never\",\n \"provenance\": {\n \"ruleKey\": \"create_payment\",\n \"variant\": 0,\n \"source\": \"yaml\",\n \"layer\": \"agent\"\n }\n },\n {\n \"id\": \"st-files-ssh\",\n \"subject\": null,\n \"match\": {\n \"capability\": \"files\"\n },\n \"effect\": \"block\",\n \"conditions\": [\n {\n \"field\": \"path\",\n \"op\": \"glob\",\n \"value\": \"~/.ssh/**\"\n }\n ],\n \"expiresAt\": \"never\",\n \"provenance\": {\n \"ruleKey\": \"files.deny\",\n \"variant\": 0,\n \"source\": \"yaml\",\n \"layer\": \"agent\"\n }\n }\n ]\n },\n \"policyHash\": \"sha256:007f204da14735e58b74d23a4909ee972d53cc2c8bd293217b71cab3d7b292bb\"\n },\n {\n \"name\": \"org floor with no statements\",\n \"document\": {\n \"schemaVersion\": \"armor.policy.v2\",\n \"policyId\": \"22222222-2222-4222-8222-222222222222\",\n \"target\": {\n \"org\": \"*\"\n },\n \"layer\": \"floor\",\n \"defaults\": {\n \"tools\": \"hold\",\n \"network\": \"block\",\n \"files\": \"allow\",\n \"skills\": \"allow\"\n },\n \"capture\": {\n \"arguments\": false,\n \"redact\": [],\n \"maxBytesPerCall\": 0,\n \"sample\": 0\n },\n \"expiresAt\": \"2027-01-01T00:00:00Z\",\n \"statements\": []\n },\n \"policyHash\": \"sha256:02a98fe3c5263f505f72562a87154fc3bd67f561ffb0f264f7fb5b90bd3d65c4\"\n }\n]\n","{\n \"_comment\": [\n \"Golden vectors for the tool-inventory canonicalizer (Tool Inventory PRD T4, armoriq/conmap-auto#968).\",\n \"Three implementations must agree byte-for-byte: conmap src/tool-inventory/canonical.ts,\",\n \"armoriq-sdk-customer (python) and armoriq-sdk-customer-ts. conmap is the source of truth;\",\n \"each SDK keeps a byte-identical copy of this file plus its sha256 in a sibling .sha256, and a\",\n \"test in each repo asserts the file still hashes to it -- so changing a vector forces all three\",\n \"copies to move together.\",\n \"canonicalJson = sorted keys, compact separators, ensure_ascii escaping. This is NOT RFC 8785;\",\n \"see the header of canonical.ts for why, and vector 5 for the number forms left outside the\",\n \"agreed set.\"\n ],\n \"algorithm\": {\n \"canonicalJson\": \"sorted keys, no whitespace, ASCII-escaped (json.dumps sort_keys=True separators=(',',':') ensure_ascii=True)\",\n \"schemaHash\": \"'sha256:' + sha256_hex(canonicalJson(strip description/title only where they are annotation keywords (never as names under properties/patternProperties/$defs/definitions/dependentSchemas or strings in required, never inside enum/const/default/examples values), resolve local #/ $ref)); null when inputSchema is null\",\n \"manifestHash\": \"'sha256:' + sha256_hex(canonicalJson({name, description|null, annotations|{}, inputSchema|null}))\"\n },\n \"vectors\": [\n {\n \"id\": 1,\n \"name\": \"key-order-irrelevant\",\n \"note\": \"Object keys are sorted, so two spellings that differ only in key order produce identical bytes.\",\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"b\"\n ],\n \"properties\": {\n \"b\": {\n \"type\": \"string\"\n },\n \"a\": {\n \"type\": \"number\"\n }\n }\n },\n \"schemaHash\": \"sha256:597b8b01f9b5b640dd6856455c6156c631bb3e36768be54f79f21c89392c064d\",\n \"equivalentSpellings\": [\n {\n \"properties\": {\n \"a\": {\n \"type\": \"number\"\n },\n \"b\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"b\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n {\n \"id\": 2,\n \"name\": \"nested-description-and-title-stripped\",\n \"note\": \"description and title are removed wherever they are schema annotation keywords, so prose-only edits never move schemaHash. Equals vector 1.\",\n \"inputSchema\": {\n \"title\": \"Thing\",\n \"description\": \"top level prose\",\n \"type\": \"object\",\n \"required\": [\n \"b\"\n ],\n \"properties\": {\n \"a\": {\n \"type\": \"number\",\n \"description\": \"the a\"\n },\n \"b\": {\n \"title\": \"B\",\n \"type\": \"string\",\n \"description\": \"the b\"\n }\n }\n },\n \"schemaHash\": \"sha256:597b8b01f9b5b640dd6856455c6156c631bb3e36768be54f79f21c89392c064d\",\n \"equalsVector\": 1\n },\n {\n \"id\": 3,\n \"name\": \"local-ref-resolved\",\n \"note\": \"A local #/$defs pointer is inlined before hashing, so spelling a shape out and pointing at it hash the same.\",\n \"inputSchema\": {\n \"type\": \"object\",\n \"$defs\": {\n \"Id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z]+$\"\n }\n },\n \"properties\": {\n \"id\": {\n \"$ref\": \"#/$defs/Id\"\n }\n }\n },\n \"schemaHash\": \"sha256:ed8f92e2b3119b897b4c3fb2322e4a94aefb4e345b2520c95ef96459ff532073\"\n },\n {\n \"id\": 4,\n \"name\": \"unicode-including-astral-plane\",\n \"note\": \"Non-ASCII escapes as \\\\uXXXX; an astral-plane character (U+1F600, U+1F680) escapes as its UTF-16 surrogate pair, matching Python ensure_ascii and JS charCodeAt iteration. All keys here are ASCII on purpose: JS sorts keys by UTF-16 code unit and Python by code point, which differ for astral-plane KEYS, so those are outside the agreed set.\",\n \"inputSchema\": {\n \"type\": \"string\",\n \"enum\": [\n \"caf\\u00e9\",\n \"\\u65e5\\u672c\\u8a9e\",\n \"\\ud83d\\ude00\"\n ],\n \"const\": \"na\\u00efve \\ud83d\\ude80\"\n },\n \"schemaHash\": \"sha256:bd1abce15a0b8bcd6e5c0571a22858e1e14d889ed9ffc68fc2c06f4c5c68be40\"\n },\n {\n \"id\": 5,\n \"name\": \"number-forms\",\n \"note\": \"Numbers are emitted by the host JSON writer, not RFC 8785. Integers and decimals are distinct canonical bytes.\",\n \"knownDivergence\": \"A float-valued integer diverges across languages (Python json.dumps(1.0) -> \\\"1.0\\\", JSON.stringify(1.0) -> \\\"1\\\"), as does -0.0 (Python \\\"-0.0\\\", JS \\\"0\\\"). Neither appears in a real JSON Schema, and neither is in this vector: agreeing on them requires a shared number formatter, which is the RFC 8785 migration, not a patch here.\",\n \"inputSchema\": {\n \"type\": \"number\",\n \"multipleOf\": 1,\n \"minimum\": 0,\n \"maximum\": 10,\n \"default\": 2.5,\n \"exclusiveMinimum\": -1\n },\n \"schemaHash\": \"sha256:bcafbb074da1b4c0217c2438646e132ab73398dc1570efd186017abdf21f5029\"\n },\n {\n \"id\": 6,\n \"name\": \"empty-object-schema\",\n \"note\": \"An empty schema {} is a real, hashable schema. It is NOT the same fact as 'no schema' (vector 7).\",\n \"inputSchema\": {},\n \"schemaHash\": \"sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a\"\n },\n {\n \"id\": 7,\n \"name\": \"null-schema-has-no-hash\",\n \"note\": \"No schema at all: schemaHash is null, never the hash of {} and never the hash of the string 'null'. FR-7 warns on exactly this row.\",\n \"inputSchema\": null,\n \"schemaHash\": null,\n \"manifestDoc\": {\n \"name\": \"unschemad_tool\",\n \"description\": \"declared with a name only\"\n },\n \"manifestHash\": \"sha256:61f5054dde7e535542c2e04a739dc78d1341504f798c7642ab9ad29f1b456bee\"\n },\n {\n \"id\": 8,\n \"name\": \"array-order-is-significant\",\n \"note\": \"Canonicalization sorts object keys and never sequences: reordering prefixItems is a different schema.\",\n \"inputSchema\": {\n \"type\": \"array\",\n \"prefixItems\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"boolean\"\n }\n ],\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"null\"\n },\n {\n \"type\": \"string\"\n }\n ]\n }\n },\n \"schemaHash\": \"sha256:9dd8bbfb2bc524842d1203e4f914a5743cceaa228fcf328182f4bc9260fb747e\"\n },\n {\n \"id\": 9,\n \"name\": \"nested-required-arrays\",\n \"note\": \"required lists nested inside properties survive verbatim, order included, at every depth.\",\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"outer\"\n ],\n \"properties\": {\n \"outer\": {\n \"type\": \"object\",\n \"required\": [\n \"z\",\n \"a\"\n ],\n \"properties\": {\n \"z\": {\n \"type\": \"string\"\n },\n \"a\": {\n \"type\": \"object\",\n \"required\": [\n \"q\"\n ],\n \"properties\": {\n \"q\": {\n \"type\": \"integer\"\n }\n }\n }\n }\n }\n }\n },\n \"schemaHash\": \"sha256:864f94090821218ef480510c415eaac315715d2f8ee3be1cbc7517594b51ab13\"\n },\n {\n \"id\": 10,\n \"name\": \"booleans-nulls-and-escaped-strings\",\n \"note\": \"true/false/null literals, and a string carrying a quote, a backslash, a tab, a newline and a control character.\",\n \"inputSchema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"deprecated\": true,\n \"properties\": {\n \"q\": {\n \"type\": \"string\",\n \"default\": \"he said \\\"hi\\\"\\tone\\\\two\\nthree\\u0001\",\n \"const\": null\n }\n }\n },\n \"schemaHash\": \"sha256:f5cdf2e3025ce09cb931b6cc918484a14de97a057e9667874593f0a3bc50877c\"\n },\n {\n \"id\": 11,\n \"name\": \"argument-named-description-is-kept\",\n \"note\": \"`description` and `title` are stripped only as schema annotation keywords, never as argument names under `properties`, `required`, `patternProperties`, `$defs`, `definitions` or `dependentSchemas`. create_ticket(title, description, priority) must NOT hash like create_ticket(priority). The annotation on `priority` is stripped; the two argument names are kept. `equivalentSpellings` differs only in annotation prose and must hash identically; `distinctSpelling` drops the two arguments and must NOT.\",\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\",\n \"title\": \"Title\",\n \"description\": \"Short summary\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Long form body\"\n },\n \"priority\": {\n \"type\": \"integer\",\n \"description\": \"P0-P3\"\n }\n },\n \"required\": [\n \"title\",\n \"description\"\n ]\n },\n \"schemaHash\": \"sha256:996c1f968a21b24a3f171a432a3de33257901beb2d172e3dfa3d345b7e3e6a3c\",\n \"equivalentSpellings\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\",\n \"title\": \"Body\"\n },\n \"priority\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"title\",\n \"description\"\n ]\n }\n ],\n \"distinctSpelling\": {\n \"type\": \"object\",\n \"properties\": {\n \"priority\": {\n \"type\": \"integer\"\n }\n }\n }\n },\n {\n \"id\": 12,\n \"name\": \"real-mcp-input-schema\",\n \"note\": \"A verbatim MCP tools/list inputSchema (GitHub MCP create_issue), prose included, with the manifestHash of the full tool entry.\",\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"owner\": {\n \"type\": \"string\",\n \"description\": \"Repository owner\"\n },\n \"repo\": {\n \"type\": \"string\",\n \"description\": \"Repository name\"\n },\n \"title\": {\n \"type\": \"string\",\n \"description\": \"Issue title\"\n },\n \"body\": {\n \"type\": \"string\",\n \"description\": \"Issue body content\"\n },\n \"assignees\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Usernames to assign\"\n },\n \"labels\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels to apply\"\n },\n \"milestone\": {\n \"type\": \"number\",\n \"description\": \"Milestone number\"\n }\n },\n \"required\": [\n \"owner\",\n \"repo\",\n \"title\"\n ],\n \"additionalProperties\": false,\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"schemaHash\": \"sha256:b06130f66f945f4ca2bc4474340c7f934c5e7b10168978fb8f507ecc146c091b\",\n \"manifestDoc\": {\n \"name\": \"create_issue\",\n \"description\": \"Create a new issue in a GitHub repository\",\n \"annotations\": {\n \"readOnlyHint\": false,\n \"destructiveHint\": false,\n \"idempotentHint\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"owner\": {\n \"type\": \"string\",\n \"description\": \"Repository owner\"\n },\n \"repo\": {\n \"type\": \"string\",\n \"description\": \"Repository name\"\n },\n \"title\": {\n \"type\": \"string\",\n \"description\": \"Issue title\"\n },\n \"body\": {\n \"type\": \"string\",\n \"description\": \"Issue body content\"\n },\n \"assignees\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Usernames to assign\"\n },\n \"labels\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels to apply\"\n },\n \"milestone\": {\n \"type\": \"number\",\n \"description\": \"Milestone number\"\n }\n },\n \"required\": [\n \"owner\",\n \"repo\",\n \"title\"\n ],\n \"additionalProperties\": false,\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n \"manifestHash\": \"sha256:a0bc53dbf453b8c5860924781ddc912d1b118a64adb3ee4b5089bf599b936113\"\n },\n {\n \"id\": 13,\n \"name\": \"data-literals-are-not-schemas\",\n \"note\": \"The values of `enum`, `const`, `default` and `examples` are data, not schema nodes: a `title` or `description` key inside them is part of the value and is kept verbatim. `equivalentSpellings` reorders keys inside the literals only; `distinctSpelling` removes those keys from the literals and must NOT hash equal.\",\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"payload\": {\n \"type\": \"object\",\n \"default\": {\n \"title\": \"Untitled\",\n \"description\": \"\",\n \"priority\": 2\n },\n \"examples\": [\n {\n \"title\": \"First\",\n \"description\": \"Body\"\n }\n ]\n },\n \"kind\": {\n \"type\": \"object\",\n \"enum\": [\n {\n \"title\": \"bug\"\n },\n {\n \"title\": \"task\"\n }\n ],\n \"const\": {\n \"description\": \"fixed\"\n }\n }\n }\n },\n \"schemaHash\": \"sha256:cae41d7dfcc5d51cf9ce1756903979b1fc5754fa8e95a69d9e5bec5df0266dc8\",\n \"equivalentSpellings\": [\n {\n \"properties\": {\n \"kind\": {\n \"const\": {\n \"description\": \"fixed\"\n },\n \"enum\": [\n {\n \"title\": \"bug\"\n },\n {\n \"title\": \"task\"\n }\n ],\n \"type\": \"object\"\n },\n \"payload\": {\n \"examples\": [\n {\n \"description\": \"Body\",\n \"title\": \"First\"\n }\n ],\n \"default\": {\n \"priority\": 2,\n \"description\": \"\",\n \"title\": \"Untitled\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n ],\n \"distinctSpelling\": {\n \"type\": \"object\",\n \"properties\": {\n \"payload\": {\n \"type\": \"object\",\n \"default\": {\n \"priority\": 2\n },\n \"examples\": [\n {}\n ]\n },\n \"kind\": {\n \"type\": \"object\",\n \"enum\": [\n {},\n {}\n ],\n \"const\": {}\n }\n }\n }\n }\n ]\n}\n","[\n {\"id\":\"VE-1\",\"name\":\"absent argument in when falls through to the next variant\",\"bound\":{\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-pay-hold\",\"subject\":null,\"conditions\":[{\"field\":\"args.amount\",\"op\":\"gt\",\"value\":5000,\"schemaBinding\":{\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}}],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"hold\",\"approval\":{\"approvers\":2,\"roles\":[\"finance_lead\"]}},{\"id\":\"st-pay-allow\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":1,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":1},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"create_payment\",\"arguments\":{\"recipient\":\"acme\"},\"timestamp\":\"2026-09-18T12:00:00Z\"},\"expect\":{\"verdict\":\"allow\",\"statementId\":\"st-pay-allow\",\"layer\":\"agent\",\"ruleKey\":\"create_payment\"}},\n {\"id\":\"VE-8\",\"name\":\"hold carries its resolved approval\",\"bound\":{\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-pay-hold\",\"subject\":null,\"conditions\":[{\"field\":\"args.amount\",\"op\":\"gt\",\"value\":5000,\"schemaBinding\":{\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}}],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"hold\",\"approval\":{\"approvers\":2,\"roles\":[\"finance_lead\"]}},{\"id\":\"st-pay-allow\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":1,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":1},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"create_payment\",\"arguments\":{\"amount\":9000},\"timestamp\":\"2026-09-18T12:00:00Z\",\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"},\"expect\":{\"verdict\":\"hold\",\"statementId\":\"st-pay-hold\",\"layer\":\"agent\",\"ruleKey\":\"create_payment\",\"approval\":{\"approvers\":2,\"roles\":[\"finance_lead\"]},\"obligations\":[]}},\n {\"id\":\"VE-2\",\"name\":\"schema drift still evaluates by name and attaches schema_drift\",\"bound\":{\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-pay-hold\",\"subject\":null,\"conditions\":[{\"field\":\"args.amount\",\"op\":\"gt\",\"value\":5000,\"schemaBinding\":{\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}}],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"hold\",\"approval\":{\"approvers\":2,\"roles\":[\"finance_lead\"]}},{\"id\":\"st-pay-allow\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":1,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":1},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"create_payment\",\"arguments\":{\"amount\":9000},\"timestamp\":\"2026-09-18T12:00:00Z\",\"schemaHash\":\"sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\"},\"expect\":{\"verdict\":\"hold\",\"statementId\":\"st-pay-hold\",\"layer\":\"agent\",\"ruleKey\":\"create_payment\",\"obligations\":[{\"type\":\"schema_drift\",\"statementId\":\"st-pay-hold\",\"bound\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"observed\":\"sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\"}]}},\n {\"id\":\"VE-3\",\"name\":\"exact key beats glob key\",\"bound\":{\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-glob\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"mcp__github__*\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"mcp__github__*\",\"keyTier\":\"glob\",\"order\":0},\"effect\":\"allow\"},{\"id\":\"st-exact\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"mcp__github__create_issue\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"mcp__github__create_issue\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"hold\"}]}},\"input\":{\"tool\":\"mcp__github__create_issue\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\"},\"expect\":{\"verdict\":\"hold\",\"statementId\":\"st-exact\",\"layer\":\"agent\",\"ruleKey\":\"mcp__github__create_issue\"}},\n {\"id\":\"VE-3b\",\"name\":\"longer glob beats shorter glob\",\"bound\":{\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-short\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"mcp__*\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"mcp__*\",\"keyTier\":\"glob\",\"order\":0},\"effect\":\"allow\"},{\"id\":\"st-long\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"mcp__github__*\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"mcp__github__*\",\"keyTier\":\"glob\",\"order\":0},\"effect\":\"hold\"}]}},\"input\":{\"tool\":\"mcp__github__delete_repo\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\"},\"expect\":{\"verdict\":\"hold\",\"statementId\":\"st-long\",\"layer\":\"agent\",\"ruleKey\":\"mcp__github__*\"}},\n {\"id\":\"VE-4\",\"name\":\"floor merge: files.deny blocks a Read the agent allows\",\"bound\":{\"floor\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-floor\",\"target\":{\"org\":\"*\"},\"layer\":\"floor\",\"defaults\":{\"tools\":\"allow\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-ssh\",\"subject\":null,\"conditions\":[{\"field\":\"path\",\"op\":\"glob\",\"value\":\"**/.ssh/**\"}],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"files\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"floor\"},\"match\":{\"capability\":\"files\"},\"effect\":\"block\"}]},\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-read\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"Read\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"Read\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"Read\",\"arguments\":{\"file_path\":\"/home/u/.ssh/id_rsa\"},\"timestamp\":\"2026-09-18T12:00:00Z\",\"capabilities\":[\"files\"],\"derived\":{\"path\":\"/home/u/.ssh/id_rsa\"}},\"expect\":{\"verdict\":\"block\",\"statementId\":\"st-ssh\",\"layer\":\"floor\",\"ruleKey\":\"files\"}},\n {\"id\":\"VE-4b\",\"name\":\"floor capability rule does not fire outside its path glob\",\"bound\":{\"floor\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-floor\",\"target\":{\"org\":\"*\"},\"layer\":\"floor\",\"defaults\":{\"tools\":\"allow\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-ssh\",\"subject\":null,\"conditions\":[{\"field\":\"path\",\"op\":\"glob\",\"value\":\"**/.ssh/**\"}],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"files\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"floor\"},\"match\":{\"capability\":\"files\"},\"effect\":\"block\"}]},\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-read\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"Read\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"Read\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"Read\",\"arguments\":{\"file_path\":\"/home/u/notes.md\"},\"timestamp\":\"2026-09-18T12:00:00Z\",\"capabilities\":[\"files\"],\"derived\":{\"path\":\"/home/u/notes.md\"}},\"expect\":{\"verdict\":\"allow\",\"statementId\":\"st-read\",\"layer\":\"agent\",\"ruleKey\":\"Read\"}},\n {\"id\":\"VE-5\",\"name\":\"member overlay loosens the base for alice only\",\"bound\":{\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-base\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"block\"},{\"id\":\"st-alice\",\"subject\":{\"membershipId\":\"m-alice\"},\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"create_payment\",\"arguments\":{\"amount\":10},\"timestamp\":\"2026-09-18T12:00:00Z\",\"member\":{\"membershipId\":\"m-alice\"}},\"expect\":{\"verdict\":\"allow\",\"statementId\":\"st-alice\",\"layer\":\"member\",\"ruleKey\":\"create_payment\"}},\n {\"id\":\"VE-5a\",\"name\":\"everyone else keeps the base verdict\",\"bound\":{\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-base\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"block\"},{\"id\":\"st-alice\",\"subject\":{\"membershipId\":\"m-alice\"},\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"create_payment\",\"arguments\":{\"amount\":10},\"timestamp\":\"2026-09-18T12:00:00Z\",\"member\":{\"membershipId\":\"m-carol\"}},\"expect\":{\"verdict\":\"block\",\"statementId\":\"st-base\",\"layer\":\"agent\",\"ruleKey\":\"create_payment\"}},\n {\"id\":\"VE-5b\",\"name\":\"member overlay tightens the base for bob\",\"bound\":{\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-base\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"search_transactions\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"search_transactions\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"allow\"},{\"id\":\"st-bob\",\"subject\":{\"email\":\"Bob@Example.com\"},\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"search_transactions\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"search_transactions\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"block\"}]}},\"input\":{\"tool\":\"search_transactions\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\",\"member\":{\"email\":\"bob@example.com\"}},\"expect\":{\"verdict\":\"block\",\"statementId\":\"st-bob\",\"layer\":\"member\",\"ruleKey\":\"search_transactions\"}},\n {\"id\":\"VE-5c\",\"name\":\"org floor beats any member grant\",\"bound\":{\"floor\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-floor\",\"target\":{\"org\":\"*\"},\"layer\":\"floor\",\"defaults\":{\"tools\":\"allow\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-floor\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"delete_all\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"floor\"},\"match\":{\"tool\":\"delete_all\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"block\"}]},\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-alice\",\"subject\":{\"membershipId\":\"m-alice\"},\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"delete_all\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"delete_all\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"delete_all\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\",\"member\":{\"membershipId\":\"m-alice\"}},\"expect\":{\"verdict\":\"block\",\"statementId\":\"st-floor\",\"layer\":\"floor\",\"ruleKey\":\"delete_all\"}},\n {\"id\":\"VE-5d\",\"name\":\"expired member rule is skipped\",\"bound\":{\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-base\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"block\"},{\"id\":\"st-alice\",\"subject\":{\"membershipId\":\"m-alice\"},\"conditions\":[],\"expiresAt\":\"2026-01-01T00:00:00Z\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"create_payment\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\",\"member\":{\"membershipId\":\"m-alice\"}},\"expect\":{\"verdict\":\"block\",\"statementId\":\"st-base\",\"layer\":\"agent\",\"ruleKey\":\"create_payment\"}},\n {\"id\":\"VE-5e\",\"name\":\"member key specificity: membershipId beats email beats group\",\"bound\":{\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-group\",\"subject\":{\"group\":\"finance\"},\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"x\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"x\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"block\"},{\"id\":\"st-email\",\"subject\":{\"email\":\"alice@example.com\"},\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"x\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"x\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"hold\"},{\"id\":\"st-id\",\"subject\":{\"membershipId\":\"m-alice\"},\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"x\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"x\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"x\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\",\"member\":{\"membershipId\":\"m-alice\",\"email\":\"alice@example.com\",\"groups\":[\"finance\"]}},\"expect\":{\"verdict\":\"allow\",\"statementId\":\"st-id\",\"layer\":\"member\",\"ruleKey\":\"x\"}},\n {\"id\":\"VE-5f\",\"name\":\"member key specificity: email beats group when no membershipId rule exists\",\"bound\":{\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-group\",\"subject\":{\"group\":\"finance\"},\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"x\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"x\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"block\"},{\"id\":\"st-email\",\"subject\":{\"email\":\"alice@example.com\"},\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"x\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"x\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"hold\"}]}},\"input\":{\"tool\":\"x\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\",\"member\":{\"membershipId\":\"m-alice\",\"email\":\"alice@example.com\",\"groups\":[\"finance\"]}},\"expect\":{\"verdict\":\"hold\",\"statementId\":\"st-email\",\"layer\":\"member\",\"ruleKey\":\"x\"}},\n {\"id\":\"VE-6\",\"name\":\"unknown tool goes to the most specific tools.default, never a wildcard\",\"bound\":{\"floor\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-floor\",\"target\":{\"org\":\"*\"},\"layer\":\"floor\",\"defaults\":{\"tools\":\"allow\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[]},\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-pay-hold\",\"subject\":null,\"conditions\":[{\"field\":\"args.amount\",\"op\":\"gt\",\"value\":5000,\"schemaBinding\":{\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}}],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"hold\",\"approval\":{\"approvers\":2,\"roles\":[\"finance_lead\"]}},{\"id\":\"st-pay-allow\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":1,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":1},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"brand_new_tool\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\"},\"expect\":{\"verdict\":\"hold\",\"statementId\":null,\"layer\":\"agent\",\"ruleKey\":\"tools.default\"}},\n {\"id\":\"VE-7\",\"name\":\"variant order: first match wins\",\"bound\":{\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-rm\",\"subject\":null,\"conditions\":[{\"field\":\"args.command\",\"op\":\"regex\",\"value\":\"\\\\brm\\\\s+-rf\\\\b\"}],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"Bash\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"Bash\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"block\"},{\"id\":\"st-safe\",\"subject\":null,\"conditions\":[{\"field\":\"program\",\"op\":\"in\",\"value\":[\"git\",\"ls\",\"rm\"]}],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"Bash\",\"variant\":1,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"Bash\",\"keyTier\":\"exact\",\"order\":1},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"Bash\",\"arguments\":{\"command\":\"rm -rf /tmp/x\"},\"timestamp\":\"2026-09-18T12:00:00Z\",\"derived\":{\"program\":\"rm\"}},\"expect\":{\"verdict\":\"block\",\"statementId\":\"st-rm\",\"layer\":\"agent\",\"ruleKey\":\"Bash\"}},\n {\"id\":\"VE-9\",\"name\":\"provenance names the deciding statement, key and variant\",\"bound\":{\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-pay-hold\",\"subject\":null,\"conditions\":[{\"field\":\"args.amount\",\"op\":\"gt\",\"value\":5000,\"schemaBinding\":{\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}}],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"hold\",\"approval\":{\"approvers\":2,\"roles\":[\"finance_lead\"]}},{\"id\":\"st-pay-allow\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":1,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":1},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"create_payment\",\"arguments\":{\"amount\":1},\"timestamp\":\"2026-09-18T12:00:00Z\"},\"expect\":{\"verdict\":\"allow\",\"statementId\":\"st-pay-allow\",\"layer\":\"agent\",\"ruleKey\":\"create_payment\"}},\n {\"id\":\"VE-11\",\"name\":\"agent policy overrides group policy, loosening\",\"bound\":{\"group\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-group\",\"target\":{\"group\":\"payments\"},\"layer\":\"group\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-g\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"group\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"hold\"}]},\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-a\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"create_payment\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"create_payment\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"create_payment\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\"},\"expect\":{\"verdict\":\"allow\",\"statementId\":\"st-a\",\"layer\":\"agent\",\"ruleKey\":\"create_payment\"}},\n {\"id\":\"VE-11b\",\"name\":\"agent policy overrides group policy, tightening\",\"bound\":{\"group\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-group\",\"target\":{\"group\":\"payments\"},\"layer\":\"group\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-g\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"Read\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"group\"},\"match\":{\"tool\":\"Read\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"allow\"}]},\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-a\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"Read\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"Read\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"block\"}]}},\"input\":{\"tool\":\"Read\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\"},\"expect\":{\"verdict\":\"block\",\"statementId\":\"st-a\",\"layer\":\"agent\",\"ruleKey\":\"Read\"}},\n {\"id\":\"VE-12\",\"name\":\"group policy applies when the agent policy is silent\",\"bound\":{\"group\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-group\",\"target\":{\"group\":\"payments\"},\"layer\":\"group\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-g\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"search_transactions\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"group\"},\"match\":{\"tool\":\"search_transactions\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"hold\"}]},\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-a\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"Read\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"Read\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"search_transactions\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\"},\"expect\":{\"verdict\":\"hold\",\"statementId\":\"st-g\",\"layer\":\"group\",\"ruleKey\":\"search_transactions\"}},\n {\"id\":\"VE-13\",\"name\":\"floor beats both group and agent\",\"bound\":{\"floor\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-floor\",\"target\":{\"org\":\"*\"},\"layer\":\"floor\",\"defaults\":{\"tools\":\"allow\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-f\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"delete_all\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"floor\"},\"match\":{\"tool\":\"delete_all\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"block\"}]},\"group\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-group\",\"target\":{\"group\":\"payments\"},\"layer\":\"group\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-g\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"delete_all\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"group\"},\"match\":{\"tool\":\"delete_all\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"allow\"}]},\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-a\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"delete_all\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"delete_all\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"delete_all\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\"},\"expect\":{\"verdict\":\"block\",\"statementId\":\"st-f\",\"layer\":\"floor\",\"ruleKey\":\"delete_all\"}},\n {\"id\":\"VE-13b\",\"name\":\"a floor hold tightens an agent allow but yields to an agent block\",\"bound\":{\"floor\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-floor\",\"target\":{\"org\":\"*\"},\"layer\":\"floor\",\"defaults\":{\"tools\":\"allow\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-f\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"deploy\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"floor\"},\"match\":{\"tool\":\"deploy\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"hold\"}]},\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-a\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"deploy\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"tool\":\"deploy\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"allow\"}]}},\"input\":{\"tool\":\"deploy\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\"},\"expect\":{\"verdict\":\"hold\",\"statementId\":\"st-f\",\"layer\":\"floor\",\"ruleKey\":\"deploy\"}},\n {\"id\":\"VE-14\",\"name\":\"capability rule binds by tag only: tagged tool holds\",\"bound\":{\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"allow\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-destructive\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"destructive\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"capability\":\"destructive\"},\"effect\":\"hold\"}]}},\"input\":{\"tool\":\"mcp__jira__delete_issue\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\",\"capabilities\":[\"destructive\"]},\"expect\":{\"verdict\":\"hold\",\"statementId\":\"st-destructive\",\"layer\":\"agent\",\"ruleKey\":\"destructive\"}},\n {\"id\":\"VE-14b\",\"name\":\"capability rule binds by tag only: untagged tool on the same server gets tools.default\",\"bound\":{\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"allow\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[{\"id\":\"st-destructive\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"destructive\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"agent\"},\"match\":{\"capability\":\"destructive\"},\"effect\":\"hold\"}]}},\"input\":{\"tool\":\"mcp__jira__list_issues\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\",\"capabilities\":[]},\"expect\":{\"verdict\":\"allow\",\"statementId\":null,\"layer\":\"agent\",\"ruleKey\":\"tools.default\"}},\n {\"id\":\"VE-15\",\"name\":\"an expired document contributes nothing\",\"bound\":{\"group\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-group\",\"target\":{\"group\":\"payments\"},\"layer\":\"group\",\"defaults\":{\"tools\":\"hold\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"2026-01-01T00:00:00Z\",\"statements\":[{\"id\":\"st-g\",\"subject\":null,\"conditions\":[],\"expiresAt\":\"never\",\"provenance\":{\"ruleKey\":\"x\",\"variant\":0,\"source\":\"yaml\",\"layer\":\"group\"},\"match\":{\"tool\":\"x\",\"keyTier\":\"exact\",\"order\":0},\"effect\":\"block\"}]},\"agent\":{\"schemaVersion\":\"armor.policy.v2\",\"policyId\":\"p-agent\",\"target\":{\"agent\":\"aaaaaaaa-0000-4000-8000-000000000001\"},\"layer\":\"agent\",\"defaults\":{\"tools\":\"allow\",\"network\":\"block\",\"files\":\"allow\",\"skills\":\"allow\"},\"capture\":{\"arguments\":true,\"redact\":[\"*token*\"],\"maxBytesPerCall\":16384,\"sample\":1},\"expiresAt\":\"never\",\"statements\":[]}},\"input\":{\"tool\":\"x\",\"arguments\":{},\"timestamp\":\"2026-09-18T12:00:00Z\"},\"expect\":{\"verdict\":\"allow\",\"statementId\":null,\"layer\":\"agent\",\"ruleKey\":\"tools.default\"}}\n]\n","[\n {\"id\":\"VC-1\",\"name\":\"the full v2 document parses and validates\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\n mcpServers: [github]\\nspec:\\n tools:\\n default: hold\\n rules:\\n Read: allow\\n \\\"mcp__github__*\\\": allow\\n destructive: hold\\n file.write:\\n - when: {path: {glob: \\\"**/*.tf\\\"}}\\n action: hold\\n controls: [SOC2-CC8.1]\\n - action: allow\\n Bash:\\n - when: {command: {matches: '(^|\\\\s)rm\\\\s+-[a-zA-Z]*[rf]'}}\\n action: block\\n reason: recursive force delete\\n controls: [SOC2-CC6.1]\\n - when: {program: {in: [ls, grep, cat, git]}, writeRedirection: {eq: false}}\\n action: allow\\n - action: hold\\n create_payment:\\n - when: {args.amount: {gt: 5000}}\\n action: hold\\n approval: {approvers: 2, roles: [finance_lead]}\\n controls: [SOC2-CC6.1, SOC2-CC7.2]\\n - action: allow\\n files:\\n deny: [\\\"~/.ssh/**\\\", \\\"**/.env*\\\", \\\"**/*.pem\\\"]\\n allowOutsideWorkspace: false\\n network:\\n default: block\\n allow: [\\\"*.github.com\\\", {host: api.stripe.com, reason: payments}]\\n deny: [{host: 169.254.169.254, reason: AWS IMDS credentials endpoint}]\\n skills:\\n default: allow\\n hold: [\\\"*:deploy*\\\"]\\n members:\\n \\\"alice@armoriq.io\\\":\\n tools:\\n rules:\\n create_payment:\\n - action: allow\\n expiresAt: 2026-12-31T00:00:00Z\\n expiresAt: never\\n \\\"bob@armoriq.io\\\":\\n tools: {rules: {search_transactions: block}}\\n \\\"team:interns\\\":\\n tools: {default: block}\\n capture:\\n arguments: true\\n redact: [\\\"*token*\\\", \\\"*secret*\\\", \\\"authorization\\\"]\\n maxBytesPerCall: 16384\\n sample: 1.0\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n\",\"expect\":{\"errors\":[],\"warnings\":[\"loosening_grant\"]}},\n {\"id\":\"VC-2\",\"name\":\"an unknown key is a compile error\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\n mcpServers: [github]\\nspec:\\n tools:\\n default: hold\\n rules:\\n Read: allow\\n denyTools: [rm]\\n\",\"expect\":{\"errors\":[\"unknown_key\"],\"warnings\":[]}},\n {\"id\":\"VC-2b\",\"name\":\"a v1 status field is an unknown key\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\n mcpServers: [github]\\nspec:\\n tools:\\n default: hold\\n rules:\\n Read: allow\\n status: active\\n\",\"expect\":{\"errors\":[\"unknown_key\"],\"warnings\":[]}},\n {\"id\":\"VC-5\",\"name\":\"a variant after an unconditional one is unreachable\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\n mcpServers: [github]\\nspec:\\n tools:\\n default: hold\\n rules:\\n Bash:\\n - action: allow\\n - when: {args.command: {matches: 'rm'}}\\n action: block\\n\",\"expect\":{\"errors\":[\"unreachable_variant\"],\"warnings\":[]}},\n {\"id\":\"VC-6\",\"name\":\"a hold with no approver and no approvalDefaults is an error\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\n mcpServers: [github]\\nspec:\\n tools:\\n default: hold\\n rules:\\n create_payment: hold\\n\",\"expect\":{\"errors\":[\"hold_without_approver\"],\"warnings\":[]}},\n {\"id\":\"VC-6b\",\"name\":\"a hold resolved by approvalDefaults is clean\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\n mcpServers: [github]\\nspec:\\n tools:\\n default: hold\\n rules:\\n create_payment: hold\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n\",\"expect\":{\"errors\":[],\"warnings\":[]}},\n {\"id\":\"VC-6c\",\"name\":\"an approval that names nobody is unresolvable\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\n mcpServers: [github]\\nspec:\\n tools:\\n default: hold\\n rules:\\n create_payment:\\n - action: hold\\n approval: {approvers: 2}\\n\",\"expect\":{\"errors\":[\"approval_unresolvable\"],\"warnings\":[]}},\n {\"id\":\"VC-7\",\"name\":\"a member grant that loosens the base is flagged for review\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\n mcpServers: [github]\\nspec:\\n tools:\\n default: hold\\n rules:\\n create_payment: block\\n members:\\n \\\"alice@armoriq.io\\\":\\n tools: {rules: {create_payment: allow}}\\n\",\"expect\":{\"errors\":[],\"warnings\":[\"loosening_grant\"]}},\n {\"id\":\"VC-7t\",\"name\":\"a member rule that tightens the base is not flagged\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\n mcpServers: [github]\\nspec:\\n tools:\\n default: hold\\n rules:\\n search_transactions: allow\\n members:\\n \\\"bob@armoriq.io\\\":\\n tools: {rules: {search_transactions: block}}\\n\",\"expect\":{\"errors\":[],\"warnings\":[]}},\n {\"id\":\"VC-17\",\"name\":\"device: local is accepted\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\ntarget: {device: local}\\nspec:\\n tools:\\n default: hold\\n rules:\\n Read: allow\\n \\\"mcp__github__*\\\": allow\\n destructive: hold\\n file.write:\\n - when: {path: {glob: \\\"**/*.tf\\\"}}\\n action: hold\\n controls: [SOC2-CC8.1]\\n - action: allow\\n Bash:\\n - when: {command: {matches: '(^|\\\\s)rm\\\\s+-[a-zA-Z]*[rf]'}}\\n action: block\\n reason: recursive force delete\\n controls: [SOC2-CC6.1]\\n - when: {program: {in: [ls, grep, cat, git]}, writeRedirection: {eq: false}}\\n action: allow\\n - action: hold\\n create_payment:\\n - when: {args.amount: {gt: 5000}}\\n action: hold\\n approval: {approvers: 2, roles: [finance_lead]}\\n controls: [SOC2-CC6.1, SOC2-CC7.2]\\n - action: allow\\n files:\\n deny: [\\\"~/.ssh/**\\\", \\\"**/.env*\\\", \\\"**/*.pem\\\"]\\n allowOutsideWorkspace: false\\n network:\\n default: block\\n allow: [\\\"*.github.com\\\", {host: api.stripe.com, reason: payments}]\\n deny: [{host: 169.254.169.254, reason: AWS IMDS credentials endpoint}]\\n skills:\\n default: allow\\n hold: [\\\"*:deploy*\\\"]\\n capture:\\n arguments: true\\n redact: [\\\"*token*\\\", \\\"*secret*\\\", \\\"authorization\\\"]\\n maxBytesPerCall: 16384\\n sample: 1.0\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n\",\"expect\":{\"errors\":[],\"warnings\":[]}},\n {\"id\":\"VC-17b\",\"name\":\"target product is an unknown key\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget: {product: armorclaude}\\nspec:\\n tools:\\n default: hold\\n rules:\\n Read: allow\\n \\\"mcp__github__*\\\": allow\\n destructive: hold\\n file.write:\\n - when: {path: {glob: \\\"**/*.tf\\\"}}\\n action: hold\\n controls: [SOC2-CC8.1]\\n - action: allow\\n Bash:\\n - when: {command: {matches: '(^|\\\\s)rm\\\\s+-[a-zA-Z]*[rf]'}}\\n action: block\\n reason: recursive force delete\\n controls: [SOC2-CC6.1]\\n - when: {program: {in: [ls, grep, cat, git]}, writeRedirection: {eq: false}}\\n action: allow\\n - action: hold\\n create_payment:\\n - when: {args.amount: {gt: 5000}}\\n action: hold\\n approval: {approvers: 2, roles: [finance_lead]}\\n controls: [SOC2-CC6.1, SOC2-CC7.2]\\n - action: allow\\n files:\\n deny: [\\\"~/.ssh/**\\\", \\\"**/.env*\\\", \\\"**/*.pem\\\"]\\n allowOutsideWorkspace: false\\n network:\\n default: block\\n allow: [\\\"*.github.com\\\", {host: api.stripe.com, reason: payments}]\\n deny: [{host: 169.254.169.254, reason: AWS IMDS credentials endpoint}]\\n skills:\\n default: allow\\n hold: [\\\"*:deploy*\\\"]\\n members:\\n \\\"alice@armoriq.io\\\":\\n tools:\\n rules:\\n create_payment:\\n - action: allow\\n expiresAt: 2026-12-31T00:00:00Z\\n expiresAt: never\\n \\\"bob@armoriq.io\\\":\\n tools: {rules: {search_transactions: block}}\\n \\\"team:interns\\\":\\n tools: {default: block}\\n capture:\\n arguments: true\\n redact: [\\\"*token*\\\", \\\"*secret*\\\", \\\"authorization\\\"]\\n maxBytesPerCall: 16384\\n sample: 1.0\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n\",\"expect\":{\"errors\":[\"target_form\",\"unknown_key\"],\"warnings\":[]}},\n {\"id\":\"VC-18\",\"name\":\"products and precedence are local only\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\nprecedence: device-first\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\n mcpServers: [github]\\nspec:\\n tools:\\n default: hold\\n rules:\\n Read: allow\\n products:\\n claude-code: {tools: {rules: {Bash: block}}}\\n\",\"expect\":{\"errors\":[\"local_only_section\",\"local_only_section\"],\"warnings\":[]}},\n {\"id\":\"VC-18b\",\"name\":\"members is enterprise only\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\ntarget: {device: local}\\nspec:\\n tools:\\n default: hold\\n rules:\\n Read: allow\\n members:\\n \\\"alice@armoriq.io\\\": {tools: {rules: {Read: block}}}\\n\",\"expect\":{\"errors\":[\"enterprise_only_section\"],\"warnings\":[]}},\n {\"id\":\"VC-11c\",\"name\":\"a condition takes exactly one operator\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\n mcpServers: [github]\\nspec:\\n tools:\\n default: hold\\n rules:\\n create_payment:\\n - when: {args.amount: {gt: 5000, lt: 9000}}\\n action: block\\n\",\"expect\":{\"errors\":[\"condition_operator\"],\"warnings\":[]}},\n {\"id\":\"VC-11d\",\"name\":\"a numeric operator rejects a string operand\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\n mcpServers: [github]\\nspec:\\n tools:\\n default: hold\\n rules:\\n create_payment:\\n - when: {args.amount: {gt: \\\"5000\\\"}}\\n action: block\\n\",\"expect\":{\"errors\":[\"condition_operand\"],\"warnings\":[]}},\n {\"id\":\"VC-11e\",\"name\":\"matches rejects a lookaround the Rego evaluator cannot run\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\n mcpServers: [github]\\nspec:\\n tools:\\n default: hold\\n rules:\\n Bash:\\n - when: {command: {matches: '(?=rm)'}}\\n action: block\\n\",\"expect\":{\"errors\":[\"condition_operand\"],\"warnings\":[]}},\n {\"id\":\"VC-1b\",\"name\":\"tools.default is required\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\n mcpServers: [github]\\nspec:\\n tools:\\n rules:\\n Read: allow\\n\",\"expect\":{\"errors\":[\"expected_verdict\"],\"warnings\":[]}}\n]\n","[\n {\"id\":\"VC-14\",\"name\":\"schemaHash of the declared tool is bound on every args condition (FR-14)\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\nspec:\\n tools:\\n default: hold\\n rules:\\n create_payment:\\n - when: {args.amount: {gt: 5000}}\\n action: hold\\n approval: {approvers: 2, roles: [finance_lead]}\\n - action: allow\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n\",\"inventory\":[{\"name\":\"create_payment\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"Read\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"create_issue\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__create_issue\",\"capabilities\":[\"destructive\"]},{\"name\":\"list_issues\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__list_issues\",\"capabilities\":[]},{\"name\":\"delete_repo\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__delete_repo\",\"capabilities\":[\"destructive\"]},{\"name\":\"observed_only\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":null,\"declared\":false}],\"expect\":{\"errors\":[],\"warnings\":[],\"statementIds\":[\"st-create-payment-0\",\"st-create-payment-1\"],\"bindings\":{\"st-create-payment-0\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}}},\n {\"id\":\"VC-15\",\"name\":\"an unknown control identifier compiles with a warning naming it\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\nspec:\\n tools:\\n default: hold\\n rules:\\n Read:\\n - action: allow\\n controls: [SOC2-CC6.1, NOT-A-CONTROL]\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n\",\"inventory\":[{\"name\":\"create_payment\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"Read\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"create_issue\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__create_issue\",\"capabilities\":[\"destructive\"]},{\"name\":\"list_issues\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__list_issues\",\"capabilities\":[]},{\"name\":\"delete_repo\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__delete_repo\",\"capabilities\":[\"destructive\"]},{\"name\":\"observed_only\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":null,\"declared\":false}],\"expect\":{\"errors\":[],\"warnings\":[\"unknown_control\"],\"statementIds\":[\"st-read-0\"]}},\n {\"id\":\"VC-8\",\"name\":\"a rule key not in the inventory compiles with a warning\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\nspec:\\n tools:\\n default: hold\\n rules:\\n nonexistent_tool: block\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n\",\"inventory\":[{\"name\":\"create_payment\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"Read\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"create_issue\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__create_issue\",\"capabilities\":[\"destructive\"]},{\"name\":\"list_issues\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__list_issues\",\"capabilities\":[]},{\"name\":\"delete_repo\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__delete_repo\",\"capabilities\":[\"destructive\"]},{\"name\":\"observed_only\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":null,\"declared\":false}],\"expect\":{\"errors\":[],\"warnings\":[\"unknown_tool_key\"],\"statementIds\":[\"st-nonexistent-tool-0\"]}},\n {\"id\":\"VC-8b\",\"name\":\"an observed-only tool compiles without a binding and says so\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\nspec:\\n tools:\\n default: hold\\n rules:\\n observed_only:\\n - when: {args.x: {exists: true}}\\n action: block\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n\",\"inventory\":[{\"name\":\"create_payment\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"Read\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"create_issue\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__create_issue\",\"capabilities\":[\"destructive\"]},{\"name\":\"list_issues\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__list_issues\",\"capabilities\":[]},{\"name\":\"delete_repo\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__delete_repo\",\"capabilities\":[\"destructive\"]},{\"name\":\"observed_only\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":null,\"declared\":false}],\"expect\":{\"errors\":[],\"warnings\":[\"observed_only_tool\"],\"bindings\":{\"st-observed-only-0\":null}}},\n {\"id\":\"VC-9\",\"name\":\"an args key the schema does not declare compiles with a warning\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\nspec:\\n tools:\\n default: hold\\n rules:\\n create_payment:\\n - when: {args.nonexistent: {gt: 5}}\\n action: block\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n\",\"inventory\":[{\"name\":\"create_payment\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"Read\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"create_issue\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__create_issue\",\"capabilities\":[\"destructive\"]},{\"name\":\"list_issues\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__list_issues\",\"capabilities\":[]},{\"name\":\"delete_repo\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__delete_repo\",\"capabilities\":[\"destructive\"]},{\"name\":\"observed_only\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":null,\"declared\":false}],\"expect\":{\"errors\":[],\"warnings\":[\"unknown_argument\"]}},\n {\"id\":\"VC-3\",\"name\":\"exact and glob keys lower with their tier and the exact key binds\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\nspec:\\n tools:\\n default: hold\\n rules:\\n mcp__github__create_issue: hold\\n \\\"mcp__github__*\\\": allow\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n\",\"inventory\":[{\"name\":\"create_payment\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"Read\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"create_issue\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__create_issue\",\"capabilities\":[\"destructive\"]},{\"name\":\"list_issues\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__list_issues\",\"capabilities\":[]},{\"name\":\"delete_repo\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__delete_repo\",\"capabilities\":[\"destructive\"]},{\"name\":\"observed_only\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":null,\"declared\":false}],\"expect\":{\"errors\":[],\"warnings\":[],\"statementIds\":[\"st-mcp-github-create-issue-0\",\"st-mcp-github-0\"]}},\n {\"id\":\"VC-4\",\"name\":\"two same-length globs matching one real tool is a compile error\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\nspec:\\n tools:\\n default: hold\\n rules:\\n \\\"mcp__github__*\\\": allow\\n \\\"*_create_issue\\\": block\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n\",\"inventory\":[{\"name\":\"create_payment\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"Read\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"create_issue\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__create_issue\",\"capabilities\":[\"destructive\"]},{\"name\":\"list_issues\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__list_issues\",\"capabilities\":[]},{\"name\":\"delete_repo\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__delete_repo\",\"capabilities\":[\"destructive\"]},{\"name\":\"observed_only\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":null,\"declared\":false}],\"expect\":{\"errors\":[\"ambiguous_glob\"],\"warnings\":[]}},\n {\"id\":\"VC-3c\",\"name\":\"a bare name declared on two owners asks for the qualified form\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\nspec:\\n tools:\\n default: hold\\n rules:\\n shared_tool: allow\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n\",\"inventory\":[{\"name\":\"shared_tool\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-a\",\"name\":\"a\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"shared_tool\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-b\",\"name\":\"b\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true}],\"expect\":{\"errors\":[\"ambiguous_tool_key\"],\"warnings\":[]}},\n {\"id\":\"VC-14c\",\"name\":\"a capability key compiles as a capability statement and the report lists uncovered tools\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\nspec:\\n tools:\\n default: hold\\n rules:\\n destructive: hold\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n\",\"inventory\":[{\"name\":\"create_payment\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"Read\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"create_issue\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__create_issue\",\"capabilities\":[\"destructive\"]},{\"name\":\"list_issues\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__list_issues\",\"capabilities\":[]},{\"name\":\"delete_repo\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__delete_repo\",\"capabilities\":[\"destructive\"]},{\"name\":\"observed_only\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":null,\"declared\":false}],\"expect\":{\"errors\":[],\"warnings\":[],\"statementIds\":[\"st-destructive-0\"],\"report\":{\"sections\":{\"tools\":\"enforced\"},\"notCoveredByCapabilityRules\":[\"Read\",\"create_payment\",\"mcp__github__list_issues\",\"observed_only\"]}}},\n {\"id\":\"VC-11\",\"name\":\"enforceability on an enterprise target: files and network argument-only, skills and secrets inert\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\nspec:\\n tools:\\n default: hold\\n rules:\\n Read: allow\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n files: {deny: [\\\"~/.ssh/**\\\"]}\\n network: {default: block, allow: [\\\"*.github.com\\\"]}\\n skills: {hold: [\\\"*:deploy*\\\"]}\\n secrets: {envBlocklist: [AWS_SECRET_ACCESS_KEY]}\\n\",\"inventory\":[{\"name\":\"create_payment\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"Read\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"create_issue\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__create_issue\",\"capabilities\":[\"destructive\"]},{\"name\":\"list_issues\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__list_issues\",\"capabilities\":[]},{\"name\":\"delete_repo\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__delete_repo\",\"capabilities\":[\"destructive\"]},{\"name\":\"observed_only\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":null,\"declared\":false}],\"expect\":{\"errors\":[],\"warnings\":[],\"statementIds\":[\"st-read-0\",\"st-files-block-0\",\"st-network-allow-0\",\"st-skills-hold-0\",\"st-secrets-block-0\"],\"report\":{\"sections\":{\"tools\":\"enforced\",\"files\":\"argument-only\",\"network\":\"argument-only\",\"skills\":\"inert\",\"secrets\":\"inert\"},\"notCoveredByCapabilityRules\":[]}}},\n {\"id\":\"VC-11b\",\"name\":\"enforceability on a local device: every section enforced\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\ntarget: {device: local}\\nspec:\\n tools:\\n default: hold\\n rules:\\n Read: allow\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n files: {deny: [\\\"~/.ssh/**\\\"], allowOutsideWorkspace: false}\\n secrets: {envBlocklist: [GITHUB_TOKEN]}\\n\",\"inventory\":[],\"expect\":{\"errors\":[],\"warnings\":[\"unknown_tool_key\"],\"statementIds\":[\"st-read-0\",\"st-files-block-0\",\"st-files-block-1\",\"st-secrets-block-0\"],\"report\":{\"sections\":{\"tools\":\"enforced\",\"files\":\"enforced\",\"secrets\":\"enforced\"},\"notCoveredByCapabilityRules\":[]}}},\n {\"id\":\"VC-12\",\"name\":\"a group target compiles with layer group\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n group: payments\\nspec:\\n tools:\\n default: hold\\n rules:\\n Read: allow\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n\",\"inventory\":[{\"name\":\"create_payment\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"Read\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"create_issue\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__create_issue\",\"capabilities\":[\"destructive\"]},{\"name\":\"list_issues\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__list_issues\",\"capabilities\":[]},{\"name\":\"delete_repo\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__delete_repo\",\"capabilities\":[\"destructive\"]},{\"name\":\"observed_only\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":null,\"declared\":false}],\"expect\":{\"errors\":[],\"warnings\":[],\"statementIds\":[\"st-read-0\"]}},\n {\"id\":\"VC-16\",\"name\":\"member rule expiry earlier than its scope wins; scope expiry bounds a rule with none\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\n orgId: 11111111-1111-4111-8111-111111111111\\ntarget:\\n agent: aaaaaaaa-0000-4000-8000-000000000001\\nspec:\\n tools:\\n default: hold\\n rules:\\n create_payment: block\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n members:\\n \\\"alice@armoriq.io\\\":\\n tools:\\n rules:\\n create_payment:\\n - action: allow\\n expiresAt: 2026-06-01T00:00:00Z\\n Read: allow\\n expiresAt: 2026-12-31T00:00:00Z\\n\",\"inventory\":[{\"name\":\"create_payment\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"Read\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":\"sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\"}}},\"declared\":true},{\"name\":\"create_issue\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__create_issue\",\"capabilities\":[\"destructive\"]},{\"name\":\"list_issues\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__list_issues\",\"capabilities\":[]},{\"name\":\"delete_repo\",\"owner\":{\"type\":\"mcp_server\",\"id\":\"srv-github\",\"name\":\"github\"},\"schemaHash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"recipient\":{\"type\":\"string\"}}},\"declared\":true,\"qualifiedName\":\"mcp__github__delete_repo\",\"capabilities\":[\"destructive\"]},{\"name\":\"observed_only\",\"owner\":{\"type\":\"agent\",\"id\":\"agent-1\",\"name\":\"support-agent\"},\"schemaHash\":null,\"declared\":false}],\"expect\":{\"errors\":[],\"warnings\":[\"loosening_grant\",\"loosening_grant\"],\"statementIds\":[\"st-create-payment-0\",\"st-create-payment-alice-armoriq-io-0\",\"st-read-alice-armoriq-io-0\"],\"expiries\":{\"st-create-payment-alice-armoriq-io-0\":\"2026-06-01T00:00:00.000Z\",\"st-read-alice-armoriq-io-0\":\"2026-12-31T00:00:00.000Z\"}}},\n {\"id\":\"VC-18c\",\"name\":\"under device-first a products overlay may only tighten\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\ntarget: {device: local}\\nspec:\\n tools:\\n default: hold\\n rules:\\n Bash: hold\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n products:\\n claude-code: {tools: {rules: {Bash: allow}}}\\n\",\"inventory\":[],\"expect\":{\"errors\":[\"device_first_loosening\"],\"warnings\":[\"loosening_grant\",\"unknown_tool_key\",\"unknown_tool_key\"]}},\n {\"id\":\"VC-18d\",\"name\":\"under agent-first a products overlay may loosen, flagged for review\",\"yaml\":\"apiVersion: armor.io/v2\\nkind: Policy\\nmetadata:\\n name: vector\\nprecedence: agent-first\\ntarget: {device: local}\\nspec:\\n tools:\\n default: hold\\n rules:\\n Bash: hold\\n approvalDefaults: {approvers: 1, roles: [admin]}\\n products:\\n claude-code: {tools: {rules: {Bash: allow}}}\\n\",\"inventory\":[],\"expect\":{\"errors\":[],\"warnings\":[\"loosening_grant\",\"unknown_tool_key\",\"unknown_tool_key\"],\"statementIds\":[\"st-bash-0\",\"st-bash-claude-code-0\"]}}\n]\n","import canonical from '../vectors/canonical.json';\nimport hash from '../vectors/hash.json';\nimport schemaHash from '../vectors/schema-hash-vectors.json';\nimport evaluateVectors from '../vectors/evaluate.json';\nimport documentVectors from '../vectors/document.json';\nimport compileVectors from '../vectors/compile.json';\n\nexport interface CanonicalVector {\n name: string;\n input: unknown;\n canonical: string;\n}\n\nexport interface HashVector {\n name: string;\n document: unknown;\n policyHash: string;\n}\n\nexport interface EvaluateVector {\n id: string;\n name: string;\n bound: unknown;\n input: unknown;\n expect: {\n verdict: string;\n statementId: string | null;\n layer: string;\n ruleKey: string;\n approval?: unknown;\n obligations?: unknown[];\n };\n}\n\nexport interface DocumentVector {\n id: string;\n name: string;\n yaml: string;\n expect: { errors: string[]; warnings: string[] };\n}\n\nexport interface CompileVector {\n id: string;\n name: string;\n yaml: string;\n inventory: unknown[];\n expect: {\n errors: string[];\n warnings: string[];\n statementIds?: string[];\n bindings?: Record<string, string | null>;\n expiries?: Record<string, string>;\n report?: { sections: Record<string, string>; notCoveredByCapabilityRules: string[] };\n };\n}\n\n/** Fixtures every runtime asserts against. Generated once, committed, never edited by hand. */\nexport const vectors = {\n canonical: canonical as CanonicalVector[],\n hash: hash as HashVector[],\n schemaHash: schemaHash as unknown,\n evaluate: evaluateVectors as unknown as EvaluateVector[],\n document: documentVectors as DocumentVector[],\n compile: compileVectors as unknown as CompileVector[],\n};\n"],"mappings":"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","names":[]}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@armoriq/policy-ir",
3
+ "version": "0.1.0",
4
+ "description": "Armor Policy v2 intermediate representation: types, canonical serializer, policy hash, evaluator, compiler and the golden vectors every runtime must pass",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/armoriq/armoriq-policy-ir.git"
9
+ },
10
+ "type": "module",
11
+ "main": "./dist/index.cjs",
12
+ "module": "./dist/index.js",
13
+ "types": "./dist/index.d.ts",
14
+ "exports": {
15
+ ".": {
16
+ "types": "./dist/index.d.ts",
17
+ "import": "./dist/index.js",
18
+ "require": "./dist/index.cjs"
19
+ },
20
+ "./vectors": {
21
+ "types": "./dist/vectors.d.ts",
22
+ "import": "./dist/vectors.js",
23
+ "require": "./dist/vectors.cjs"
24
+ }
25
+ },
26
+ "files": [
27
+ "dist",
28
+ "vectors",
29
+ "LICENSE",
30
+ "README.md"
31
+ ],
32
+ "engines": {
33
+ "node": "^18.19.0 || >=20.6.0"
34
+ },
35
+ "sideEffects": false,
36
+ "scripts": {
37
+ "build": "tsup",
38
+ "typecheck": "tsc -p tsconfig.json --noEmit",
39
+ "lint": "eslint .",
40
+ "test": "vitest run",
41
+ "smoke": "node test/smoke/consume.mjs && node test/smoke/consume.cjs",
42
+ "check": "npm run lint && npm run typecheck && npm test && npm run build && npm run smoke",
43
+ "vectors:generate": "tsx scripts/generate-vectors.ts"
44
+ },
45
+ "devDependencies": {
46
+ "@eslint/js": "^9.12.0",
47
+ "@types/node": "^20.16.0",
48
+ "eslint": "^9.12.0",
49
+ "tsup": "^8.3.0",
50
+ "tsx": "^4.19.0",
51
+ "typescript": "^5.6.0",
52
+ "typescript-eslint": "^8.8.0",
53
+ "vitest": "^2.1.0"
54
+ },
55
+ "publishConfig": {
56
+ "access": "public"
57
+ },
58
+ "dependencies": {
59
+ "yaml": "^2.9.1"
60
+ }
61
+ }