{"record":{"id":"8305285d3fe38bf4","repo":"phacility/phabricator","slug":"trigger-ruleset-is-corrupt-expected-a-list-of-rul","errorCode":null,"errorMessage":"Trigger ruleset is corrupt: expected a list of rule specifications, found \"%s\".","messagePattern":"Trigger ruleset is corrupt: expected a list of rule specifications, found \"(.+?)\"\\.","errorType":"exception","errorClass":"PhabricatorProjectTriggerCorruptionException","httpStatus":null,"severity":"error","filePath":"src/applications/project/storage/PhabricatorProjectTrigger.php","lineNumber":131,"sourceCode":"    // When they do, we still want the UI to reflect the ruleset state\n    // accurately and \"Edit\" + \"Save\" shouldn't destroy data unless the\n    // user explicitly modifies the ruleset.\n\n    // In this mode, when we run into rules which are structured correctly but\n    // which have types we don't know about, we replace them with \"Unknown\n    // Rules\". If we know about the type of a rule but the value doesn't\n    // validate, we replace it with \"Invalid Rules\". These two rule types don't\n    // take any actions when a card is dropped into the column, but they show\n    // the user what's wrong with the ruleset and can be saved without causing\n    // any collateral damage.\n\n    $rule_map = PhabricatorProjectTriggerRule::getAllTriggerRules();\n\n    // If the stored rule data isn't a list of rules (or we encounter other\n    // fundamental structural problems, below), there isn't much we can do\n    // to try to represent the state.\n    if (!is_array($list)) {\n      throw new PhabricatorProjectTriggerCorruptionException(\n        pht(\n          'Trigger ruleset is corrupt: expected a list of rule '.\n          'specifications, found \"%s\".',\n          phutil_describe_type($list)));\n    }\n\n    $trigger_rules = array();\n    foreach ($list as $key => $rule) {\n      if (!is_array($rule)) {\n        throw new PhabricatorProjectTriggerCorruptionException(\n          pht(\n            'Trigger ruleset is corrupt: rule (at index \"%s\") should be a '.\n            'rule specification, but is actually \"%s\".',\n            $key,\n            phutil_describe_type($rule)));\n      }\n\n      try {","sourceCodeStart":113,"sourceCodeEnd":149,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/project/storage/PhabricatorProjectTrigger.php#L113-L149","documentation":"Error \"Trigger ruleset is corrupt: expected a list of rule specifications, found \"%s\".\" thrown in phacility/phabricator.","triggerScenarios":"Thrown at src/applications/project/storage/PhabricatorProjectTrigger.php:131 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}