Skip to content

feat(kernel): realign DomainGroup with the family directories - #5332

Merged
senamakel merged 11 commits into
tinyhumansai:mainfrom
senamakel:domain-runtime-axis
Aug 3, 2026
Merged

feat(kernel): realign DomainGroup with the family directories#5332
senamakel merged 11 commits into
tinyhumansai:mainfrom
senamakel:domain-runtime-axis

Conversation

@senamakel

@senamakel senamakel commented Aug 3, 2026

Copy link
Copy Markdown
Member

Summary

  • Realigns DomainGroup with the src/openhuman/ family directories now that the reorg (refactor(kernel): collapse 124 flat domains into 31 gate-aligned families #5328) gave each family a directory to be named after. Adds seven variants — Inference, Integrations, Automation, Runtimes, Desktop, Hosted, Relay — and retags 33 of the 45 Platform push sites.
  • Fixes two latent defects the Platform catch-all was hiding, both now pinned by tests: harness() silently dropped ten namespaces (including harness_init) out of the families it claims to enable, and StoreInitPlan.people keyed on a different group than its controllers.
  • Splits DomainSubscriberPlan.platform, which bundled subscribers now owned by four different families.
  • Adds DomainSet::kernel() — the floor a host opts subsystems back into — and examples/embed_kernel.rs, which was run, not just compiled.
  • 10 files, +577/−51. No wire-surface change under full().

Problem

DomainGroup is the runtime axis: every controller is tagged with one at its single registration site, and the live surface (controllers, /schema, dispatch, agent tools, stores, subscribers) is filtered by the ambient CoreContext::domains().

Before this change, 45 of 90 push sites were tagged Platform — not by design, but because the flat tree spread one capability across up to 13 sibling top-level directories, so there was no family to name. Platform had stopped meaning "no family" and started meaning "we couldn't say".

That produced two real defects, neither of which was visible under full():

  1. harness() did not enable the families it claims. Its docstring says "agent + memory + threads + config + security", but agent::{agentbox, harness_init, artifacts, learning}, security::{credentials, devices}, config::{workspace, migration_helpers}, memory::people and skills::webhooks all sat in Platform, which harness() sets to false. An agent harness that never registers harness_init is a bug, and examples/embed_headless.rs ships that preset.

  2. embedded() had to set platform: true to reach credentials and config — its own doc comment says so explicitly — which dragged the desktop and hosted-backend surfaces into every embedded host that has no use for either.

Solution

Seven new variants, not the four originally planned. Integrations, Automation (cron + subconscious), Runtimes (runtime + sandbox) and Relay (tinyplace) were the plan; Inference, Desktop and Hosted are the additions, and they are what make embedded() expressible — with Desktop and Hosted as their own families it can stop reaching through platform: true. Platform now holds only the kernel surfaces with no family of their own: platform/, tools/, http_host/, test_support/.

Retagging is a behaviour change, deliberately. Ten namespaces that answered Platform now answer their real family, so harness() genuinely enables them. full() is unaffected (every group on), and none() is unaffected (every group off).

StoreInitPlan.people had to move with it. people lives under memory/ and its controllers are now tagged Memory; leaving the store keyed on Platform would have registered the people RPC surface under harness() with no store behind it — a bug this PR would otherwise have introduced. The existing test asserting harness must skip people::store (Platform) is updated, with the reason recorded in the assertion message.

DomainSubscriberPlan.platform is split into skills (webhooks), desktop (notification bridge), integrations (composio trigger + task sources), security (device tunnel) and agent (learning). Learning needs its own idempotency token rather than group_first_time(DomainGroup::Agent): the Agent block already consumes that token, so whichever ran second would have silently skipped.

tool_group() gains matching rules. A missing entry there leaks a gated tool under a custom DomainSet — the #4808 review finding for whatsapp_data. Tool names were extracted from the actual fn name() implementations per family rather than guessed.

DomainSet::kernel() is threads + config + security, with agent and memory off: they are the two largest subsystems and the ones an alternative driver would replace, so a host that wants them says so. examples/embed_kernel.rs demonstrates opting one back in by field assignment, and it was executed — it prints memory serving a request and agent_list_definitions returning "unknown method", so the "absence, not a failing stub" contract is shown rather than asserted.

Submission Checklist

  • Tests added or updated — five new tests in src/core/all_tests.rs: carved_out_families_report_their_own_group (18 namespace→group assertions), platform_holds_only_kernel_surfaces (fails if a named family is left in the catch-all), harness_preset_registers_the_families_it_claims (the defect above), kernel_preset_is_the_floor, embedded_preset_excludes_desktop_and_hosted. Failure paths covered: each asserts the wrong tag fails, and platform_holds_only_kernel_surfaces is the guard against a future missed push(...) tag.
  • Diff coverage ≥ 80% — the changed logic is allows(), the presets, tool_group() and the two plan builders, all directly exercised by the new tests plus the existing DomainSubscriberPlan / StoreInitPlan suites. core:: runs 681 tests gates-on.
  • Coverage matrix updated — N/A: no feature rows added, removed, or renamed. This changes runtime composition, not the feature surface.
  • All affected feature IDs listed under ## RelatedN/A: no matrix feature IDs affected.
  • No new external network dependencies — N/A: no dependency change. The kernel-floor ratchet is untouched.
  • Manual smoke checklist — N/A: no release-cut surface touched. DomainSet::full() is the shipped desktop configuration and is unchanged in every axis.
  • Linked issue closed via Closes #NNNN/A: no dedicated tracking issue. This is the runtime-axis half of the kernelization program (compile-time half: epic Feature gates for core subsystems — tracking (lightweight harness builds) #4795; structural half: refactor(kernel): collapse 124 flat domains into 31 gate-aligned families #5328). Follow-ups are listed below.

Impact

Runtime/platform: none for the shipped desktop app, which runs DomainSet::full() — every group is on, so the registered surface, /schema, tool list, stores and subscribers are identical.

The behaviour change is confined to the narrow presets, and in each case it is a fix:

  • harness() now registers agentbox, harness_init, ai (artifacts), auth (credentials), devices, workspace, people, webhooks and the learning subscribers — the families it always claimed.
  • embedded() now excludes desktop, hosted and relay, which it never wanted.
  • none() unchanged.

Compatibility: DomainSet gains public fields. It is constructed via presets in-tree and the struct is pub, so any out-of-tree literal construction would need the new fields — there is none in this repo, and the crate is unpublished.

Security: security::devices and security::credentials move from Platform to Security, so a DomainSet enabling Security now gets the device-tunnel subscriber and credentials surface it implies. That is a widening under harness(), and intentional — a set that enables Security should not silently omit the credential store.

Related

  • Closes:
  • Follow-up PR(s)/TODOs:
    • StoreInitPlan / DomainSubscriberPlan / tool_group() are not compiler-enforced against DomainGroup. Adding a variant compiles fine while leaving a tool ungated or a store unkeyed. A drift test over the three would close it; AGENTS.md documents the hazard meanwhile.
    • all_tools_executes_*_family_against_fake_backend fail under parallel execution and pass with --test-threads=1. Pre-existing — reproduced on the base commit, different tests each run, consistent with a shared fake-backend port. Not touched here.
    • Remaining dependency sheds toward the 222-names / 2-native target: runtime-node (xz2 + static liblzma), contacts (objc2-contacts), and the cross-repo memory-git (needs vendor/tinycortex to carve its inert diff types out from behind git-diff first).
    • Next: bind the subsystem registry from docs/specs/kernel.md on top of this axis.

AI Authored PR Metadata (required for Codex/Linear PRs)

Linear Issue

  • Key: N/A
  • URL: N/A

Commit & Branch

  • Branch: domain-runtime-axis
  • Commit SHA: 42fe6d7d6

Validation Run

  • pnpm --filter openhuman-app format:check — Rust half verified directly: cargo fmt --all --check clean in both Cargo worlds (root and app/src-tauri), which is what rust:format:check runs. Prettier half is N/A: no frontend files changed.
  • pnpm typecheckN/A: no TypeScript changed.
  • Focused tests: cargo test --lib core::681 passed gates-on, 561 passed gates-off (up from 676/556 — the five new tests). cargo test --lib openhuman::tools:: -- --test-threads=1866 passed, 0 failed. cargo run --example embed_kernel executed successfully.
  • Rust fmt/check: cargo check --lib, --all-targets, and --no-default-features --features tokenjuice-treesitter all clean; cargo clippy -p openhuman -- -D warnings clean.
  • Tauri fmt/check: cargo check and cargo clippy -- -D warnings clean on app/src-tauri/Cargo.toml.

Validation Blocked

  • command: none
  • error: n/a
  • impact: n/a — every lane that gated the previous PR (clippy in both worlds, rust:format:check across both Cargo worlds) was run locally before pushing this time.

Behavior Changes

  • Intended behavior change: yes, and scoped to the narrow DomainSet presets. harness() now enables the ten namespaces it always claimed; embedded() now excludes desktop/hosted/relay. full() and none() are unchanged.
  • User-visible effect: none for the shipped app, which runs full(). Effect is on library embedders using harness() / embedded(), both of which get the surface their preset documents rather than a subset.

Parity Contract

  • Legacy behavior preserved: full() registers the identical controller set, in the identical order (full_registration_is_byte_identical still passes), with identical stores, subscribers and agent tools. none() likewise registers nothing.
  • Guard/fallback/dispatch parity checks: five new tests assert the group↔family mapping in both directions; platform_holds_only_kernel_surfaces fails if a future family is left in the catch-all; store_init_plan_harness_gates_by_owning_group and the DomainSubscriberPlan suite pin the two plan builders.

Duplicate / Superseded PR Handling

  • Duplicate PR(s): none
  • Canonical PR: this one
  • Resolution: N/A

Summary by CodeRabbit

  • New Features

    • Added a kernel-only runtime preset with core services and optional memory support.
    • Expanded runtime configuration to support inference, integrations, automation, runtimes, desktop, hosted, and relay capabilities.
    • Updated embedded and harness presets with clearer feature inclusion and exclusion behavior.
    • Added an executable example demonstrating kernel-only runtime usage.
  • Bug Fixes

    • Corrected service, tool, subscriber, and people-store registration according to enabled capabilities.
  • Documentation

    • Updated runtime composition and domain organization guidance.

The runtime axis was the half of kernelization the flat tree had been blocking.
With `src/openhuman/` now one directory per family (tinyhumansai#5328), `DomainGroup` can
name each one instead of sweeping half the controller surface into `Platform`.

Adds seven variants — Inference, Integrations, Automation (cron + subconscious),
Runtimes (runtime + sandbox), Desktop, Hosted, Relay (tinyplace) — and retags
33 of the 45 `Platform` push sites. `Platform` now holds only the kernel
surfaces with no family of their own: platform/, tools/, http_host/,
test_support/.

This is not cosmetic. It fixes two defects the catch-all was hiding:

1. `harness()` claimed "agent + memory + threads + config + security" but
   silently dropped ten namespaces into `Platform`: agent::{agentbox,
   harness_init, artifacts, learning}, security::{credentials, devices},
   config::{workspace, migration_helpers}, memory::people, skills::webhooks.
   An agent harness that never registers `harness_init` is a latent bug.
2. `StoreInitPlan.people` keyed on `Platform` while `people` moved under
   `memory/` and its controllers are tagged `Memory`. Left alone, harness()
   would register the people RPC surface with no store behind it.

`embedded()` no longer sets `platform: true` just to reach credentials and
config — Desktop and Hosted are their own families now and stay off, which is
what an embedded host actually wants.

Also splits `DomainSubscriberPlan.platform`, which bundled subscribers now
owned by four different families (webhooks→Skills, notifications→Desktop,
composio + task_sources→Integrations, devices→Security, learning→Agent).
Learning gets its own idempotency token rather than
`group_first_time(DomainGroup::Agent)`: the Agent block already consumes that
token, so whichever ran second would have silently skipped.

`tool_group()` gains matching rules for the new families. A missing entry there
leaks a gated tool under a custom DomainSet — the tinyhumansai#4808 review finding — and it
is not compiler-enforced, so it is called out in AGENTS.md alongside the store
and subscriber plan keys.

New: `DomainSet::kernel()` (threads + config + security; agent and memory OFF,
because they are the two largest subsystems and the ones an alternative driver
would replace) and `examples/embed_kernel.rs`, which was run, not just
compiled — it prints memory serving requests and `agent_list_definitions`
returning "unknown method", demonstrating that absence, not a failing stub, is
the contract.

Verified: default, --all-targets, gates-off, Tauri-shell builds clean; clippy
-D warnings clean in both Cargo worlds; fmt clean in both; core:: 681 gates-on
/ 561 gates-off (up from 676/556 — the five new tests); tools 866 passed with
--test-threads=1. The parallel-run failures in
`all_tools_executes_*_family_against_fake_backend` are pre-existing shared-port
interference, reproduced on the base commit.

Co-authored-by: Medulla <medulla@tinyhumans.ai>
@senamakel
senamakel requested a review from a team August 3, 2026 10:57

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

senamakel has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 59 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 6e85914e-47be-4914-8746-15939bbb557b

📥 Commits

Reviewing files that changed from the base of the PR and between 42fe6d7 and ec66e67.

📒 Files selected for processing (8)
  • src/core/all.rs
  • src/core/all_tests.rs
  • src/core/jsonrpc.rs
  • src/core/jsonrpc_tests.rs
  • src/core/runtime/builder.rs
  • src/core/runtime/context.rs
  • src/openhuman/tools/ops.rs
  • src/openhuman/tools/ops_tests.rs
📝 Walkthrough

Walkthrough

The PR reorganizes domain families across DomainGroup, DomainSet, controller registration, subscriber gates, store initialization, and tool classification. It adds the kernel() preset, updates runtime presets, adds coverage, and introduces a kernel embedding example.

Changes

Domain family model and runtime presets

Layer / File(s) Summary
Domain taxonomy and controller mappings
src/core/all.rs
DomainGroup adds seven domain families. Controllers move from Platform to their specific groups.
Runtime presets and validation
src/core/runtime/builder.rs, src/core/all_tests.rs
DomainSet adds family flags and the kernel() preset. full(), harness(), embedded(), and none() define the updated coverage. Tests verify namespace mappings and preset behavior.
Kernel embedding and documentation
examples/embed_kernel.rs, AGENTS.md, docs/specs/...
The executable example uses DomainSet::kernel(). Documentation records the domain realignment and registration updates.

Registration and ownership alignment

Layer / File(s) Summary
Subscriber domain gates
src/core/jsonrpc.rs, src/core/jsonrpc_tests.rs
Subscriber planning separates integrations, security, desktop, and skills. Registration uses independent domain gates and learning-subscriber idempotency.
People store ownership
src/core/runtime/context.rs
People store initialization now follows the Memory domain. Harness tests expect the store to initialize.
Tool family classification
src/openhuman/tools/ops.rs
Monitor, integration, hosted, relay, desktop, runtime, and inference tools receive explicit domain mappings.

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

Possibly related PRs

Sequence Diagram(s)

sequenceDiagram
  participant Example as embed_kernel
  participant Domains as DomainSet
  participant Runtime as CLI runtime
  participant Core as Core and Memory namespaces
  participant Agent as Agent subsystem

  Example->>Domains: select kernel() and enable memory
  Domains->>Runtime: build with kernel domains
  Runtime->>Core: call core.version and memory namespace
  Runtime->>Agent: call disabled agent method
  Agent-->>Runtime: return unknown-method error
Loading

Suggested labels: feature, rust-core

Suggested reviewers: oxoxdev, yellowsnnowmann

Poem

I’m a rabbit in the kernel lair,
Seven domain flags now hop with care.
Memory joins the harness run,
Disabled agents answer none.
Tests guard each mapped stair.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 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 primary change: realigning DomainGroup with the family directories.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
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.

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

@coderabbitai coderabbitai Bot added feature Net-new user-facing capability or product behavior. rust-core Core Rust runtime in src/: CLI, core_server, shared infrastructure. labels Aug 3, 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: 42fe6d7d60

ℹ️ 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 src/openhuman/tools/ops.rs Outdated
Comment thread src/core/runtime/builder.rs

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (4)
src/core/jsonrpc.rs (1)

2114-2118: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Update the stale "Platform:" block comment.

Line 2117 says "// Platform: webhook + notification bridge + composio trigger + task-sources proactive ingestion + device tunnel." The four if plan.X blocks immediately below (Lines 2119-2189) gate these subscribers on Skills, Desktop, Integrations, and Security respectively — none of them reads plan.platform. This is a leftover from before the split and now describes the wrong owning group for every subscriber it lists.

📝 Proposed comment fix
-    // Platform: webhook + notification bridge + composio trigger + task-sources
-    // proactive ingestion + device tunnel.
+    // Carved-out families: webhook (Skills), notification bridge (Desktop),
+    // composio + task-sources (Integrations), device tunnel (Security).
     if plan.skills {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/core/jsonrpc.rs` around lines 2114 - 2118, Update the stale “Platform:”
block comment in the gated domain subscribers section to describe the actual
owning groups used by the following Skills, Desktop, Integrations, and Security
plan checks; remove the incorrect platform ownership claim while preserving the
subscriber descriptions.
src/core/runtime/context.rs (1)

390-400: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Fix the stale domain name in the people-store skip log.

plan.people is now derived from DomainGroup::Memory (Line 330), not Platform. Line 399 still logs "Platform domain disabled" when the people store init is skipped. This diagnostic now names the wrong domain, which defeats grep-friendly troubleshooting of domain-gating issues — exactly the class of bug this PR's realignment is meant to catch.

📝 Proposed fix
     } else {
-        log::debug!("[boot] people::store init SKIPPED — Platform domain disabled");
+        log::debug!("[boot] people::store init SKIPPED — Memory domain disabled");
     }

As per coding guidelines, **/*.{rs,ts,tsx} requires "verbose, grep-friendly diagnostics for entry/exit, branches, external calls, retries/timeouts, state transitions, and errors" for changed flows; a diagnostic naming the wrong gating domain fails that bar.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/core/runtime/context.rs` around lines 390 - 400, Update the skip
diagnostic in the people-store initialization branch of the runtime context flow
so it names the Memory domain rather than the Platform domain. Keep the existing
people::store gating and debug-level logging unchanged, modifying only the stale
domain label in the else branch.

Source: Coding guidelines

src/core/all.rs (1)

727-735: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Update the stale "Classified Platform" comment.

The comment at Line 728 says: "Classified Platform (always-on): TokenJuice is the token-compression content router". The code now tags this push as DomainGroup::Inference, not Platform. Update the comment so it explains the Inference classification instead of the old Platform rationale. Otherwise, a future reader concludes TokenJuice must always stay on, when harness() and any DomainSet with inference: false now gate it off.

📝 Proposed comment fix
-    // TokenJuice content-router debug controllers (detect / compress / cache_stats / retrieve).
-    // Classified Platform (always-on): TokenJuice is the token-compression content
-    // router that runs on every agent tool output, not a crypto surface — despite
-    // `#4802` listing it under the web3 gate. Flagged for `#4802` re-scope.
+    // TokenJuice content-router debug controllers (detect / compress / cache_stats / retrieve).
+    // Classified Inference: TokenJuice is the token-compression content router
+    // that runs on every agent tool output, not a crypto surface — despite
+    // `#4802` listing it under the web3 gate. Note the always-on compaction path
+    // itself is installed unconditionally in `register_domain_subscribers`'s
+    // INFRA block; only these debug/inspection controllers are gated here.
     push(
         &mut controllers,
         DomainGroup::Inference,
         crate::openhuman::inference::tokenjuice::all_tokenjuice_registered_controllers(),
     );
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/core/all.rs` around lines 727 - 735, Update the stale comment above the
TokenJuice controller registration in the controllers setup to describe its
DomainGroup::Inference classification rather than calling it Platform or
always-on. Mention that harness() and DomainSet configurations with inference
disabled can gate TokenJuice off, while preserving the existing `#4802` context
only if still accurate.
src/core/runtime/builder.rs (1)

289-334: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Enable Integrations for the documented embedded surface.

DomainSet::embedded() disables DomainGroup::Integrations, so Composio and task-source controllers are unavailable under its active context. Set integrations: true and add a test assertion. If this scope change is intentional, remove the task-source claims from the preset documentation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/core/runtime/builder.rs` around lines 289 - 334, Update
DomainSet::embedded() to set integrations: true so the documented embedded
surface includes Composio and task-source controllers, and add or update a test
asserting the Integrations domain is enabled. Remove any embedded-preset
documentation claims that task sources are excluded.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/core/runtime/builder.rs`:
- Around line 210-226: Move the “Everything not in a named family — always on in
`full()`” doc comment from above `pub inference: bool` to immediately above `pub
platform: bool` in the `DomainSet` field definitions, leaving the other field
comments unchanged.

---

Outside diff comments:
In `@src/core/all.rs`:
- Around line 727-735: Update the stale comment above the TokenJuice controller
registration in the controllers setup to describe its DomainGroup::Inference
classification rather than calling it Platform or always-on. Mention that
harness() and DomainSet configurations with inference disabled can gate
TokenJuice off, while preserving the existing `#4802` context only if still
accurate.

In `@src/core/jsonrpc.rs`:
- Around line 2114-2118: Update the stale “Platform:” block comment in the gated
domain subscribers section to describe the actual owning groups used by the
following Skills, Desktop, Integrations, and Security plan checks; remove the
incorrect platform ownership claim while preserving the subscriber descriptions.

In `@src/core/runtime/builder.rs`:
- Around line 289-334: Update DomainSet::embedded() to set integrations: true so
the documented embedded surface includes Composio and task-source controllers,
and add or update a test asserting the Integrations domain is enabled. Remove
any embedded-preset documentation claims that task sources are excluded.

In `@src/core/runtime/context.rs`:
- Around line 390-400: Update the skip diagnostic in the people-store
initialization branch of the runtime context flow so it names the Memory domain
rather than the Platform domain. Keep the existing people::store gating and
debug-level logging unchanged, modifying only the stale domain label in the else
branch.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a65fcd1f-7f98-4802-b15e-0e8439500afb

📥 Commits

Reviewing files that changed from the base of the PR and between b668251 and 42fe6d7.

📒 Files selected for processing (10)
  • AGENTS.md
  • docs/specs/2026-08-02-core-kernel-domain-reorg.md
  • examples/embed_kernel.rs
  • src/core/all.rs
  • src/core/all_tests.rs
  • src/core/jsonrpc.rs
  • src/core/jsonrpc_tests.rs
  • src/core/runtime/builder.rs
  • src/core/runtime/context.rs
  • src/openhuman/tools/ops.rs

Comment thread src/core/runtime/builder.rs
@senamakel senamakel self-assigned this Aug 3, 2026
…ed controllers

The embedded runtime preset now enables the integrations domain so external connectors are available in long-lived embedded hosts, and the embedded preset test asserts this. The hosted orchestration controllers are reclassified from the Agent domain group to Hosted, and the TokenJuice debug controllers are clarified as inference-gated while the content-router subscriber remains always-on core infrastructure. The people store skip log now correctly references the Memory domain instead of Platform.
Move the hosted orchestration ingest subscriber registration out of the agent domain group into its own dedicated hosted flag, so that the tiny.place harness session DM ingestion can be enabled or disabled independently of the agent handlers and background delivery.
Realign tool grouping so artifact, learning, subagent, config, workspace, security, and credential tools are assigned to their respective domain families instead of defaulting to Platform. This keeps them available under the harness runtime while generic Platform tools continue to drop.
Reformatted the assertion for the harness plan's hosted subscriber to match the multi-line style used by other assertions in the test, improving readability and consistency.
The test comment now explains that the embedded preset differs from harness by leaving the Platform, Channels, and Integrations families enabled, rather than listing specific dropped components. The assertions are extended to verify that Integrations is also excluded from harness and included in embedded, closing a gap in the guard against future simplification.

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

senamakel has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 3, 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: d3265230b7

ℹ️ 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 src/openhuman/tools/ops.rs
Comment thread src/core/runtime/builder.rs
Agent-related startup steps (file-state coordinator, orphaned run settlement, task reconciliation, and definition registry) now run only when the Agent domain is enabled, with debug logs when skipped. Tool-to-domain classification was also corrected so agent workflow tools (ask_user_clarification, delegate, todo, wait, etc.) map to Agent, people_* tools to Memory, and session_*/oauth_* tools to Security, with tests covering the new mappings.
The comment block describing detached sub-agent TaskStore reconciliation was indented inconsistently with the surrounding code. This change aligns the comment indentation with the enclosing block for readability, with no behavioral impact.

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

senamakel has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 3, 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: c0233046df

ℹ️ 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 src/openhuman/tools/ops.rs Outdated
The tool group classifier was missing several recently added tools, causing them to fall through to the Platform group instead of their intended domains. Added spawn_parallel_agents to the Agent group, schedule to Automation, and polymarket to Integrations, with corresponding test coverage.
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 3, 2026

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

senamakel has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@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: 05aacc5cfe

ℹ️ 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 src/openhuman/tools/ops.rs
Comment thread src/core/runtime/builder.rs
The plan-review controller was registered under the Security domain group but is now correctly placed under Agent, matching its namespace mapping. Additional search and web tools are now classified as Integrations rather than falling through to Platform, ensuring they are properly grouped for tool routing and gating.
Condense the multi-line assertion for the "plan_review" namespace into a single line, matching the style of the surrounding assertions. This is a purely cosmetic change with no effect on test behavior.

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

senamakel has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@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: ec66e67c3e

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

/// See `examples/embed_kernel.rs`.
pub fn kernel() -> Self {
Self {
agent: 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.

P2 Badge Gate AgentBox setup for the agent-free kernel

When this preset is built in an environment containing the GMI_MAAS_* variables, CoreContext::init still unconditionally calls agent::agentbox::register_gmi_provider_if_present at src/core/runtime/context.rs:91. That call writes a GMI provider and API key into persisted configuration and rewrites every agent workload provider, so the new agent-free kernel mutates agent-owned state despite agent: false. Fresh evidence beyond the earlier bootstrap fix is that this separate pre-store AgentBox initialization remains unguarded; gate it on DomainGroup::Agent as well.

AGENTS.md reference: AGENTS.md:L254-L254

Useful? React with 👍 / 👎.

@senamakel
senamakel merged commit 20589ab into tinyhumansai:main Aug 3, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature Net-new user-facing capability or product behavior. rust-core Core Rust runtime in src/: CLI, core_server, shared infrastructure.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant