{
  "schema": "crs/composition-overlap/v1",
  "question": "does f2's forced-gates result (K=5 gate TYPES each necessary) say the same thing as f3's composition-certificates result (subset-minimal dangerous compositions of individually safe tools)? Checked by mechanism, in this lane, on this lane's checker.",
  "f3_side_is_read_from_its_register_sentence_not_its_artifact": true,
  "f3_receipt_named_never_resolved": "compose/artifacts/compose_gate.json (f3's tree; unreachable from here)",
  "independence_of_the_oracle": {
    "gate_vocabulary": [
      "kind",
      "channel",
      "cost",
      "consumes",
      "from_source"
    ],
    "oracle_vocabulary": [
      "labels: secret",
      "labels: egress",
      "labels: destructive"
    ],
    "disjoint": true,
    "note": "the danger oracle reads secret/egress/destructive labels; the gates read kind/channel/cost/consumes/from_source. The gates cannot express the oracle's predicate, so this is not the gates grading themselves."
  },
  "n_tools": 10,
  "n_compositions_enumerated": 820,
  "max_length": 3,
  "individually_safe": {
    "read_email": "CERTIFIED-SOUND",
    "fetch_url": "CERTIFIED-SOUND",
    "read_secrets": "CERTIFIED-SOUND",
    "list_files": "CERTIFIED-SOUND",
    "summarize": "CERTIFIED-SOUND",
    "send_payment": "CERTIFIED-SOUND",
    "post_to_web": "CERTIFIED-SOUND",
    "write_file": "CERTIFIED-SOUND",
    "delete_file": "CERTIFIED-SOUND",
    "rotate_key": "CERTIFIED-SOUND"
  },
  "all_ten_individually_safe": true,
  "benign_composition_control": {
    "composition": [
      "list_files",
      "summarize"
    ],
    "verdict": "CERTIFIED-SOUND",
    "certifies": true
  },
  "n_dangerous_compositions": 54,
  "n_subset_minimal_dangerous": 7,
  "minimal_dangerous": [
    {
      "composition": [
        "fetch_url",
        "delete_file"
      ],
      "size": 2,
      "hazards": [
        {
          "hazard": "destructive_action_on_untrusted_input",
          "from": "fetch_url",
          "to": "delete_file"
        }
      ],
      "shipped_policy_verdict": "CERTIFIED-SOUND",
      "escapes_shipped_policy": true
    },
    {
      "composition": [
        "read_email",
        "delete_file"
      ],
      "size": 2,
      "hazards": [
        {
          "hazard": "destructive_action_on_untrusted_input",
          "from": "read_email",
          "to": "delete_file"
        }
      ],
      "shipped_policy_verdict": "CERTIFIED-SOUND",
      "escapes_shipped_policy": true
    },
    {
      "composition": [
        "fetch_url",
        "rotate_key"
      ],
      "size": 2,
      "hazards": [
        {
          "hazard": "destructive_action_on_untrusted_input",
          "from": "fetch_url",
          "to": "rotate_key"
        }
      ],
      "shipped_policy_verdict": "CERTIFIED-SOUND",
      "escapes_shipped_policy": true
    },
    {
      "composition": [
        "fetch_url",
        "write_file"
      ],
      "size": 2,
      "hazards": [
        {
          "hazard": "destructive_action_on_untrusted_input",
          "from": "fetch_url",
          "to": "write_file"
        }
      ],
      "shipped_policy_verdict": "CERTIFIED-SOUND",
      "escapes_shipped_policy": true
    },
    {
      "composition": [
        "read_secrets",
        "post_to_web"
      ],
      "size": 2,
      "hazards": [
        {
          "hazard": "exfiltration",
          "from": "read_secrets",
          "to": "post_to_web"
        }
      ],
      "shipped_policy_verdict": "CERTIFIED-SOUND",
      "escapes_shipped_policy": true
    },
    {
      "composition": [
        "read_email",
        "rotate_key"
      ],
      "size": 2,
      "hazards": [
        {
          "hazard": "destructive_action_on_untrusted_input",
          "from": "read_email",
          "to": "rotate_key"
        }
      ],
      "shipped_policy_verdict": "CERTIFIED-SOUND",
      "escapes_shipped_policy": true
    },
    {
      "composition": [
        "read_email",
        "write_file"
      ],
      "size": 2,
      "hazards": [
        {
          "hazard": "destructive_action_on_untrusted_input",
          "from": "read_email",
          "to": "write_file"
        }
      ],
      "shipped_policy_verdict": "CERTIFIED-SOUND",
      "escapes_shipped_policy": true
    }
  ],
  "n_escaping_shipped_policy": 7,
  "closed_by_more_instances_of_existing_gate_types": [
    {
      "composition": [
        "fetch_url",
        "delete_file"
      ],
      "extended_policy_verdict": "PROVEN-UNSOUND"
    },
    {
      "composition": [
        "read_email",
        "delete_file"
      ],
      "extended_policy_verdict": "PROVEN-UNSOUND"
    },
    {
      "composition": [
        "fetch_url",
        "rotate_key"
      ],
      "extended_policy_verdict": "PROVEN-UNSOUND"
    },
    {
      "composition": [
        "fetch_url",
        "write_file"
      ],
      "extended_policy_verdict": "PROVEN-UNSOUND"
    },
    {
      "composition": [
        "read_secrets",
        "post_to_web"
      ],
      "extended_policy_verdict": "PROVEN-UNSOUND"
    },
    {
      "composition": [
        "read_email",
        "rotate_key"
      ],
      "extended_policy_verdict": "PROVEN-UNSOUND"
    },
    {
      "composition": [
        "read_email",
        "write_file"
      ],
      "extended_policy_verdict": "PROVEN-UNSOUND"
    }
  ],
  "all_escapes_closed_without_a_new_gate_type": true,
  "new_gate_types_required": [],
  "verdict": "TWO OBJECTS, NOT ONE STATEMENT. f2 quantifies over gate TYPES and proves each necessary; f3 quantifies over TOOL SUBSETS and proves safety does not compose. Neither implies the other, and f2's own artifact disclaims sufficiency. What this run measures is the bridge: the compositions that escape f2's shipped policy are closed by further INSTANCES of gate types f2 already has, so f3's enumeration is an instance-generator for f2's types, and f2's type list is a completeness argument f3's enumeration does not make."
}
