{"record":{"id":"95b4b05ea35e0736","repo":"gastownhall/beads","slug":"applying-inline-expansions-to-q-w","errorCode":null,"errorMessage":"applying inline expansions to %q: %w","messagePattern":"applying inline expansions to %q: %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/bd/cook.go","lineNumber":748,"sourceCode":"\t\t}\n\t}\n\n\t// Apply control flow operators - loops, branches, gates\n\tcontrolFlowSteps, err := formula.ApplyControlFlow(resolved.Steps, resolved.Compose)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"applying control flow to %q: %w\", formulaName, err)\n\t}\n\tresolved.Steps = controlFlowSteps\n\n\t// Apply advice transformations\n\tif len(resolved.Advice) > 0 {\n\t\tresolved.Steps = formula.ApplyAdvice(resolved.Steps, resolved.Advice)\n\t}\n\n\t// Apply inline step expansions\n\tinlineExpandedSteps, err := formula.ApplyInlineExpansions(resolved.Steps, parser)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"applying inline expansions to %q: %w\", formulaName, err)\n\t}\n\tresolved.Steps = inlineExpandedSteps\n\n\t// Apply expansion operators\n\tif resolved.Compose != nil && (len(resolved.Compose.Expand) > 0 || len(resolved.Compose.Map) > 0) {\n\t\texpandedSteps, err := formula.ApplyExpansions(resolved.Steps, resolved.Compose, parser)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"applying expansions to %q: %w\", formulaName, err)\n\t\t}\n\t\tresolved.Steps = expandedSteps\n\t}\n\n\t// Apply aspects from compose.aspects\n\tif resolved.Compose != nil && len(resolved.Compose.Aspects) > 0 {\n\t\tfor _, aspectName := range resolved.Compose.Aspects {\n\t\t\taspectFormula, err := parser.LoadByName(aspectName)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"loading aspect %q: %w\", aspectName, err)","sourceCodeStart":730,"sourceCodeEnd":766,"githubUrl":"https://github.com/gastownhall/beads/blob/71377f276968b452ee607177637970a4ff888584/cmd/bd/cook.go#L730-L766","documentation":"Thrown in resolveAndCookFormulaWithVars when formula.ApplyInlineExpansions fails to expand inline step expansions (steps that reference other formulas inline via expansion syntax). The wrapper preserves the underlying cause while naming the formula being cooked, so failures during recursive inline expansion (parse errors, missing referenced formulas, depth problems) surface under this prefix.","triggerScenarios":"Cooking a formula whose steps use inline expansion syntax (e.g. `use formula-name` inside a step) where the referenced formula cannot be resolved, its YAML/template is malformed, or recursion exceeds allowed depth. Reached via bd cook, bd pour, verifyFormula, or resolveOrCookToSubgraph on such a formula.","commonSituations":"Formula library references a step-expansion formula that was renamed or deleted; a typo in the inline expansion name inside a formula YAML; circular inline references; shared formula repo not synced so an expansion target is missing locally.","solutions":["Open the wrapped inner error to find the exact expansion target and failing step; fix or restore the referenced formula","Run `bd doctor` / verify the formula search path includes the directory containing the referenced formula","Fix typos in the inline expansion directive in the formula's YAML","Check for circular inline expansions between formulas and break the cycle","Re-sync the formula repository so all referenced expansion formulas exist locally"],"exampleFix":"# before (cook failing)\nsteps:\n  - id: build\n    use: build-and-test  # formula missing from search path\n# after\nsteps:\n  - id: build\n    use: build  # corrected name, or create build-and-test formula","handlingStrategy":"validation","validationCode":"// Before cooking, verify all inline expansion targets resolve\nfor _, step := range f.Steps {\n    if step.Use != \"\" {\n        if _, err := parser.LoadByName(strings.TrimSpace(step.Use)); err != nil {\n            return fmt.Errorf(\"step %q references missing formula %q: %w\", step.ID, step.Use, err)\n        }\n    }\n}","typeGuard":null,"tryCatchPattern":"var cookErr *exitError\nif err := runCook(); errors.As(err, &cookErr) && strings.Contains(err.Error(), \"applying inline expansions\") {\n    // unwrap: inspect inner cause for the missing/invalid expansion target\n    log.Printf(\"formula expansion failed: %v\", errors.Unwrap(err))\n}","preventionTips":["Run bd verify/verifyFormula on formulas after editing inline expansions","Keep the formula search path configured so all referenced formulas resolve","Lint formula YAML for `use:` directives pointing at existing formulas","Watch for circular inline references when refactoring shared formulas"],"tags":["formula","inline-expansion","cook"],"backgroundTag":"formula-expansion-failed","analyzedSha":"71377f276968b452ee607177637970a4ff888584","analyzedAt":"2026-08-30T18:55:39.744Z","schemaVersion":2},"datasetVersion":"2026-08-30T23:17:21.991Z"}