Skip to content

feat: add support for params - #418

Open
stefan-gorules wants to merge 2 commits into
masterfrom
feat/params
Open

feat: add support for params#418
stefan-gorules wants to merge 2 commits into
masterfrom
feat/params

Conversation

@stefan-gorules

Copy link
Copy Markdown
Contributor

No description provided.

@phenixrizen

phenixrizen commented Aug 18, 2026

Copy link
Copy Markdown

@stefan-gorules @ivanmiletic Is there anything blocking this one? Happy to help if so.

We run a large production deployment of JDM graphs for healthcare claims adjudication, and a substantial share of them carry a per-engine sidecar file of policy constants — code sets, effective dates, allowed modifier lists. Today our host merges that into the evaluation input, which means a policy and the constants it depends on are two separate artifacts that can version-drift independently. That has been a recurring source of authoring problems for us.

$params fixes exactly that: the constants live in the decision document, so the policy travels with its own data. It would also let us replace a number of hand-rolled custom nodes with plain expressions like contains($params.codes, clue.procedureCode).

Two things we can offer, both inside what the contribution policy allows:

  • We can run this branch against our full corpus and report back on real graphs — useful signal on the $params reserved-key handling and the trace/transform stripping in particular.
  • We're glad to write additional test coverage or documentation for it if that's what's outstanding.

Not asking to jump the queue — just wanted to flag that there's a real user waiting on it, and to offer hands if the remaining work is the kind we can pick up.

phenixrizen added a commit to phenixrizen/zen that referenced this pull request Aug 27, 2026
Ports the `params` feature from gorules#418 onto current master. That PR
branches from 61465bd (2025-11-24) and master is 93 commits ahead, including
the walker rewrite in fe43b4c and the DecisionContent Graph/Policy split, so
the original diff no longer applies; this is a reimplementation against the
current shape rather than a merge.

Params are decision-level constants declared on the graph document and exposed
to every node as `$params`. Unlike evaluation input they travel with the
decision, so a policy and the constants it depends on cannot drift apart.

Following current master's design, `$params` is supplied as an isolate local
alongside `$nodes` rather than being written into the input object, and is
converted to a Variable once per evaluation. It is registered as a reserved
property so it is stripped from results and traces.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
phenixrizen added a commit to phenixrizen/zen that referenced this pull request Aug 27, 2026
Ports the `params` feature from gorules#418 onto current master. That PR
branches from 61465bd (2025-11-24) and master is 93 commits ahead, including
the walker rewrite in fe43b4c and the DecisionContent Graph/Policy split, so
the original diff no longer applies; this is a reimplementation against the
current shape rather than a merge.

Params are decision-level constants declared on the graph document and exposed
to every node as `$params`. Unlike evaluation input they travel with the
decision, so a policy and the constants it depends on cannot drift apart.

Following current master's design, `$params` is supplied as an isolate local
alongside `$nodes` rather than being written into the input object, and is
converted to a Variable once per evaluation. It is registered as a reserved
property so it is stripped from results and traces.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
phenixrizen added a commit to phenixrizen/zen that referenced this pull request Aug 27, 2026
Ports the `params` feature from gorules#418 onto current master. That PR
branches from 61465bd (2025-11-24) and master is 93 commits ahead, including
the walker rewrite in fe43b4c and the DecisionContent Graph/Policy split, so
the original diff no longer applies; this is a reimplementation against the
current shape rather than a merge.

Params are decision-level constants declared on the graph document and exposed
to every node as `$params`. Unlike evaluation input they travel with the
decision, so a policy and the constants it depends on cannot drift apart.

Following current master's design, `$params` is supplied as an isolate local
alongside `$nodes` rather than being written into the input object, and is
converted to a Variable once per evaluation. It is registered as a reserved
property so it is stripped from results and traces.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
phenixrizen added a commit to phenixrizen/zen that referenced this pull request Aug 27, 2026
Ports the `params` feature from gorules#418 onto current master. That PR
branches from 61465bd (2025-11-24) and master is 93 commits ahead, including
the walker rewrite in fe43b4c and the DecisionContent Graph/Policy split, so
the original diff no longer applies; this is a reimplementation against the
current shape rather than a merge.

Params are decision-level constants declared on the graph document and exposed
to every node as `$params`. Unlike evaluation input they travel with the
decision, so a policy and the constants it depends on cannot drift apart.

Following current master's design, `$params` is supplied as an isolate local
alongside `$nodes` rather than being written into the input object, and is
converted to a Variable once per evaluation. It is registered as a reserved
property so it is stripped from results and traces.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
phenixrizen added a commit to phenixrizen/zen that referenced this pull request Aug 27, 2026
Ports the `params` feature from gorules#418 onto current master. That PR
branches from 61465bd (2025-11-24) and master is 93 commits ahead, including
the walker rewrite in fe43b4c and the DecisionContent Graph/Policy split, so
the original diff no longer applies; this is a reimplementation against the
current shape rather than a merge.

Params are decision-level constants declared on the graph document and exposed
to every node as `$params`. Unlike evaluation input they travel with the
decision, so a policy and the constants it depends on cannot drift apart.

Following current master's design, `$params` is supplied as an isolate local
alongside `$nodes` rather than being written into the input object, and is
converted to a Variable once per evaluation. It is registered as a reserved
property so it is stripped from results and traces.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
phenixrizen added a commit to phenixrizen/zen that referenced this pull request Aug 27, 2026
Ports the `params` feature from gorules#418 onto current master. That PR
branches from 61465bd (2025-11-24) and master is 93 commits ahead, including
the walker rewrite in fe43b4c and the DecisionContent Graph/Policy split, so
the original diff no longer applies; this is a reimplementation against the
current shape rather than a merge.

Params are decision-level constants declared on the graph document and exposed
to every node as `$params`. Unlike evaluation input they travel with the
decision, so a policy and the constants it depends on cannot drift apart.

Following current master's design, `$params` is supplied as an isolate local
alongside `$nodes` rather than being written into the input object, and is
converted to a Variable once per evaluation. It is registered as a reserved
property so it is stripped from results and traces.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
phenixrizen added a commit to phenixrizen/zen that referenced this pull request Aug 27, 2026
Ports the `params` feature from gorules#418 onto current master. That PR
branches from 61465bd (2025-11-24) and master is 93 commits ahead, including
the walker rewrite in fe43b4c and the DecisionContent Graph/Policy split, so
the original diff no longer applies; this is a reimplementation against the
current shape rather than a merge.

Params are decision-level constants declared on the graph document and exposed
to every node as `$params`. Unlike evaluation input they travel with the
decision, so a policy and the constants it depends on cannot drift apart.

Following current master's design, `$params` is supplied as an isolate local
alongside `$nodes` rather than being written into the input object, and is
converted to a Variable once per evaluation. It is registered as a reserved
property so it is stripped from results and traces.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
phenixrizen added a commit to phenixrizen/zen that referenced this pull request Aug 27, 2026
Ports the `params` feature from gorules#418 onto current master. That PR
branches from 61465bd (2025-11-24) and master is 93 commits ahead, including
the walker rewrite in fe43b4c and the DecisionContent Graph/Policy split, so
the original diff no longer applies; this is a reimplementation against the
current shape rather than a merge.

Params are decision-level constants declared on the graph document and exposed
to every node as `$params`. Unlike evaluation input they travel with the
decision, so a policy and the constants it depends on cannot drift apart.

Following current master's design, `$params` is supplied as an isolate local
alongside `$nodes` rather than being written into the input object, and is
converted to a Variable once per evaluation. It is registered as a reserved
property so it is stripped from results and traces.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants