Skip to content

Decision models in the query loop: engine fix, demo runner and website - #5

Merged
morristai merged 5 commits into
mainfrom
decision-models-demo
Oct 20, 2026
Merged

morristai merged 5 commits into
mainfrom
decision-models-demo

Conversation

@morristai

@morristai morristai commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

Summary

Five commits on top of main. The first three carry the work; the last two cherry-pick the open dependabot bumps #1 and #2 so this branch builds with the current lock file:

  • feat: evaluate single-input join condition parts before the join (2dd0437). Parts of a join condition that read one input only become pre-join computed columns, so LOWER(x) LIKE ... above an inner join lowers natively instead of being rejected under native_required. Covered by lowering, residual and expression-contract tests plus a GPU runtime case.
  • feat: add the decision-model demo over the Flight SQL server (b393e49). fixture/demo/decision_models: a client that reads only JEV_API_URL and JEV_API_KEY, a registry keyed by a hash of each entity's context, a policy with accept/review/reject bands, Parquet decision tables registered with the server, cases A to F with controls, and a replay mode that reruns every query with zero model calls. Captures and registries stay local.
  • feat: publish the decision-model demo on the website (a0729c9). Blog post "Decision Models in the Query Loop", bridges and brand-twins follow-ups on the MerRec case study page, two CC BY-NC data files exported without backend name, model ids or registry hashes, and the case B runner recording every pass's judgments.
  • build(deps): bump the website group in /website with 4 updates (cherry-pick of build(deps): bump the website group in /website with 4 updates #1): react, react-dom, sigma, wrangler. The site was reinstalled from the new lock file with npm ci and rebuilt.
  • build(deps): bump taiki-e/install-action from 2.87.27 to 2.87.29 (cherry-pick of build(deps): bump taiki-e/install-action from 2.87.27 to 2.87.29 in the actions group #2).

Secrets and private endpoints

The full diff against main was scanned for the hosted model's endpoint host and path, the API key (whole, prefix and suffix), JWT shapes, Bearer ey, and JEV_API_KEY=" / RDSEC_API_KEY=" assignments: no hits. The local pre-commit hook with the same patterns passed on every commit. The data files under website/static/data carry the MerRec license field and are listed in LICENSE-MERREC.md.

Verification

  • cargo nt on the lowering, residual, join filter, gap, expression contract and scalar expression tests (227 tests, 7 GPU cases), rustfmt nightly, workspace clippy.
  • Demo: compare_captures.py identical for cases A to F; export_website.py --check matches; 14 exporter and client unit tests.
  • Website: npm run typecheck, npm run build, check_third_party_data.py, check_prose_slop.sh on the new pages; rendered pages checked by screenshot.

🤖 Generated with Claude Code

morristai and others added 5 commits October 19, 2026 19:11
A join condition that reads both inputs stays on the join. Each part that
reads one input and that the cuDF join AST cannot evaluate (LIKE, string
functions, IS DISTINCT FROM) becomes a computed column of that input before
the join, as an expression join key does. Only parts that cannot fail move,
because DataFusion evaluates the condition on key-matched pairs alone.

Statements that write LOWER(name) LIKE in a filter above an inner join are
native under native_required with this change; 0.1.2 rejected them.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
fixture/demo/decision_models runs the probe, decide, materialize, recompute
loop against an unchanged server: a probe query bounds the candidate set, a
decision backend answers a fixed question set per candidate (choice, noul,
score), a policy bands the action probability, the typed answers return as
a Parquet table, and the recompute runs natively over the full data. Six
cases over MerRec, Amazon reviews and EMBER with a registry cache, replay
from captures with zero API calls, non-model controls and comparators. The
backend client reads only JEV_API_URL and JEV_API_KEY; captures record the
backend name and model id only. Registries, captures and derived data stay
local (MerRec CC BY-NC).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Add the blog post "Decision Models in the Query Loop" with the loop figure
and the rank-shift chart, and two follow-ups on the MerRec case study page:
world bridges recomputed without the entries a decision model rejects, and
brand twins merged through the same loop with exact fan counts.

export_website.py writes the two CC BY-NC data files from the local case A
and B captures and drops the backend name, model ids and registry hashes;
a unit test covers the stripping. The case B runner now records every
pass's judgments in the review queue, band counts, kind counts and
decisions instead of pass 1 only.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Bumps the website group in /website with 4 updates: [react](https://github.com/react/react/tree/HEAD/packages/react), [react-dom](https://github.com/react/react/tree/HEAD/packages/react-dom), [sigma](https://github.com/jacomyal/sigma.js) and [wrangler](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler).

Updates `react` from 19.3.0 to 19.3.1
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.3.1/packages/react)

Updates `react-dom` from 19.3.0 to 19.3.1
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.3.1/packages/react-dom)

Updates `sigma` from 4.0.0 to 4.0.3
- [Release notes](https://github.com/jacomyal/sigma.js/releases)
- [Changelog](https://github.com/jacomyal/sigma.js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jacomyal/sigma.js/compare/sigma@4.0.0...sigma@4.0.3)

Updates `wrangler` from 4.149.0 to 4.151.0
- [Release notes](https://github.com/cloudflare/workers-sdk/releases)
- [Commits](https://github.com/cloudflare/workers-sdk/commits/wrangler@4.151.0/packages/wrangler)

---
updated-dependencies:
- dependency-name: react
  dependency-version: 19.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: website
- dependency-name: react-dom
  dependency-version: 19.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: website
- dependency-name: sigma
  dependency-version: 4.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: website
- dependency-name: wrangler
  dependency-version: 4.151.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: website
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 2e29946)
Bumps the actions group with 1 update: [taiki-e/install-action](https://github.com/taiki-e/install-action).

Updates `taiki-e/install-action` from 2.87.27 to 2.87.29
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](taiki-e/install-action@ab68953...8cca091)

---
updated-dependencies:
- dependency-name: taiki-e/install-action
  dependency-version: 2.87.29
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit b85550f)
@morristai
morristai merged commit bc23ef6 into main Oct 20, 2026
2 checks passed
@morristai
morristai deleted the decision-models-demo branch October 20, 2026 03:22
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