{
  "fixture_id": "task-2553+38.cases",
  "task": "task-2553+38",
  "track": "A",
  "seam": "anu_v3.dispatch_profile_selection",
  "engine_consumed_read_only": "anu_v3.policy_profile_engine (parse_goal_request -> resolve_policy)",
  "note": "All cases run 100% offline against the real C1 engine. profile_json_dir/profile_schema_dir/schema_dir default to repo paths. No file write, no network, no git, no real dispatch.",
  "cases": [
    {
      "name": "normal_selected",
      "intent": "valid request + present profile + no boundary contradiction -> profile auto-selected & bound",
      "request": {
        "goal_id": "task-2553+38-normal",
        "goal_statement": "connect policy profile engine to dispatch selection",
        "policy_profile": { "name": "test_only_hardening_pr_merge_v1" }
      },
      "expect": {
        "status": "SELECTED",
        "profile_bound": true,
        "auto_apply": true,
        "profile_id": "test_only_hardening_pr_merge_v1",
        "refusal_code": null
      }
    },
    {
      "name": "profile_absent",
      "intent": "named profile does not exist -> safe refusal, auto_apply 0, dispatch not broken",
      "request": {
        "goal_id": "task-2553+38-absent",
        "goal_statement": "select a profile that is not on disk",
        "policy_profile": { "name": "no_such_profile_xyz" }
      },
      "expect": {
        "status": "SELECTION_REFUSED",
        "profile_bound": false,
        "auto_apply": false,
        "refusal_code": "profile_load_fail"
      }
    },
    {
      "name": "request_not_mapping",
      "intent": "malformed (non-dict) request -> safe refusal before engine entry",
      "request": 42,
      "expect": {
        "status": "SELECTION_REFUSED",
        "profile_bound": false,
        "auto_apply": false,
        "refusal_code": "selection_request_not_mapping"
      }
    },
    {
      "name": "policy_profile_name_missing",
      "intent": "policy_profile.name absent -> safe refusal before engine entry",
      "request": {
        "goal_id": "task-2553+38-noname",
        "goal_statement": "missing profile name",
        "policy_profile": {}
      },
      "expect": {
        "status": "SELECTION_REFUSED",
        "profile_bound": false,
        "auto_apply": false,
        "refusal_code": "selection_policy_profile_name_missing"
      }
    },
    {
      "name": "goal_request_schema_mismatch",
      "intent": "request fails C1 goal_request meta-schema (empty goal_id) -> safe refusal",
      "request": {
        "goal_id": "",
        "goal_statement": "schema mismatch",
        "policy_profile": { "name": "test_only_hardening_pr_merge_v1" }
      },
      "expect": {
        "status": "SELECTION_REFUSED",
        "profile_bound": false,
        "auto_apply": false,
        "refusal_code": "goal_request_schema_fail"
      }
    },
    {
      "name": "engine_hold_for_chair",
      "intent": "boundary deny contradicts profile-derived allowed action -> engine HOLD propagated as HOLD_FOR_CHAIR, auto_apply 0",
      "request": {
        "goal_id": "task-2553+38-hold",
        "goal_statement": "boundary deny gate_evaluate contradicts universal allowed",
        "policy_profile": { "name": "test_only_hardening_pr_merge_v1" },
        "boundary": ["forbid:gate_evaluate"]
      },
      "expect": {
        "status": "HOLD_FOR_CHAIR",
        "profile_bound": false,
        "auto_apply": false,
        "refusal_code": "engine_hold_for_chair"
      }
    }
  ]
}
