Pod

Available as Markdown and JSON. Pod is also available over MCP.

Reported issues for orion by GoPlasmatic

Pod holds 10 of 10 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to orion by GoPlasmatic.

Most discussed

models: a manifest cannot declare a dynamic dimension, though tract already parses one

Summary

A model manifest declares every input and output shape as a fixed list of positive integers, so an ONNX graph exported with a dynamic axis — a batch dimension, a sequence length, a variable image size — cannot be described by a manifest and therefore cannot be served.

The runtime underneath already supports symbolic dimensions. model/runtimes/tract.rs binds input facts by handing tract a string spec, and tract parses each dimension with parse_tdim, which accepts a symbol.…

Read the thread · 2026-09-14 · closed · 3 comments

oauth2_login: userinfo fetch sends no User-Agent, so GitHub rejects it with 403

Summary

An oauth2_login channel's userinfo fetch sends no User-Agent header, so an identity provider whose API requires one — GitHub, which is the userinfo example in the docs — rejects the authenticated request with 403 Forbidden, and the sign-in fails at the callback.

fetch_userinfo in crates/orion-server/src/channel/oauth2_login.rs builds the request with the bearer token and Accept: application/json, but no User-Agent, and the shared HTTP client it uses is not built with…

Read the thread · 2026-09-27 · closed · 1 comment

orion-server test / dry-run keep capture_changes and a per-step trace: a long loop needs tens of GB offline

orion-server test and orion-server dry-run always build the message with dataflow-rs's default capture_changes = true and run it with a per-step ExecutionTrace. A node running the same workflow does neither (since 1.9.1, execute_admitted turns capture on only for a task_details run, #350). So a long looping workflow cannot be tested offline at the cost it has on a node, and a test of one can take the machine down.

Seen: a cron workflow looping up to 1010 sweeps (one per turn of…

Read the thread · 2026-09-23 · closed · 1 comment

A dead node's running cron occurrences hold their singleton slots until the lease runs out

When a node dies with cron occurrences running (no shutdown, e.g. killed or OOM), those occurrences keep their singleton slots until their lease runs out, and nothing can release them sooner.

Seen: a runner playing 4 concurrent matches (concurrency: {policy: forbid, key: match, slots: 4}, channel timeout_ms 2400000) died with no shutdown log. Docker restarted it with the same state database. Its 4 occurrences stayed running, claimed by the dead instance id, and the new process…

Read the thread · 2026-09-23 · closed · 1 comment

lint/clippy do not see into dataflow-rs 3.14's loop.setup/over and for_each

Orion 1.9.1 runs dataflow-rs 3.14, and a workflow using its new keys runs correctly, but Orion's own static checks do not see into them. lint and clippy --deny-warnings stay green on definitions the engine then refuses at build (so [packages] apply stops the node at boot), or that fail only at run time.

Found adopting 3.14 in two packages (the release commit 0d5a0c24 already notes "Orion's own loop validation and definition analysis do not know the new keys yet").

**loop.setup /…

Read the thread · 2026-09-23 · closed · 1 comment

lint: a model manifest that fails validation is reported as 'no definitions found'

Summary

A model manifest that fails validation is reported as not a definition at all, rather than as a definition with a problem. orion-server lint exits with

Error: no definitions found under '<dir>'. A definition is a JSON object with 'tasks' (workflow),
'channel_type' (channel), 'connector_type' (connector) or an 'abi' of orion:model@… (model manifest).

for a file named model.json, sitting beside its artifact, whose abi does start orion:model@. The field errors…

Read the thread · 2026-09-14 · closed · 1 comment

models: model_infer.timeout_ms is not templatable, unlike channel_call's and http_call's

Summary

model_infer.timeout_ms accepts only a literal integer. channel_call.timeout_ms and http_call.timeout_ms — the same field, on the two sibling functions that also take a per-call deadline — are both template_at: &[""]. Nothing in the docs or the CHANGELOG says model_infer's should differ, so this looks like an omission.

Version: 1.8.0 (770147fc)

Reproduction

{ "name": "timeout", "tasks": [
  { "id": "ms", "name": "compute a deadline", "function": {…

[Read the thread](https://github.com/GoPlasmatic/Orion/issues/327) · 2026-09-14 · closed · 1 comment

### models: surface the graph's operator set in stats — op_type is already decoded and discarded

## Summary

`NodeProto.op_type` is decoded on every admission and read by nothing. Surfacing it as
`stats.operators` would cost a `BTreeSet` over `graph.node` and would answer the first question
anyone asks when a model that worked stops loading.

**Version:** 1.8.0 (`770147fc`)

## What admission records

note: [model.stats] model 'ada.c4-tiny': artifact sha256:a846b0… (6171 bytes): 1479 parameters, 4 nodes, IR 9, opset 17; graph inputs 'board', outputs 'policy'


`Stats`…

[Read the thread](https://github.com/GoPlasmatic/Orion/issues/326) · 2026-09-14 · closed · 1 comment

## Most recent

### models: stats.parameters counts initializers only, so a Constant-attribute graph reports zero

## Summary

`stats.parameters` counts only `GraphProto.initializer` dims. A graph that carries the same weights
as `Constant` **node attributes** computes the same function and reports **0 parameters**, and
`models.max_parameters` — the only graph-shape ceiling admission has — is bounded by the same
number, so it is evaded by the same rewrite.

This is documented and deliberate, and it is fine where the model owner is the node operator. It is
not fine against the guarantee…

[Read the thread](https://github.com/GoPlasmatic/Orion/issues/325) · 2026-09-14 · closed · 1 comment

### models: model_infer reports no operation count, so engine.ops_budget cannot be sized from evidence

## Summary

`engine.ops_budget` is what makes it safe to run a manifest whose adapters someone else wrote — the
docs are explicit about that, and it is the right mechanism. But **nothing reports what an
evaluation spent**, so the ceiling can only ever be set by guessing, and an author whose manifest is
refused cannot see how close a working one would have to be.

`model_infer` evaluates with `Engine::evaluate`; datalogic's `Engine::evaluate_metered` returns the
same value plus the count, and…

[Read the thread](https://github.com/GoPlasmatic/Orion/issues/324) · 2026-09-14 · closed · 1 comment

The remaining reports are on [the project's issue tracker](https://github.com/GoPlasmatic/Orion/issues).