{
  "date": "2026-10-19",
  "inputs": {
    "coverage_sha256": "8cacd29c1e67431fae6aa17fd5353b4a5d911056683f5cfce5c8b660d590f83e",
    "contract_sha256": "24066120e7a0ba7ab00eaee5c66747d6e8d5cd7b2ea9a31305e0f94ddb7dc3bd",
    "old_inventory_input_sha256": "f41f2e110487363af674c8a5a9b07f7b0c611c9961eb7cff8e41bd90226da1ea",
    "old_inventory_matches_current_coverage": false
  },
  "raw": {
    "http_candidate_rows": 2067,
    "command_candidate_rows": 75,
    "contract_http_rows": 2067,
    "expanded_http_method_candidates": 2071,
    "unique_repo_method_path_keys": 2064,
    "unique_method_path_keys_without_repo": 1954,
    "contract_only_keys": 0,
    "coverage_only_keys": 0
  },
  "repositories": {
    "store": {
      "raw_candidate_rows": 949,
      "unique_repo_method_path_keys": 946,
      "duplicate_raw_keys": 5,
      "expanded_concrete_methods": 940,
      "wildcard_method_keys": 6,
      "delivery_scope_confirmed_keys": 63,
      "progress": {
        "scoped_closed": 1,
        "dual_business_partial": 736,
        "single_side_or_limited_branch": 70,
        "explicit_failure": 31,
        "not_tested": 108
      },
      "dual_http_observed_keys": 743,
      "environment_blocked_keys": 14
    },
    "ai_api": {
      "raw_candidate_rows": 780,
      "unique_repo_method_path_keys": 781,
      "duplicate_raw_keys": 1,
      "expanded_concrete_methods": 644,
      "wildcard_method_keys": 137,
      "delivery_scope_confirmed_keys": 26,
      "progress": {
        "scoped_closed": 14,
        "dual_business_partial": 636,
        "single_side_or_limited_branch": 49,
        "explicit_failure": 13,
        "not_tested": 69
      },
      "dual_http_observed_keys": 640,
      "environment_blocked_keys": 9
    },
    "unreviewed": {
      "raw_candidate_rows": 338,
      "unique_repo_method_path_keys": 337,
      "duplicate_raw_keys": 1,
      "expanded_concrete_methods": 337,
      "wildcard_method_keys": 0,
      "delivery_scope_confirmed_keys": 0,
      "progress": {
        "scoped_closed": 0,
        "dual_business_partial": 0,
        "single_side_or_limited_branch": 0,
        "explicit_failure": 0,
        "not_tested": 337
      },
      "dual_http_observed_keys": 0,
      "environment_blocked_keys": 0
    }
  },
  "ai_source_inventory": {
    "public_action_candidates": 758,
    "unique_candidate_paths": 758,
    "registered_matching_paths": 757,
    "not_yet_registered_paths": 1,
    "caveat": "Static public methods only; excludes lifecycle/magic methods but reachability and allowed HTTP methods remain unverified."
  },
  "ownership": {
    "unreviewed_unique_method_path_keys": 337,
    "duplicate_of_already_owned_keys": 104,
    "conservative_new_unowned_pool": 233,
    "audited_source_match_keys": 233,
    "audit_missing_keys": 0,
    "provisional_static_candidates": {
      "store": 121,
      "ai_api": 1,
      "ambiguous_both": 5,
      "unresolved": 106
    }
  },
  "named_gates": {
    "environment_blocked": [
      "store POST /m/staff/info",
      "store POST /m/nutrition/programmedetail",
      "store POST /m/nutrition/programmelists",
      "store POST /m/nutrition/shareprogrammedetail",
      "store POST /p/equipment/plateupdate",
      "store POST /p/mealorder/userlist",
      "store POST /api/electronicmenu/device/activate",
      "store POST /p/bill/lists",
      "store POST /p/bill/look_bill_list",
      "store POST /p/bill/recipecalendarmarks",
      "store POST /p/bill/timer_shaft",
      "store POST /p/dishcustomcategory/list",
      "store POST /p/dishcustomcategory/options",
      "store POST /p/stageanalyze/team_list",
      "ai_api * /api/captcha/image",
      "ai_api GET /api/recharge/center",
      "ai_api POST /api/restaurant/list",
      "ai_api * /api/restaurant/detail",
      "ai_api * /api/restaurant/arealist",
      "ai_api * /api/restaurant/shoplist",
      "ai_api GET /api/subsidy.log/detail",
      "ai_api POST /api/user.aiconversation/clearsession",
      "ai_api GET /api/user.usercourse/schedule"
    ],
    "explicit_failures": [
      "store POST /p/equipment/lists",
      "store POST /p/ai/lists",
      "ai_api POST /api/sport.item/record",
      "store GET /p/cater/downaiimporttemplate",
      "store GET /p/consumesubsidylower/config",
      "store GET /p/consumesubsidylower/result",
      "store POST /p/billingrecordlower/detail",
      "store POST /p/billingrecordlower/list",
      "store POST /p/billingrecordlower/lists",
      "store POST /p/cashrefundlower/detail",
      "store POST /p/cashrefundlower/list",
      "store POST /p/datemenu/getlist",
      "store POST /p/mealorderlower/dashboardoverview",
      "store POST /p/mealorderlower/exportlogs",
      "store POST /p/mealorderlower/operationsoverview",
      "store POST /p/medicalfiles/info",
      "store POST /p/ontoanalysis/foodrecordupdate",
      "store POST /p/supplementmealorderlower/detail",
      "store POST /p/supplementmealorderlower/exportlogs",
      "store POST /p/supplementmealorderlower/list",
      "store POST /p/supplementmealorderlower/options",
      "store POST /p/supplementmealorderlower/quote",
      "store POST /p/supplementmealorderlower/staffoptions",
      "store POST /p/trainexperience/annexdelete",
      "store POST /p/trainannex/lists",
      "store POST /p/trainunit/add",
      "store POST /p/trainunit/allunit",
      "store POST /p/trainunit/delete",
      "store POST /p/trainunit/info",
      "store POST /p/trainunit/lists",
      "store POST /p/trainunit/status",
      "store POST /p/trainunit/update",
      "ai_api GET /api/dishes/all",
      "ai_api GET /api/dishes/skuinfo",
      "ai_api POST /api/user.courseschedule/create",
      "ai_api POST /api/user.courseschedule/update",
      "ai_api GET /api/user.usercourse/today",
      "ai_api GET /store/dishes.dishes/all",
      "ai_api POST /store/investigate.nutritionlack/edit",
      "ai_api POST /store/investigate.nutritionlack/delete",
      "ai_api POST /store/nutrition.nutrition/getflagdate",
      "ai_api POST /store/setting.express/delete",
      "ai_api POST /store/weight.staffweight/all",
      "ai_api POST /terminal/setting.express/delete"
    ],
    "scoped_closed": [
      "store POST /api/mocatch/qrcode",
      "ai_api * /api/baidufaceoffline/health",
      "ai_api * /api/baidufaceoffline/detect",
      "ai_api * /api/baidufaceoffline/feature",
      "ai_api * /api/baidufaceoffline/register",
      "ai_api * /api/baidufaceoffline/update",
      "ai_api * /api/baidufaceoffline/search",
      "ai_api * /api/baidufaceoffline/deleteuser",
      "ai_api * /api/baidufaceoffline/groupadd",
      "ai_api * /api/baidufaceoffline/groupdelete",
      "ai_api * /api/baidufaceoffline/grouplist",
      "ai_api * /api/baidufaceoffline/userlist",
      "ai_api * /api/baidufaceoffline/userinfo",
      "ai_api * /api/baidufaceoffline/userimage",
      "ai_api * /api/baidufaceoffline/count"
    ]
  },
  "caveats": [
    "Counts are provisional inventory keys, not confirmed reachable delivery API denominator.",
    "Scoped closed is not full-system pass; dual business partial is not complete scenario coverage.",
    "The old static ownership audit has a different input hash; classifications are provisional for matched keys only.",
    "Unreviewed unresolved keys may belong to either repo, external hosts, old routes, or no current deliverable."
  ]
}
