Skip to content

chore(modules): re-pin the loadable modules to their 2026-10-23 releases - #8327

Merged
senamakel merged 28 commits into
tinyhumansai:mainfrom
M3gA-Mind:chore/module-release-repin-2026-10-23
Oct 24, 2026
Merged

senamakel merged 28 commits into
tinyhumansai:mainfrom
M3gA-Mind:chore/module-release-repin-2026-10-23

Conversation

@M3gA-Mind

@M3gA-Mind M3gA-Mind commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Moves the loadable modules to their 2026-10-23 patch releases, all cut from each module's main. For each module it moves the registry record, the vendor/ gitlink, the tests that hard-code its release, and the two lockfiles. There is one commit per module, added as each release lands.

12 of the 14 modules move. TinyMemes and TinyDocs were dropped from this round (see the table).

module from to status
tinybox record v0.2.1 (#8324), gitlink v0.2.0 gitlink v0.2.1 + test done
tinymcp 0.20.1 (gitlink v0.20.1-20) 0.20.2 done
tinywallet 0.24.1 0.26.0 done; 17 library digests computed from the unpacked archives
tinychannels 0.1.39 0.1.40 done (11 → 17 assets; test was stale at 0.1.38)
tinyjuice 0.11.2 (gitlink v0.11.0) 0.11.3 done; drops the stale pin exemption; fixes the CCR grant prefix
tinyhosts 0.4.1 0.4.3 done (11 → 17 assets)
tinysearch 0.5.1 0.5.3 done (11 → 17 assets)
tinyflows 0.8.29 0.9.0 done; fixes the schedule-contract test; e2e library gate on v0.9.0
tinyvoice 0.3.4 0.4.0 done (11 → 17 assets; contract (1, 12); new codec deps locked)
tinyconnectors 0.21.0 0.22.0 done
tinyeventqueues 0.1.3 0.2.1 (v0.2.0 skipped) done; carries the storage_callback key from #8326 in the same commit
tinycomputer 0.15.0 0.15.1 done; contract (2, 28); lock changes below
tinymemes 0.4.1 — dropped this round. Stays at v0.4.1: the gitlink is v0.4.1-16, a known drift and the one module-pins failure left
tinydocs 0.2.5 — dropped this round. Stays at v0.2.5, where record and gitlink already agree

Source-built vendor pins (tinyagents, tinystoragedrivers, tinybus, tinymemory, tinyskills, the SDK and tiny-artifacts) are in a separate PR.

Why

On main, 7 of the 14 module records don't match their submodule (check-module-pins): the gitlink has moved past the released tag, or for tinyjuice sits behind it. In that state dev builds and release builds load different code. Several registry tests also assert releases older than the registry, so they're red on main (tinymcp v0.20.0, tinychannels v0.1.38, tinydocs v0.2.4).

How each module is moved

  • Record digests come from the GitHub release asset digests, checked against the release checksum.toml.
  • Test digests come from the release too, not copied from the record, so the tests stay independent checks of the record.
  • The gitlink moves to the release tag, so git describe equals the record version.
  • Lockfile path-crate versions are edited only when the module's manifests change versions alone. Otherwise the lock is regenerated.
  • Each commit is audited before it goes in: no old digest or old version string remains outside vendor/.

Commits so far

  • TinyBox: fix(modules): re-pin TinyBox to v0.2.1 #8324 moved only the record. This commit moves vendor/tinybox to v0.2.1 (fc34d28da8), updates the v0.2.0 manifest test to v0.2.1, and bumps the tinybox path crates from 0.2.0 to 0.2.1 in both locks.

  • TinyMCP v0.20.2:

  • TinySearch v0.5.3: record (17 assets) and gitlink 22c22d227f; registry_tests and agent_harness_e2e assert v0.5.3; locks 0.5.1 → 0.5.3.

  • TinyChannels v0.1.40: record (17 assets) and gitlink b2fac436da. The registry test was stale at v0.1.38 / contract 21 / (1, 21) and now asserts v0.1.40 / 22 / (1, 23), the bus values unchanged since the previous gitlink. json_rpc_auth_security_e2e asserts 0.1.40, and the locks move four crates 0.1.39 → 0.1.40. The Channel trait is identical, so the #[expect] reasons citing v0.1.39 still hold.

  • TinyJuice v0.11.3: record and gitlink d454ca139e. This fixes the CCR grant: the host's blob grant comes from tinyjuice_bus::storage::CCR_PREFIX, which was tinyjuice_ccr at the old gitlink and is juice/ccr now, matching what the module writes. The contradictory grant test now asserts juice/ccr/ allowed and the legacy prefix refused. The stale exemption is gone. Lock: tinyjuice-module 0.11.3.

  • TinyWallet v0.26.0:

    • record and gitlink 921987c85f.
    • PINNED_WALLET_LIBRARIES holds all 17 (archive, library) pairs. Library digests were computed by unpacking each release archive, then cross-checked against the archive's modules.toml; the same method reproduced main's v0.24.1 pair.
    • wallet_tests: the current library is now the v0.26.0 one, and the v0.24.1 library is added to the retired-and-refused list.
    • the manifest test asserts v0.26.0 / (1, 14), and the locks move six crates to 0.26.0.
  • TinyConnectors v0.22.0: version-only; record, gitlink ccdfba2fc1, locks.

  • TinyVoice v0.4.0: record (17 assets) and gitlink 96eaa4dcb5. The voice test asserts v0.4.0 / (1, 12); the bus change is additive (codec types and methods). The statically linked tinyvoice crate adds opus-pure, symphonia, mp4 and oxideav-aac, plus a serde edge on num-rational, in a separate lock commit.

  • TinyComputer v0.15.1: record and gitlink e48f38f907; the test asserts (2, 28), and the bus is additive. Lock commit:

    • agent-desktop moves to 0.10.1, and uiautomation is added.
    • the duplicate tinyinference 0.3.0 / tinytools 0.5.0 that only tinycomputer-engine 0.15.0 used is gone.
    • agent-browser moves to zip 9.
  • TinyFlows v0.9.0: record and gitlink 26df306117. The schedule-contract assert moves 7 → 8, the bus value since the previous gitlink, so the test that was red on main passes. tests/support/published_tinyflows.rs now admits the 11 v0.9.0 module libraries; their digests were computed from the unpacked archives and cross-checked against each archive's modules.toml.

  • TinyEventQueues v0.2.1: record (16 assets; Arch is x86_64-only, archlinux-rolling-x86_64) and gitlink a8d1e306a5. The same commit carries fix(inbound): tell tinyeventqueues which bus name serves its storage #8326's storage_callback key in inbound/settings.rs: v0.1.3 refuses the key and v0.2.1 requires it.

  • Lock policy: both locks pass cargo metadata --locked (checked on a remote host). Each regenerated lock was composed so that every changed line comes from a module bump. The resolver's Windows-only windows-sys edge re-points in unrelated packages (no version changes) are kept as on main. The app lock also gains nix 0.29's memoffset edge, which main's app lock is missing; that is main's own --locked failure.

  • Also: main merged in (signed merge, no rebase). The TinyChannels and TinyVoice manifest tests moved to registry_release_manifest_tests.rs to keep registry_tests.rs under the 750-line limit. The two module-pins script tests that attested the deleted TinyChannels and TinyJuice exemptions were removed with the user's approval.

TinyConnectors v0.22.0: storage grant fix and test storage

Production fix (modules/storage_grant_schemas.rs). On its first storage connect, TinyConnectors v0.22.0 migrates its v1 scope preferences: it queries composio-user-scopes (state/migration.rs:94). The host built the module's grant from tinyconnectors_bus::storage::collections() alone (connectors.user_scopes, connectors.migrations). The legacy name is listed only in storage_needs().collections, so the storage host refused the query as target-not-granted. On any host with storage installed, the desktop default among them, every Composio preference call (execute, list tools, the scope gate) would have failed. grant_for now also grants the collections each owner's storage needs read (read_collections, beside stream_prefixes). At these pins only tinyconnectors-bus publishes storage_needs(). TinyChannels v0.1.41 lists its legacy migration sources inside collections(), so it is already covered.

v0.21.0 hid this: it kept preferences in memory whenever host storage failed. v0.22.0 refuses instead.

Tests.

  • every_row_has_a_valid_generated_grant now requires each grant to equal the owner's provisioned plus read collections, and a Documents Get on each to be allowed. The old length check would have passed a grant missing a read collection.
  • connectors_may_read_the_v1_preferences_its_migration_moves names the three bus constants.
  • With the grant_for loop removed, both fail ("composio-user-scopes is not granted").
  • Composio's module_guard() installs a testkit memory backend for the test's lifetime (test_support::install_backend_for_test, which restores the slot on drop). A module call carries no workspace for the storage host's fallback (storage_host.rs:606-612), and the default feature build has no SQLite driver.
  • The two fetch_connected_integrations tests now take module_guard before the cache lock.
  • The credential sign-out tests take the lock alone (module_lock_guard(), what module_guard() was on main). They exercise the process keyring path, and with a backend installed, user secrets move into storage secrets. With a backend installed, main also loses the API key across a session sign-out. That is a separate, pre-existing bug, tracked outside this PR, and this PR does not change that path.
  • Known, shared-process only: under cargo test, where all tests share one process, 9 composio store and session tests fail. They pass process-per-test under nextest, which is how CI runs them. While one test holds module_guard(), its memory backend is the process's installed backend, and storage::local::backend_for and the secret store prefer an installed backend. So a parallel test that expects its workspace default reads the shared memory backend. The guard restores the slot on drop, so nothing outlives it. The established remedy is for a test that relies on the workspace default to hold test_support::lock_storage_slot(), as threads/ops/crud_message_append_tests.rs does. The complete fix is module storage that isn't process-wide in tests. Both are left out of this PR.

Nextest on the composio and storage filters (default features) fixes all 12 composio failures from 091c601, with none new against main.

Also fixed: tests/inbound_linked_e2e.rs (--features linked-modules,inbound-queues) passes on main + #8361 + this PR and fails without it. The likely cause, not separately verified here: TinyConnectors v0.21.0, TinyWallet v0.24.1 and TinyEventQueues v0.1.3, as pinned on main, were built against the TSD busproxy wire from before tinystoragedrivers 751e655. The releases pinned here use the current wire.

Checks

Checked on a remote host at each head SHA. At 1048107:

  • cargo metadata --locked: PASS for both locks (checked at fcc7d77; locks unchanged since).
  • modules::registry: 24/24. storage_grant_schemas, wallet, hosting, inbound::settings, computer and browser: all pass.
  • module-pins script tests: 39/40. The one failure is the TinyMemes drift above; main has 8 drifts.
  • On main plus the pending main-fix PRs, the gates-off lane's four registry/module-pin failures pass with this PR, and it adds no new failure.
  • TinyHosts v0.4.3: record (now 17 assets; the release added Arch and Fedora) and gitlink 1445a67e81; hosting_tests asserts v0.4.3 and 17 assets; locks 0.4.1 → 0.4.3.
  • App lock: tinydocs-bus 0.2.4 → 0.2.5 drift fix. The line was already wrong on main; it's the same line as chore(vendor): move source-built vendor pins to each repo's main #8325, so the two merge in either order.

Summary by CodeRabbit

  • Updates
    • Updated bundled modules, including TinyComputer, TinyWallet, TinyFlows, TinySearch, TinyVoice, TinyChannels, TinyHosts, TinyEventQueues, TinyMCP, and TinyConnectors.
    • Expanded platform availability for TinyChannels, TinyEventQueues, TinyHosts, TinySearch, and TinyVoice, including Arch Linux and Fedora.
    • Module configuration now includes the storage interface, and TinyConnectors’ storage access includes its preferences and migration collections.
    • Updated other bundled components, including TinyBox.
  • Tests
    • Updated release checks and integration tests to reflect current module versions and supported assets.

tinyhumansai#8324 moved the registry record to v0.2.1 but left the submodule on
v0.2.0 and the release-manifest test asserting v0.2.0, so the module
pin gate and that test were red on main.

- vendor/tinybox -> fc34d28da8 (tag v0.2.1)
- registry_tests: the TinyBox manifest test asserts the v0.2.1 version,
  URL and all 17 digests, taken from the GitHub release assets
- Cargo.lock and crates/openhuman-app/Cargo.lock: tinybox path crates
  0.2.0 -> 0.2.1 (the only manifest changes besides tokio features)
- registry record: version, release URL and all 17 archive digests from
  the v0.20.2 release (GitHub asset digests == checksum.toml)
- vendor/tinymcp -> 563ede788d (tag v0.20.2); it contains fbabec36cc,
  the commit tinyhumansai#8309 pinned, and the host already sends the module its
  storage_callback (modules/ops.rs)
- registry_tests: the TinyMCP manifest test was still asserting v0.20.0
  and contract (1, 27); it now asserts v0.20.2, (1, 28) and the release
  digests
- Cargo.lock and crates/openhuman-app/Cargo.lock: tinymcp and
  tinymcp-bus 0.20.1 -> 0.20.2 (the only manifest change in the range)
@coderabbitai

coderabbitai Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

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: 2b3c3feb-42c7-4b54-a31d-e4bdbe7c7e99
Commits

Reviewing files that changed from the base of the PR and between 5166ecb and 1702b18.

Files selected for processing: 2
  • crates/openhuman-core/src/integrations/composio/module_client.rs
  • crates/openhuman-core/src/security/credentials/ops_credential_tests.rs

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

Walkthrough

Registry pins and asset manifests are updated for multiple Tiny modules, with matching tests and vendor references. TinyFlows published-module checks now target v0.9.0. TinyWallet embedded library pins are updated. Storage configuration, grants, and test setup also change.

Changes: Module release pins

Layer / File(s) Summary
Registry releases and asset manifests
crates/openhuman-core/src/modules/registry/*, vendor/*
Registry versions, release URLs, archive names, and checksums are updated. Several manifests add platform assets. Vendor references change.
Release validation and published-module checks
crates/openhuman-core/src/hosting/hosting_tests.rs, crates/openhuman-core/src/modules/registry*tests.rs, scripts/ci/check-gated-test-allowlist.sh, scripts/ci/module-pin-exemptions.json, scripts/__tests__/module-pins.test.mjs, tests/*
Tests update expected versions, contracts, assets, and checksums. New manifest tests cover TinyChannels and TinyVoice. TinyFlows checks use v0.9.0. The TinyJuice exemption and TinyJuice/TinyChannels source-parity tests are removed.
Embedded TinyWallet library pins
crates/openhuman-core/src/modules/wallet.rs, crates/openhuman-core/src/modules/wallet_tests.rs
Pinned TinyWallet archive and library checksums and related test expectations now use v0.26.0.

Storage configuration and grants

Layer / File(s) Summary
Storage callback and test backend setup
crates/openhuman-core/src/inbound/settings.rs, crates/openhuman-core/src/inbound/settings_tests.rs, crates/openhuman-core/src/inbound/linked_fixture.rs, crates/openhuman-core/src/integrations/composio/*, crates/openhuman-core/src/storage/test_support.rs
module_config includes storage_callback. The linked fixture serves and retains an in-memory storage service. Composio tests use a module guard that retains the installed backend and mutex guard. Test support can install a backend without a URL and restore the previous storage state.
Storage grant collections and checks
crates/openhuman-core/src/modules/storage_grant_schemas.rs, crates/openhuman-core/src/modules/storage_grant_schemas_tests.rs
Grant generation adds distinct TinyConnectors migration-read collections. Tests check read authorization for the granted collections, remove a TinyJuice blob-read assertion, and check TinyConnectors access to its preferences and migration collections.

Priority: Low

Estimated code review effort: 4 (Complex) | ~45 minutes

Change: Other

Possibly related issues

Possibly related PRs

Suggested reviewers: senamakel

Merge Risk: Minimal · up to 1702b

No actionable merge-blocking risk remains in the reviewed changes.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 27.27% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 44 functions across 32 files. 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 and concisely describes the main change: re-pinning the loadable modules to their October 23, 2026 releases.
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.
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

A rabbit checks the release list twice,
New hashes hop into place.
Storage waits with open doors,
While tests trace every case.
Tiny modules bound ahead,
And carrots mark the pace.

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

vendor/tinydocs and the root Cargo.lock are already at 0.2.5; the app
lock still said 0.2.4, so cargo --locked refused it. Same line as tinyhumansai#8325,
so the two merge cleanly in either order.
- registry record: version, release URL and the full v0.4.3 asset set.
  The release now publishes 17 archives (Arch and Fedora were added), up
  from 11; every digest is the GitHub asset digest, which equals the
  release checksum.toml
- vendor/tinyhosts -> 1445a67e81 (tag v0.4.3, tinyhosts main)
- hosting_tests: the pinned-artifact test asserts v0.4.3, 17 assets and
  the v0.4.3 ubuntu-24.04-x86_64 digest
- Cargo.lock and crates/openhuman-app/Cargo.lock: tinyhosts and
  tinyhosts-bus 0.4.1 -> 0.4.3 (the only manifest change in the range;
  WIRE_CONTRACT_VERSION stays (1, 2))
- registry record: version, release URL and the full v0.5.3 asset set
  (17 archives, up from 11); digests are the GitHub asset digests, equal
  to the release checksum.toml
- vendor/tinysearch -> 22c22d227f (tag v0.5.3, tinysearch main)
- registry_tests and agent_harness_e2e assert v0.5.3 and the v0.5.3
  ubuntu-24.04-x86_64 digest; CONTRACT_VERSION stays (2, 2)
- Cargo.lock and crates/openhuman-app/Cargo.lock: tinysearch and
  tinysearch-bus 0.5.1 -> 0.5.3 (workspace version is the only manifest
  change in the range)
- registry record: version, release URL and the full v0.1.40 asset set
  (17 archives, up from 11); digests are the GitHub asset digests, equal
  to the release checksum.toml
- vendor/tinychannels -> b2fac436da (tag v0.1.40, tinychannels main)
- registry_tests: the TinyChannels test still asserted v0.1.38, contract
  21 and operation version (1, 21); it now asserts v0.1.40, the bus
  crate's 22 and (1, 23) (unchanged since the previous gitlink) and all
  17 release digests
- json_rpc_auth_security_e2e: pinned and listed version 0.1.40
- Cargo.lock and crates/openhuman-app/Cargo.lock: the tinychannels path
  crates 0.1.39 -> 0.1.40 (version is the only manifest change)

The Channel trait (tinychannels-bus/src/traits.rs) is identical at
v0.1.40, so the #[expect] reasons that cite v0.1.39 still hold.
- registry record: version, release URL and all 17 v0.11.3 digests (the
  GitHub asset digests, equal to the release checksum.toml)
- vendor/tinyjuice -> d454ca139e (tag v0.11.3). The gitlink sat at
  v0.11.0, BEHIND the v0.11.2 record. That made the host's blob grant
  `tinyjuice_ccr/` while the loaded module writes `juice/ccr/`, so
  durable CCR writes were refused. The grant comes from
  tinyjuice_bus::storage::CCR_PREFIX, which is now `juice/ccr`.
- storage_grant_schemas_tests: the TinyJuice grant test asserted
  `tinyjuice_ccr/abc` both allowed and refused; it now asserts
  `juice/ccr/abc` allowed and the legacy prefix refused
- module-pin-exemptions.json: drop the TinyJuice entry. It pinned a
  v0.10.8-13 describe that has not been true since the v0.11 pins, and the
  record and gitlink now agree.
- Cargo.lock: tinyjuice-module 0.11.0 -> 0.11.3 (the only crate whose
  version moved)
- registry record: version, release URL and all 17 v0.26.0 digests (the
  GitHub asset digests, equal to the release checksum.toml)
- wallet.rs PINNED_WALLET_LIBRARIES: all 17 (archive, library) pairs for
  v0.26.0. The library digests were computed by unpacking each release
  archive and hashing the module library, then cross-checked against the
  archive's own modules.toml. The same method reproduced main's v0.24.1
  archlinux-arm64 pair exactly.
- wallet_tests: the "current attested library" is the v0.26.0
  ubuntu-24.04-x86_64 library, and the v0.24.1 one joins the retired
  libraries that must be refused
- registry_tests: the TinyWallet manifest test asserts v0.26.0 and its
  17 digests; CONTRACT_VERSION stays (1, 14)
- vendor/tinywallet -> 921987c85f (tag v0.26.0, tinywallet main). The
  tinywallet-x402 API removals in this range don't reach openhuman, which
  doesn't use that crate, and tinywallet-bus/src is unchanged.
- Cargo.lock and crates/openhuman-app/Cargo.lock: the tinywallet path
  crates 0.24.1 -> 0.26.0 (versions are the only manifest change)
- registry record: version, release URL and all 17 v0.22.0 digests (the
  GitHub asset digests, equal to the release checksum.toml)
- vendor/tinyconnectors -> ccdfba2fc1 (tag v0.22.0, tinyconnectors main);
  CONTRACT_VERSION stays (1, 22)
- Cargo.lock and crates/openhuman-app/Cargo.lock: tinyconnectors,
  tinyconnectors-bus and tinyconnectors-sync 0.21.0 -> 0.22.0 (workspace
  version is the only manifest change)
- registry record: version, release URL and the full v0.4.0 asset set
  (17 archives, up from 11); digests are the GitHub asset digests, equal
  to the release checksum.toml
- vendor/tinyvoice -> 96eaa4dcb5 (tag v0.4.0, tinyvoice main)
- registry_tests: the voice release test asserts v0.4.0, contract
  (1, 12) and all 17 release digests. tinyvoice-bus 0.2.0 only adds the
  codec types and the CodecProbe, CodecTranscode and CodecWaveform method
  names; nothing openhuman uses changed.
The lock entries for the TinyVoice v0.4.0 re-pin. tinyvoice-module 0.4.0
and tinyvoice-bus 0.2.0 replace 0.3.4 and 0.1.4. The statically linked
`tinyvoice` crate now depends on opus-pure, oxideav-aac, rvoip-codec-core,
symphonia, mp4, bytes and serde. That adds 16 crates.io packages
(symphonia and its 8 sub-crates, oxideav-core, extended, regex-lite) and
a `serde` edge on num-rational, which mp4 requires.

Resolved with cargo metadata on a scratch copy. The online re-resolve also
re-pointed Windows-only windows-sys/windows-core edges in 18 unrelated
packages, with no version added or removed. Those edges are kept as they
were on main, so every changed line here comes from TinyVoice.
… exist

"TinyChannels' merged owner commit matches its exact test-set
attestation" and "TinyJuice's canonical owner merge matches its recorded
release-tree attestation" each read their module's entry from
scripts/ci/module-pin-exemptions.json and check its source-parity proof.
The TinyChannels entry was deleted in ca56294 and the TinyJuice entry
in this PR, now that both modules' records and gitlinks agree. The tests
had nothing left to attest, so they only failed with a TypeError on the
missing entry. The shared source-parity helpers are unchanged and still
covered by the fixture-based tests in this file.
…their own file

The re-pins grew registry_tests.rs past the 750-line layout limit (783).
The two 17-asset release-manifest tests move unchanged into
registry_release_manifest_tests.rs, wired the same way as
registry_computer_release_tests.rs.
- registry record: version, release URL and all 17 v0.15.1 digests (the
  GitHub asset digests, equal to the release checksum.toml)
- vendor/tinycomputer -> e48f38f907 (tag v0.15.1, tinycomputer main)
- registry_computer_release_tests asserts v0.15.1, contract (2, 28) and
  the 17 release digests. tinycomputer-bus only adds API between the pins
  (the old CONTRACT_VERSION constant is the one removed `pub` line), and
  the host checks the module with is_compatible against the same bus.

The statically linked tinycomputer crate gains dependencies (the browser
crate, url, base64, a git-named tinyinference that the root patch
redirects), so its lock entries follow in their own commit.
- registry record: version, release URL and all 11 v0.9.0 digests (the
  GitHub asset digests, equal to the release checksum.toml)
- vendor/tinyflows -> 26df306117 (tag v0.9.0, tinyflows main)
- registry_contract_tests: the flows manifest test asserts v0.9.0 and its
  digests. The schedule contract assert becomes 8: the bus has said 8
  since the previous gitlink (it adds optional channel-session identity),
  the host builds against that bus, and the test was red on main.
- json_rpc_flows_e2e: the listed module version is 0.9.0
- Cargo.lock: tinyflows 0.8.29 -> 0.9.0 (the only manifest change)
tests/support/published_tinyflows.rs admits a staged TinyFlows library
only if its sha256 is one of the published bundles' module libraries.
These are the 11 v0.9.0 library digests, computed by unpacking each
release archive and cross-checked against the archive's modules.toml.
The same method reproduced a v0.8.29 entry. The helper names and prose
move from v0.8.29 to v0.9.0 with them.
…age bus

- registry record: version, release URL and the full v0.2.1 asset set:
  16 archives (Arch is published for x86_64 only, as
  `archlinux-rolling-x86_64`), up from 11. Every digest is the GitHub
  asset digest, equal to the release checksum.toml.
- vendor/tinyeventqueues -> a8d1e306a5 (tag v0.2.1, tinyeventqueues main);
  CONTRACT_VERSION stays (0, 2)
- inbound/settings.rs: module_config now carries `storage_callback`, the
  storage host's bus name, plus its settings_tests assertion. This is
  W2's change from tinyhumansai#8326 (7ad45b7). It has to ship in the same change
  as the record: v0.1.3 refuses unknown config keys, and v0.2.1 refuses to
  load without this one. The host still derives the scope and grant from
  the authenticated caller.
- Cargo.lock and crates/openhuman-app/Cargo.lock: tinyeventqueues and
  tinyeventqueues-bus 0.1.3 -> 0.2.1 (workspace version is the only
  manifest change)
The lock entries for the TinyComputer v0.15.1 re-pin:
- the tinycomputer crates 0.15.0 -> 0.15.1; agent-desktop-{core,linux,
  macos,windows} 0.9.4 -> 0.10.1; new uiautomation 0.25.1 and
  uiautomation_derive 0.7.9 (Windows accessibility, from agent-desktop)
- tinycomputer-engine now names tinyinference by git rev, and the root
  [patch] redirects that to the shared vendored copy. The second
  tinyinference-{core,decisions,llm} 0.3.0 and tinytools{,-agent} 0.5.0,
  which only tinycomputer-engine 0.15.0 used, are gone, so every
  `tinytools 0.6.0` / `tinyinference-* 0.5.0` edge drops its
  now-unneeded version qualifier.
- agent-browser (via tinycomputer-browser) resolves zip 9.0.5 instead of
  8.6.0 and gains a webpki-roots 1.0 edge, and tokio-tungstenite drops its
  webpki-roots 0.26 edge
- app lock: tinycomputer-bus 0.15.1 with its base64 edge, plus nix 0.29's
  memoffset edge, which main's app lock already lacks

Resolved with cargo metadata on a scratch copy. The resolve also
re-pointed Windows-only windows-sys edges in 16 unrelated packages, with
no version change. Those are kept as on main, so every changed line comes
from TinyComputer (or the nix edge main is missing).
the_flows_record_pins_every_host_of_one_release compares record.assets
with its expected list position by position. The v0.9.0 re-pin rebuilt
the record in a canonical host order and broke that comparison. The
assets are back in the order main used (and the test expects). Only
lines moved; no digest changed.
@M3gA-Mind
M3gA-Mind marked this pull request as ready for review October 23, 2026 22:46
@tinysweeper

tinysweeper Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Tiny Sweeper review

⏳ Reviewing 1702b18357a1 now. The last completed report, when available, remains below until this pass finishes.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 23, 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-23T22:54:50.379753Z 1048107 Draft marked ready
ℹ️ 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 could not complete coverage (16 unanswered item(s)), so this is not an approval.

Diagnostics

Total spend: $0.0015

@tinysweeper tinysweeper Bot added the priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. label Oct 23, 2026

@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: 1048107e43

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread crates/openhuman-core/src/inbound/settings.rs
…_callback assert

registry_release_manifest_tests.rs carries a voice-gated test, so it joins
EXPECTED in check-gated-test-allowlist.sh. The gate-contract filters already
select it through modules::registry:: (it mounts at
modules::registry::tests::release_manifest_tests). The settings_tests.rs
hunk is the cargo fmt --check output from cuttlefish at 1048107.
TinyEventQueues v0.2.1 keeps its queues in host storage and refuses setup
without storage_callback, so every Rig-based test (inbound, Composio
triggers, skill webhooks, event queues) failed to attach the module. The rig
now serves the Storage service from an in-memory backend on its private bus
and passes the same storage_callback as settings::module_config.
coderabbitai[bot]
coderabbitai Bot previously approved these changes Oct 24, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes Oct 24, 2026
…eads

TinyConnectors v0.22.0 migrates its v1 preferences on its first storage
connect: it queries composio-user-scopes, which its storage needs list but
its provisioned collections do not. The host granted only the provisioned
two, so on any host with storage (the desktop default) the migration was
refused as target-not-granted and every preference call failed. The grant
now adds the collections TinyConnectors' storage needs name.

The composio tests that take the module now get a SQLite backend of their
own from module_guard, restored on drop: v0.22.0 no longer falls back to
in-memory preferences, and a module call carries no workspace for the host
to fall back to.
…r names

The grant-size check compared against the provisioned collections only, so
it would also have passed a grant missing a collection the module's migration
reads. It now requires each row's grant to be exactly the owner's provisioned
collections plus the ones its storage needs read, and each to be reachable.
The default feature build has no sqlite driver, so module_guard's tempdir
SQLite failed every test that takes the module. The guard now installs the
testkit memory backend through test_support::install_backend_for_test, which
restores the previous slot on drop like install_for_test. The connector
module's migration only needs per-write preconditions, which memory has.
…ns tests

Both list connections through the module, which now needs host storage for
its preference reads; they held only the cache lock, so they saw no storage
and an empty list. They take module_guard first, in the crate's lock order
(module_guard, then the cache lock).
Cargo.lock takes this branch's side, regenerated on top: openhuman-cli
gains tinystoragedrivers-testkit and openhuman-tinyhumans gains
tinyagents-session, the dev-dependencies main added.
coderabbitai[bot]
coderabbitai Bot previously approved these changes Oct 24, 2026
module_guard installs a memory storage backend for the connector module,
and with a backend installed user secrets move from the process keyring
into storage secrets. The session sign-out tests store an API key and
read it back across the user-dir rebind, which is the keyring path, so
they take the lock alone, as they did before the guard installed storage.
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.

2 participants