Skip to content

Advance tinyflows to the inherited host stack - #5537

Merged
senamakel merged 1 commit into
tinyhumansai:mainfrom
senamakel:advance-tinyflows-host-stack
Aug 13, 2026
Merged

senamakel merged 1 commit into
tinyhumansai:mainfrom
senamakel:advance-tinyflows-host-stack

Conversation

@senamakel

@senamakel senamakel commented Aug 13, 2026 •

Copy link
Copy Markdown
Member

A gitlink bump: vendor/tinyflows moves to c242184, 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 (feature host-caps) — an out-of-process script runner, the path policy bounding which files a step may reach, CodeRunner and a ShellRunner, a file-backed StateStore, and an allowlisted HTTP client that pins the transport to the addresses it just vetted.
  • store (feature store) — 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 tinyagents as 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 two tinyagents v2.1.0 packages 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 at vendor/tinyagents exactly 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, and fmt --check all 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

  • Chores
    • Applied a maintenance update to the application’s underlying components.
    • No new features, behavior changes, or user-facing updates are included in this release.

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>
@senamakel
senamakel requested a review from a team August 13, 2026 18:48
@tinysweeper tinysweeper Bot added the priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. label Aug 13, 2026

@tinysweeper tinysweeper Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tinysweeper found nothing blocking. Approving.

$0.0000 · 0 in / 0 out

@coderabbitai

coderabbitai Bot commented Aug 13, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 3dca902e-9e51-41ea-a30d-d1736ebb719a

📥 Commits

Reviewing files that changed from the base of the PR and between d498307 and 47d696e.

📒 Files selected for processing (1)
  • vendor/tinyflows

📝 Walkthrough

Walkthrough

The vendor/tinyflows submodule reference advances from one commit to another. No exported or public declarations change.

Changes

tinyflows vendor update

Layer / File(s) Summary
Update tinyflows submodule pointer
vendor/tinyflows
The submodule pointer advances to commit c242184cfe0b611b241af5cc9bf45b3ea0d7d636.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Mergeability Score: ⚪ Minimal · up to 47d69

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: m3ga-mind

Poem

A rabbit checks the flowing trail,
Tinyflows hops to a newer tale.
One pointer moves, the path is clear,
A fresh commit arrives here.
Wiggle ears, review with cheer!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the primary change: advancing tinyflows to include the inherited host stack changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@senamakel
senamakel merged commit 5698b03 into tinyhumansai:main Aug 13, 2026
28 of 33 checks passed
senamakel added a commit that referenced this pull request Aug 14, 2026
`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>
senamakel added a commit to nocstah/openhuman that referenced this pull request Sep 11, 2026
…-host-stack\n\nAdvance tinyflows to the inherited host stack\n
senamakel added a commit to nocstah/openhuman that referenced this pull request Sep 11, 2026
…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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant