Skip to content

Bump OpenHuman to latest main and adapt to spawn_subagent - #133

Merged
senamakel merged 12 commits into
mainfrom
bump-openhuman-latest
Oct 24, 2026
Merged

senamakel merged 12 commits into
mainfrom
bump-openhuman-latest

Conversation

@senamakel

@senamakel senamakel commented Oct 24, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Bump the vendor/openhuman submodule to current OpenHuman main (5f8b7c2) and re-pin openhuman, openhuman-embed, tinytools*, tinymemory-* and tinyflows-schedule to the revs that tree vendors (assert-openhuman-pin.sh passes).
  • Enable OpenHuman's channels feature on the openhuman dependency: its agent bus calls channels::run_channel_turn unconditionally, so the tree no longer builds with default-features = false alone. This is an upstream OpenHuman gating bug worth fixing there; the feature can be dropped once it is.
  • OpenHuman replaced per-subagent delegate_<id> tools with one asynchronous spawn_subagent tool (child in agent_id). The permission engine now treats spawn_subagent as an internal read-only call only when agent_id names a declared subagent; unknown ids still fall through to normal classification and are denied.
  • The delegation test now waits (bounded, 60s) for the child's follow-up request, since spawn_subagent returns before the child runs. Previously the assertion raced the child.

API / behaviour changes

Seat profiles that declare subagents expose spawn_subagent instead of delegate_<profile> (a consequence of the OpenHuman bump). No change to the config format.

Validation

  • cargo fmt --all -- --check: ok
  • cargo clippy --all-targets --all-features -- -D warnings: ok
  • cargo build --all-targets --all-features: ok
  • cargo test --all-features: ok (openhuman lib 132/132, run three times after the race fix)
  • RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features: ok
  • assert-openhuman-pin.sh, assert-pure.sh: ok

Related issue: none.

Summary by CodeRabbit

  • New Features

    • Configured child agents can be started with spawn_subagent; these calls are treated as read-only. Attempts to start an agent that is not configured remain denied.
    • Declared subagents coordinate internally after they are started.
  • Documentation

    • Updated deployment guidance to describe subagent coordination and the current spawning behavior.

senamakel and others added 12 commits October 24, 2026 20:03
Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Bump the vendored openhuman submodule and refresh Cargo.lock to match. The lockfile picks up new jaq crates, drops the tinyagents-graph and tinytools-std entries, and moves tinyagents-definition and tinyagents-harness to 3.0.0.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Update the openhuman and openhuman-embed git revisions to 5f8b7c235f18b46f90fabbf1e7f1b8d9a957cee6 so the workspace tracks the newer upstream commit.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Update the pinned revisions for the tinytools and tinytools-agent git
dependencies to the same newer commit.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Update the tinymemory-api and tinymemory-tools git revisions to 8b919fd6d0b99e06269cab84de0c715772d0c49f so the vendored crates match the commit OpenHuman's tree pins.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Update the pinned tinyflows revision so the vendored scheduler matches the
commit OpenHuman's tree expects, keeping the re-exported `Schedule` type in
sync with `openhuman::cron`.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Turn on the channels feature for the openhuman dependency so the
channel-related APIs are available to the workspace.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
OpenHuman's agent bus calls channels::run_channel_turn unconditionally, so
its tree does not build without the channels feature enabled.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Adds a temporary eprintln in the delegation test script to dump the
request tools, message count, last role, and episode presence, making it
easier to inspect what the model receives during delegation runs.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Adjust the debug logging to print the last message content instead of the tool list, and switch the delegated call from delegate_helper to spawn_subagent with an agent_id so the test matches the current delegation API.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Subagent delegation is now invoked through the `spawn_subagent` tool with an
`agent_id` argument rather than per-profile `delegate_<profile>` tool names, so
the permission check treated declared subagents as unknown effects and denied
them. The check now matches `spawn_subagent` and reads the target from
`agent_id`, and the tests and README were updated to the new call shape.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The delegation test now counts every request without an episode as the native child's and waits for its second request before asserting, since spawn_subagent returns immediately and the child's follow-up only arrives after the write call is executed or denied. This removes the race that let the test pass before the child had actually run.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
@tinysweeper

tinysweeper Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Tiny Sweeper review

Reviewed head: f40d1c6488ee10294f74ee0f7137a0e7a63e16bf

Verdict: Ready for maintainer review · Priority: none
Coverage: Reviewed 6 of 8 files; not reviewed: Cargo.lock, vendor/openhuman.
Pull request purpose (title): Bump OpenHuman to la…

Diagnostics and supporting details

Full summary

Pull request purpose (title): Bump OpenHuman to latest main and adapt to spawn_subagent. Tiny Sweeper completed its review; deterministic results follow.

Unreviewed paths

  • Cargo.lock
  • vendor/openhuman

Review snapshot

Change surface Files Review signal Count
Production 2 Active findings 0
Tests 2 Noted findings 0
Documentation 1 Resolved findings 0
Configuration 1 Pending checks/questions 0

Completeness: Complete
Test assessment: Test coverage is assessed from changed tests and lane evidence; execution is not claimed without trusted check data.

What changed

OpenHuman bump: `vendor/openhuman` moves to 5f8b7c2 and the `openhuman`, `openhuman-embed`, `tinytools`, `tinytools-agent`, `tinymemory-api`, `tinymemory-tools` and `tinyflows-schedule` git revs are re-pinned to what that tree vendors, with `openhuman` gaining the `channels` feature so it builds without default features. The permission engine (`impl Permissions` in `crates/tinyhivemind-openhuman/src/deploy/permission.rs`) now recognizes `spawn_subagent` with a `agent_id` matching a declared child as internal ReadOnly, replacing the `delegate_<id>` name check. Tests are updated to the new tool shape, the delegation test now waits up to 60s for the child's second request, the README line describes declared subagents spawned via `spawn_subagent`, and the `wiki` submodule is bumped. The seat-profile API consequence is that profiles declaring `subagents` expose `spawn_subagent` instead of `delegate_<profile>`, with no config-format change.

Features

  • Modified — Subagent delegation permission classification via `spawn_subagent`: Coordinator-internal subagent spawns are treated as ReadOnly only when the `agent_id` argument names a declared child of the profile; any other target falls through to normal effect classification and is denied, so the structured argument does not widen access beyond declared subagents. (crates/tinyhivemind-openhuman/src/deploy/permission.rs impl Permissions {)
  • Modified — OpenHuman dependency pins and `channels` feature: The vendored tree and its dependency revs are aligned with OpenHuman main; `openhuman` now requires the `channels` feature because upstream's agent bus calls `channels::run_channel_turn` unconditionally, a workaround intended to be dropped once upstream fixes the feature gating. (Cargo.toml tinyhivemind-tools = { path = "crates/tinyhivemind-tools" })
  • Modified — Deployment documentation of subagent coordination: Documents that declared subagents spawned through `spawn_subagent` coordinate internally while child calls retain parent and child restrictions. (crates/tinyhivemind-openhuman/src/deploy/README.md inherit an unrelated active hive's permissions. Tool rules requiring unavailable)
  • Modified — Seat-profile exposed tool surface: Seat profiles that declare `subagents` now expose `spawn_subagent` rather than `delegate_<profile>` tools, a consequence of the OpenHuman bump with no change to the config format. (crates/tinyhivemind-openhuman/src/deploy/permission.rs impl Permissions {)

Tests

  • permission unit test — Asserts that `spawn_subagent` targeting a declared child `helper` is not denied while targeting an undeclared id `unknown` is denied.: Covers the positive and negative path of the new `agent_id` gating. (crates/tinyhivemind-openhuman/src/deploy/test/permission.rs async fn declared_delegates_are_internal_but_child_rules_still_narrow_effects())

Findings

No active actionable findings.

Before merge

None.

Agent review details

critique

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Positive: The critique lane is answered and its returned findings list is empty; note that its one-line summary text references two findings that are not supplied in evidence, so no such findings are described here.
  • Lane summary: Reviewed 6 files; 2 findings. _The code index is behind this pull request (indexed at `ec577630adbf`), so retrieved context may be out of date._

security

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Positive: The security lane is answered with zero findings and reviewed 5 of 5 files it covered; the README was excluded as prose.
  • Lane summary: Reviewed 5 files; 0 findings. 1 file was not security-reviewed: crates/tinyhivemind-openhuman/src/deploy/README.md (prose or tabular data). _The code index is behind this pull request (indexed at `ec577630adbf`), so retrieved context may be out of date._

tests

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Positive: The tests lane is answered and reports that both the positive and negative path of the structured `agent_id` gate are asserted and that widening from a name prefix to a structured argument does not admit an undeclared target.
  • Lane summary: The change moves subagent delegation onto OpenHuman's `spawn_subagent` tool, classifying it as ReadOnly only when `agent_id` names a declared child, and updates the permission and delegation tests to match; both the positive and the negative path (a declared child vs an undeclared one) are asserted, and the end-to-end test waits for the child's follow-up request before asserting the denied `write` was never executed. The widening from a name prefix to a structured argument does not let an undeclared target through, and the docs and pin bumps are non-behavioural. No defects found. _The code index is behind this pull request (indexed at `ec577630adbf`), so retrieved context may be out of date._

commits

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Positive: The commits lane is answered and reports no sensitive content in committed files.
  • Lane summary: No sensitive content in committed files. _The code index is behind this pull request (indexed at `ec577630adbf`), so retrieved context may be out of date._

description

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Positive: The description lane is answered and confirmed the description matches the diff (pin bumps with the `channels` rationale, the permission-engine switch, the bounded test wait, and the README wording), noting only that the `wiki` submodule bump is not mentioned; it found no functional defect.
  • Lane summary: The description accurately covers the diff: the submodule and dependency rev bumps (with the `channels` feature rationale), the permission-engine switch from `delegate_<id>` to `spawn_subagent` gated on `agent_id`, the delegation test's bounded wait, the README wording, and the seat-profile API change. The one item it does not mention is the `wiki` submodule bump (bb63ecb → 92deec7), which is a small but real omission from a diff otherwise described in detail. I found no functional defect in the changed code. _The code index is behind this pull request (indexed at `ec577630adbf`), so retrieved context may be out of date._
Evidence and run details
  • Models: deepseek-v4.1-flash, ladder/vectors-oai3
  • Spend: $0.000920
  • Tokens: 755285 input · 12370 output · 88576 cached · 535 embedding
  • Updated: 2026-10-24T20:51:23Z
Head State Pass summary
f40d1c6488ee ready for maintainer review 0 active finding(s), 0 resolved finding(s) (at 2026-10-24T20:51:23Z)

tinysweeper 0.1.2

@coderabbitai

coderabbitai Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 15b9b98a-c658-43fd-8e5d-f3260f59fa37
Commits

Reviewing files that changed from the base of the PR and between f2f7b0a and f40d1c6.

Files ignored due to path filters: 1
  • Cargo.lock is excluded by !**/*.lock
Files selected for processing: 7
  • Cargo.toml
  • crates/tinyhivemind-openhuman/src/deploy/README.md
  • crates/tinyhivemind-openhuman/src/deploy/permission.rs
  • crates/tinyhivemind-openhuman/src/deploy/test/delegation.rs
  • crates/tinyhivemind-openhuman/src/deploy/test/permission.rs
  • vendor/openhuman
  • wiki

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Walkthrough

The OpenHuman-related dependency revisions changed, and openhuman now enables the channels feature. Deployment permission handling and tests now use spawn_subagent for declared child agents. The wiki subproject reference also changed.

Changes: Subagent Permission Migration

Layer / File(s) Summary
OpenHuman dependency revisions
Cargo.toml, vendor/openhuman
OpenHuman, Tinytools, Tinymemory, and Tinyflows revisions changed. openhuman now enables the channels feature. The OpenHuman subproject reference changed.
Subagent permission handling
crates/tinyhivemind-openhuman/src/deploy/permission.rs, crates/tinyhivemind-openhuman/src/deploy/README.md
spawn_subagent calls are classified as read-only when their string agent_id matches a configured child ID. The deployment documentation describes declared subagents spawned through spawn_subagent.
Subagent delegation tests
crates/tinyhivemind-openhuman/src/deploy/test/delegation.rs, crates/tinyhivemind-openhuman/src/deploy/test/permission.rs
The tests now use spawn_subagent arguments. The delegation test waits up to 60 seconds for two native-child requests.

Wiki Reference

Layer / File(s) Summary
Wiki revision
wiki
The wiki subproject commit reference changed.

Priority: Normal

Estimated code review effort: 2 (Simple) | ~12 minutes

Change: Other

Possibly related issues

  • tinyhumansai/openhuman#8369 — The permission classification change and updated tests address the issue’s affected spawn_subagent policy and tool interface. The provided changes do not establish that they cover all stated policy requirements.
Merge Risk: Minimal · up to f40d1

No actionable issue remains from this review; the change is mergeable after normal checks.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 3 files. (4 skipped: 4 … Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly summarizes the two main changes: updating OpenHuman and adapting the code to use spawn_subagent.
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.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 3 files. (4 skipped: 4 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

A rabbit checks the agent ID,
Then sends a helper on its way.
Two requests hop through the test,
While pinned revisions gently sway.
The wiki turns a page anew,
And carrots mark the finish line.

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

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Codex Review Summary

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

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-24T20:50:45.727203Z f40d1c6 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.

@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.

Diagnostics

Total spend: $0.0009

@senamakel
senamakel merged commit 08c2dda into main Oct 24, 2026
11 of 15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant