Skip to content

fix: keep Coordinator Functions inside their size limits without curry - #2589

Merged
jeremi merged 1 commit into
mainfrom
fix/coordinator-no-curry
Nov 7, 2026
Merged

jeremi merged 1 commit into
mainfrom
fix/coordinator-no-curry

Conversation

@jeremi

@jeremi jeremi commented Nov 7, 2026

Copy link
Copy Markdown
Member

Coordinator's pure Function profile disables curry, matching the deterministic Rhai base every other product script runs on since #2575. Rhai does not count data curried into a function pointer against the profile's size limits.

Changes

  • curry is a disabled symbol in the pure profile and is no longer listed by coordinatorctl explain functions.
  • The interpreter ABI moves from v2 to v3, because the callable set is part of what a frozen definition means (SECURITY-MODEL, COORDINATOR-INV-12).
  • Author experience: coordinatorctl check now says "function source uses curry, which Coordinator Functions do not offer" and suggests passing the value as an argument. Before, the parser reported "Expecting name of a property". A compile refusal in a functions.rhai shared by several Functions is reported once instead of once per Function, as unknown-call findings already were.
  • CHANGELOG (BREAKING) and SECURITY-MODEL updated.

Upgrade impact

Every definition frozen by 0.45.0 records ABI v2 and is refused with definition.abi, whether or not it uses curry. As with the v1 to v2 change in 0.45.0: settle runs with the 0.45.0 binaries, then check and promote the project again. No maintained example or Studio-generated Function uses curry.

Verification

  • cargo test --locked --no-fail-fast -p registry-coordinator: 662 passed, 0 failed (macOS, no PostgreSQL URL set, so postgres-test targets are left to CI).
  • cargo clippy --locked -p registry-coordinator --all-targets -- -D warnings, cargo fmt --check: clean.
  • products/coordinator/scripts/check-schemas.sh: passed. Coordinator script unit tests: 70 OK. Dependency direction check: passed.
  • Manual: coordinatorctl check on the decision-follow-up example passes unchanged; with a curry call added, it reports the single finding above at its line and column.

Rhai does not count data curried into a function pointer against the
size limits, so the pure profile disables `curry`, as the deterministic
base already does for every other Rhai script. The callable set is part
of the interpreter ABI, which moves to v3.

Check names `curry` and suggests passing the value as an argument
instead of a generic syntax error, and a refusal in a source shared by
several Functions is reported once.

BREAKING CHANGE: definitions frozen under interpreter ABI v2 are refused
with `definition.abi`; check and promote projects again.

Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 7, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-07T06:05:34.430955Z 05cf36d PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@jeremi
jeremi added this pull request to the merge queue Nov 7, 2026
Merged via the queue into main with commit 588654c Nov 7, 2026
57 checks passed
@jeremi
jeremi deleted the fix/coordinator-no-curry branch November 7, 2026 12:03
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.

1 participant