Repository navigation
feat(engine): add reylo-engine, the engine crate a rust host links - #100
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
There was a problem hiding this comment.
ℹ️ No critical issues. One small cleanup is suggested inline.
Reviewed changes
This review covers the new reylo-engine facade crate and the move of the oracle's three answerers into it.
reylo-enginecrate: there is one feature per database engine, and each client feature (tokio-postgres,rusqlite,mysql_async) turns on its engine. The crate re-exports core's replay loop and analysis types, and addsHostError.- Clients: each client module has an
Answersand ananalyze(client, sql, cache). The bodies match the oracle code they replace; the error type changed fromStringtoHostError. The one behavior change: therusqliteclient now binds catalog-query parameters, where the oracle bound[]. That's harmless. The SQLite engine only sends empty parameter lists (engine/sqlite/src/sqlite.rs:147-148), and binding them matchessrc/sqlite-describe.ts. - Oracle: it now answers through the facade's clients, so the oracle run tests them. The MySQL interpolation test moves with the code.
- CI and docs:
-p reylo-engineis added to the engine job'scargo testand toAGENTS.md, andengine/README.mddescribes the crate. The facade's own test only compiles with its client features on. It gets them through feature unification with-p reylo-oraclein the same command, which the README explains.
claude-opus-5-5 | 𝕏
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
This review covers the one commit since the last Pullfrog review, which handles that review's only finding.
- Removed the oracle's direct engine dependencies:
oracle/Cargo.tomlno longer listsreylo-engine-postgres,reylo-engine-sqliteorreylo-engine-mysql. They now come in only throughreylo-engine's client features.reylo-engine-corestays because the oracle usesanalysis::CONSTANT_KEYandschema_type::admits. Nothing inoracle/srcnames the removed crates any more, andCargo.lockwas updated to match.
claude-opus-5-5 | 𝕏
Each database's engine behind a feature, and behind a client feature the answers to its needs over tokio-postgres, rusqlite or mysql_async, with an analyze that runs a statement's whole replay on that client. The oracle answers through it instead of its own copies.
247952f to
bf38e2a
Compare
There was a problem hiding this comment.
ℹ️ No critical issues. The rebase dropped one small docs edit, described below.
Reviewed changes
This push rebased the branch onto main (f1394c1), whose test.yml now picks checks by path. A range-diff shows bf38e2a is identical to the previously reviewed 247952f. 20a95bd differs from d243607 only where it adapts to the new workflow:
- Added
reylo-engineto the run-everything test list:everything()now passes-p reylo-enginetocargo test. - Made
engine/facade/run every check: the path filter's grep now includesfacade, and its comment names the crate the oracle answers through. A pull request that changes only one database still builds the facade throughcargo build --workspace --all-targets. - Updated the guide's CI description: the engine bullet in
AGENTS.mdlists-p reylo-engineandengine/facade/.
ℹ️ The rebase dropped the guide's Setup → Rust edits
Before the rebase, the PR also changed the Setup → Rust section of AGENTS.md. Those edits are gone now. The workspace paragraph no longer lists engine/facade, and the local cargo test command no longer has -p reylo-engine. Someone following the guide's setup therefore never runs the facade's tests. The guide also disagrees with engine/README.md, CI's everything() list, and the guide's own engine bullet.
Technical details
# Restore the AGENTS.md Setup → Rust edits lost in the rebase
## Affected sites
- AGENTS.md:76 — the workspace paragraph no longer lists `engine/facade` (`reylo-engine`, the crate a Rust host links: each database's engine behind a feature, and the answers to its needs over `tokio-postgres`, `rusqlite` or `mysql_async`)
- AGENTS.md:80 — `cargo test -p reylo-engine-core -p reylo-engine-postgres -p reylo-engine-sqlite -p reylo-engine-mysql -p reylo-oracle` lacks `-p reylo-engine`
## Required outcome
- Both lines match what d243607 had: line 76 names `engine/facade`, and line 80's command includes `-p reylo-engine` before `-p reylo-oracle`, the same as `engine/README.md:20` and the `everything()` list in `.github/workflows/test.yml:53`claude-opus-5-5 | 𝕏
|
The rebase did drop the Setup → Rust edits to AGENTS.md. Restored in e286ba8: the workspace paragraph names engine/facade again, and the local cargo test command includes -p reylo-engine. |
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
This review covers the one commit since the last Pullfrog review. It addresses that review's only finding.
- Restored the guide's Setup → Rust edits: the workspace paragraph in
AGENTS.mdnamesengine/facade(reylo-engine) again, and the localcargo testcommand has-p reylo-engineagain, just before-p reylo-oracle. The guide now agrees withengine/README.md, theeverything()list intest.yml, and its own engine bullet.
claude-opus-5-5 | 𝕏
|
Your Claude Pro/Max subscription has hit its usage limit. It resets at Oct 26, 8am (UTC). Re-trigger after that, or connect an Anthropic API key, which Pullfrog falls back to automatically. The provider's response
|

Adds
reylo-engine(engine/facade/), one crate a Rust host links to run an analysis to its end against a live database, built on the replay loop of #83.postgres,sqlite,mysql. The crate re-exports the replay loop (replay,Answerer,AsyncAnswerer,AnswerCache,ReplayError) and the analysis types, so a host depends on this crate alone.tokio-postgres,rusqliteandmysql_async. Each module has anAnswerstype and ananalyze(client, sql, cache)function. A database's refusal is an answer the engine reads; a failure that never reached the server, such as a closed connection, is the host's error and ends the replay.publish = false).CI's engine job and the guide's cargo test list add
-p reylo-engine, andengine/README.mddescribes the crate. No engine source changes, so the committedengine.wasmartifacts are unchanged.