Repository navigation
Conversation
…ontroller registry Main removed the `openhuman_core::storage::MemoryStorage` re-export, and `core::all::all_registered_controllers` now returns `ControllerEntry`s, so `raw_coverage_all` (and `inbound_linked_e2e`) stopped compiling: - E0433 tests/raw_coverage_all.rs:61, tests/inbound_linked_e2e.rs:51: install the testkit `MemoryBackend` the core's own tests use, via a new `tinystoragedrivers-testkit` dev-dependency of openhuman-cli (same rev). - E0308 tests/raw_coverage/inference_local_controllers_rpc_e2e.rs:219,473: look up and invoke core-registry entries through `ControllerEntry::invoke`.
…storage A cron shell job runs through the TinyBox module, which asks host storage for its capabilities before creating the command resource. The raw_coverage cron e2e boots no host, so no storage backend was installed, the storage host answered "no-backend", TinyBox reported a module fault, and the job recorded "Command execution is unavailable." Install the suite's HostStorage for that test, as the composio suites already do. Both places that swallowed the cause now log it: the cron shell job (`run_host` error, with the job id; the recorded output is unchanged) and the TinyBox create call in sandbox::shell_exec.
Tiny Sweeper reviewReviewed head: FindingsNo active actionable findings. Advisory notes
Verdict: Ready for maintainer review · Priority: medium Diagnostics and supporting detailsFull summaryPull request purpose (title): fix(cron): log why a shell job could not run; give the cron e2e host storage. Tiny Sweeper completed its review; deterministic results follow. Unreviewed paths
Review snapshot
Completeness: Complete What changedBehaviorally, the cron shell-job path and sandbox shell path now emit `tracing::warn!` diagnostics when they previously discarded the underlying error: `run_job_command_with_timeout` in `crates/openhuman-core/src/cron/scheduler/shell_job.rs#pub(super) async fn run_job_command_with_timeout(` logs the `run_host` error with the job id while still returning "Command execution is unavailable.", and `run_owned` in `crates/openhuman-core/src/sandbox/shell_exec.rs#async fn run_owned(` logs the TinyBox `create` error before mapping it to the same anyhow message. Features
TestsNo supported feature-to-test mapping was produced. Test execution is not inferred. Before mergeNone. Agent review detailscritique
security
tests
commits
description
Evidence and run details
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Log command and resource creation failures crates/openhuman-core/src/cron/scheduler/shell_job.rs, crates/openhuman-core/src/sandbox/shell_exec.rs |
The scheduler logs the job ID and formatted error when command execution fails. Shell execution logs the underlying error when TinyBox resource creation fails. Both paths retain their existing generic errors. |
Integration test updates
| Layer / File(s) | Summary |
|---|---|
Install testkit storage backends crates/openhuman-cli/Cargo.toml, tests/inbound_linked_e2e.rs, tests/raw_coverage_all.rs, tests/raw_coverage/automation_scheduling_e2e.rs |
The CLI manifest adds the testkit dev-dependency. Tests install MemoryBackend instead of MemoryStorage; the cron test installs HostStorage under the shared environment lock. |
Invoke core controllers through registry entries tests/raw_coverage/inference_local_controllers_rpc_e2e.rs |
Core registry tests look up controllers as ControllerEntry values and invoke them through the added helper. Local-runtime controller tests continue to use RegisteredController. |
Priority:
Estimated code review effort: 2 (Simple) | ~10 minutes
Change: Other
Possibly related issues
- Epic: tinystoragedrivers as a hardened static primitive (types + API + per-primitive crates, engines as features) #8131: The cron test now installs
HostStorage, which supplies the host-provided backend described by the issue.
Possibly related PRs
- tinyhumansai/openhuman#8325: This PR updates the storage driver revision used by the testkit dependency added here.
- tinyhumansai/openhuman#8361: This PR includes the same testkit, storage backend, and
ControllerEntrytest changes. - tinyhumansai/openhuman#8362: This PR includes the same testkit dependency and test migrations, including the
HostStoragesetup.
Suggested reviewers: senamakel
Merge Risk: 
Minimal · up to c680d
-
The changes preserve runtime behavior while improving diagnostics and aligning integration tests with current storage and controller APIs.
Pre-merge checks: 
4 · 
1
-
Failed checks: 1 warning Passed checks: 4 passedFull details: Docstring Coverage
-
Explanation
Docstring coverage is 45.45% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 11 functions across 6 files. (1 skipped: 1 unsupported.)
Resolution
Write docstrings for the functions missing them to satisfy the coverage threshold.
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
A rabbit checks the logs at night,
And sees the errors written right.
Test backends settle in their place,
Registry calls run at a steady pace.
The rabbit hops, content and bright.
Comment @coderabbitai help to get the list of available commands.
The merge-base changed after approval.
Summary
Stacked on #8361 (
fix/raw-coverage-build-on-main, by W2), which makes theopenhuman-cliraw_coverage_alltarget compile. Until #8361 merges, this PR's diff also shows #8361's commits. This PR's own change is the last commit,c680d09: 3 files, +19 −2.Fixes
automation_scheduling_e2e::cron_run_records_history_and_remove_is_not_idempotent. Once the target compiles, it fails even when run CI-faithfully (test modules installed, full product features, one module per process). The shell job's run record isstatus: "error",output: "Command execution is unavailable.".Root cause, from a traced run on the CI host.
sandbox::shell_exec::run_owned→tinybox::create,passthroughbackend).[storage_host] module storage call module=tinybox … op=Capabilities outcome="no-backend". It treats that as fatal (reason="module_fault"), socreatefails with "MODULE_CALL_REPORTED: module execution failed".no-backendhappens because nothing installed a process storage backend. A real host's boot fills the slot (openhuman-rpcserver/shims.rs→session_store::install_for_host). This suite builds the router directly and boots no host. The suite crate already providesHostStoragefor exactly this, documented as "modules reach host storage only through the installed backend … these suites boot none", and the composio suites use it. The cron test did not.Fix
crate::HostStorageunder its env lock.warn.cron/scheduler/shell_job.rslogs therun_hosterror with the job id. The recorded output stays "Command execution is unavailable.".sandbox/shell_exec.rslogs the module's error from the TinyBoxcreatecall.Before this, neither a user nor CI could tell why a cron shell job failed.
Tests
On the CI host, CI-faithful,
--test raw_coverage_all -- automation_scheduling_e2e::… --test-threads=1:Summary by CodeRabbit