Puras en el centro, impuras en los bordes. Una funcion pura NUNCA depende de una impura.

- `purity: pure` → `returns_optional: false` + `error_type: ""`
- `purity: impure` → `error_type` obligatorio (usar `error_go_core`)
- `kind: pipeline` → siempre `purity: impure` + `uses_functions` no vacio
