{
  "schema": "carehab-duo/1",
  "name": "deadlock-breaker",
  "title": "Deadlock Breaker",
  "version": "0.1.0",
  "license": "MIT",
  "tier": "open",
  "summary": "Defensive duo: detects permission deadlocks (contradictory policies, missing rights), emits a ContractDiff and one narrow authorization request to a human, then stops. Never grants anything.",
  "parts": {
    "skill": "skills/deadlock-breaker/SKILL.md",
    "verifier": "verifier/contract_diff.py",
    "operator_artifacts": [
      "operator/mandate_template.md",
      "operator/mandate_template.json",
      "operator/request_review_card.md"
    ],
    "fixtures": [
      "fixtures/contradictory_policy/",
      "fixtures/missing_rights/",
      "fixtures/ok_case/",
      "fixtures/mandate_good.json",
      "fixtures/mandate_bad_wildcard.json",
      "fixtures/mandate_expired.json",
      "fixtures/mandate_wrong_resource.json",
      "fixtures/used_nonces.json"
    ]
  },
  "tools_permissions": {
    "skill_allowed_tools": [
      "Bash",
      "Read"
    ],
    "verifier": {
      "network": "none",
      "filesystem": "read-only (input JSON files and optional used-nonces file)",
      "subprocess": false
    }
  },
  "data_privacy": {
    "collects": "nothing",
    "sends": "nothing",
    "stores": "nothing"
  },
  "test_commands": [
    "./run_tests.sh"
  ],
  "install": {
    "scope": "Claude Code only: copy skills/deadlock-breaker/ to ~/.claude/skills/deadlock-breaker/ or <project>/.claude/skills/deadlock-breaker/",
    "steps": [
      "Copy skills/deadlock-breaker/ into the Claude Code skills directory",
      "Keep verifier/ somewhere the agent can run python3 on",
      "Run ./run_tests.sh to confirm"
    ]
  },
  "claims_not_made": [
    "No universal cross-agent compatibility",
    "No authorization is granted by this tool; it only produces requests and checks mandate consistency",
    "check_mandate does not authenticate a human (no signature infrastructure); consistency check only",
    "SKILL.md is advice, not an enforcement gate",
    "Nonce reuse is not recorded by the tool; the caller must maintain the used-nonces file",
    "Verifier output is evidence only when a human or CI ran it; an agent running its own verifier produces an agent claim.",
    "Hashes are same-origin: they detect corruption, not a compromised host; not third-party verified.",
    "Declared tools_permissions are documentation, not an enforced sandbox.",
    "No wellbeing or effectiveness effect is claimed."
  ],
  "artifacts": [
    {
      "path": "LICENSE",
      "sha256": "df32f88f33ff95e9e85405a3d153e6a09c43f25f564649e797973e670863b789",
      "bytes": 1066
    },
    {
      "path": "README.md",
      "sha256": "a611f59cb50036c641163f0efcb7e5f0f27e4f4823d1cb89e0e4457973d287bf",
      "bytes": 3440
    },
    {
      "path": "fixtures/contradictory_policy/contract.json",
      "sha256": "ea4f6f1b2fbb427c5d6c7e2cf6f3f29004e18f09ad6d20e528faaadac7fd51f1",
      "bytes": 503
    },
    {
      "path": "fixtures/contradictory_policy/grants.json",
      "sha256": "b6990c47f90ed87733fdaabdef4d01dc045e619a542b04814dbe9b4542cc3d9a",
      "bytes": 180
    },
    {
      "path": "fixtures/contradictory_policy/policy.json",
      "sha256": "3f75af81aff6b630841fc6c1570c41d39e62030737b2a9f7a9742096b2eb8364",
      "bytes": 681
    },
    {
      "path": "fixtures/mandate_bad_wildcard.json",
      "sha256": "cb0dacbe44316ab7d5d7e16322069a0561e3c98ace9dd6c813e52147a3467f5a",
      "bytes": 493
    },
    {
      "path": "fixtures/mandate_expired.json",
      "sha256": "404c49cd276ac377e3eb8e8497b2f027cb5cae0bbb040bc477468bf3a99f624f",
      "bytes": 494
    },
    {
      "path": "fixtures/mandate_good.json",
      "sha256": "67ce889152f63d771304e7c50f48ccd5aa8ae15d3877da0206448a0d29ce76c3",
      "bytes": 494
    },
    {
      "path": "fixtures/mandate_wrong_resource.json",
      "sha256": "60cdfb6d76b4b63372008fec22c40ea55747743b8a95183b6e42f27e56912321",
      "bytes": 494
    },
    {
      "path": "fixtures/missing_rights/contract.json",
      "sha256": "207c809abdc139b90d1472c7a8b6e710fe3121795b2013a1a459c85e92da7370",
      "bytes": 310
    },
    {
      "path": "fixtures/missing_rights/grants.json",
      "sha256": "b3ba51afd71cba786ab6979d5498970c8ef122c18352aad6af3733939c61547b",
      "bytes": 103
    },
    {
      "path": "fixtures/missing_rights/policy.json",
      "sha256": "058170e7852686e9b64aedd65530345d0aa6a66595ef6409b89265d0ff20aede",
      "bytes": 228
    },
    {
      "path": "fixtures/ok_case/contract.json",
      "sha256": "0a9a12b9ac28c9c586d3f730e14f06a1b3ba44c8418f8a134e5492e37ef8cfea",
      "bytes": 441
    },
    {
      "path": "fixtures/ok_case/grants.json",
      "sha256": "8021207745283b96ae78f8f241dea4f96f36d6159a1285428988de22b6cdfbd1",
      "bytes": 107
    },
    {
      "path": "fixtures/ok_case/policy.json",
      "sha256": "af2faa481b05d38876af54d7b4fae372dccf10588b0032b9e66db0e137a30eaf",
      "bytes": 373
    },
    {
      "path": "fixtures/used_nonces.json",
      "sha256": "d52c61609ec6073877b3b5e49d722c788134eb879e968fb1f5e482aca92a6807",
      "bytes": 53
    },
    {
      "path": "operator/mandate_template.json",
      "sha256": "3549935049a48f7b6b9031c9a48eb7e160f16b2fc77e34ec35d7a318338246e6",
      "bytes": 695
    },
    {
      "path": "operator/mandate_template.md",
      "sha256": "c0552a01c6d82c2e8f9e74e603975ad55a18c4190266c2768dc40b7cdfadeeef",
      "bytes": 1385
    },
    {
      "path": "operator/request_review_card.md",
      "sha256": "d5cf54d563d86690e42fe65cea47944d2f9a0e91bc3bcdb90f48cc92189efe9f",
      "bytes": 1114
    },
    {
      "path": "run_tests.sh",
      "sha256": "370bc3d5e7d30d92fca8ec5442a299b6a2cb77babd32325f11cc1ebbd5648dc9",
      "bytes": 87
    },
    {
      "path": "skills/deadlock-breaker/SKILL.md",
      "sha256": "2ab942472bac56097c24a8eb76944762b87349ff54067f6483f6be464e304614",
      "bytes": 1742
    },
    {
      "path": "tests/test_deadlock_breaker.py",
      "sha256": "28ef285c808bc26cd60f9a2fd6f691dd42f7b68ec75df4311cdd8f10ea7c137a",
      "bytes": 10491
    },
    {
      "path": "tests/test_output.txt",
      "sha256": "24465b325a06c1e3029d46d032d124f9521a481bd67a9ebf420dcbcbdb0f9b27",
      "bytes": 2388
    },
    {
      "path": "verifier/check_mandate.py",
      "sha256": "9681e0510e4d5e26262b7e338601d989d01e9dbef0174b161b3f7e0f4911101f",
      "bytes": 4908
    },
    {
      "path": "verifier/contract_diff.py",
      "sha256": "10f864153bdd52c979e160d2ddaef6e7bc5cb8f2778376b3470119858ebde3b1",
      "bytes": 8639
    }
  ],
  "human_agent_split": {
    "human_artifacts": [
      "operator/mandate_template.md",
      "operator/mandate_template.json",
      "operator/request_review_card.md"
    ],
    "agent_artifacts": [
      "skills/deadlock-breaker/SKILL.md",
      "verifier/contract_diff.py"
    ]
  }
}
