Skip to content

fix(app): restore desktop app dependency resolution (tinymemory-gate starship-battery 0.10) - #6852

Merged
senamakel merged 135 commits into
tinyhumansai:mainfrom
senamakel:fix-app-starship-battery
Oct 1, 2026
Merged

senamakel merged 135 commits into
tinyhumansai:mainfrom
senamakel:fix-app-starship-battery

Conversation

@senamakel

@senamakel senamakel commented Oct 1, 2026 •

Copy link
Copy Markdown
Member

Summary

On main, cargo check --manifest-path crates/openhuman-app/Cargo.toml fails to resolve. The scheduler gate moved to tinymemory-gate in #6837, and that crate asked for starship-battery 0.12. Version 0.12 requires plist ~1.10.1 (as a netbsd target dependency), which conflicts with the plist 1.8 that Tauri locks.

Depends on tinyhumansai/tinymemory#177. That PR pins starship-battery to 0.10, which is what the host used before the move; the battery probe API is unchanged. The gitlink points at its head, f5e9daa8 (v1.19.0-1-gf5e9daa8).

Changes

  • vendor/tinymemory: moved to the v1.19.0 release commit plus fix: onboarding flow - registry skills, config-based flag, dead code cleanup #177.
  • module-pin-exemptions.json: the tinymemory expect is now v1.19.0-1-gf5e9daa8. The previous value (v1.18.0-52) no longer described main's v1.19.0 pin.
  • crates/openhuman-app/Cargo.lock: regenerated. Besides starship-battery, the regeneration picks up the path-crate version bumps that the wave 4 re-pins left stale: tinybox 0.1.10, tinychannels 0.1.7, tinycomputer 0.9, tinyconnectors 0.11 and others.
  • Cargo.lock: regenerated the same way.

Verification

  • cargo check --manifest-path crates/openhuman-app/Cargo.toml: Finished; it failed to resolve on main.
  • cargo check -p openhuman with product features passes, as do the scheduler_gate lib tests (9 pass).
  • tinymemory-gate: check, clippy -D warnings and tests (16) pass with --features battery.
  • check-submodule-monotonic upstream/main HEAD passes. check-module-pins reports no tinymemory failure.

Summary by CodeRabbit

  • Chores
    • Updated the bundled memory library to a newer release that includes a library fix. No changes were made to the module, contract, or bus behavior.

M3gA-Mind and others added 30 commits September 30, 2026 18:19
Agent-generated files (decks, documents, generated media) were written
under the hidden per-account workspace, ~/.openhuman/users/<hash>/
workspace/artifacts/<uuid>/, where Finder and file pickers do not show
them.

Split the store: metadata (meta.json, args.json) stays in the hidden,
per-account <workspace>/artifacts/<id>/, and only the file moves to
~/OpenHuman/projects/Files (config::default_files_dir). Files are named
for people, <title>.<ext>, claimed with create_new and suffixed ' (2)'
on collision, so two accounts sharing the folder never clobber each
other and each account still lists only its own records.

- ArtifactMeta gains file/file_root; legacy records resolve as before.
- One resolver applies an escape guard to a recorded file (absolute, no
  '..', inside its file_root after resolving symlinks, never
  is_always_forbidden) and now rejects a legacy meta.path with '..',
  which the lexical starts_with check let through.
- A Ready record whose file was moved or deleted reads as 'file missing'.
- Regenerate overwrites the file it owns; a failed generation removes its
  empty placeholder; delete removes the file and the record.
- ensure_agent_dirs creates the folder and runs a crash-safe, idempotent
  migration of legacy files (copy to a partial, claim a name and rename,
  atomic meta write, then delete the legacy bytes).
- artifacts/ joins WORKSPACE_INTERNAL_DIRS.
- The desktop Download command takes an artifact id and resolves it
  through the core instead of trusting a renderer path under the data dir.

Part of tinyhumansai#5505
check_within ran the symlink escape check only when both the file and its
files folder canonicalized, so a dangling or looping symlink, or a folder
that could not be resolved, skipped the check instead of failing it. A
later read could then follow the link wherever it came to point.

Now, when anything is at the recorded path, both sides must resolve or
the file is rejected; a path whose metadata cannot be read for any reason
other than NotFound is rejected too. A path with nothing at it still
passes the guard and reads as 'file missing'.

Part of tinyhumansai#5505
…e limit

Listing artifacts/ in WORKSPACE_INTERNAL_DIRS also blocked
artifacts/tool-results/, where the agent reads its own large tool
outputs back (tool_result_artifacts::threshold_persists_preview_and_
readable_file failed in CI). Drop the entry: a record's file is already
bounded by the escape guard, including the is_always_forbidden floor.

Also fold the ArtifactReady path doc back to its original length so
core/events.rs stays at its 2005-line layout limit.

Part of tinyhumansai#5505
Keeps tools/ops.rs at its 1341-line layout pin after the files folder
argument: each producer now takes the host Config and derives both the
metadata workspace and the files folder from it.

Part of tinyhumansai#5505
Adds a 'Files folder' row to Settings > Agent OS access, so users can
see where the agent saves the files it makes and pick another folder.

- Config gains a persisted files_dir_override and Config::files_dir(),
  which falls back to ~/OpenHuman/projects/Files for a missing or
  relative value. The producers and the boot migration read it.
- config.get_agent_paths reports files_dir, default_files_dir and
  files_dir_source; config.update_agent_paths accepts files_dir, where
  an empty string restores the default.
- A chosen folder must be absolute, not a file, not a protected system
  or credential folder, and not inside the OpenHuman data folder
  (compared through the nearest existing ancestor, so macOS /var vs
  /private/var cannot slip past). A missing folder is created.
- A change applies to new files only; existing artifacts keep the folder
  recorded in their metadata.
- Strings are translated for every locale.

Part of tinyhumansai#5505
…ct metadata

A record's file_root came from the same meta.json the guard was checking,
so a hand-edited record claiming file_root = ~ and file = ~/Documents/
private.pdf passed every within-root check and would be served by
read_artifact_bytes and the desktop Download command.

- FileRoots carries the folder new files go to plus every folder the core
  vouches for. resolve_file honours a record's file_root only when it
  canonically matches one of those; callers build it themselves (the
  producers' files_dir, FileRoots::from_config for the RPCs and the
  desktop shell), never from the record.
- create/fail/read/delete/resolve_ready_file take the roots.
- is_workspace_internal_path treats artifacts/<id>/ as internal state
  again, narrowly: artifacts/tool-results/ stays readable so the agent can
  read its own large tool outputs back.

Part of tinyhumansai#5505
With PR 1's escape guard trusting only folders the core vouches for, a
Settings change would have stranded every artifact made in the previous
folder. Config now records the folders used before in files_dir_history
(core-owned, never read from an artifact), and FileRoots::from_config
trusts the current folder, the default and that history. The producers,
the media tools and ai.regenerate build their roots from config.

Part of tinyhumansai#5505
config.toml sits next to workspace_dir and holds the autonomy policy
plus files_dir_override / files_dir_history, which the artifact escape
guard now trusts. The workspace-internal boundary only covered paths
inside the workspace, so a trusted root over the account or data dir let
the agent's file tools rewrite it and vouch for an arbitrary folder.
Treat <account>/config.toml as internal state; other files beside it stay
reachable through such a grant.

Part of tinyhumansai#5505
Adds Show in folder to every ready file in the chat Files panel and to
the Files folder row in Settings > Agent OS access. The panel used to
offer it only after a Download, and it opened the Downloads copy; it now
resolves the artifact through the core and opens the file manager at the
real file in the visible files folder, with a localized error when the
file was moved or deleted. The settings row opens the configured folder.

revealArtifact(artifactId) replaces revealArtifactInFileManager(path).
New strings are translated for every locale, and the release smoke list
gains a check for the visible files folder.

Closes tinyhumansai#5505
The hosted `[UNAUTHORIZED]` code now reads as a lapsed session only when
the auth refusal is the error's own: its class is `unauthorized: `, or the
message is a bare adapter payload. An outage can quote that code, for
example when the backend relays its upstream's 401 as a 503. That now reads
`MEMORY_UNREACHABLE:`, and an invalid-input error that quotes the code keeps
its text.

OpenHuman's own `SESSION_EXPIRED:` marker and the backend's billing code
still count wherever they appear.
Moves vendor/tinymemory to tinyhumansai/tinymemory#176 (feat/hosted-families,
4cbc096), which serves goals, tool rules, documents, the source sink and
maintenance over the TinyHumans hosted wire. It changes only crates the core
links directly (tinymemory-remote), not the loadable module, its contract or
the bus, so the registry's module pin does not move for it.
…ions on their own

The engine list gives tinyhumans its own capability row with goals,
tool_memory, documents, sources and maintenance; cortex keeps its old row.

Brain gated the coding-sessions card on sources. Hosted memory now serves
sources but reads no local agent transcripts, so the card would call an RPC
the engine refuses; it is gated on coding_sessions instead.
The hosted double keeps the caller's context (the families look records up
by label), filters events by label and scopes by prefix, and serves events by
id. The hosted suites now expect documents and tool rules to round-trip, the
doctor to report the hosted service's health, and graph to stay refused.
tinymemory f7dcc2c (tinyhumansai/tinymemory#176): hosted memory serves retrieval scored by rank, ingest, profile, episodic, scoring and a tree drawn from the server's derived facts, beliefs and concepts. TreeSummary gains an optional preview (contract 4.2, a minor bump).
The tinyhumans row of expected_capabilities, which the UI's family gates read, gains retrieval, ingest, profile, episodic, scoring and tree. A new test builds the hosted driver offline and holds the row to exactly what it advertises, so the two cannot drift; it also pins that hosted memory keeps no local chunk store, which the UI's local-store controls key on.
Hosted CortexDB now serves the retrieval family, and its namespace hits carry a rank in score/final_score and no signal at all. The unscored-engine rules from phase 1 lived only on the no-retrieval branch, so with retrieval advertised the auto-recall notes leg would floor every hosted note away.

memory::ops::fallback::rank_only names the mark: every hit has a positive final score and no similarity, keyword, graph, episodic or freshness signal, which a weighted sum of signals cannot produce. On it:
- auto-recall keeps the notes in the engine's order (its first three), as for an unscored engine;
- situational preferences and the contradiction check answer nothing, as they did on hosted before;
- memory_hybrid_search keeps the engine's order and shows a rank instead of a percentage, rather than re-weighting zeros into no results.
Hosted memory serves Tree and Scoring but reaches no model: summarise and embed_text answer Unsupported. The archivist warned on every segment close for both. Unsupported is the driver's shape, not a failure, so it is now a debug line; the heuristic recap still applies, and other errors still warn.
Ported from the 6718 graph branch. A summary node served with its text inline (TreeSummary::preview, hosted memory's facts, beliefs and concepts) is labelled by that text and offers no file to open. A hosted driver's namespaces read as what they hold (Memory, Chat, Email, Documents), but only for the understanding tree kind, since the embedded engine has a global scope of its own. drop_stand_ins removes a document stand-in for a child the leaf listing also returned, so no item is drawn twice.
Hosted memory keeps what it is sent through its source sink and runs no source pipeline of its own, so folder, GitHub, RSS and web-page sources had nowhere to go: the Sync button and Apply all asked for a source_sync family the driver does not serve.

memory::sources::hosted_sync reads such a source with the host's own readers (built explicitly per kind, not through reader_for) and hands the items to accept_source_items in batches of 25. It keeps the newest max_items within sync_depth_days, stops at max_tokens_per_sync and reports more pending, skips an unreadable item with a note, and marks a folder Internal and fetched content ExternalSync. The sink skips unchanged items, so a run over an unchanged folder writes nothing. A file removed from a folder stays in memory until the source is removed: the sink forgets a whole source, never one item.

The Sync button and Apply all dispatch to it when the bound driver has a sink and no source_sync, recorded through run_recorded like any driver run. hosted_periodic (ported from the 6718 branch) schedules those sources on the user's sync interval, never more often than daily, timed from the run log after a restart; it starts with the channels and checks the driver bound at each tick, since the engine can be switched while the app runs. driver_run's stage events now carry their trigger (manual or periodic).
With hosted memory serving a tree, Brain's graph tab and its tree-gated panels now show for it. The reset, rebuild, build-trees and vault controls, the ingest pipeline status and the vault health checklist all work on the local engine's chunk store, which hosted memory does not keep.

MemoryControls shows those controls only for an engine with chunks (failing open while the engine is unknown) and leaves Refresh for every engine; the pipeline status panel and the vault checklist are gated on chunks. The graph and the memory workspace stay on tree.
senamakel and others added 5 commits October 1, 2026 07:29
Changed the reflection persistence test to call the public `list` method instead of directly locking the internal `entries` field, ensuring the test exercises the same interface that production code uses.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The baseline count of ignored tests for the openhuman-core package is reduced from 68 to 62, reflecting that six previously ignored tests are no longer being skipped.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The ignored test count for the openhuman-core package has been decreased from 68 to 67, reflecting that one previously ignored test is no longer being skipped.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…ts/ci/module-pin-exemptions.jso

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

tinysweeper Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Tiny Sweeper review

⚠️ Review failed for b376f9a780a3. the review of #6852 did not finish within 900s

Last completed report

Tiny Sweeper review

Tiny Sweeper reviewed this change across 6 lane(s) and found 0 active actionable finding(s). Detailed lane evidence and any incomplete work are listed below.

State: Incomplete
Priority: none
Reviewed head: 636bdf9a430b
Updated: 1790830939 (Unix time)

Review snapshot

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

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

What changed

The review could not produce a supported behavioral summary; inspect the cited changed surface and lane details below.

Features

None identified with supported citations.

Tests

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

Findings

No active actionable findings.

Could not review: scripts/ci/module-pin-exemptions.json

Before merge

  • Complete the critique review for scripts/ci/module-pin-exemptions.json.
  • Complete the security review for scripts/ci/module-pin-exemptions.json.
Agent review details

critique

  • Conclusion: Neutral
  • Scope reviewed: incomplete; unanswered: scripts/ci/module-pin-exemptions.json
  • Lane summary: Reviewed 0 files; 0 findings. 1 file could not be reviewed: scripts/ci/module-pin-exemptions.json.

security

  • Conclusion: Neutral
  • Scope reviewed: incomplete; unanswered: scripts/ci/module-pin-exemptions.json
  • Lane summary: Reviewed 0 files; 0 findings. 1 file could not be reviewed: scripts/ci/module-pin-exemptions.json.

tests

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: No behavioural change: nothing outside documentation, configuration and tests.

commits

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

description

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Lane summary: Updates the tinymemory pin exemption to v1.19.0-1-gf5e9daa8 with a revised reason describing the starship-battery version pin that fixes the desktop app's dependency resolution. The change is a metadata-only update and appears consistent with the described submodule pointer change. _The code index is behind this pull request (indexed at `a65c48a3ec18`), 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._

e2e

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: No behavioural change: nothing outside documentation, configuration and tests.
Evidence and run details
  • Models: ladder/vectors, deepseek/deepseek-v4-flash
  • Spend: $0.000973
  • Tokens: 5749 input · 3438 output · 2304 cached · 234 embedding
Head State Pass summary
636bdf9a430b incomplete 0 active finding(s), 0 resolved finding(s) (at 1790830939)

tinysweeper 0.1.0

senamakel and others added 2 commits October 1, 2026 10:30
…nit-b

test: drop redundant tests in tools, integrations, flows, config, core, security and platform
@coderabbitai

coderabbitai Bot commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Warning

Review limit reached

  • Run on-demand review

This review includes 277 billable files and costs up to $69.25.

Or wait 3 minutes for your next included review.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: ca2ca220-87fd-418e-93ad-57afdde3affa

📥 Commits

Reviewing files that changed from the base of the PR and between 636bdf9 and b376f9a.

⛔ Files ignored due to path filters (2)
  • Cargo.lock is excluded by !**/*.lock
  • crates/openhuman-app/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (277)
  • .github/workflows/ci-full.yml
  • .github/workflows/ci-lite.yml
  • .github/workflows/e2e-playwright.yml
  • .github/workflows/e2e-reusable.yml
  • app/src/components/chat/ChatFilesPanel.tsx
  • app/src/components/chat/__tests__/ChatFilesChip.test.tsx
  • app/src/components/chat/__tests__/ChatFilesPanel.test.tsx
  • app/src/components/desktop/DesktopConnectionPage.test.tsx
  • app/src/components/desktop/DesktopConnectionPage.tsx
  • app/src/components/intelligence/MemoryControls.test.tsx
  • app/src/components/intelligence/MemoryControls.tsx
  • app/src/components/settings/panels/AgentAccessPanel.tsx
  • app/src/components/settings/panels/FilesFolderSection.tsx
  • app/src/components/settings/panels/MemoryDataPanel.tsx
  • app/src/components/settings/panels/__tests__/AgentAccessPanel.defaults.test.tsx
  • app/src/components/settings/panels/__tests__/AgentAccessPanel.test.tsx
  • app/src/components/settings/panels/__tests__/FilesFolderSection.test.tsx
  • app/src/components/settings/panels/__tests__/PermissionsPanel.races.test.tsx
  • app/src/components/settings/panels/__tests__/PermissionsPanel.test.tsx
  • app/src/lib/i18n/ar.ts
  • app/src/lib/i18n/bn.ts
  • app/src/lib/i18n/de.ts
  • app/src/lib/i18n/en.ts
  • app/src/lib/i18n/es.ts
  • app/src/lib/i18n/fr.ts
  • app/src/lib/i18n/hi.ts
  • app/src/lib/i18n/id.ts
  • app/src/lib/i18n/it.ts
  • app/src/lib/i18n/ko.ts
  • app/src/lib/i18n/pl.ts
  • app/src/lib/i18n/pt.ts
  • app/src/lib/i18n/ru.ts
  • app/src/lib/i18n/zh-CN.ts
  • app/src/pages/Brain.tsx
  • app/src/pages/__tests__/Brain.test.tsx
  • app/src/pages/__tests__/Conversations.auiComposerSurfaces.test.tsx
  • app/src/services/__tests__/artifactDownloadService.test.ts
  • app/src/services/artifactDownloadService.ts
  • app/src/services/chatService.ts
  • app/src/store/chatRuntimeSlice.ts
  • app/src/utils/tauriCommands/config.ts
  • crates/openhuman-app/src/artifact_commands.rs
  • crates/openhuman-app/src/artifact_commands_tests.rs
  • crates/openhuman-core/src/agent/agent_turn_loop_tests.rs
  • crates/openhuman-core/src/agent/artifacts/README.md
  • crates/openhuman-core/src/agent/artifacts/files.rs
  • crates/openhuman-core/src/agent/artifacts/files_tests.rs
  • crates/openhuman-core/src/agent/artifacts/migrate.rs
  • crates/openhuman-core/src/agent/artifacts/migrate_tests.rs
  • crates/openhuman-core/src/agent/artifacts/mod.rs
  • crates/openhuman-core/src/agent/artifacts/ops.rs
  • crates/openhuman-core/src/agent/artifacts/ops_tests.rs
  • crates/openhuman-core/src/agent/artifacts/schemas.rs
  • crates/openhuman-core/src/agent/artifacts/store.rs
  • crates/openhuman-core/src/agent/artifacts/store_tests.rs
  • crates/openhuman-core/src/agent/artifacts/tools.rs
  • crates/openhuman-core/src/agent/artifacts/types.rs
  • crates/openhuman-core/src/agent/artifacts/types_tests.rs
  • crates/openhuman-core/src/agent/harness/README.md
  • crates/openhuman-core/src/agent/harness/archivist/lifecycle.rs
  • crates/openhuman-core/src/agent/harness/archivist/recap.rs
  • crates/openhuman-core/src/agent/harness/harness_gap_tests.rs
  • crates/openhuman-core/src/agent/harness/harness_tests.rs
  • crates/openhuman-core/src/agent/harness/harness_tool_call_parsing_tests.rs
  • crates/openhuman-core/src/agent/harness/mod.rs
  • crates/openhuman-core/src/agent/harness/parse_tests.rs
  • crates/openhuman-core/src/agent/harness/parse_wire_tests.rs
  • crates/openhuman-core/src/agent/learning/prompt_sections_tests_2_tests.rs
  • crates/openhuman-core/src/agent/learning/reflection_tests.rs
  • crates/openhuman-core/src/agent/learning/schemas_tests.rs
  • crates/openhuman-core/src/agent/learning/tool_tracker_tests.rs
  • crates/openhuman-core/src/agent/learning/user_profile_tests.rs
  • crates/openhuman-core/src/agent/orchestration/agent_teams/runtime_tests.rs
  • crates/openhuman-core/src/agent/orchestration/ops_tests.rs
  • crates/openhuman-core/src/agent/orchestration/tools/close_subagent_tests.rs
  • crates/openhuman-core/src/agent/orchestration/tools/spawn_async_subagent_tests.rs
  • crates/openhuman-core/src/agent/orchestration/tools/spawn_parallel_agents_tests.rs
  • crates/openhuman-core/src/agent/orchestration/tools/spawn_subagent_tests.rs
  • crates/openhuman-core/src/agent/orchestration/tools/tools_e2e_tests.rs
  • crates/openhuman-core/src/agent/prompts/mod_tests_subagent_render_tests.rs
  • crates/openhuman-core/src/agent/session_import/live_tests.rs
  • crates/openhuman-core/src/agent/subagent_host/ops/mod.rs
  • crates/openhuman-core/src/agent/subagent_host/ops_tests.rs
  • crates/openhuman-core/src/agent/subagent_host/ops_tests_model_resolution_tests.rs
  • crates/openhuman-core/src/agent/subagent_host/ops_truncation_tests.rs
  • crates/openhuman-core/src/agent/tinyagents/host/agent_memory_tests.rs
  • crates/openhuman-core/src/agent/tinyagents/host/budget_gate_tests.rs
  • crates/openhuman-core/src/agent/tinyagents/host/context_composer_tests.rs
  • crates/openhuman-core/src/agent/tinyagents/host/definition_registry_tests.rs
  • crates/openhuman-core/src/agent/tinyagents/host/progress_sink_tests.rs
  • crates/openhuman-core/src/agent/tinyagents/host/steering.rs
  • crates/openhuman-core/src/agent/tinyagents/host/tool_outcome_classifier_tests.rs
  • crates/openhuman-core/src/agent/tinyagents/middleware_tool_output_tests.rs
  • crates/openhuman-core/src/agent/tinyagents/orchestration_tests.rs
  • crates/openhuman-core/src/agent/tinyagents/topology_tests.rs
  • crates/openhuman-core/src/agent/tinyagents/use_skill_dispatch_tests.rs
  • crates/openhuman-core/src/agent/tools/delegate_tests.rs
  • crates/openhuman-core/src/agent/tools/remember_preference_tests.rs
  • crates/openhuman-core/src/backend/client_tests.rs
  • crates/openhuman-core/src/channels/bus_inbound_thread_id_tests_tests.rs
  • crates/openhuman-core/src/channels/runtime/dispatch_tests.rs
  • crates/openhuman-core/src/channels/runtime/startup/start_channels.rs
  • crates/openhuman-core/src/channels/runtime/startup_tests.rs
  • crates/openhuman-core/src/channels/tests/context.rs
  • crates/openhuman-core/src/channels/tests/discord_integration.rs
  • crates/openhuman-core/src/channels/tests/mod.rs
  • crates/openhuman-core/src/channels/tests/runtime_dispatch.rs
  • crates/openhuman-core/src/channels/tests/telegram_integration.rs
  • crates/openhuman-core/src/commands/schemas_tests.rs
  • crates/openhuman-core/src/config/migration_helpers/schemas_tests.rs
  • crates/openhuman-core/src/config/mod.rs
  • crates/openhuman-core/src/config/ops/agent.rs
  • crates/openhuman-core/src/config/ops_agent_paths_tests.rs
  • crates/openhuman-core/src/config/ops_files_dir_tests.rs
  • crates/openhuman-core/src/config/ops_tests.rs
  • crates/openhuman-core/src/config/schema/load/dirs.rs
  • crates/openhuman-core/src/config/schema/load/mod.rs
  • crates/openhuman-core/src/config/schema/load_active_user_and_dirs_tests.rs
  • crates/openhuman-core/src/config/schema/mod.rs
  • crates/openhuman-core/src/config/schema/types/config.rs
  • crates/openhuman-core/src/config/schema/types/defaults.rs
  • crates/openhuman-core/src/config/schema/types/resolvers.rs
  • crates/openhuman-core/src/config/schemas/controllers/workspace.rs
  • crates/openhuman-core/src/config/schemas/helpers.rs
  • crates/openhuman-core/src/config/schemas/schema_defs/workspace.rs
  • crates/openhuman-core/src/config/schemas_tests.rs
  • crates/openhuman-core/src/config/workspace/schemas_tests.rs
  • crates/openhuman-core/src/core/core_mod_tests.rs
  • crates/openhuman-core/src/core/events.rs
  • crates/openhuman-core/src/core/legacy_aliases_tests.rs
  • crates/openhuman-core/src/core/subsystem/schemas_tests.rs
  • crates/openhuman-core/src/core/types_tests.rs
  • crates/openhuman-core/src/cron/schemas_tests.rs
  • crates/openhuman-core/src/desktop/app_state/schemas_tests.rs
  • crates/openhuman-core/src/desktop/control/ops.rs
  • crates/openhuman-core/src/desktop/control/ops_tests.rs
  • crates/openhuman-core/src/desktop/control/tools.rs
  • crates/openhuman-core/src/desktop/notifications/bus_tests_2_tests.rs
  • crates/openhuman-core/src/desktop/notifications/schemas_tests.rs
  • crates/openhuman-core/src/desktop/notifications/store_tests_2_tests.rs
  • crates/openhuman-core/src/flows/memory_tools_tests.rs
  • crates/openhuman-core/src/flows/schemas_tests.rs
  • crates/openhuman-core/src/hosting/hosting_tests.rs
  • crates/openhuman-core/src/inference/embedding_host/schemas_tests.rs
  • crates/openhuman-core/src/inference/host_runtime/schemas_tests.rs
  • crates/openhuman-core/src/inference/tokenjuice/schemas_tests.rs
  • crates/openhuman-core/src/inference/tokenjuice/tools_tests.rs
  • crates/openhuman-core/src/inference/tokenjuice/types_tests.rs
  • crates/openhuman-core/src/integrations/composio/schemas_tests.rs
  • crates/openhuman-core/src/integrations/task_sources/schemas_tests.rs
  • crates/openhuman-core/src/integrations/test_support_backend.rs
  • crates/openhuman-core/src/integrations/test_support_tests.rs
  • crates/openhuman-core/src/mcp/registry/schemas_tests.rs
  • crates/openhuman-core/src/media/generation/README.md
  • crates/openhuman-core/src/media/generation/artifact_tool.rs
  • crates/openhuman-core/src/media/generation/artifact_tool_tests.rs
  • crates/openhuman-core/src/media/generation/tools.rs
  • crates/openhuman-core/src/media/generation/tools_tests.rs
  • crates/openhuman-core/src/memory/auto_recall/auto_recall_tests.rs
  • crates/openhuman-core/src/memory/auto_recall/source.rs
  • crates/openhuman-core/src/memory/display_name_and_vault_rpc_tests.rs
  • crates/openhuman-core/src/memory/driver/README.md
  • crates/openhuman-core/src/memory/ops/engine.rs
  • crates/openhuman-core/src/memory/ops/engine_tests.rs
  • crates/openhuman-core/src/memory/ops/fallback.rs
  • crates/openhuman-core/src/memory/ops/fallback_tests.rs
  • crates/openhuman-core/src/memory/ops/mod.rs
  • crates/openhuman-core/src/memory/ops_tests.rs
  • crates/openhuman-core/src/memory/preferences/mod.rs
  • crates/openhuman-core/src/memory/preferences/preferences_tests.rs
  • crates/openhuman-core/src/memory/read_rpc/admin.rs
  • crates/openhuman-core/src/memory/read_rpc/graph.rs
  • crates/openhuman-core/src/memory/read_rpc/graph_tests.rs
  • crates/openhuman-core/src/memory/schemas/documents_tests.rs
  • crates/openhuman-core/src/memory/schemas/files_tests.rs
  • crates/openhuman-core/src/memory/schemas/kv_graph_tests.rs
  • crates/openhuman-core/src/memory/schemas/learn_tests.rs
  • crates/openhuman-core/src/memory/schemas/provider_tests.rs
  • crates/openhuman-core/src/memory/schemas/sync_tests.rs
  • crates/openhuman-core/src/memory/schemas/tool_memory_tests.rs
  • crates/openhuman-core/src/memory/schemas_tests.rs
  • crates/openhuman-core/src/memory/source_scope_tests.rs
  • crates/openhuman-core/src/memory/sources/hosted_periodic.rs
  • crates/openhuman-core/src/memory/sources/hosted_periodic_tests.rs
  • crates/openhuman-core/src/memory/sources/hosted_sync.rs
  • crates/openhuman-core/src/memory/sources/hosted_sync_tests.rs
  • crates/openhuman-core/src/memory/sources/mod.rs
  • crates/openhuman-core/src/memory/sources/rpc.rs
  • crates/openhuman-core/src/memory/sources/rpc/apply_all.rs
  • crates/openhuman-core/src/memory/sources/rpc/driver_run.rs
  • crates/openhuman-core/src/memory/sources/rpc/driver_run_tests.rs
  • crates/openhuman-core/src/memory/sources/rpc/registry_crud.rs
  • crates/openhuman-core/src/memory/sources/rpc/source_sync.rs
  • crates/openhuman-core/src/memory/sync_events_bridge_tests.rs
  • crates/openhuman-core/src/modules/memory/capabilities.rs
  • crates/openhuman-core/src/modules/registry/records_memory_juice.rs
  • crates/openhuman-core/src/platform/about_app/catalog_conversation_intelligence.rs
  • crates/openhuman-core/src/platform/connectivity/schemas_tests.rs
  • crates/openhuman-core/src/platform/cost/schemas_tests.rs
  • crates/openhuman-core/src/platform/doctor/schemas_tests.rs
  • crates/openhuman-core/src/platform/health/schemas_tests.rs
  • crates/openhuman-core/src/platform/service/schemas_tests.rs
  • crates/openhuman-core/src/platform/socket/schemas_tests.rs
  • crates/openhuman-core/src/platform/update/schemas_tests.rs
  • crates/openhuman-core/src/security/approval/redact_tests.rs
  • crates/openhuman-core/src/security/approval/schemas_tests.rs
  • crates/openhuman-core/src/security/approval/store_persistence_tests.rs
  • crates/openhuman-core/src/security/credentials/schemas_tests.rs
  • crates/openhuman-core/src/security/devices/schemas_tests.rs
  • crates/openhuman-core/src/security/encryption/schemas_tests.rs
  • crates/openhuman-core/src/security/keyring/keyring_tests.rs
  • crates/openhuman-core/src/security/policy/path_checks.rs
  • crates/openhuman-core/src/security/policy/policy_workspace_internal_tests.rs
  • crates/openhuman-core/src/security/policy/types.rs
  • crates/openhuman-core/src/skills/README.md
  • crates/openhuman-core/src/skills/catalog/ops_tests.rs
  • crates/openhuman-core/src/skills/e2e_run_tests.rs
  • crates/openhuman-core/src/skills/mod.rs
  • crates/openhuman-core/src/skills/webhooks/schemas_tests.rs
  • crates/openhuman-core/src/threads/ops_conversion_tests.rs
  • crates/openhuman-core/src/tools/impl/document/document_tests.rs
  • crates/openhuman-core/src/tools/impl/document/mod.rs
  • crates/openhuman-core/src/tools/impl/presentation/mod.rs
  • crates/openhuman-core/src/tools/impl/presentation/presentation_tests.rs
  • crates/openhuman-core/src/tools/ops.rs
  • crates/openhuman-core/src/tools/ops_tests_default_registry_tests.rs
  • crates/openhuman-core/src/tools/ops_tests_execution_and_serde_tests.rs
  • crates/openhuman-core/src/tools/registry/providers_tests.rs
  • crates/openhuman-core/src/tools/schemas_tests.rs
  • crates/openhuman-core/src/tools/timeout/README.md
  • crates/openhuman-core/src/tools/toolpacks/toolpacks_tests.rs
  • crates/openhuman-core/src/voice/compile_status_tests.rs
  • crates/openhuman-core/src/voice/schemas_tests.rs
  • crates/openhuman-core/src/voice/types_tests.rs
  • crates/openhuman-core/src/web3/wallet/schemas_tests.rs
  • crates/openhuman-core/src/web3/wallet/test_support.rs
  • crates/openhuman-core/src/web3/wallet/test_support_tests.rs
  • crates/openhuman-core/src/web_chat/web_tests.rs
  • crates/openhuman-core/src/web_chat/web_tests_error_code_classification_tests.rs
  • docs/RELEASE-MANUAL-SMOKE.md
  • docs/TEST-COVERAGE-MATRIX.md
  • gitbooks/developing/engines.md
  • gitbooks/guides/move-to-new-pc.md
  • scripts/ci/check-gated-test-allowlist.sh
  • scripts/ci/ignored-test-baseline.json
  • scripts/ci/module-pin-exemptions.json
  • tests/README.md
  • tests/memory_engine_e2e.rs
  • tests/memory_hosted_surface_e2e.rs
  • tests/raw_coverage/agent_orchestration_e2e.rs
  • tests/raw_coverage/app_credentials_threads_memory_sources_raw_coverage_e2e.rs
  • tests/raw_coverage/automation_scheduling_e2e.rs
  • tests/raw_coverage/channels_lark_email_dispatch_round21_raw_coverage_e2e.rs
  • tests/raw_coverage/channels_round24_raw_coverage_e2e.rs
  • tests/raw_coverage/channels_round26_raw_coverage_e2e.rs
  • tests/raw_coverage/composio_raw_coverage_e2e.rs
  • tests/raw_coverage/composio_tools_direct_raw_coverage_e2e.rs
  • tests/raw_coverage/connectivity_raw_coverage_e2e.rs
  • tests/raw_coverage/flows_lifecycle_e2e.rs
  • tests/raw_coverage/inference_local_admin_raw_coverage_e2e.rs
  • tests/raw_coverage/inference_local_ops_piper_raw_coverage_e2e.rs
  • tests/raw_coverage/inference_local_services_round21_raw_coverage_e2e.rs
  • tests/raw_coverage/inference_provider_admin_round22_raw_coverage_e2e.rs
  • tests/raw_coverage/inference_provider_raw_coverage_e2e.rs
  • tests/raw_coverage/inference_round26_raw_coverage_e2e.rs
  • tests/raw_coverage/inference_voice_http_round23_raw_coverage_e2e.rs
  • tests/raw_coverage/memory_source_scope_bus_raw_coverage_e2e.rs
  • tests/raw_coverage/memory_sources_closure_round23_raw_coverage_e2e.rs
  • tests/raw_coverage/memory_sources_readers_round21_raw_coverage_e2e.rs
  • tests/raw_coverage/memory_sync_round23_raw_coverage_e2e.rs
  • tests/raw_coverage/owned_domain_raw_coverage_e2e.rs
  • tests/raw_coverage/session_store_e2e.rs
  • tests/raw_coverage/skill_runtime_e2e.rs
  • tests/raw_coverage/tool_registry_approval_raw_coverage_e2e.rs
  • tests/raw_coverage/tools_composio_network_leftovers_raw_coverage_e2e.rs
  • tests/support/memory_engine_fixture.rs
  • vendor/tinymemory

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: 1234f86e-0c19-4048-a26b-3ff16af5652e

📥 Commits

Reviewing files that changed from the base of the PR and between d15a52f and 636bdf9.

⛔ Files ignored due to path filters (2)
  • Cargo.lock is excluded by !**/*.lock
  • crates/openhuman-app/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (2)
  • scripts/ci/module-pin-exemptions.json
  • vendor/tinymemory

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


📝 Walkthrough

Walkthrough

The vendored tinymemory reference now points to a new commit. The CI exemption expects the corresponding version and updates its reason and removal condition.

Changes

tinymemory Pin Update

Layer / File(s) Summary
Update pin and exemption
vendor/tinymemory, scripts/ci/module-pin-exemptions.json
The subproject reference and expected pin now match f5e9daa86d2d1658f8fd5d30665e5ac7cb62d369. The exemption reason describes the #177 fix, unchanged sources, the registry artifact, and when to remove the exemption.

Priority: ➖ Normal

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Bug fix

Suggested reviewers: yellowsnnowmann

Merge Risk: ⚪ Minimal · up to 636bd

The updated dependency pin and CI exemption align; no concrete merge-blocking issue remains.

Architecture Summary

Architecture risk: 🔵 Low · up to 636bd

The change affects 1 system.

Changed systems: scripts

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — scripts (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in scripts/ci/module-pin-exemptions.json: The tinymemory exemption’s expected pin changes to v1.19.0-1-gf5e9daa8. Its reason replaces the prior description of changes through #174 with the #177 pure-library fix, the unchanged module, contract, and bus sources, the registry’s v1.17.0 artifact, and the condition for removing the exemption.
  • observed — Modified behavior in vendor/tinymemory: The vendor/tinymemory subproject now references commit f5e9daa86d2d1658f8fd5d30665e5ac7cb62d369 instead of 4c83216176b7a542f9f84613edac85e614b18f66.
🚥 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 identifies the dependency-resolution fix and names the affected tinymemory and starship-battery components.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
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.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


A rabbit checks the pin,
The matching note is changed,
One commit rests in place,
The old tag hops away,
The burrow’s list is neat.

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

run_recorded recorded every failed run with items: 0. A host-side sync that writes several batches and then has one refused had already stored those items, so its row under-reported them (CodeRabbit on tinyhumansai#6843).

A run's failure can now carry what it did first: run_recorded takes any RunFailure. A driver's MemoryError carries nothing, as before; a PartialFailure carries the outcome so far. The failed row counts its records_ingested, and when the run had already stopped at its budget the message says more items were pending, since the row has no field for that. The run is still recorded and reported as failed.
A budget-limited host sync re-read and re-charged the same newest items on every run: the sink skipped them as unchanged, the budget stopped the run before older items, and repeating the sync never progressed (CodeRabbit on tinyhumansai#6843).

hosted_sync now keeps a per-source record of what the sink accepted (item id, modified time, digest of title, text and URL) under <workspace>/state/hosted_sync:
- an item whose modified time matches the record is neither read nor charged; one read with unchanged text is not sent;
- max_items and max_tokens_per_sync cap the new or changed items a run sends, so a stopped run reports more pending and the next one carries on;
- a batch is recorded only after the sink accepts it, so a refused batch is sent again and fails the run as a PartialFailure with what earlier batches wrote;
- a missing or unreadable record is a full pass, which the sink keeps cheap;
- one source's runs are serialized, so a manual and a scheduled sync cannot send the same items at once.

Deleting a source's memory (memory_tree.delete_source) and removing a source from the registry clear its record, so a later sync starts over instead of trusting what was forgotten. Removing a source still keeps its memory, as on the local engine; the engines guide no longer says otherwise.

@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 found nothing blocking, but could not review everything, so this is not an approval: scripts/ci/module-pin-exemptions.json.

             $0.0010 · 5,749 in / 3,438 out · 2,304 cached (40%) · ladder/vectors, deepseek/deepseek-v4-flash · 234 embedded
description: $0.0005 · 4,055 in / 1,908 out · 2,304 cached (57%) · deepseek/deepseek-v4-flash

@tinysweeper tinysweeper Bot added the priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. label Oct 1, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes Oct 1, 2026
senamakel and others added 14 commits October 1, 2026 08:06
…module mains

Co-authored-by: Medulla <medulla@tinyhumans.ai>
test(raw_coverage): drop raw-coverage tests duplicated by domain or vendor tests
…ed module mains

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

test: drop redundant tests in agent, memory, threads, channels and web_chat
tinymemory v1.20.0 ships tinyhumansai/tinymemory#176 (the hosted families, TreeSummary::preview, contract 4.2) on top of v1.18.0 and v1.19.0, so the module and the contract this host compiles against are one release again:
- vendor/tinymemory sits on the v1.20.0 tag;
- the registry record names v1.20.0 and its 11 archives, with digests copied from the release's checksum.toml;
- the seven CI fetches pin the ubuntu-22.04-x86_64 archive and its digest (checked against the published asset);
- ARTIFACT_CAPABILITIES_PIN is 1.20.0; the capability families are unchanged since v1.17.0, so the list stays;
- the tinymemory module-pin exemption is gone, as its own reason asked once tinyhumansai#170, tinyhumansai#172, tinyhumansai#173 and tinyhumansai#174 shipped in a release.

The module-pin gate now passes for tinymemory. It still fails on main's pins for other modules, which this PR does not touch.
…op-access

fix(windows): normalize unknown permission states to not_required on Windows
…osted-family-parity

feat(memory): serve every backable family on hosted memory
…k (plist)

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

feat(artifacts): write agent deliverables to a visible Files folder (tinyhumansai#5505, part 1/3)
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…facts-5505-settings

feat(settings): choose the Files folder in Agent OS access (tinyhumansai#5505, part 2/3)
…facts-5505-reveal

feat(artifacts): show agent files in their folder (tinyhumansai#5505, part 3/3)
…rged module mains

Co-authored-by: Medulla <medulla@tinyhumans.ai>
@senamakel
senamakel merged commit 8a6747a into tinyhumansai:main Oct 1, 2026
11 of 13 checks passed
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.

4 participants