{
  "id": "jay-ose-false-cut",
  "description": "A false cut built from two cut-into-packets splits and two collects; the packet's order is unchanged, though it presents as an honest cut",
  "labels": {
    "en": "Jay Ose False Cut"
  },
  "atlas_ref": "technique:jay-ose",
  "family_ref": "false-cuts",
  "requires": [
    "target"
  ],
  "parameters": {
    "first_packet": {
      "required": true,
      "description": "Size of the first (top) packet cut from target",
      "domain": "integer >= 1"
    },
    "second_packet": {
      "required": true,
      "description": "Size of the packet cut from the first packet, on the second cut",
      "domain": "integer >= 1"
    }
  },
  "locals": [
    "lower",
    "middle"
  ],
  "body": [
    {
      "verb": "registry:cut-into-packets",
      "source": "target",
      "arguments": {
        "piles": 2,
        "cut_plan": [
          {
            "param": "first_packet"
          },
          "rest"
        ]
      },
      "yields": [
        "upper",
        "lower"
      ]
    },
    {
      "verb": "registry:cut-into-packets",
      "source": "upper",
      "arguments": {
        "piles": 2,
        "cut_plan": [
          {
            "param": "second_packet"
          },
          "rest"
        ]
      },
      "yields": [
        "top",
        "middle"
      ]
    },
    {
      "verb": "registry:collect",
      "target": "lower",
      "arguments": {
        "order": [
          "middle",
          "lower"
        ]
      }
    },
    {
      "verb": "registry:collect",
      "target": "top",
      "arguments": {
        "order": [
          "top",
          "lower"
        ]
      }
    }
  ],
  "net_contract": {
    "post_state_invariant": "target's order is unchanged.",
    "post_state": {
      "state_schema_ref": "https://tamaraspec.org/schema/tcs-playing-cards-state-0.1.json",
      "effects": [
        {
          "op": "permute",
          "subject": "target",
          "permutation": "identity"
        }
      ]
    }
  },
  "presents_as": "cut",
  "presents_as_parameters": {
    "cut_point": {
      "param": "first_packet"
    }
  },
  "examples": [
    {
      "arguments": {
        "first_packet": 6,
        "second_packet": 3
      },
      "piles": {
        "target": [
          "1",
          "2",
          "3",
          "4",
          "5",
          "6",
          "7",
          "8",
          "9"
        ]
      },
      "expect": {
        "piles": {
          "target": [
            "1",
            "2",
            "3",
            "4",
            "5",
            "6",
            "7",
            "8",
            "9"
          ]
        },
        "deceptive_in": [
          "state"
        ]
      }
    }
  ]
}