Skip to content

feat: vendor direct TinyHumans dependencies - #60

Merged
senamakel merged 4 commits into
mainfrom
git-deps-main-sync
Sep 20, 2026
Merged

senamakel merged 4 commits into
mainfrom
git-deps-main-sync

Conversation

@senamakel

@senamakel senamakel commented Sep 19, 2026

Copy link
Copy Markdown
Member

Replaces parent-level TinyHumans Git dependencies with paths into vendored submodules pinned to current upstream main.\n\nVerification:\n- TinyHivemind: cargo test --workspace --all-targets\n- TinyCortex: cargo check --workspace --all-targets, focused API/contract tests (full suite has one pre-existing source-weight assertion failure unrelated to this change).

Summary by CodeRabbit

  • Build & Maintenance
    • Vendored key dependencies for more consistent builds and reproducible dependency versions.
    • Updated dependency references to use the vendored components.
    • Configured continuous integration to fully check out nested dependencies.
    • Updated pinned versions of supporting components and documentation resources.
  • Compatibility
    • Renamed an internal dependency reference without changing application behavior.

senamakel and others added 2 commits September 19, 2026 22:00
Update the wiki subproject to point to a new commit, incorporating the latest changes from the upstream repository.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 19, 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-09-19T19:45:28.641858Z 475e576 New commits
ℹ️ 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 commented Sep 19, 2026

Copy link
Copy Markdown

Tiny Sweeper review

This PR vendors TinyHumans dependencies from git to submodules, renames `tinyinference` to `tinyinference_llm`, adds recursive submodule checkout to CI, and introduces agent registry configuration in OpenHuman examples. However, it introduces vendored dependencies for the library crate `tinyhivemind`, violating repository rules, and leaves unresolved path dependencies, unpinned versions, and a missing Cargo.lock update.

State: Changes requested
Priority: critical
Reviewed head: 475e5764be80
Updated: 1789847205 (Unix time)

Review snapshot

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

Completeness: Complete
Test assessment: No supported feature-to-test mapping was available; this does not mean tests are absent or passed.

What changed

Replaced git dependencies with vendored submodules for openhuman, tinyinference, tinytools, tinyjevclient in .gitmodules and Cargo.toml. Updated Cargo.toml excludes to include vendor. Changed workspace dependency `tinyinference` to `tinyinference-llm` with a path dependency. Added recursive submodule checkout to CI jobs in .github/workflows/ci.yml. Added `openhuman-core` path dependency and agent registry entries to examples/openhuman. Updated test assertions in retry tests to reflect sanitized provider failure handling. Updated wiki submodule commit.

Features

  • Modified — Rename tinyinference to tinyinference_llm in example dependencies and code: Enables path-based dependency resolution and clarifies the crate name. (crates/tinyhivemind/examples/desk/chat.rs, crates/tinyhivemind/examples/desk/chat/test.rs, crates/tinyhivemind/Cargo.toml)
  • Added — Vendor TinyHumans dependencies as submodules: Dependencies are now vendored locally, providing offline availability, but violates library crate dependency rules. (.gitmodules, Cargo.toml)
  • Modified — Enable recursive submodule checkout in CI: Ensures CI jobs can fetch the nested submodules required by vendored path dependencies. (.github/workflows/ci.yml#jobs:)
  • Added — Add agent registry configuration and openhuman-core dependency to OpenHuman examples: Enables registry-based agent configuration in proof binaries; introduces an unpinned path dependency. (examples/openhuman/Cargo.toml, examples/openhuman/src/bin/deepswe_hive.rs, examples/openhuman/src/main.rs)
  • Modified — Update retry tests to match sanitized provider failure handling: Test assertions now expect immediate failure on sanitized errors instead of retry exhaustion. (examples/openhuman/src/bin/deepswe_hive/test/retry.rs)

Tests

No supported feature-to-test mapping was produced. Test execution is not inferred.

Findings

  • medium · critique · Pin the example dependency to a revision — The previous git dependency was pinned to a specific revision, but this change replaces it with an unversioned local path. That makes the example's dependency contents depend on wh (examples/openhuman/Cargo\.toml:16)
  • medium · critique · Keep dependency repositories out of .gitmodules — This path dependency makes the example depend on the `vendor/openhuman` repository being present as a git submodule. The repository currently declares that dependency repository in (examples/openhuman/Cargo\.toml:16)
  • medium · critique · Keep the retryable failure assertion aligned with the retry contract — This test is named `retryable_provider_exhaustion_is_bounded_without_a_commit` and supplies an HTTP 429 failure, but the changed assertion now requires failure on attempt 1/3. That (examples/openhuman/src/bin/deepswe\_hive/test/retry\.rs)
  • medium · critique · Do not replace retry coverage with a sanitized-failure assumption — The 429 fixture is a retryable provider failure, yet this assertion explicitly requires only one lead request. It changes the test from checking bounded exhaustion to checking fail (examples/openhuman/src/bin/deepswe\_hive/test/retry\.rs:644)
  • medium · critique · Keep example-only dependencies pinned by revision — The newly added `openhuman` dependency is also an unversioned path into the vendor submodule. Because this is an example-only dependency, it should use the repository's pinned-revi (examples/openhuman/Cargo\.toml:19)
  • medium · critique · Update Cargo.lock with the new dependency sources — Changing `openhuman-embed` from a git source to a local path, and adding the separate `openhuman` package, changes the package source graph. The checked-in standalone `examples/ope (examples/openhuman/Cargo\.toml:16)
  • medium · security · Keep the standalone example independent of the vendor submodule — This changes the standalone example from a pinned git dependency to a path under `vendor/`. A checkout without the vendor submodule can no longer resolve or build the example, cont (examples/openhuman/Cargo\.toml:16)
  • medium · security · Pin the example dependency to a repository revision — The new OpenHuman core dependency is an unpinned local path dependency. This makes the build depend on whatever source happens to be present in the vendor submodule rather than a r (examples/openhuman/Cargo\.toml:19)
  • medium · security · Update Cargo.lock with the new dependency sources — The manifest changes the source of `openhuman-embed` and adds a direct `openhuman` dependency, but the pull request does not update `examples/openhuman/Cargo.lock`. The committed l (examples/openhuman/Cargo\.toml:16)
  • critical · description · Restore a resolvable tinyinference dependency — The tinyinference dependency was changed from a git revision to a deeply nested path. If the vendor submodule is not checked out recursively, this path does not exist, breaking the (\(pull request description\))
  • critical · description · Restore a resolvable tinytools dependency — Same issue as tinyinference: tinytools is now a path dependency into the vendor hierarchy. It will not resolve if the submodule tree is incomplete. (\(pull request description\))
  • critical · description · Declare the tinyinference_llm dependency — The workspace Cargo.toml declares a dependency named 'tinyinference-llm' but the workspace member expects it. However, the workspace path points to a nested vendor directory that m (\(pull request description\))
  • high · description · Remove vendored dependency from library crate — Library crates must not depend on vendored or path dependencies, per the repository ADR. The use of workspace = true inherits the path from the workspace; this must be changed to a (\(pull request description\))
  • high · description · Keep the library dependency pinned to a git revision — The tinyinference-llm workspace dependency uses a path instead of a pinned git revision. Library dependencies must be pinned to prevent silent breaking changes. (\(pull request description\))
  • medium · description · Keep dependency repositories out of .gitmodules — Adding submodules for vendored dependencies ties CI and every clone to additional repositories. The repository convention in docs/adr/0013 should be followed: vendored dependencies (\(pull request description\))
  • medium · description · Update Cargo.lock with the new dependency sources — Switching from git to path dependencies changes the resolved sources. Cargo.lock must be regenerated to lock the new paths and prevent drift. (\(pull request description\))
  • medium · description · Keep the standalone example buildable without the vendor submodule — Examples use path dependencies into the vendor directory, making them unresolvable without the full vendor checkout. Examples should be self-contained and buildable from a crate pu (\(pull request description\))
  • medium · description · Pin the example dependency to a revision — Example dependencies should be pinned to a specific git revision to ensure reproducible builds. This path dependency relies on the current head of the submodule, which can change. (\(pull request description\))
  • medium · description · Keep example-only dependencies pinned by revision — tinytools is an example-only dependency but uses a path instead of a pinned git revision. Example dependencies must be pinned by revision for reproducibility. (\(pull request description\))
  • medium · description · Pin the new openhuman example dependency to a revision — This new example dependency uses a path rather than a pinned git revision, violating the repository rule that example dependencies must be pinned by revision. Without a revision lo (\(pull request description\))

Previously reported and still active

  • Declare the tinyinference\_llm dependency

Resolved this pass

  • Restore a resolvable tinyinference dependency
  • Restore a resolvable tinytools dependency
  • Declare the tinyinference_llm dependency
  • Keep dependency repositories out of .gitmodules
  • Restore a resolvable tinyinference dependency
  • Restore a resolvable tinytools dependency
  • Declare the tinyinference_llm dependency
  • Keep dependency repositories out of .gitmodules
  • Update Cargo.lock with the new dependency sources
  • Keep the standalone example buildable without the vendor submodule
  • Restore a resolvable tinyinference dependency
  • Restore a resolvable tinytools dependency
  • Declare the tinyinference_llm dependency
  • Pin the example dependency to a revision
  • Remove vendored dependency from library crate
  • Keep the library dependency pinned to a git revision
  • Keep example-only dependencies pinned by revision
  • Keep dependency repositories out of .gitmodules
  • Update Cargo.lock with the new dependency sources
  • Keep the standalone example buildable without the vendor submodule
  • Restore a resolvable tinyinference dependency
  • Restore a resolvable tinytools dependency
  • Declare the tinyinference_llm dependency
  • Pin the example dependency to a revision
  • Remove vendored dependency from library crate
  • Keep the library dependency pinned to a git revision
  • Keep example-only dependencies pinned by revision
  • Keep dependency repositories out of .gitmodules
  • Update Cargo.lock with the new dependency sources
  • Keep the standalone example buildable without the vendor submodule
  • Restore a resolvable tinyinference dependency
  • Restore a resolvable tinytools dependency
  • Declare the tinyinference_llm dependency
  • Pin the example dependency to a revision
  • Remove vendored dependency from library crate
  • Keep the library dependency pinned to a git revision
  • Keep example-only dependencies pinned by revision

Before merge

  • Address carried finding Declare the tinyinference\_llm dependency.
  • Address Restore a resolvable tinyinference dependency (\(pull request description\)).
  • Address Restore a resolvable tinytools dependency (\(pull request description\)).
  • Address Declare the tinyinference_llm dependency (\(pull request description\)).
  • Address Remove vendored dependency from library crate (\(pull request description\)).
  • Address Keep the library dependency pinned to a git revision (\(pull request description\)).
Agent review details

critique

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Lane summary: Reviewed 4 files; 9 findings. (1 already reported on an earlier push) (3 earlier finding(s) still open) (4 observation(s) grouped into shared inline comments) _The code index is behind this pull request (indexed at `f38e8662de30`), so retrieved context may be out of date._ _Memory was unavailable (model: cortex: v1/recall: timed out after 10s), so this review ran without it._
  • Evidence: examples/openhuman/Cargo\.toml — Pin the example dependency to a revision
  • Evidence: examples/openhuman/Cargo\.toml — Keep dependency repositories out of .gitmodules
  • Evidence: examples/openhuman/src/bin/deepswe\_hive/test/retry\.rs — Keep the retryable failure assertion aligned with the retry contract
  • Evidence: examples/openhuman/src/bin/deepswe\_hive/test/retry\.rs — Do not replace retry coverage with a sanitized-failure assumption
  • Evidence: examples/openhuman/Cargo\.toml — Keep example-only dependencies pinned by revision
  • Evidence: examples/openhuman/Cargo\.toml — Update Cargo.lock with the new dependency sources

security

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Lane summary: Reviewed 4 files; 3 findings. (1 earlier finding(s) still open) (1 observation(s) grouped into shared inline comments) _The code index is behind this pull request (indexed at `f38e8662de30`), so retrieved context may be out of date._ _Memory was unavailable (model: cortex: v1/recall: timed out after 10s), so this review ran without it._
  • Evidence: examples/openhuman/Cargo\.toml — Keep the standalone example independent of the vendor submodule
  • Evidence: examples/openhuman/Cargo\.toml — Pin the example dependency to a repository revision
  • Evidence: examples/openhuman/Cargo\.toml — Update Cargo.lock with the new dependency sources

tests

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Lane summary: The new changes add an agent registry entry to both OpenHuman proof binaries and update tests to match sanitized provider failure handling, which looks sound on its own. All prior findings from earlier cycles remain unresolved: the pull request still introduces vendored dependencies, missing Cargo.lock updates, and submodule additions that prevent building without the vendor tree, but those cannot be re-anchored to this incremental diff. (10 earlier finding(s) still open) _The code index is behind this pull request (indexed at `f38e8662de30`), so retrieved context may be out of date._ _Memory was unavailable (model: cortex: v1/recall: timed out after 10s), so this review ran without it._

commits

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: Nothing sensitive found in what this pull request commits.

description

  • Conclusion: Failure
  • Scope reviewed: all assigned evidence
  • Lane summary: The new commits add registry-based agent configuration and update tests, but the foundational issues with vendoring dependencies remain unresolved. All prior critical and high findings (unresolvable path dependencies in library and workspace, missing Cargo.lock update, example deps unpinned) are still present, and a new unpinned path dependency is introduced in examples/openhuman. (1 earlier finding(s) still open) (5 observation(s) grouped into shared inline comments) _The code index is behind this pull request (indexed at `f38e8662de30`), so retrieved context may be out of date._ _Memory was unavailable (model: cortex: v1/recall: timed out after 10s), so this review ran without it._
  • Evidence: \(pull request description\) — Restore a resolvable tinyinference dependency
  • Evidence: \(pull request description\) — Restore a resolvable tinytools dependency
  • Evidence: \(pull request description\) — Declare the tinyinference_llm dependency
  • Evidence: \(pull request description\) — Remove vendored dependency from library crate
  • Evidence: \(pull request description\) — Keep the library dependency pinned to a git revision
  • Evidence: \(pull request description\) — Keep dependency repositories out of .gitmodules
  • Evidence: \(pull request description\) — Update Cargo.lock with the new dependency sources
  • Evidence: \(pull request description\) — Keep the standalone example buildable without the vendor submodule
  • Evidence: \(pull request description\) — Pin the example dependency to a revision
  • Evidence: \(pull request description\) — Keep example-only dependencies pinned by revision
  • Evidence: \(pull request description\) — Pin the new openhuman example dependency to a revision

e2e

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: No end-to-end harness in this repository: no e2e test files and no e2e workflow.
Evidence and run details
  • Models: ladder/vectors, gpt-5.6-luna, deepseek-v4-flash
  • Spend: $0.014747
  • Tokens: 249142 input · 32229 output · 11908 cached · 902 embedding
Head State Pass summary
2e4ecd115ae8 changes requested 13 active finding(s), 0 resolved finding(s) (at 1789844735)
4b68139c88e0 changes requested 9 active finding(s), 14 resolved finding(s) (at 1789845092)
475e5764be80 changes requested 20 active finding(s), 37 resolved finding(s) (at 1789847205)

tinysweeper 0.1.0

@coderabbitai

coderabbitai Bot commented Sep 19, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

Warning

Review paused — included plan limit reached

Keep your review moving with free on-demand reviews.

  • Run this review for free

On-demand reviews are free for one more day.

Promotion and pricing details

On-demand reviews are free for one more day. After that, they cost $0.25 per reviewed file.

Review limit details

Or wait 30 minutes for your next included review.

Check out review usage here.

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: a53263ad-0aac-4756-bac9-9cac4384945c

📥 Commits

Reviewing files that changed from the base of the PR and between 4b68139 and 475e576.

⛔ Files ignored due to path filters (1)
  • examples/openhuman/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (4)
  • examples/openhuman/Cargo.toml
  • examples/openhuman/src/bin/deepswe_hive.rs
  • examples/openhuman/src/bin/deepswe_hive/test/retry.rs
  • examples/openhuman/src/main.rs

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 5868a09f-8c95-48f8-bc97-ed6393609eae

📥 Commits

Reviewing files that changed from the base of the PR and between 6af1306 and 4b68139.

⛔ Files ignored due to path filters (2)
  • Cargo.lock is excluded by !**/*.lock
  • examples/openhuman/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (12)
  • .github/workflows/ci.yml
  • .gitmodules
  • Cargo.toml
  • crates/tinyhivemind/Cargo.toml
  • crates/tinyhivemind/examples/desk/chat.rs
  • crates/tinyhivemind/examples/desk/chat/test.rs
  • examples/openhuman/Cargo.toml
  • vendor/openhuman
  • vendor/tinyinference
  • vendor/tinyjevclient
  • vendor/tinytools
  • wiki

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


📝 Walkthrough

Walkthrough

The change vendors four Rust dependencies as Git submodules, switches dependency declarations to local paths, renames the example dependency to tinyinference-llm, enables recursive submodule checkout in CI, and updates the wiki submodule pointer.

Changes

Vendored dependencies

Layer / File(s) Summary
Vendor source registration and revisions
.gitmodules, vendor/*, .github/workflows/ci.yml
Four vendor submodules are registered or pinned. All four CI jobs check out nested submodules recursively.
Local dependency wiring
Cargo.toml, examples/openhuman/Cargo.toml
Affected Git dependencies now use local vendor paths. The workspace excludes vendor. Existing feature settings remain unchanged.
tinyinference-llm example references
crates/tinyhivemind/Cargo.toml, crates/tinyhivemind/examples/desk/*
The development dependency, imports, result types, and error references use tinyinference-llm.

Wiki submodule revision

Layer / File(s) Summary
Wiki submodule pointer
wiki
The recorded wiki submodule commit changes to 382576698e49f51c3b816b793bab2667ee37a61f.

Priority: ⬇️ Low

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

Change: Other

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files. (10 skipped: … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ 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 main change: vendoring direct TinyHumans dependencies and switching them to local submodules.
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 66.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files. (10 skipped: 10 unsupported.)

✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR

A rabbit checks the vendor trail
Nested paths now never fail
Tiny names align in place
Cargo finds each crate with grace
CI hops through every gate

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

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2e4ecd115a

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Cargo.toml

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

Requesting changes: 4 lane(s) blocking, worst finding is critical.

Fix or reply to the findings below and push. The next review clears this automatically once they are gone — you should not need to dismiss anything by hand.

             $0.0210 · 372,795 in / 27,595 out · 31,176 cached (8%) · ladder/vectors, gpt-5.6-luna, deepseek-v4-flash · 441 embedded
critique:    $0.0111 · 192,127 in / 11,114 out · 16,063 cached (8%) · gpt-5.6-luna, deepseek-v4-flash
security:    $0.0091 · 156,285 in / 6,312 out  · 12,553 cached (8%) · gpt-5.6-luna
tests:       $0.0003 · 14,593 in  / 1,772 out  · 1,536 cached (11%) · deepseek-v4-flash
description: $0.0003 · 5,344 in   / 6,710 out  · 1,024 cached (19%) · deepseek-v4-flash

Comment thread .gitmodules
Comment thread Cargo.toml
Comment thread examples/openhuman/Cargo.toml
Comment thread Cargo.toml
Comment thread Cargo.toml
Comment thread crates/tinyhivemind/examples/desk/chat.rs
Comment thread crates/tinyhivemind/Cargo.toml
Comment thread Cargo.toml
Co-authored-by: Medulla <medulla@tinyhumans.ai>

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

Requesting changes: 1 lane(s) blocking, worst finding is critical.

Fix or reply to the findings below and push. The next review clears this automatically once they are gone — you should not need to dismiss anything by hand.

             $0.0040 · 72,198 in / 17,783 out · 7,186 cached (10%) · ladder/vectors, gpt-5.6-luna, deepseek-v4-flash · 482 embedded
critique:    $0.0019 · 28,018 in / 2,134 out  · 2,066 cached (7%)  · gpt-5.6-luna
security:    $0.0010 · 12,612 in / 1,218 out  · 0 cached (0%)      · gpt-5.6-luna
tests:       $0.0004 · 15,634 in / 2,611 out  · 1,024 cached (7%)  · deepseek-v4-flash
description: $0.0004 · 6,353 in  / 8,678 out  · 1,024 cached (16%) · deepseek-v4-flash

Co-authored-by: Medulla <medulla@tinyhumans.ai>

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 475e5764be

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Cargo.toml
# adapter keeps default features off because it only binds already-built agents;
# the consuming host chooses the runtime capabilities it enables.
openhuman-embed = { git = "https://github.com/tinyhumansai/openhuman", rev = "93e9938f388f3989b7c0acff3f72007a31bb3128", default-features = false }
openhuman-embed = { path = "vendor/openhuman/crates/openhuman-embed", default-features = false }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Keep library dependencies out of nested submodules

Although this revision initializes submodules in ci.yml, the documented consumer workflow in README.md still adds tinyhivemind as a non-recursive submodule, while crates/tinyhivemind-openhuman/Cargo.toml takes this entry as a normal library dependency. Consumers using that adapter therefore receive an empty vendor/openhuman directory and fail during Cargo manifest resolution; retain a revision-pinned Git dependency for this library edge rather than requiring nested submodule initialization.

AGENTS.md reference: AGENTS.md:L293-L296

Useful? React with 👍 / 👎.

Comment thread Cargo.toml
# docs/adr/0013-a-vendored-crate-is-an-example-dependency.md. A consumer builds
# `crates/*` and never the examples, so it never resolves this.
tinyinference = { git = "https://github.com/tinyhumansai/tinyinference", rev = "cc8aca484bb995fbab3b7358f0d72ab5056b587c" }
tinyinference-llm = { path = "vendor/openhuman/vendor/tinyagents/vendor/tinyinference/crates/tinyinference-llm" }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Point the direct dependencies at their own pins

The newly added vendor/tinyinference gitlink is never referenced; this dependency instead descends through OpenHuman, TinyAgents, and TinyAgents' nested TinyInference checkout. Consequently updating the recorded direct TinyInference pin has no effect, and building the desk example unnecessarily requires the OpenHuman subtree. Point this entry at the direct submodule, and do the same for tinytools on line 83, whose new top-level gitlink is likewise unused.

Useful? React with 👍 / 👎.

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

Requesting changes: 1 lane(s) blocking, worst finding is critical.

Fix or reply to the findings below and push. The next review clears this automatically once they are gone — you should not need to dismiss anything by hand.

             $0.0147 · 249,142 in / 32,229 out · 11,908 cached (5%) · ladder/vectors, gpt-5.6-luna, deepseek-v4-flash · 902 embedded
critique:    $0.0074 · 116,042 in / 12,250 out · 6,207 cached (5%)  · gpt-5.6-luna, deepseek-v4-flash
security:    $0.0061 · 88,459 in  / 6,106 out  · 3,653 cached (4%)  · gpt-5.6-luna
tests:       $0.0005 · 18,070 in  / 4,267 out  · 1,024 cached (6%)  · deepseek-v4-flash
description: $0.0004 · 8,516 in   / 7,194 out  · 1,024 cached (12%) · deepseek-v4-flash

.filter_map(|(_, request)| request["messages"].as_array()?.last()?["content"].as_str())
.collect::<std::collections::BTreeSet<_>>();
assert_eq!(lead_prompts.len(), MAX_SEAT_ATTEMPTS as usize);
assert_eq!(lead_prompts.len(), 1, "sanitized failures are not retried");

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

priority medium critique confident

Do not replace retry coverage with a sanitized-failure assumption

The 429 fixture is a retryable provider failure, yet this assertion explicitly requires only one lead request. It changes the test from checking bounded exhaustion to checking fail-fast behavior and can conceal an accidental removal of retries. The test should continue to assert the configured number of attempts for the retryable case; sanitization should be tested with a fixture that represents a sanitized/non-retryable error, not with HTTP 429.

[RULE] regression-coverage ·

futures = "0.3"
# The live hive uses OpenHuman's native runtime, agents, sessions, and TinyCortex module.
openhuman-embed = { git = "https://github.com/tinyhumansai/openhuman", rev = "93e9938f388f3989b7c0acff3f72007a31bb3128", default-features = false, features = ["mcp", "modules"] }
openhuman-embed = { path = "../../vendor/openhuman/crates/openhuman-embed", default-features = false, features = ["mcp", "modules"] }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

priority medium security confident

Keep the standalone example independent of the vendor submodule

This changes the standalone example from a pinned git dependency to a path under vendor/. A checkout without the vendor submodule can no longer resolve or build the example, contradicting the standalone-build contract. Use a revision-pinned git dependency instead of requiring repository-local vendored sources.


Additional critique observation

priority medium confident

Pin the example dependency to a revision

[RULE] dependency-pinning

The previous git dependency was pinned to a specific revision, but this change replaces it with an unversioned local path. That makes the example's dependency contents depend on whatever checkout happens to be present in vendor/openhuman, defeating reproducible standalone builds and allowing an unrelated submodule update to change the dependency. Use a pinned git revision (or another reproducibly versioned source) instead.


Additional critique observation

priority medium confident

Update Cargo.lock with the new dependency sources

[RULE] lockfile-consistency

Changing openhuman-embed from a git source to a local path, and adding the separate openhuman package, changes the package source graph. The checked-in standalone examples/openhuman/Cargo.lock must be regenerated so it records the same sources and dependency relationships; otherwise locked builds can reject this manifest or resolve a graph that does not match it.


Additional critique observation

priority medium confident

Keep dependency repositories out of .gitmodules

[RULE] submodule-dependency

This path dependency makes the example depend on the vendor/openhuman repository being present as a git submodule. The repository currently declares that dependency repository in .gitmodules, so a fresh clone that follows the normal checkout without initializing submodules cannot resolve this manifest. Avoid making the example's dependency resolution depend on a separately checked-out repository, or provide a supported vendored/reproducible source in this crate.


Additional security observation

priority medium confident

Update Cargo.lock with the new dependency sources

[RULE] stale-lockfile

The manifest changes the source of openhuman-embed and adds a direct openhuman dependency, but the pull request does not update examples/openhuman/Cargo.lock. The committed lockfile therefore does not describe the manifest's dependency graph or sources, defeating the reproducible standalone build contract. Regenerate and commit the example lockfile after choosing the final revision-pinned sources.

[RULE] vendored-dependency ·

openhuman-embed = { path = "../../vendor/openhuman/crates/openhuman-embed", default-features = false, features = ["mcp", "modules"] }
# The DeepSWE adapter registers its per-seat definitions with OpenHuman's
# runtime registry so the current hosted harness can resolve them at turn time.
openhuman = { path = "../../vendor/openhuman/crates/openhuman-core", default-features = false }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

priority medium security confident

Pin the example dependency to a repository revision

The new OpenHuman core dependency is an unpinned local path dependency. This makes the build depend on whatever source happens to be present in the vendor submodule rather than a reproducible revision, and it violates the repository rule that example-only external dependencies are pinned by revision. Reference the upstream repository and an immutable revision.


Additional critique observation

priority medium confident

Keep example-only dependencies pinned by revision

[RULE] dependency-pinning

The newly added openhuman dependency is also an unversioned path into the vendor submodule. Because this is an example-only dependency, it should use the repository's pinned-revision policy rather than inheriting arbitrary local submodule contents; otherwise the standalone example can resolve a different API than the committed lockfile and source revision.

[RULE] unpinned-dependency ·

@senamakel
senamakel merged commit 3b5b874 into main Sep 20, 2026
13 of 16 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