{"record":{"id":"c7ba569defa4e67d","repo":"affaan-m/ECC","slug":"unknown-workflow-kind","errorCode":null,"errorMessage":"Unknown workflow kind","messagePattern":"Unknown workflow kind","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"skills/taste-application/scripts/workflow_graphs.py","lineNumber":114,"sourceCode":"    for name, node in nodes.items():\n        reachable = visit(name, set())\n        for ref in references_in({'input': node.get('input'), 'fields': node.get('fields')}):\n            if ref[0] not in reachable:\n                raise ValueError(f'{name} references undeclared dependency: {ref[0]}')\n            if ref[0] == 'input':\n                if len(ref) < 2 or ref[1] not in inputs:\n                    raise ValueError('Unknown workflow input')\n                used.add(ref[1])\n    for ref in references_in(contents.get('output', {})):\n        if ref[0] not in nodes:\n            raise ValueError('Unknown output node')\n    if used != set(inputs):\n        raise ValueError(f'Unwired workflow inputs: {sorted(set(inputs) - used)}')\n\n\ndef load_graph(kind):\n    if kind not in ('apply', 'apply-motion', 'distill', 'prop3d'):\n        raise ValueError('Unknown workflow kind')\n    graph = json.loads((WORKFLOWS / f'taste-{kind}.json').read_text())\n    validate_graph(graph)\n    return graph\n\n\ndef main():\n    parser = argparse.ArgumentParser(description=__doc__)\n    parser.add_argument('--kind', choices=('apply', 'apply-bundle', 'distill'), required=True)\n    parser.add_argument('--config', type=Path, required=True)\n    parser.add_argument('--out', type=Path, required=True)\n    args = parser.parse_args()\n    try:\n        if args.kind == 'apply-bundle':\n            from tasteforge.integration import build_application_bundle, load_application_request\n            config = load_application_request(args.config)\n        else:\n            config = json.loads(args.config.read_text())\n        if not isinstance(config, dict):","sourceCodeStart":96,"sourceCodeEnd":132,"githubUrl":"https://github.com/affaan-m/ECC/blob/8321021c54d670126ce3b2969d5deb880b4b0c2a/skills/taste-application/scripts/workflow_graphs.py#L96-L132","documentation":"Dispatch guard in load_graph/main: the --kind argument does not match a known workflow kind (e.g. 'apply-bundle'). No matching builder exists, so the graph loader refuses to proceed with an arbitrary config shape.","triggerScenarios":"Calling load_graph('apply-bundle') or another unsupported kind directly, or the CLI dispatching a kind value not in the allowlist.","commonSituations":"Passing a new/typo'd --kind CLI argument; scripting load_graph with a kind introduced in a newer version; confusing 'apply-bundle' (handled in main, not load_graph) with a loadable kind.","solutions":["Use one of the supported kinds: 'apply', 'apply-motion', 'distill', or 'prop3d'","For bundle workflows, use the apply-bundle code path in main rather than load_graph","Check the CLI's accepted --kind values (argparse choices) before scripting calls","If you need a new kind, add it to the tuple in load_graph plus a corresponding taste-<kind>.json file"],"exampleFix":"// before\ngraph = load_graph('apply-bundle')\n// after\ngraph = load_graph('apply')  # or 'apply-motion' | 'distill' | 'prop3d'","handlingStrategy":"validation","validationCode":"VALID_KINDS = {'apply', 'apply-motion', 'distill', 'prop3d'}\nif kind not in VALID_KINDS:\n    raise SystemExit(f'--kind must be one of {sorted(VALID_KINDS)}')","typeGuard":null,"tryCatchPattern":"try:\n    graph = load_graph(kind)\nexcept ValueError as e:\n    if str(e) == 'Unknown workflow kind':\n        print('supported kinds: apply, apply-motion, distill, prop3d')","preventionTips":["Use argparse choices=['apply','apply-motion','distill','prop3d'] for the CLI flag","Wrap load_graph in a helper that validates kind before calling","Check whether your version supports a new kind before scripting it"],"tags":["cli","configuration","invalid-enum"],"backgroundTag":"invalid-enum-value","analyzedSha":"8321021c54d670126ce3b2969d5deb880b4b0c2a","analyzedAt":"2026-09-16T10:08:13.343Z","contentChangedAt":"2026-09-16T10:08:13.343Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}