{
 "product": "Deterministic math gates",
 "slug": "math-gates",
 "base": "https://cainstudio.online",
 "page": "https://cainstudio.online/top25-math-gates.html",
 "claims": [
  {
   "id": "C01",
   "kind": "attack",
   "claim": "Plan with a cycle -> A plan that can never start is invalid.",
   "requests": [
    {
     "method": "POST",
     "url": "/suite/flowgate/v1/validate",
     "body": {
      "tasks": [
       {
        "id": "plan",
        "depends_on": [
         "review"
        ]
       },
       {
        "id": "review",
        "depends_on": [
         "plan"
        ]
       }
      ]
     }
    }
   ],
   "path": "has_cycle",
   "expect": [
    true
   ]
  },
  {
   "id": "C02",
   "kind": "control",
   "claim": "Straight-line plan -> A DAG validates.",
   "requests": [
    {
     "method": "POST",
     "url": "/suite/flowgate/v1/validate",
     "body": {
      "tasks": [
       {
        "id": "a",
        "depends_on": []
       },
       {
        "id": "b",
        "depends_on": [
         "a"
        ]
       }
      ]
     }
    }
   ],
   "path": "valid",
   "expect": [
    true
   ]
  },
  {
   "id": "C03",
   "kind": "attack",
   "claim": "Dependency on a task that does not exist -> Unknown dependencies are not silently dropped.",
   "requests": [
    {
     "method": "POST",
     "url": "/suite/flowgate/v1/validate",
     "body": {
      "tasks": [
       {
        "id": "a",
        "depends_on": [
         "ghost"
        ]
       }
      ]
     }
    }
   ],
   "path": "valid",
   "expect": [
    false
   ]
  },
  {
   "id": "C04",
   "kind": "attack",
   "claim": "Task depends on itself -> A self-loop is a cycle.",
   "requests": [
    {
     "method": "POST",
     "url": "/suite/flowgate/v1/validate",
     "body": {
      "tasks": [
       {
        "id": "a",
        "depends_on": [
         "a"
        ]
       }
      ]
     }
    }
   ],
   "path": "valid",
   "expect": [
    false
   ]
  },
  {
   "id": "C05",
   "kind": "attack",
   "claim": "Duplicate task ids -> Two tasks with one name are ambiguous: refused.",
   "requests": [
    {
     "method": "POST",
     "url": "/suite/flowgate/v1/validate",
     "body": {
      "tasks": [
       {
        "id": "a",
        "depends_on": []
       },
       {
        "id": "a",
        "depends_on": []
       }
      ]
     }
    }
   ],
   "path": "",
   "expect": [],
   "expect_status": [
    400,
    422
   ]
  }
 ]
}