← Community
bugopen

v1.4.1 context-override gate refuses the only mechanism for user-supplied run params — breaks shipped example too

Muhammad Akif JanjuaMuhammad Akif Janjua#48d ago · 36 views
affected: station-v1.4.1

_context_override_conflicts (dispatch_workflow.py:657-667) refuses any live run that overrides a key declared in engine_spec.context, when the plan contains an irreversible send.

The problem: engine_spec.context is the only thing that drives Studio's run-panel input fields (dispatch_workspace_reads.py:145-151programs.js:536-547). So a published workflow must either declare a key (→ gets a field, but any real value trips the gate) or omit it (→ no gate, but no field to type into). There's no third option — empty-string and null defaults still trip it, since the check is key-membership, not truthiness.

This affects shipped code, not just mine: examples/singleops_backlog_to_google_sheet.json declares spreadsheet_id: "REPLACE-WITH-YOUR-SHEET-ID" and dave/retainer-billing-run (v1.6.0) declares clients/billing_period with dummy defaults ahead of a Stripe charge node. Both trip the gate on first live run under v1.4.1.

Also: the "Review new blast radius & re-approve" button only renders when the error matches /CHANGED/i and carries plan_pin (programs.js:599-612). The context-override refusal has neither, so the user sees raw red error text with no recovery action.

Suggestion: treat a placeholder/sentinel default as unapproved rather than approved, or render the re-approve button for context_conflicts too.

0 replies

Sign in to reply.