You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
bd mol pour fails when a formula step has gate = { type = "human" }:
Error: pouring proto: failed to create issue from meow-openspec.gate-proposal-review: validation failed for issue : invalid issue type: gate
The formula-pour code path creates a companion bead of type gate, but the validation uses IsValid() (built-in types only) instead of IsValidWithCustom().
Workaround:bd config set types.custom '["gate"]' — registers gate as a custom type.
bd init # if not already initialized
bd formula list # should show "repro"
bd mol pour repro
# Error: pouring proto: failed to create issue from repro.gate-review: validation failed for issue : invalid issue type: gate
Diagnosis
This is the same class of bug as #3030 (bd update --type rejects custom types). That issue identified IsValid() vs IsValidWithCustom() as the root cause and was fixed in #3159 for three call sites in the update path.
The formula-pour code path is a fourth call site that was missed by the #3030 fix. The pour pipeline creates companion beads of type gate when a formula step has a gate field, but the creation goes through a validation path that still uses IsValid().
Supporting evidence: the types.custom example in #3030 already includes gate in its list, confirming that bd's own ecosystem expects gate-type beads to exist.
Expected behavior
bd mol pour should succeed when a formula has gate steps, without requiring the operator to manually register gate as a custom type. Either:
Bug
bd mol pourfails when a formula step hasgate = { type = "human" }:The formula-pour code path creates a companion bead of type
gate, but the validation usesIsValid()(built-in types only) instead ofIsValidWithCustom().Workaround:
bd config set types.custom '["gate"]'— registersgateas a custom type.Reproduction
Diagnosis
This is the same class of bug as #3030 (
bd update --typerejects custom types). That issue identifiedIsValid()vsIsValidWithCustom()as the root cause and was fixed in #3159 for three call sites in the update path.The formula-pour code path is a fourth call site that was missed by the #3030 fix. The pour pipeline creates companion beads of type
gatewhen a formula step has agatefield, but the creation goes through a validation path that still usesIsValid().Supporting evidence: the
types.customexample in #3030 already includesgatein its list, confirming that bd's own ecosystem expects gate-type beads to exist.Expected behavior
bd mol pourshould succeed when a formula has gate steps, without requiring the operator to manually registergateas a custom type. Either:IsValidWithCustom()(same fix as bd update --type rejects custom types (agent, convoy, etc.) #3030), orbd mol pourshould auto-registergateas a custom type when it encounters formula gate steps, ortaskinstead ofgate(with gate semantics carried in metadata/labels).Environment
gate = { type = "human" }on stepsI'm happy to submit a PR if you confirm the diagnosis and preferred fix approach.