Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
53df4df
feat(ci): ratchet loadable module dependency boundaries
senamakel Oct 10, 2026
8b2e0ad
feat(modules): expose pre-core calls with sanitized failure reports
senamakel Oct 10, 2026
011cb14
fix(modules): harden boundary auditing and pre-core reporting
senamakel Oct 10, 2026
090df9e
fix(modules): report unknown IDs and reject bare implementation packages
senamakel Oct 10, 2026
f68bc92
docs: track independently verified module migration PRs
senamakel Oct 10, 2026
96ebd4d
docs: track native accessibility module migration
senamakel Oct 10, 2026
7005e16
docs: track connector module migration
senamakel Oct 10, 2026
583dbb2
docs: track wallet contract and validation migration
senamakel Oct 10, 2026
1d07372
docs: track native recording module migration
senamakel Oct 10, 2026
c7fd386
docs: track MCP supervisor notification migration
senamakel Oct 10, 2026
e688c38
docs: track verified voice lifecycle and shutdown contracts
senamakel Oct 10, 2026
5394dbc
docs: track verified MCP callback and cancellation contracts
senamakel Oct 10, 2026
1123a3d
docs: clarify contract vocabulary and pre-core module access
senamakel Oct 10, 2026
e59933d
docs: track reviewed generic tool sanitization
senamakel Oct 10, 2026
d926f4e
docs: track reviewed channel contract separation
senamakel Oct 10, 2026
f944302
docs: track reviewed MCP vocabulary and bounded operations
senamakel Oct 10, 2026
c9bb878
docs: record reviewed TinyBox module lifecycle slice
senamakel Oct 10, 2026
1cbc886
docs: record reviewed wallet transaction construction
senamakel Oct 10, 2026
bb16935
docs: record reviewed runtime worker module slice
senamakel Oct 10, 2026
7d918af
docs: record reviewed hosting preparation and compatibility
senamakel Oct 10, 2026
dcce98d
Merge module boundary foundation with combined dependency floor
senamakel Oct 10, 2026
8383b4f
docs: record module-disabled MCP regression verification
senamakel Oct 10, 2026
e48371e
docs: record reliable Globe module review and remaining image parser cut
senamakel Oct 10, 2026
811f593
docs: record reviewed runtime cache contracts and remaining integration
senamakel Oct 10, 2026
c70f6cc
docs: distinguish runtime public API feature suites
senamakel Oct 10, 2026
8d76236
fix(modules): report cached terminal failures once
senamakel Oct 10, 2026
af04b68
Merge commit 'c70f6ccb65' into module-terminal-sentry
senamakel Oct 10, 2026
6c853c9
docs: explain module terminal report identity
senamakel Oct 10, 2026
45dbda5
docs: record reviewed module hotkey lifecycle
senamakel Oct 10, 2026
66d11fe
docs: record runtime bridge acceptance and voice verification gaps
senamakel Oct 10, 2026
4369a90
docs: record verified formatted voice lifecycle
senamakel Oct 10, 2026
457c559
docs: exclude runtime from active module migration
senamakel Oct 10, 2026
cceb281
docs: record module review and release gates
senamakel Oct 10, 2026
a590be3
Merge module foundation into current upstream base
senamakel Oct 10, 2026
ad08459
Merge terminal module reporting into connector integration
senamakel Oct 10, 2026
a1aed47
fix: report connector bus failures once without changing provider mes…
senamakel Oct 10, 2026
f1f303a
chore: remove stale wallet and channel pin exemptions
senamakel Oct 10, 2026
0f045a2
feat: execute connector preparation and trigger archives through rele…
senamakel Oct 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/ci-paths-filter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,8 @@ scripts:
- '.github/workflows/ci-*.yml'
- '.github/ci-paths-filter.yml'
- 'scripts/ci/self-hosted/**'
- 'scripts/ci/check-module-boundaries.mjs'
- 'scripts/ci/module-boundaries.json'
- 'scripts/mock-api/**'
- 'scripts/*.mjs'
- 'scripts/__tests__/**'
Expand Down
5 changes: 4 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -521,6 +521,8 @@ builds after changing a gate. Use `scripts/assert-shed.sh` or

## Loadable modules and bus contracts

Hosts must interface with loadable components through their minimal `*-bus` contracts. Never import, re-export, link, or call their implementation libraries directly, including through wrapper crates or indirect dependencies. Execute component behavior through the compiled TinyBus module. If the required types or operations are missing, extend the contract and implementation in the owning repository and raise a PR against its canonical upstream first; then consume the released module and update OpenHuman’s gitlink and adapter. Do not introduce a host-side implementation workaround.

### Submodule ownership

OpenHuman is the host and orchestrator for these components. It composes them,
Expand Down Expand Up @@ -601,7 +603,8 @@ Rules:
- Never redeclare a contract type in OpenHuman.
- Call members through contract constants, not string literals.
- Contract crates stay synchronous and free of I/O and runtime dependencies.
- Shared wire behavior belongs in the contract. Runtime, config, and security
- Shared wire vocabulary belongs in the contract. Component algorithms execute
in the compiled module. Runtime, config, and security
policy stay in the host.
- Test the handwritten registry metadata against each contract's bus name and
object path.
Expand Down
79 changes: 1 addition & 78 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

84 changes: 1 addition & 83 deletions crates/openhuman-app/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 6 additions & 11 deletions crates/openhuman-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -230,14 +230,7 @@ tinymemory-integrations = { path = "../../vendor/tinymemory/crates/tinymemory-in
# of it.
#
tinyconnectors-bus = { path = "../../vendor/tinyconnectors/crates/tinyconnectors-bus" }
# tinyconnectors — the connector module's implementation crate, linked as a
# plain Rust library (never as the loaded module) for its pure, host-agnostic
# helpers: failure classification, action-argument preparation, the daily
# trigger archive, calendar defaults and the task-recency window.
# `default-features = false` drops the `module` feature, so no TinyBus adapter or
# ABI export is compiled into the host (and no second copy of `tinybus` enters
# the graph). Live connector calls still go over the bus to the loaded module.
tinyconnectors = { path = "../../vendor/tinyconnectors/crates/tinyconnectors", default-features = false }



# tinymcp — the Model Context Protocol client, extracted out of this tree
Expand Down Expand Up @@ -320,7 +313,9 @@ tinychannels = { version = "0.1", features = ["relay-websocket"], optional = tru
# never loads a module. The kernel-floor ratchet catches exactly that, and did.
tinybus = { path = "../../vendor/tinybus/crates/tinybus", default-features = false, features = ["macros", "uds"] }
tinysearch-bus = { path = "../../vendor/tinysearch/crates/tinysearch-bus" }
tinycomputer-bus = { path = "../../vendor/tinycomputer/crates/tinycomputer-bus", optional = true }
# Registry vocabulary is available even when the loader is disabled, so the
# pre-core client can identify and report an unavailable module safely.
tinycomputer-bus = { path = "../../vendor/tinycomputer/crates/tinycomputer-bus" }
# Desktop accessibility middleware, linked as a plain library (not through the
# tinycomputer module): the voice pipeline needs focus lookup, paste validation,
# permission checks and the Globe key synchronously and in-process. Deps are
Expand Down Expand Up @@ -831,7 +826,7 @@ tinymemes = ["dep:tinymemes"]
# A loaded module is trusted in-process code with this process's privileges, and
# tinybus never unloads one. See `crates/openhuman-core/src/modules/` before adding an entry
# to the registry.
modules = ["tinybus/modules", "dep:tinycomputer-bus"]
modules = ["tinybus/modules"]
# Voice + audio_toolkit domains: STT/TTS providers, the standalone dictation
# server, always-on listening, and podcast audio generation/email delivery.
# Default-ON — the desktop app always ships with voice. Slim / headless builds
Expand Down Expand Up @@ -952,7 +947,7 @@ media = ["tinyagents-harness/media"]
# runtime `DomainSet::flows` flag (#4796): the feature narrows the compile-time
# surface, `DomainSet` gates it at runtime.
# NOTE: this gate does NOT drop `tinyagents` itself — 26+ domains consume it.
flows = ["dep:tinyflows", "dep:tinyflows-catalog", "dep:tinyflows-copilot", "tinyflows-drivers/catalog", "tinyflows-sqlite/catalog"]
flows = ["modules", "dep:tinyflows", "dep:tinyflows-catalog", "dep:tinyflows-copilot", "tinyflows-drivers/catalog", "tinyflows-sqlite/catalog"]
# Skills domains: `openhuman::skills` (metadata/discovery/install),
# `openhuman::skill_runtime` (SKILL.md execution + the skill_executor agent),
# and `openhuman::skill_registry` (remote catalogs + the skill_setup agent).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
//! concept. `CURRENT_AGENT_SANDBOX_MODE` carries the calling agent's sandbox
//! mode; [`TASK_RECENCY_WINDOW`] carries an optional "only data newer than
//! `now - window`" hint that the `composio_execute` handler applies to a
//! curated set of task-fetch slugs (see `tinyconnectors::execute::apply_window_args`).
//! curated set of task-fetch slugs (see `tinyconnectors-bus::PrepareArguments`).
//!
//! Why a task-local instead of a `Tool::execute` argument: the tool trait is
//! invoked from many call sites (CLI, JSON-RPC, tests, agent loops). A
Expand Down
Loading
Loading