{"record":{"id":"47a9a60a335cb969","repo":"gastownhall/beads","slug":"s-not-found-as-formula-or-proto-id","errorCode":null,"errorMessage":"%s not found as formula or proto ID","messagePattern":"(.+?) not found as formula or proto ID","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/bd/mol_proxied_server.go","lineNumber":60,"sourceCode":"\t\t\twarnPourVaporFormula(in.protoArg, in.varFlags)\n\t\t}\n\t} else if errors.Is(err, formula.ErrVarValidation) {\n\t\t// in.protoArg IS a formula; the --var values it was given fail\n\t\t// enum/pattern/required-empty constraints. Report that directly\n\t\t// instead of falling through to the proto-ID lookup below, which\n\t\t// would otherwise mask this as \"not found as formula or proto ID\".\n\t\treturn HandleError(\"%v\", err)\n\t}\n\n\tres, err := uow.RunTxResult(ctx, uowProvider, func(ctx context.Context, uw uow.UnitOfWork) (pourProxiedResult, string, error) {\n\t\tw := newUOWMolWriter(uw)\n\n\t\tsubgraph := formulaSubgraph\n\t\tprotoID := formulaProtoID\n\t\tif subgraph == nil {\n\t\t\tresolvedID, err := utils.ResolvePartialID(ctx, w, in.protoArg)\n\t\t\tif err != nil {\n\t\t\t\treturn pourProxiedResult{}, \"\", fmt.Errorf(\"%s not found as formula or proto ID\", in.protoArg)\n\t\t\t}\n\t\t\tprotoID = resolvedID\n\t\t\tprotoIssue, err := w.GetIssue(ctx, protoID)\n\t\t\tif err != nil {\n\t\t\t\treturn pourProxiedResult{}, \"\", fmt.Errorf(\"loading proto %s: %w\", protoID, err)\n\t\t\t}\n\t\t\tif !isProto(protoIssue) {\n\t\t\t\treturn pourProxiedResult{}, \"\", fmt.Errorf(\"%s is not a proto (missing '%s' label)\", protoID, MoleculeLabel)\n\t\t\t}\n\t\t\tsubgraph, err = loadTemplateSubgraph(ctx, w, protoID)\n\t\t\tif err != nil {\n\t\t\t\treturn pourProxiedResult{}, \"\", fmt.Errorf(\"loading proto: %w\", err)\n\t\t\t}\n\t\t}\n\n\t\ttype attachmentInfo struct {\n\t\t\tid       string\n\t\t\tissue    *types.Issue","sourceCodeStart":42,"sourceCodeEnd":78,"githubUrl":"https://github.com/gastownhall/beads/blob/71377f276968b452ee607177637970a4ff888584/cmd/bd/mol_proxied_server.go#L42-L78","documentation":"bd mol pour first tries to interpret the argument as a formula name; if that fails, it falls back to resolving the argument as a proto (template molecule) ID via ResolvePartialID. This error fires only when BOTH interpretations fail: the argument is neither a recognized formula nor resolvable to an existing issue ID. Note the original ResolvePartialID error is discarded, so the message alone doesn't say why resolution failed.","triggerScenarios":"Running `bd mol pour <arg>` where <arg> is a typo'd formula name, a partial ID that doesn't match any issue, or an ID in a database that doesn't contain it.","commonSituations":"Typo in formula name (e.g. 'mol-fix' vs 'fix-mol'); passing a full human title instead of an ID; running in the wrong repo so the proto doesn't exist locally; referencing a proto deleted by bd gc or a sync that hasn't pulled it yet.","solutions":["Run bd mol list (or bd list) to see available formulas and protos and copy the exact name/ID","Check spelling of the formula name — try the formula path first in isolation","Ensure you are in the repository with the database containing the proto (bd show <id>)","If the proto lives in another synced repo, run bd dolt pull / sync before pouring"],"exampleFix":"// before\n$ bd mol pour mol-fx\nError: mol-fx not found as formula or proto ID\n// after\n$ bd mol list            # find exact name\n$ bd mol pour mol-fix","handlingStrategy":"validation","validationCode":"// resolve the argument before pouring\nresolved, err := utils.ResolvePartialID(ctx, reader, protoArg)\nif err != nil {\n\treturn fmt.Errorf(\"%q is not a formula or a known issue ID; see `bd mol list`\", protoArg)\n}","typeGuard":null,"tryCatchPattern":"err := pourCmd(protoArg)\nif err != nil && strings.Contains(err.Error(), \"not found as formula or proto ID\") {\n\treturn fmt.Errorf(\"check spelling of %q or run `bd mol list`\", protoArg)\n}","preventionTips":["Keep a list of valid formula/proto names from bd mol list","Copy IDs from command output instead of retyping them","Run in the correct repository so the local DB has the proto","Pull/sync before pouring protos created elsewhere"],"tags":["cli","molecule","not-found","pour"],"backgroundTag":"id-resolution-failed","analyzedSha":"71377f276968b452ee607177637970a4ff888584","analyzedAt":"2026-08-30T18:55:39.744Z","schemaVersion":2},"datasetVersion":"2026-08-30T23:17:21.991Z"}