Skip to content

fix(ci): repair upstream main build and checkout - #5469

Merged
senamakel merged 67 commits into
tinyhumansai:mainfrom
senamakel:openhuman-build-repair
Aug 10, 2026
Merged

senamakel merged 67 commits into
tinyhumansai:mainfrom
senamakel:openhuman-build-repair

Conversation

@senamakel

@senamakel senamakel commented Aug 9, 2026

Copy link
Copy Markdown
Member

Summary

  • remove stale CEF and notification-plugin gitlinks that break Actions checkout
  • complete the tinybus migration in core and Tauri native request registration
  • restore formatting and lockfile consistency for the upstream Wry runtime

Validation

  • pnpm typecheck
  • pnpm lint (98 existing warnings, 0 errors)
  • pnpm rust:clippy
  • cargo test --manifest-path app/src-tauri/Cargo.toml --lib --no-run
  • targeted memory guard provider tests

Draft while GitHub Actions, including desktop/E2E coverage, runs.

Summary by CodeRabbit

  • Bug Fixes

    • Improved startup readiness detection to avoid connecting to unrelated services.
    • Configuration saves now recover more reliably when directories are recreated or cleaned up concurrently.
    • Fixed reasoning model routing for reasoning-v1.
    • Improved voice provider selection when cloud routing is configured.
    • Private or loopback web and RSS sources are now rejected before network access.
    • Memory commands and tools now respect capability availability more consistently.
  • Maintenance

    • Updated the app’s Tauri components for improved desktop compatibility.

senamakel and others added 4 commits August 9, 2026 11:25
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: a98bc884-97b7-434f-a8e4-70d985ac6c2b

📥 Commits

Reviewing files that changed from the base of the PR and between 8774fe4 and 35d5668.

⛔ Files ignored due to path filters (2)
  • app/src-tauri/Cargo.lock is excluded by !**/*.lock
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (130)
  • .github/tauri-cef-expected-sha
  • .github/workflows/ci-lite.yml
  • .github/workflows/e2e-reusable.yml
  • .github/workflows/pr-quality.yml
  • .github/workflows/tauri-cef-pin-guard.yml
  • .github/workflows/test-reusable.yml
  • app/package.json
  • app/scripts/e2e-run-all-flows.sh
  • app/scripts/e2e-run-session.sh
  • app/src-tauri/Cargo.toml
  • app/src-tauri/src/cdp/in_process.rs
  • app/src-tauri/src/core_process.rs
  • app/src-tauri/src/fake_camera/mod.rs
  • app/src-tauri/src/lib.rs
  • app/src-tauri/src/whatsapp_data/mod.rs
  • app/src-tauri/vendor/tauri-cef
  • app/src-tauri/vendor/tauri-plugin-notification
  • app/src/components/settings/panels/VoicePanel.tsx
  • app/src/lib/i18n/ru.ts
  • app/test/e2e/helpers/chat-harness.ts
  • app/test/e2e/helpers/shared-flows.ts
  • app/test/e2e/specs/accounts-provider-modal.spec.ts
  • app/test/e2e/specs/coding-session-memory.spec.ts
  • app/test/e2e/specs/onboarding-modes.spec.ts
  • app/test/e2e/specs/settings-account-preferences.spec.ts
  • app/test/e2e/specs/settings-advanced-config.spec.ts
  • app/test/e2e/specs/settings-feature-preferences.spec.ts
  • app/test/e2e/specs/slack-flow.spec.ts
  • app/test/e2e/specs/webhooks-tunnel-flow.spec.ts
  • app/test/e2e/specs/whatsapp-flow.spec.ts
  • app/test/wdio.conf.ts
  • package.json
  • scripts/ci/check-toolchain-image.mjs
  • scripts/test-rust-e2e.sh
  • scripts/test-rust-with-mock.sh
  • src/core/all_tests.rs
  • src/core/bus.rs
  • src/core/jsonrpc.rs
  • src/core/memory_cli.rs
  • src/core/mod.rs
  • src/openhuman/agent/artifacts/store_tests.rs
  • src/openhuman/agent/bus.rs
  • src/openhuman/agent/harness/archivist/tree_ingest.rs
  • src/openhuman/agent/harness/archivist_tests.rs
  • src/openhuman/agent/harness/session/runtime_tests.rs
  • src/openhuman/agent/harness/session/turn/tools.rs
  • src/openhuman/agent/learning/extract/signature.rs
  • src/openhuman/agent/learning/profile_md_renderer.rs
  • src/openhuman/agent/learning/startup.rs
  • src/openhuman/agent/orchestration/run_ledger_finalize.rs
  • src/openhuman/agent/orchestration/run_ledger_finalize_tests.rs
  • src/openhuman/agent/registry/agents/orchestrator/prompt.rs
  • src/openhuman/agent/schemas.rs
  • src/openhuman/agent/tinyagents/tools.rs
  • src/openhuman/agent/triage/escalation.rs
  • src/openhuman/agent/triage/evaluator.rs
  • src/openhuman/agent/triage/events.rs
  • src/openhuman/channels/bus.rs
  • src/openhuman/channels/host/adapters.rs
  • src/openhuman/channels/proactive.rs
  • src/openhuman/channels/providers/telegram/approval_surface.rs
  • src/openhuman/channels/providers/telegram/approval_surface_tests.rs
  • src/openhuman/channels/providers/telegram/bus.rs
  • src/openhuman/channels/providers/telegram/bus_tests.rs
  • src/openhuman/channels/routes_tests.rs
  • src/openhuman/channels/runtime/dispatch/processor.rs
  • src/openhuman/channels/runtime/test_support.rs
  • src/openhuman/channels/tests/health.rs
  • src/openhuman/channels/tests/runtime_dispatch.rs
  • src/openhuman/config/ops/agent.rs
  • src/openhuman/config/schema/load/impl_load.rs
  • src/openhuman/cron/bus.rs
  • src/openhuman/cron/scheduler_tests.rs
  • src/openhuman/desktop/notifications/bus.rs
  • src/openhuman/flows/bus.rs
  • src/openhuman/flows/ops.rs
  • src/openhuman/flows/ops_tests.rs
  • src/openhuman/inference/provider/factory_tests.rs
  • src/openhuman/inference/provider/openhuman_backend_model.rs
  • src/openhuman/inference/provider/ops/http_error.rs
  • src/openhuman/inference/provider/ops_tests.rs
  • src/openhuman/integrations/composio/ops/direct_mode.rs
  • src/openhuman/integrations/task_sources/bus.rs
  • src/openhuman/meet/backend_bot/calendar.rs
  • src/openhuman/memory/binding.rs
  • src/openhuman/memory/conversations/bus.rs
  • src/openhuman/memory/diff/ops.rs
  • src/openhuman/memory/global.rs
  • src/openhuman/memory/guard/audit.rs
  • src/openhuman/memory/guard/families_tests.rs
  • src/openhuman/memory/guard/provider_tests.rs
  • src/openhuman/memory/ops/sync.rs
  • src/openhuman/memory/store/client.rs
  • src/openhuman/memory/sync/composio/bus.rs
  • src/openhuman/memory/sync_events.rs
  • src/openhuman/memory/sync_pipeline_e2e_tests.rs
  • src/openhuman/memory/tinycortex/sync.rs
  • src/openhuman/memory/tree/tree_runtime/bus.rs
  • src/openhuman/security/approval/gate.rs
  • src/openhuman/security/credentials/bus.rs
  • src/openhuman/security/credentials/session_support.rs
  • src/openhuman/security/devices/bus.rs
  • src/openhuman/security/egress/emit_tests.rs
  • src/openhuman/security/keyring_consent/policy.rs
  • src/openhuman/skills/bus.rs
  • src/openhuman/skills/ops_create.rs
  • src/openhuman/skills/webhooks/bus.rs
  • src/openhuman/tools/ops_tests.rs
  • src/openhuman/voice/bus.rs
  • src/openhuman/web_chat/event_bus.rs
  • src/openhuman/web_chat/session.rs
  • src/openhuman/web_chat/web_tests.rs
  • tests/agent_harness_e2e.rs
  • tests/calendar_grounding_e2e.rs
  • tests/composio_list_tools_stack_overflow_regression.rs
  • tests/config_auth_app_state_connectivity_e2e.rs
  • tests/json_rpc_e2e.rs
  • tests/monitor_agent_e2e.rs
  • tests/raw_coverage/agent_session_turn_raw_coverage_e2e.rs
  • tests/raw_coverage/app_credentials_threads_memory_sources_raw_coverage_e2e.rs
  • tests/raw_coverage/app_credentials_threads_sources_round26_raw_coverage_e2e.rs
  • tests/raw_coverage/inference_local_ops_piper_raw_coverage_e2e.rs
  • tests/raw_coverage/memory_sources_readers_round21_raw_coverage_e2e.rs
  • tests/raw_coverage/memory_sync_sources_raw_coverage_e2e.rs
  • tests/raw_coverage/memory_threads_raw_coverage_e2e.rs
  • tests/raw_coverage/near90_closure_raw_coverage_e2e.rs
  • tests/subconscious_conversation_e2e.rs
  • tests/subconscious_fullstack_e2e.rs
  • tests/subconscious_triggers_e2e.rs
  • tests/worker_c_modules_e2e.rs

📝 Walkthrough

Walkthrough

The pull request updates CI container usage, desktop E2E execution, Tauri integration, Rust capability routing, configuration persistence, event-bus usage, and related tests.

Changes

CI, Tauri, and E2E execution

Layer / File(s) Summary
CI and Tauri E2E execution
.github/workflows/*, app/scripts/*, app/src-tauri/*, app/test/wdio.conf.ts
CI jobs use the shared latest image. Linux desktop E2E uses tauri-driver. CEF packaging and restoration are removed from desktop artifacts. Tauri dependencies are updated.
Frontend E2E setup and route coverage
app/test/e2e/*
E2E input helpers, onboarding setup, route checks, settings tests, and retired-route coverage are updated.
Rust test execution and request isolation
scripts/test-rust-*, tests/json_rpc_e2e.rs, tests/monitor_agent_e2e.rs
JSON-RPC and selected Archivist tests run in isolated processes. Request assertions correlate captured requests with message markers.

Rust behavior and maintenance

Layer / File(s) Summary
Rust capability, persistence, and provider behavior
src/core/*, src/openhuman/config/*, src/openhuman/memory/*, src/openhuman/web_chat/*, tests/raw_coverage/*
Memory capability gates, null-driver behavior, configuration-save retries, provider-role mapping, event-bus migration, and private-host rejection tests are updated.
Rust cleanup and test maintenance
src/openhuman/**/*.rs, tests/*.rs
Import ordering, event publication formatting, subscription formatting, module ordering, fixtures, and unchanged test helpers are maintained.

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

Sequence Diagram(s)

sequenceDiagram
  participant CI
  participant E2ERunner
  participant TauriDriver
  participant WDIO
  CI->>E2ERunner: restore application and frontend artifacts
  E2ERunner->>TauriDriver: start driver and poll readiness
  E2ERunner->>WDIO: run isolated Linux specifications
  WDIO-->>E2ERunner: return specification status
Loading

Possibly related PRs

Suggested labels: bug, rust-core

Suggested reviewers: m3ga-mind

Poem

I hop through builds where fresh tests grow,
And guide the driver where it should go.
Rust gates memory, ports speak clear,
Old routes fade while checks draw near.
CI turns green beneath my feet—
A tidy patch, both brisk and sweet.

✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@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. Approving.

$0.0049 · 16,810 in / 15 out · 512 cached (3%) · minimax/minimax-m3

senamakel and others added 13 commits August 9, 2026 11:49
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Assign the Core capability gate to all core and recall memory functions so that a null driver can remove the entire driver-backed memory surface. Previously these functions were ungated, making it impossible to disable them through capability configuration. Also adds support for the "reasoning-v1" model override hint and updates the always-present memory tools list to reflect the new gating strategy.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
@tinysweeper tinysweeper Bot added the priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. label Aug 9, 2026
senamakel and others added 10 commits August 9, 2026 14:25
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
senamakel and others added 4 commits August 10, 2026 09:55
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
@senamakel
senamakel marked this pull request as ready for review August 10, 2026 08:24
@senamakel
senamakel requested a review from a team August 10, 2026 08:24
@senamakel
senamakel merged commit c7e15ba into tinyhumansai:main Aug 10, 2026
15 of 19 checks passed
@coderabbitai coderabbitai Bot added bug rust-core Core Rust runtime in src/: CLI, core_server, shared infrastructure. labels Aug 10, 2026

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

Requesting changes: 4 lane(s) blocking, worst finding is high.

Fix or reply to the findings below and push. The next review clears this automatically once they are gone — you should not need to dismiss anything by hand.

             $0.0174 · 268,082 in / 48,726 out · 212,198 cached (79%) · z-ai/glm-5.2
critique:    $0.0083 · 74,099 in  / 30,335 out · 61,784 cached (83%)  · z-ai/glm-5.2
security:    $0.0030 · 51,572 in  / 8,538 out  · 43,873 cached (85%)  · z-ai/glm-5.2
tests:       $0.0033 · 71,801 in  / 6,878 out  · 57,028 cached (79%)  · z-ai/glm-5.2
description: $0.0028 · 70,610 in  / 2,975 out  · 49,513 cached (70%)  · z-ai/glm-5.2

}
if received_ready && self.is_rpc_port_open().await {
log::info!("[core] core rpc became ready at {}", self.rpc_url());
if self.is_rpc_port_open().await {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

priority high critique likely

Second wait loop skips the occupied-port guard added to the first

The first wait loop guards the new socket-only readiness path with !preferred_port_was_occupied, precisely so a pre-existing foreign listener on the preferred port is not mistaken for the embedded core becoming ready. The second wait loop, changed in the same diff, drops both received_ready and that guard:

            if self.is_rpc_port_open().await {
                if !received_ready {
                    log::warn!(
                        "[core] core RPC listener became reachable before the embedded ready signal at {}; continuing",
                        self.rpc_url()
                    );
                } else {
                    log::info!("[core] core rpc became ready at {}", self.rpc_url());
                }
                return Ok(());
            }

When preferred_port_was_occupied is true (a foreign process held the preferred port at spawn time) and the embedded task has not yet sent its ready signal, self.is_rpc_port_open() can report the foreign listener as open. This loop then returns Ok(()), treating a process we do not own as our core's readiness — the exact failure the !preferred_port_was_occupied guard was added to prevent in the loop above. The two loops should apply the same readiness predicate; the second needs the same received_ready || (!preferred_port_was_occupied && ...) shape.

[RULE] Correctness — readiness detection ·

for spec in "${_spec_paths[@]}"; do
bash "$APP_DIR/scripts/e2e-run-session.sh" "$spec"
status=$?
if [[ $status -ne 0 ]]; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

priority high critique uncertain

Set _WDIO_EXIT_CODE to 0 before the per-spec loop

In the per-spec loop branch, _WDIO_EXIT_CODE is only assigned when a spec fails. If every spec passes, the variable is never set in this branch, so it retains whatever value it had before this block. The original code unconditionally set it with _WDIO_EXIT_CODE=$? after the single run, and the else branch still does. If _WDIO_EXIT_CODE was not initialized to 0 earlier in the script (or carries a stale non-zero value from earlier logic), the finish() trap at the bottom — which exits with _WDIO_EXIT_CODE — would report a spurious failure on an all-passing Linux run.

[RULE] Missing success-path initialization of _WDIO_EXIT_CODE in the per-spec loop ·

> "$TAURI_DRIVER_LOG" 2>&1 &
APP_PID=$!
export TAURI_DRIVER_PORT
for i in $(seq 1 30); do

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

priority medium critique likely

Verify tauri-driver readiness after the poll loop before running wdio

The readiness loop only exits early when the driver process dies. If curl never succeeds within 30 iterations but the process stays alive, the loop falls through and the script proceeds to invoke wdio against a port that is not yet listening. There is no post-loop check (e.g. a final curl or a flag set on break) to distinguish "ready" from "timed out but alive."

**[RULE] ** ·

@@ -176,8 +171,6 @@ describe('Settings - Feature Preferences', function () {
await waitForText('Color', 15_000);
expect(await clickSelector('[data-testid="mascot-color-burgundy"]')).toBeDefined();
await browser.pause(1000);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

priority medium critique likely

Mascot color test no longer verifies persistence

The test is named persists mascot color selection, but this PR removes the only line that verified persistence across a reload:

existing_code:
await browser.pause(1000);
- await reloadAndReturnTo('/settings/mascot', 'Color');
-
expect(await mascotColorChecked('burgundy')).toBe('true');

After this change, mascotColorChecked('burgundy') is asserted only in the same session, immediately after the click + 1000 ms pause — so the assertion now confirms the click took effect, not that the selection persisted. Unlike the mascot-voice test, no comment is added here explaining the removal, and reloadAndReturnTo is still used in the notifications test in this same diff, so a blanket "reloads terminate the WebDriver session" rationale does not hold across the file. As written, the test no longer tests what its title claims.

[RULE] , ·

timeout-minutes: 10
container:
image: ghcr.io/tinyhumansai/openhuman_ci:rust-1.96.1
image: ghcr.io/tinyhumansai/openhuman_ci:latest

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

priority medium critique likely

Pin CI container images instead of the mutable :latest tag

All four Linux jobs switch their container image from a pinned Rust version tag (rust-1.96.1) to the mutable latest tag. A mutable tag makes CI non-reproducible: the toolchain, system libraries, and any preinstalled build tooling can change at any time the image is republished, and a single bad image push can break every job using it with no corresponding code change to bisect. Pinning to a digest or an explicit version tag preserves the previous reproducibility. Note the repo's own workflow rules call for pinning third-party actions for the same reason; the container image is first-party so this isn't strictly that rule, but the same reproducibility concern applies.

[RULE] Pin CI container images to a version tag or digest ·

timeout-minutes: 10
container:
image: ghcr.io/tinyhumansai/openhuman_ci:rust-1.96.1
image: ghcr.io/tinyhumansai/openhuman_ci:latest

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

priority medium security likely

Pin CI container images by digest, not the mutable :latest tag

The pull request moves every CI container from a pinned tag (rust-1.96.1) to a floating tag (:latest). A floating tag gives no reproducibility and no supply-chain integrity: the image the CI job runs in can change at any time, and if the registry or the image build pipeline is compromised, a malicious image is picked up automatically on the next run. Even for a first-party image, tags are mutable — a pinned digest (@sha256:…) is the only form that guarantees the exact bytes. Pinning by version tag is weaker than by digest but strictly better than :latest.

      image: ghcr.io/tinyhumansai/openhuman_ci:latest

This appears five times in the diff, replacing the previous rust-1.96.1 tag in each job.

[RULE] Supply chain integrity: pin CI container images by digest or immutable tag, not a floating :latest tag. ·


if received_ready && self.is_rpc_port_open().await {
log::info!("[core] core rpc became ready at {}", self.rpc_url());
if received_ready || (!preferred_port_was_occupied && self.is_rpc_port_open().await)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

priority high tests likely

Add tests for the relaxed core RPC readiness logic

The readiness detection logic was significantly relaxed. In the initial check, received_ready now short-circuits without verifying is_rpc_port_open() (previously both were required via &&). In the timeout loop, received_ready is no longer required at all — the loop returns Ok(()) whenever the port is open, regardless of whether the embedded ready signal ever fired. This means a foreign listener on a free port can satisfy readiness, or the ready signal can fire while the RPC port is closed. No tests were added or modified to cover these new paths.

[RULE] untested-behaviour ·

Comment thread app/test/wdio.conf.ts
const CEF_CDP_HOST = process.env.CEF_CDP_HOST || '127.0.0.1';
const CEF_CDP_PORT = parseInt(process.env.CEF_CDP_PORT || '19222', 10);

function linuxAppPath(): string {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

priority medium tests confident

Fix linuxAppPath dead branch — both paths return the same value

The linuxAppPath helper checks whether the built binary exists, then returns the same path regardless of the result. Both branches of the if return candidate, making the fs.existsSync guard dead code — likely a copy-paste error where the fallback was meant to return a different path or throw.

[RULE] dead-code ·


#[tokio::test]
async fn round21_rss_reader_covers_http_body_guards_and_invalid_utf8() {
async fn round21_rss_reader_rejects_private_hosts_before_fetching() {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

priority medium tests likely

Restore RSS reader body-size, UTF-8, and HTTP status test coverage

The test was rewritten from comprehensive RSS reader coverage — HTTP 503 status rejection, large body (5 MB+) rejection, and invalid UTF-8 rejection — to a single SSRF rejection assertion. The RSS reader source code (not modified in this diff) presumably still contains body-size guards, UTF-8 validation, and HTTP status handling, but those behavioral paths are no longer exercised by any test in this file.

[RULE] coverage-regression ·


#[tokio::test]
async fn rss_reader_lists_reads_and_reports_feed_errors_from_loopback() {
async fn rss_reader_rejects_private_hosts_before_fetching() {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

priority medium tests likely

Restore RSS/Atom parsing and HTTP error test coverage

The test was rewritten from comprehensive RSS/Atom parsing coverage — item titles, content types, metadata links, missing-item errors, HTTP 502 status handling, and max_items limiting — to a single SSRF rejection assertion. Content parsing, item reading, and HTTP error handling paths are no longer tested here.

[RULE] coverage-regression ·

@tinysweeper

tinysweeper Bot commented Aug 10, 2026

Copy link
Copy Markdown

What this change touches

131 files, +1263 -1693 across 6 components. The code graph knows nothing about these files yet — normal for newly added files, and a cold index otherwise.

flowchart LR
  n0["src<br/>77 files +612 -556"]:::changed
  n1["app<br/>25 files +338 -587<br/>8 findings"]:::blocking
  n2["tests<br/>18 files +144 -356<br/>2 findings"]:::flagged
  n3[".github<br/>6 files +37 -113<br/>2 findings"]:::flagged
  n4["root<br/>2 files +65 -65<br/>1 finding"]:::blocking
  n5["scripts<br/>3 files +67 -16"]:::changed
  classDef changed fill:#0d4429,stroke:#238636,color:#e6edf3
  classDef impacted fill:#161b22,stroke:#6e7681,color:#c9d1d9
  classDef flagged fill:#5a1e02,stroke:#d93f0b,color:#ffffff
  classDef blocking fill:#67060c,stroke:#f85149,color:#ffffff
Loading

Green: changed. Grey: untouched, reached through an import or a call. Orange: has findings. Red: has a finding that blocks the merge.

Component Files Lines Findings
src changed 77 +612 -556
app changed 25 +338 -587 8 (high)
tests changed 18 +144 -356 2 (medium)
.github changed 6 +37 -113 2 (medium)
(root) changed 2 +65 -65 1 (high)
scripts changed 3 +67 -16
Changed files

src

  • src/core/all_tests.rs
  • src/core/bus.rs
  • src/core/jsonrpc.rs
  • src/core/memory_cli.rs
  • src/core/mod.rs
  • src/openhuman/agent/artifacts/store_tests.rs
  • src/openhuman/agent/bus.rs
  • src/openhuman/agent/harness/archivist/tree_ingest.rs
  • src/openhuman/agent/harness/archivist_tests.rs
  • src/openhuman/agent/harness/session/runtime_tests.rs
  • src/openhuman/agent/harness/session/turn/tools.rs
  • src/openhuman/agent/learning/extract/signature.rs
  • …and 65 more files

app

  • app/package.json
  • app/scripts/e2e-run-all-flows.sh
  • app/scripts/e2e-run-session.sh
  • app/src-tauri/Cargo.toml
  • app/src-tauri/src/cdp/in_process.rs
  • app/src-tauri/src/core_process.rs
  • app/src-tauri/src/fake_camera/mod.rs
  • app/src-tauri/src/lib.rs
  • app/src-tauri/src/whatsapp_data/mod.rs
  • app/src-tauri/vendor/tauri-cef
  • app/src-tauri/vendor/tauri-plugin-notification
  • app/src/components/settings/panels/VoicePanel.tsx
  • …and 13 more files

tests

  • tests/agent_harness_e2e.rs
  • tests/calendar_grounding_e2e.rs
  • tests/composio_list_tools_stack_overflow_regression.rs
  • tests/config_auth_app_state_connectivity_e2e.rs
  • tests/json_rpc_e2e.rs
  • tests/monitor_agent_e2e.rs
  • tests/raw_coverage/agent_session_turn_raw_coverage_e2e.rs
  • tests/raw_coverage/app_credentials_threads_memory_sources_raw_coverage_e2e.rs
  • tests/raw_coverage/app_credentials_threads_sources_round26_raw_coverage_e2e.rs
  • tests/raw_coverage/inference_local_ops_piper_raw_coverage_e2e.rs
  • tests/raw_coverage/memory_sources_readers_round21_raw_coverage_e2e.rs
  • tests/raw_coverage/memory_sync_sources_raw_coverage_e2e.rs
  • …and 6 more files

.github

  • .github/tauri-cef-expected-sha
  • .github/workflows/ci-lite.yml
  • .github/workflows/e2e-reusable.yml
  • .github/workflows/pr-quality.yml
  • .github/workflows/tauri-cef-pin-guard.yml
  • .github/workflows/test-reusable.yml

(root)

  • package.json
  • pnpm-lock.yaml

scripts

  • scripts/ci/check-toolchain-image.mjs
  • scripts/test-rust-e2e.sh
  • scripts/test-rust-with-mock.sh

tinysweeper 0.1.0

@tinysweeper tinysweeper Bot added priority: p1 Next. Wrong behaviour a user will hit, or a security weakness behind a condition. and removed priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. labels Aug 10, 2026
senamakel added a commit to nocstah/openhuman that referenced this pull request Sep 11, 2026
…epair\n\nfix(ci): repair upstream main build and checkout\n
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug priority: p1 Next. Wrong behaviour a user will hit, or a security weakness behind a condition. 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