Repository navigation
Advance tinyflows to the inherited host stack - #5537
Conversation
Picks up tinyflows' `caps::host`, `store`, and `gates` modules, inherited from the Medulla host (tinyhumansai/tinyflows#42, merged), together with the tinyagents vendoring that landed on its main independently. No build change here. Both new modules sit behind default-off features and this crate enables neither, so the graph it links is unchanged. The bump is safe only because that PR also stopped tinyflows declaring `tinyagents` as a `path` dependency: a path dependency cannot be redirected by `[patch.crates-io]`, so this crate's own patch table would have been powerless and the graph would have held two `tinyagents v2.1.0` packages at two paths - a lockfile collision, and a hard build failure rather than a resolution. Co-authored-by: Medulla <medulla@tinyhumans.ai>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe Changestinyflows vendor update
Estimated code review effort: 1 (Trivial) | ~2 minutes Mergeability Score: ⚪ Minimal · up to This change updates the vendored workflow dependency without enabling its new default-off features, and downstream validation is clean. No actionable merge-blocking risk remains after normal checks and review. Possibly related PRs
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
`main` currently fails `cargo check --locked --features <product> --tests` in three independent ways. Each was hidden behind the previous one, and none is visible to CI Lite, which scopes Rust work to changed areas — so a submodule advance that breaks an unrelated file, a stale lockfile, and integration tests that no changed-file heuristic selects can all land green and stay green. Every PR then inherits all three and looks individually broken. #5519, #5521, #5523 and #5533 are currently red on `Rust Core Coverage` for this reason. 1. `flows/n8n_import.rs` — `WorkflowGraph` gained an `agents` field when tinyflows advanced (#5537), and the struct literal here was not updated. Filled with `Vec::new()`, matching the adjacent `inputs`: an n8n workflow has no agent declaration, so an import brings none across. Inventing agents the source never described would be worse than declaring none. 2. Root `Cargo.lock` — stale against the manifest, so `--locked` refuses outright. Regenerated; no `--workspace` sweep. 3. `Config::cli_inference_snapshot` was introduced as `pub(crate)` in 2c7142c. `Config` is built with struct-literal syntax by EIGHT integration tests, which are external crates, and that syntax requires every field to be visible — so one crate-private field makes the whole struct unconstructible from outside: agent_retrieval_e2e keyring_secretstore_e2e json_rpc_e2e keyring_secretstore_fresh_e2e memory_golden_fixture_e2e memory_roundtrip_e2e memory_sync_pipeline_e2e memory_tree_summarizer_e2e Restored to `pub`, along with the type it names and a public path to it. This does partially relax "keep CLI override module export-only", so to be explicit about the tradeoff: that commit's goal was module structure, and breaking `Config`'s external constructibility reads as collateral rather than intent. Only the type appearing in `Config`'s public field list becomes public; every function in the module stays crate-internal, so it remains export-only. `#[serde(skip)]` and `#[schemars(skip)]` are what keep the field off the wire and out of the JSON schema — visibility was never doing that work. The alternative was rewriting eight test files to build by mutation. That is more churn, and it leaves the trap armed for the ninth. Verified: `cargo check --features <product> --tests` and `cargo clippy --features <product> --lib -- -D warnings` both clean. Co-authored-by: Medulla <medulla@tinyhumans.ai>
…-host-stack\n\nAdvance tinyflows to the inherited host stack\n
…ently fails `cargo check --locked --features <product> --tests` in\nthree independent ways. Each was hidden behind the previous one, and none is\nvisible to CI Lite, which scopes Rust work to changed areas — so a submodule\nadvance that breaks an unrelated file, a stale lockfile, and integration tests\nthat no changed-file heuristic selects can all land green and stay green.\n\nEvery PR then inherits all three and looks individually broken. tinyhumansai#5519, tinyhumansai#5521,\n#5523 and tinyhumansai#5533 are currently red on `Rust Core Coverage` for this reason.\n\n1. `flows/n8n_import.rs` — `WorkflowGraph` gained an `agents` field when\n tinyflows advanced (tinyhumansai#5537), and the struct literal here was not updated.\n Filled with `Vec::new()`, matching the adjacent `inputs`: an n8n workflow\n has no agent declaration, so an import brings none across. Inventing agents\n the source never described would be worse than declaring none.\n\n2. Root `Cargo.lock` — stale against the manifest, so `--locked` refuses\n outright. Regenerated; no `--workspace` sweep.\n\n3. `Config::cli_inference_snapshot` was introduced as `pub(crate)` in\n 1e06df0. `Config` is built with struct-literal syntax by EIGHT integration\n tests, which are external crates, and that syntax requires every field to be\n visible — so one crate-private field makes the whole struct unconstructible\n from outside:\n\n agent_retrieval_e2e keyring_secretstore_e2e\n json_rpc_e2e keyring_secretstore_fresh_e2e\n memory_golden_fixture_e2e memory_roundtrip_e2e\n memory_sync_pipeline_e2e memory_tree_summarizer_e2e\n\n Restored to `pub`, along with the type it names and a public path to it.\n\n This does partially relax "keep CLI override module export-only", so to be\n explicit about the tradeoff: that commit's goal was module structure, and\n breaking `Config`'s external constructibility reads as collateral rather\n than intent. Only the type appearing in `Config`'s public field list becomes\n public; every function in the module stays crate-internal, so it remains\n export-only. `#[serde(skip)]` and `#[schemars(skip)]` are what keep the\n field off the wire and out of the JSON schema — visibility was never doing\n that work.\n\n The alternative was rewriting eight test files to build by mutation. That is\n more churn, and it leaves the trap armed for the ninth.\n\nVerified: `cargo check --features <product> --tests` and\n`cargo clippy --features <product> --lib -- -D warnings` both clean.\n\n
A gitlink bump:
vendor/tinyflowsmoves toc242184, the merge of tinyhumansai/tinyflows#42.What that brings
tinyflows now carries the host-agnostic half of Medulla's workflow stack, which every host embedding the engine needed and each host that wrote it itself rewrote the same subtle parts of:
caps::host(featurehost-caps) — an out-of-process script runner, the path policy bounding which files a step may reach,CodeRunnerand aShellRunner, a file-backedStateStore, and an allowlisted HTTP client that pins the transport to the addresses it just vetted.store(featurestore) — the durable model around a graph and a JSON store for it, plus patch-based authoring.gates— the checks that refuse a graph which compiles and is still wrong.It also picks up the tinyagents vendoring that landed on tinyflows' main independently of that PR.
Why this is a no-op for this crate
Both new modules sit behind default-off features and this crate enables neither, so the dependency graph it links is unchanged.
The bump is only safe because #42 also stopped tinyflows declaring
tinyagentsas a path dependency. That matters here specifically: a path dependency cannot be redirected by[patch.crates-io], so this crate's own patch table would have been powerless over it, and the graph would have held twotinyagents v2.1.0packages at two paths. Cargo does not resolve that — it refuses the lockfile outright with "package collision in the lockfile". Declared as a registry coordinate, this crate's existing patch keeps pointing it atvendor/tinyagentsexactly as before.A note on how this was raised
The repository has an active "Disallow creating branches" ruleset with no bypass actors, so this comes from a fork rather than a branch here.
Validation
The bump was verified from the downstream Medulla host, which links this crate and enables both new tinyflows features — the strictest consumer of the change: full workspace test suite,
clippy --all-targets -D warnings, andfmt --checkall clean. I have not run this crate's own suite; its graph is unchanged by the bump, but a maintainer may want CI to confirm that.Summary by CodeRabbit