Skip to content

feat(resources): complete Resources tab and Agents pane - #24

Merged
senamakel merged 472 commits into
tinyhumansai:mainfrom
senamakel:epic/15-resources
Oct 22, 2026
Merged

senamakel merged 472 commits into
tinyhumansai:mainfrom
senamakel:epic/15-resources

Conversation

@senamakel

Copy link
Copy Markdown
Member

Summary

Complete the Resources tab epic with shared background sampling, btop-style CPU/memory/disk/network panels, and an Agents pane that attributes local and remote coding-agent processes to sessions, tasks, or external origins. This rollup also includes the Resources configuration and GitBook guide.

Issue #16 adds the live tmux E2E proof for all three harnesses, verifies external-agent attribution and panel controls, and measures sampler CPU with 1,000 processes. The sampler now requests executable and command metadata required to classify unregistered agents; bare codex processes are recognized as well.

Sub-issues and implementation PRs

All sub-issues were implemented on senamakel/medulla:epic/15-resources:

Verification

  • make ci — passed (format, Clippy, locked tests, locked all-target build)
  • make e2e-docker-all E2E_IMAGE=medulla-e2e:latest — passed for OpenCode, Claude, and Codex
  • Classifier mutation proof — the focused tmux E2E failed at the exact external-PID assertion when OpenCode detection was removed; production source was restored
  • Resources performance — each harness stayed within the 40 ms/tick p95 and 2% one-core average limits with 1,000 processes over 60 seconds
  • Independent review — no actionable findings

Closes #15
Closes senamakel#16

senamakel and others added 30 commits October 22, 2026 00:49
Network sparklines now plot each direction as a percentage of a rolling
peak sampled from the selected interface, so small transfers stay visible
instead of flatlining against a fixed scale. A sync flag lets the download
and upload axes share a common maximum when configured.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The zeroing shortcut now falls back to the default interface when none is
explicitly selected, and records that choice so subsequent zeroing targets the
same interface. A test covers the network panel rendering at desktop and narrow
widths.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reformatted the network resource sampling and panel drawing code, along with
their tests, to match rustfmt's line-wrapping rules. No behaviour changed.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Read /sys/class/net/<iface>/flags and test the IFF_UP bit instead of
comparing operstate to "up", since operstate can report "unknown" on
interfaces that are actually up. Also add coverage for zeroing network
totals and cycling interfaces, which now skip down links.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Network samples are now sorted by interface name so the panel order stays
stable between refreshes, and an empty configured interface name is treated
as unset instead of being passed through. The test module also imports the
network panel draw helper it needs.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The network panel now derives its "Top" rate from the selected interface's
history instead of the current download/upload values, and the sparkline
series swap received and transmitted rates when the swap upload/download
option is enabled. Previously the panel ignored the swap setting and could
report a top rate belonging to a different interface.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The narrow network panel now includes the selected interface name alongside the download and upload rates, so the panel stays informative when horizontal space is tight.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The Net tab header now displays the active interface and its first IP
address, falling back to the default interface when none is selected, so
the current target is visible without opening the panel. Hit regions were
shifted to match the wider title, and the net panel gained a bit-rate line
alongside the existing byte-rate line.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reformatted the network title bar code to satisfy rustfmt line width
limits, splitting long call chains and argument lists across multiple
lines. No behaviour change.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add a test that draws the resources panel and clicks the auto and sync
controls, asserting each toggles its flag. This guards the hit regions
for those controls against regressions.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The above/below streak counters now decay instead of resetting when a
sample is neither high nor low, so a single neutral reading no longer
discards accumulated evidence and the scale stops oscillating. The
default interface picker also selects the busiest interface rather than
the first match, and a test covers the counter behaviour.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Silence the clippy too-many-arguments warning on the network panel draw
helper and let rustfmt reflow the default interface selection and its
signature. The network zeroing test now selects an interface up front so
it exercises the same path as the UI.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add a test asserting that the network resource options deserialize from
camelCase keys and that configs omitting them fall back to the expected
defaults.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The sampler tested bit 0 of the interface flags, which reports whether the
interface is up administratively rather than whether it has carrier. It now
tests bit 0x40 (IFF_RUNNING) so the reported link state reflects an actually
operational interface.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The auto-scaled network graph ceiling is now floored to whole bytes so the
axis maximum stays a stable integer instead of drifting with fractional
averages. The sampler indentation fix is cosmetic.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The click test asserted the wrong initial and post-click states for the
network auto toggle, so it passed only because the expectations were
reversed. The assertions now match the actual toggle behaviour.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Extend the network resource test to feed a later snapshot whose wlan0 totals
have grown and assert the rendered view shows the delta since the counters
were zeroed. This guards the offset behaviour against regressions.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Network snapshots now carry a connected flag alongside the administrative up
state, derived from Linux interface flags and observed traffic. On Linux the
interface flags are read through a shared helper that distinguishes
administratively up from running, while other platforms fall back to treating an
assigned address as configured and traffic as evidence of connection.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Network zero offsets are now stored per interface instead of as a single
pair, so switching between interfaces no longer resets the totals against
the wrong baseline. The top rate display also reports receive and transmit
peaks separately rather than a single combined maximum.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The Linux interface flag decoding is now a named helper that returns the
admin-up and running bits, so the sampler and its test share one
implementation instead of duplicating the bit masks. The remaining edits
are formatting only.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The test no longer asserts that pressing z is handled, since that key binding is gone.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Extend the network panel rendering test to check that the directional
receive/transmit peak summary appears at the widest layout, guarding the
formatting of that row against regressions.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The network panel now applies the swap_upload_download setting to the top
and total rate figures, so the displayed directions match the configured
labels instead of always showing receive first. Default interface
selection was also simplified to pick the first up, non-loopback
interface with traffic rather than the busiest one.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The default interface lookup used filter, which returned an iterator rather than a single interface, so the function could not yield the expected result. Switching to find returns the first matching active, non-loopback interface as intended.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The linux_interface_state helper was gated to target_os = "linux", so it
was unavailable when running tests on other platforms. The cfg now also
includes test, allowing the helper to be exercised everywhere.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
feat(resources): add network rates panel and autoscaling
Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add a public agents module to the monitor crate so the new agent registry and its tests are reachable from outside the crate.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Introduce a registry for tracking agent state within the monitor crate.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Provider runs now carry the originating task id through RunTaskOptions and
RunSpec so downstream consumers can correlate a run with its task frame. A new
agents registry module exposes registered_roots, backed by the medulla-monitor
dependency.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
senamakel and others added 8 commits October 22, 2026 11:41
The resources proof now stops its harness session once the real session row has been asserted and waits for the workflow to settle, accepting either outcome, so the CPU sample is not skewed by an unrelated model turn or failure-review task. It also asserts that failure review is not active before measuring.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The process CPU sampling fixture now sleeps for two sampler intervals before
collecting ticks, letting the sampler settle so the first sample is not skewed
by startup work. The sorted per-tick samples are also printed to make failures
easier to diagnose.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The resources coordination test now only injects the acp daemon transport
environment when the harness under test is codex, leaving other harnesses
with an empty value. This keeps the generated app script valid for
harnesses that do not use the acp transport.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Keep the Resources view alive while minimizing unrelated terminal repaint work during the sampler CPU measurement, since every panel's production behavior has already been asserted above.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reformatted the sleep child process spawn into a multi-line chain to match the surrounding style. No behaviour change.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The App struct no longer carries the resource and session monitor samplers, since the status line now reads the injected resource snapshot instead. Tests were updated to seed that snapshot through the public setter and to import DetectedProvider from its canonical module.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reformatted the snapshot construction in the status line render test so the
struct literal is built inline instead of across nested lines. The test
behaviour is unchanged.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Restructure the status line test to construct the sampler snapshot as a
mutable local before passing it to set_resource_snapshot, avoiding the
nested struct literal inside the Arc::new call.

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

tinysweeper Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Tiny Sweeper review

Verdict: Incomplete · Priority: none
Coverage: Reviewed 21 of 136 files; not reviewed: Cargo.lock, crates/medulla-t…; not reviewed (large PR): Cargo.toml, Makefile, and 111 additional unreviewed files.
Pull request purpose (title): feat(resources): com…

Diagnostics and supporting details

Full summary

Pull request purpose (title): feat(resources): complete Resources tab and Agents pane. Tiny Sweeper completed its review; deterministic results follow.

Unreviewed paths

  • Cargo.lock
  • Cargo.toml
  • Makefile
  • config.example.toml
  • crates/medulla-core/Cargo.toml
  • crates/medulla-core/src/codex_app_server/connection.rs
  • crates/medulla-core/src/config/mod.rs
  • crates/medulla-core/src/config/persist.rs
  • crates/medulla-core/src/config/persist_tests.rs
  • crates/medulla-core/src/config/resources/mod.rs
  • crates/medulla-core/src/config/resources/tests.rs
  • crates/medulla-core/src/config/resources/types.rs
  • crates/medulla-core/src/config/types/document.rs
  • crates/medulla-core/src/config/types/mod.rs
  • crates/medulla-core/src/config/types/presentation.rs
  • crates/medulla-core/src/control_socket/tests/paths.rs
  • crates/medulla-core/src/daemon/capabilities/mod.rs
  • crates/medulla-core/src/daemon/providers/acp/execution.rs
  • crates/medulla-core/src/daemon/providers/acp/tests/execution.rs
  • crates/medulla-core/src/daemon/providers/codex_server/tests.rs
  • crates/medulla-core/src/daemon/providers/embed/tests.rs
  • crates/medulla-core/src/daemon/providers/execute.rs
  • crates/medulla-core/src/daemon/providers/tests.rs
  • crates/medulla-core/src/daemon/providers/types.rs
  • crates/medulla-core/src/daemon/task_loop/plain.rs
  • crates/medulla-core/src/daemon/task_loop/run.rs
  • crates/medulla-core/src/daemon/task_loop/workflow/dispatch.rs
  • crates/medulla-core/src/lib.rs
  • crates/medulla-core/src/protocol/mod.rs
  • crates/medulla-core/src/protocol/remote/mod.rs
  • crates/medulla-core/src/protocol/remote/tests.rs
  • crates/medulla-core/src/protocol/remote/types.rs
  • crates/medulla-core/src/resources/agents/classify.rs
  • crates/medulla-core/src/resources/agents/mod.rs
  • crates/medulla-core/src/resources/agents/registry.rs
  • crates/medulla-core/src/resources/agents/tests.rs
  • crates/medulla-core/src/resources/mod.rs
  • crates/medulla-core/src/sessions/interactive/session/types.rs
  • crates/medulla-core/src/sessions/manager/turns.rs
  • crates/medulla-core/src/wrapper/run/child/mod.rs
  • crates/medulla-core/src/wrapper/run/child/types.rs
  • crates/medulla-core/src/wrapper/run/mod.rs
  • crates/medulla-core/src/wrapper/run/tests/mod.rs
  • crates/medulla-core/tests/e2e_daemon_providers.rs
  • crates/medulla-core/tests/e2e_daemon_router.rs
  • crates/medulla-core/tests/feature_embed_agents.rs
  • crates/medulla-core/tests/feature_embed_compression.rs
  • crates/medulla-monitor/src/agents/mod.rs
  • crates/medulla-monitor/src/lib.rs
  • crates/medulla-monitor/src/sampler/history.rs
  • crates/medulla-monitor/src/sampler/types.rs
  • crates/medulla-tui/src/event_loop/mod.rs
  • crates/medulla-tui/src/event_loop/tests.rs
  • crates/medulla-tui/src/event_loop/types.rs
  • crates/medulla-tui/src/harness_pty/mod.rs
  • crates/medulla-tui/src/local_host/tests/dispatch.rs
  • crates/medulla-tui/src/main.rs
  • crates/medulla-tui/src/remote/client/mod.rs
  • crates/medulla-tui/src/remote/client/tests.rs
  • crates/medulla-tui/src/remote/serve/entry.rs
  • crates/medulla-tui/src/remote/serve/mod.rs
  • crates/medulla-tui/src/remote/serve/sessions.rs
  • crates/medulla-tui/src/ui/app/input/mouse.rs
  • crates/medulla-tui/src/ui/app/keys/mod.rs
  • crates/medulla-tui/src/ui/app/keys/settings/mod.rs
  • crates/medulla-tui/src/ui/app/mod.rs
  • crates/medulla-tui/src/ui/app/remote_sessions_tests.rs
  • crates/medulla-tui/src/ui/app/render/mod.rs
  • crates/medulla-tui/src/ui/app/render/resources/agents_detail.rs
  • crates/medulla-tui/src/ui/app/render/resources/mod.rs
  • crates/medulla-tui/src/ui/app/render/sessions/harness.rs
  • crates/medulla-tui/src/ui/app/render/sessions/mod.rs
  • crates/medulla-tui/src/ui/app/render/settings/harnesses.rs
  • crates/medulla-tui/src/ui/app/render/settings/mod.rs
  • crates/medulla-tui/src/ui/app/render/settings/view_tests.rs
  • crates/medulla-tui/src/ui/app/render/status_line.rs
  • crates/medulla-tui/src/ui/app/render/tests.rs
  • crates/medulla-tui/src/ui/app/resources/keys.rs
  • crates/medulla-tui/src/ui/app/resources/layout.rs
  • crates/medulla-tui/src/ui/app/resources/mod.rs
  • crates/medulla-tui/src/ui/app/resources/tests.rs
  • crates/medulla-tui/src/ui/app/resources/types.rs
  • crates/medulla-tui/src/ui/app/settings_edit/mod.rs
  • crates/medulla-tui/src/ui/app/settings_edit/resources.rs
  • crates/medulla-tui/src/ui/app/state_accessors.inc.rs
  • crates/medulla-tui/src/ui/app/state_constructor.inc.rs
  • crates/medulla-tui/src/ui/app/types/app_state.inc.rs
  • crates/medulla-tui/src/ui/app/types/settings_nav.inc.rs
  • crates/medulla-tui/src/ui/mod.rs
  • crates/medulla-tui/src/ui/plot/graph.rs
  • crates/medulla-tui/src/ui/plot/meter.rs
  • crates/medulla-tui/src/ui/plot/mod.rs
  • crates/medulla-tui/src/ui/plot/symbols.rs
  • crates/medulla-tui/src/ui/plot/tests.rs
  • crates/medulla-tui/src/ui/resources/mod.rs
  • crates/medulla-tui/src/ui/resources/net.rs
  • crates/medulla-tui/src/ui/theme/gradient.rs
  • crates/medulla-tui/src/ui/theme/mod.rs
  • crates/medulla-tui/src/ui/theme/tests.rs
  • crates/medulla-tui/src/ui/theme/types.rs
  • crates/medulla-tui/src/worker/executor_tests/live.rs
  • crates/medulla-tui/src/worker/executor_tests/mod.rs
  • crates/medulla-tui/tests/e2e_codex_rename.rs
  • crates/medulla-tui/tests/feature_config_editor.rs
  • crates/medulla-tui/tests/feature_resources_tab.rs
  • crates/medulla-tui/tests/feature_settings.rs
  • crates/medulla-tui/tests/feature_subscriptions.rs
  • docs/host-link-protocol.md
  • docs/screenshots/resources-agents.svg
  • docs/screenshots/resources-overview.svg
  • e2e/coordination/lib.sh
  • e2e/coordination/mockllm/server.py
  • e2e/remote-hosts/compose.yaml
  • gitbooks/SUMMARY.md
  • gitbooks/developers/host-link-protocol.md

Partial review reasons

  • critique: Cargo.toml — not selected by the large-review budget
  • security: Cargo.toml — not selected by the large-review budget
  • critique: Makefile — not selected by the large-review budget
  • security: Makefile — not selected by the large-review budget
  • critique: config.example.toml — not selected by the large-review budget
  • security: config.example.toml — not selected by the large-review budget
  • critique: crates/medulla-core/Cargo.toml — not selected by the large-review budget
  • security: crates/medulla-core/Cargo.toml — not selected by the large-review budget
  • critique: crates/medulla-core/src/codex_app_server/connection.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/codex_app_server/connection.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/config/mod.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/config/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/config/persist.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/config/persist.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/config/persist_tests.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/config/persist_tests.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/config/resources/mod.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/config/resources/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/config/resources/tests.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/config/resources/tests.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/config/resources/types.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/config/resources/types.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/config/types/document.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/config/types/document.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/config/types/mod.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/config/types/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/config/types/presentation.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/config/types/presentation.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/control_socket/tests/paths.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/control_socket/tests/paths.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/daemon/capabilities/mod.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/daemon/capabilities/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/daemon/providers/acp/execution.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/daemon/providers/acp/execution.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/daemon/providers/acp/tests/execution.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/daemon/providers/acp/tests/execution.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/daemon/providers/codex_server/tests.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/daemon/providers/codex_server/tests.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/daemon/providers/embed/tests.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/daemon/providers/embed/tests.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/daemon/providers/execute.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/daemon/providers/execute.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/daemon/providers/tests.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/daemon/providers/tests.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/daemon/providers/types.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/daemon/providers/types.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/daemon/task_loop/plain.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/daemon/task_loop/plain.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/daemon/task_loop/run.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/daemon/task_loop/run.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/daemon/task_loop/workflow/dispatch.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/daemon/task_loop/workflow/dispatch.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/lib.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/lib.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/protocol/mod.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/protocol/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/protocol/remote/mod.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/protocol/remote/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/protocol/remote/tests.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/protocol/remote/tests.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/protocol/remote/types.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/protocol/remote/types.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/resources/agents/classify.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/resources/agents/classify.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/resources/agents/mod.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/resources/agents/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/resources/agents/registry.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/resources/agents/registry.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/resources/agents/tests.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/resources/agents/tests.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/resources/mod.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/resources/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/sessions/interactive/session/types.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/sessions/interactive/session/types.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/sessions/manager/turns.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/sessions/manager/turns.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/wrapper/run/child/mod.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/wrapper/run/child/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/wrapper/run/child/types.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/wrapper/run/child/types.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/wrapper/run/mod.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/wrapper/run/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-core/src/wrapper/run/tests/mod.rs — not selected by the large-review budget
  • security: crates/medulla-core/src/wrapper/run/tests/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-core/tests/e2e_daemon_providers.rs — not selected by the large-review budget
  • security: crates/medulla-core/tests/e2e_daemon_providers.rs — not selected by the large-review budget
  • critique: crates/medulla-core/tests/e2e_daemon_router.rs — not selected by the large-review budget
  • security: crates/medulla-core/tests/e2e_daemon_router.rs — not selected by the large-review budget
  • critique: crates/medulla-core/tests/feature_embed_agents.rs — not selected by the large-review budget
  • security: crates/medulla-core/tests/feature_embed_agents.rs — not selected by the large-review budget
  • critique: crates/medulla-core/tests/feature_embed_compression.rs — not selected by the large-review budget
  • security: crates/medulla-core/tests/feature_embed_compression.rs — not selected by the large-review budget
  • critique: crates/medulla-monitor/src/agents/mod.rs — not selected by the large-review budget
  • security: crates/medulla-monitor/src/agents/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-monitor/src/lib.rs — not selected by the large-review budget
  • security: crates/medulla-monitor/src/lib.rs — not selected by the large-review budget
  • critique: crates/medulla-monitor/src/sampler/history.rs — not selected by the large-review budget
  • security: crates/medulla-monitor/src/sampler/history.rs — not selected by the large-review budget
  • critique: crates/medulla-monitor/src/sampler/types.rs — not selected by the large-review budget
  • security: crates/medulla-monitor/src/sampler/types.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/event_loop/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/event_loop/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/event_loop/tests.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/event_loop/tests.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/event_loop/types.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/event_loop/types.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/harness_pty/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/harness_pty/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/local_host/tests/dispatch.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/local_host/tests/dispatch.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/main.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/main.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/remote/client/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/remote/client/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/remote/client/tests.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/remote/client/tests.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/remote/serve/entry.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/remote/serve/entry.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/remote/serve/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/remote/serve/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/remote/serve/sessions.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/remote/serve/sessions.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/input/mouse.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/input/mouse.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/keys/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/keys/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/keys/settings/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/keys/settings/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/remote_sessions_tests.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/remote_sessions_tests.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/render/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/render/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/render/resources/agents_detail.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/render/resources/agents_detail.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/render/resources/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/render/resources/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/render/sessions/harness.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/render/sessions/harness.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/render/sessions/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/render/sessions/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/render/settings/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/render/settings/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/render/settings/view_tests.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/render/settings/view_tests.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/render/status_line.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/render/status_line.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/render/tests.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/render/tests.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/resources/keys.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/resources/keys.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/resources/layout.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/resources/layout.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/resources/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/resources/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/resources/tests.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/resources/tests.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/resources/types.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/resources/types.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/settings_edit/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/settings_edit/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/settings_edit/resources.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/settings_edit/resources.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/state_accessors.inc.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/state_accessors.inc.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/state_constructor.inc.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/state_constructor.inc.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/types/app_state.inc.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/types/app_state.inc.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/app/types/settings_nav.inc.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/app/types/settings_nav.inc.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/plot/graph.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/plot/graph.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/plot/meter.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/plot/meter.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/plot/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/plot/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/plot/symbols.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/plot/symbols.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/plot/tests.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/plot/tests.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/resources/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/resources/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/resources/net.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/resources/net.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/theme/gradient.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/theme/gradient.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/theme/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/theme/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/theme/tests.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/theme/tests.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/ui/theme/types.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/ui/theme/types.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/worker/executor_tests/live.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/worker/executor_tests/live.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/src/worker/executor_tests/mod.rs — not selected by the large-review budget
  • security: crates/medulla-tui/src/worker/executor_tests/mod.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/tests/e2e_codex_rename.rs — not selected by the large-review budget
  • security: crates/medulla-tui/tests/e2e_codex_rename.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/tests/feature_config_editor.rs — not selected by the large-review budget
  • security: crates/medulla-tui/tests/feature_config_editor.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/tests/feature_resources_tab.rs — not selected by the large-review budget
  • security: crates/medulla-tui/tests/feature_resources_tab.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/tests/feature_settings.rs — not selected by the large-review budget
  • security: crates/medulla-tui/tests/feature_settings.rs — not selected by the large-review budget
  • critique: crates/medulla-tui/tests/feature_subscriptions.rs — not selected by the large-review budget
  • security: crates/medulla-tui/tests/feature_subscriptions.rs — not selected by the large-review budget
  • critique: docs/host-link-protocol.md — not selected by the large-review budget
  • critique: docs/screenshots/resources-agents.svg — not selected by the large-review budget
  • critique: docs/screenshots/resources-overview.svg — not selected by the large-review budget
  • critique: e2e/coordination/lib.sh — not selected by the large-review budget
  • security: e2e/coordination/lib.sh — not selected by the large-review budget
  • critique: e2e/coordination/mockllm/server.py — not selected by the large-review budget
  • security: e2e/coordination/mockllm/server.py — not selected by the large-review budget
  • critique: e2e/remote-hosts/compose.yaml — not selected by the large-review budget
  • security: e2e/remote-hosts/compose.yaml — not selected by the large-review budget
  • critique: gitbooks/SUMMARY.md — not selected by the large-review budget
  • critique: gitbooks/developers/host-link-protocol.md — not selected by the large-review budget

Review snapshot

Change surface Files Review signal Count
Production 82 Active findings 0
Tests 39 Noted findings 0
Documentation 7 Resolved findings 0
Configuration 7 Pending checks/questions 334

Completeness: Incomplete
Test assessment: Test coverage is assessed from changed tests and lane evidence; execution is not claimed without trusted check data.

What changed

Adds a `[resources]` configuration section (crates/medulla-core/src/config/resources/types.rs) with camelCase keys and an interval clamped to 100–10000 ms, wired into `TuiConfig` (crates/medulla-core/src/config/types/document.rs), and extends `clear_setting` to handle JSON-format files (crates/medulla-core/src/config/persist.rs). Introduces a shared sampler in medulla-monitor (crates/medulla-monitor/src/sampler/mod.rs) publishing `Arc<ResourceSnapshot>` from the event loop (crates/medulla-tui/src/event_loop/mod.rs), with Linux /proc CPU sampling (crates/medulla-monitor/src/cpu.rs) and sampler gating to screens that consume readings. Adds agent classification (crates/medulla-core/src/resources/agents/classify.rs) and a process-wide registry with start-time-guarded identities and generation-checked handles (crates/medulla-monitor/src/agents/registry.rs), and registers children at ACP, headless provider, interactive session, wrapper stdio, PTY, and codex app-server launch paths. Adds the Resources tab with layout, keys, plot widgets, and theme gradients (crates/medulla-tui/src/ui/app/resources/mod.rs, crates/medulla-tui/src/ui/plot/mod.rs, crates/medulla-tui/src/ui/theme/gradient.rs), a Settings › Resources editor (crates/medulla-tui/src/ui/app/settings_edit/resources.rs), and an Agents pane with sort/filter/follow/detail and confirmed signals (crates/medulla-tui/src/ui/app/render/resources/agents.rs). Extends the remote protocol with optional `usage` on session rows and `SessionsChunk` (crates/medulla-core/src/protocol/remote/types.rs), client-side atomic chunk assembly (crates/medulla-tui/src/remote/client/mod.rs), and server-side datagram-bounded chunking (crates/medulla-tui/src/remote/serve/mod.rs).

Features

  • Added — Resources configuration section with clamped sample interval: Lets users set sampling cadence and panel options under `[resources]`; the interval is clamped to 100–10000 ms both at deserialization and on programmatic access, and old configs default cleanly. (crates/medulla-core/src/config/resources/types.rs, crates/medulla-core/src/config/resources/tests.rs, crates/medulla-core/src/config/types/document.rs, config.example.toml)
  • Added — Background resource sampler publishing immutable snapshots: Sampling runs off the draw path on Tokio's blocking pool and the UI consumes cached Arc snapshots, so rendering no longer refreshes system state; interval and disk-option changes apply without restarting the sampler, and the sampler is paused when no visible consumer needs readings. (crates/medulla-monitor/src/sampler/mod.rs, crates/medulla-monitor/src/sampler/types.rs, crates/medulla-tui/src/event_loop/mod.rs, crates/medulla-tui/src/ui/app/state_accessors.inc.rs, crates/medulla-tui/src/event_loop/tests.rs)
  • Added — Linux /proc-backed CPU sampling: Provides per-field CPU percentages with guest-time adjustment plus frequencies, hwmon package/core temperatures, load average, uptime, and battery readings, with a deterministic root override for tests. (crates/medulla-monitor/src/cpu.rs)
  • Added — Agent process classification and origin attribution: Classifies Claude, Codex, Codex app-server, Claude/Codex ACP, OpenCode, OpenHuman, embedded OpenHuman and shells by executable basename and conservative argv signatures, collapsing wrapper chains, and attributes them to session, task, headless, or external origins using start-time-guarded roots. (crates/medulla-core/src/resources/agents/classify.rs, crates/medulla-core/src/resources/agents/types.rs, crates/medulla-core/src/resources/agents/tests.rs, crates/medulla-core/src/resources/agents/registry.rs)
  • Added — Process-wide agent registry with identity-safe handles: Launch paths register child processes; a registration is admitted only when PID and sampled start time match so a recycled PID cannot inherit prior ownership, and a dropped guard does not remove a newer identity. (crates/medulla-monitor/src/agents/registry.rs, crates/medulla-monitor/src/agents/registry_tests.rs)
  • Modified — Harness launch paths register their children: ACP (child located by a per-run env marker), headless provider runs, interactive sessions, PTY children, wrapper stdio children, and the codex app-server connection hold a registration guard and update the session id when the harness announces it, so the Agents pane can attribute live processes. (crates/medulla-core/src/daemon/providers/acp/execution.rs, crates/medulla-core/src/daemon/providers/execute.rs, crates/medulla-core/src/sessions/interactive/session/mod.rs, crates/medulla-tui/src/harness_pty/mod.rs, crates/medulla-core/src/wrapper/run/child/mod.rs, crates/medulla-core/src/codex_app_server/connection.rs)
  • Added — Resources tab with btop-style layout, keys, and plots: Adds a Resources tab with CPU/Mem/Net/Agents boxes, preset-driven placement, panel toggles, network controls, and braille/block/tty graph and gradient widgets, alongside a Settings › Resources editor that persists changes and falls back to Auto when an override is cleared. (crates/medulla-tui/src/ui/app/resources/mod.rs, crates/medulla-tui/src/ui/app/resources/layout.rs, crates/medulla-tui/src/ui/app/resources/keys.rs, crates/medulla-tui/src/ui/plot/mod.rs, crates/medulla-tui/src/ui/app/settings_edit/resources.rs, crates/medulla-tui/src/ui/app/types/settings_nav.inc.rs)
  • Added — Agents pane actions with ownership-checked process signals: Agents rows can be sorted, filtered, followed, and opened on the Sessions rail; terminate/kill/stop require confirmation, a second explicit confirmation for external targets, and revalidation of process start time and owner before signaling, with commands redacted in the prompt and remote targets refused. (crates/medulla-tui/src/ui/app/render/resources/agents.rs, crates/medulla-tui/src/ui/app/resources/types.rs, crates/medulla-tui/src/ui/app/resources/tests.rs)
  • 1 additional supported feature(s) omitted by the configured limit.

Tests

  • unit — CPU delta math with guest-time adjustment, frequency slot preservation, per-package core temperature mapping, and the Linux collector reading paired /proc/stat deltas and hwmon labels.: Targeted assertions on numeric fields that would fail on regression. (crates/medulla-monitor/src/cpu.rs, crates/medulla-monitor/src/sampler/tests.rs)
  • unit — Agent classifier assigns kinds and origins, collapses npx/node wrapper chains, treats a reused root PID start time as external, keeps Medulla's own tool children out of external, and honors the external-shells option.: Covers the classification and attribution invariants stated in the diff with concrete fixtures. (crates/medulla-core/src/resources/agents/tests.rs, crates/medulla-core/src/resources/agents/classify.rs)
  • unit — Registry rejects a stale PID identity, a dropped old guard leaves a newer identity, a stale handle cannot update a replacement registration, and a spawned child is registered then removed on guard drop.: Pins the identity and generation guards that the attribution logic relies on. (crates/medulla-monitor/src/agents/registry_tests.rs)
  • unit — Sampler posts injected samples in order with history, honors changed intervals, avoids starvation on unchanged updates, and applies disk-option changes without restarting.: Exercises the sampler ordering and change-propagation behavior described in the diff. (crates/medulla-monitor/src/sampler/tests.rs)
  • unit — Remote session rows round-trip optional usage, decode old payloads without it, and chunk assembly holds the previous list until all parts arrive and ignores stale batches.: Covers both wire-compatibility and atomic assembly behavior. (crates/medulla-core/src/protocol/remote/tests.rs, crates/medulla-tui/src/remote/client/tests.rs)
  • unit — Datagram-bounded chunking preserves every session row, retains usage on chunks that fit it, and truncates multibyte fields on character boundaries.: Asserts the size bound and row preservation invariants on the encoded messages. (crates/medulla-tui/src/remote/serve/tests/sessions.rs)
  • unit — Resources layout returns a rect or a too-small result for every visibility mask at two terminal sizes, and keys cycle presets and clamp the interval.: Enumerates the box combinations and asserts placement validity. (crates/medulla-tui/src/ui/app/resources/tests.rs, crates/medulla-tui/src/ui/app/resources/layout.rs)
  • unit — Agent signal flows require confirmation, a second uppercase confirmation for external targets, and never reach the injected signal function for unowned or hidden-Agents cases; commands are redacted in the prompt.: Uses injected signal and ownership functions to assert the safety gates. (crates/medulla-tui/src/ui/app/resources/tests.rs)

Findings

No active actionable findings.

Before merge

  • Complete the critique review for Cargo.toml, crates/medulla-core/src/sessions/interactive/session/types.rs, crates/medulla-tui/src/ui/app/render/sessions/harness.rs, crates/medulla-tui/src/ui/app/render/sessions/mod.rs, crates/medulla-core/Cargo.toml, crates/medulla-core/src/sessions/manager/turns.rs, crates/medulla-tui/src/remote/serve/sessions.rs, crates/medulla-tui/src/ui/app/remote_sessions_tests.rs, crates/medulla-tui/src/ui/app/resources/types.rs, crates/medulla-core/src/resources/agents/classify.rs, crates/medulla-tui/src/remote/serve/mod.rs, crates/medulla-monitor/src/sampler/types.rs, crates/medulla-tui/src/ui/theme/gradient.rs, crates/medulla-tui/src/ui/resources/net.rs, crates/medulla-tui/src/ui/theme/types.rs, crates/medulla-core/src/config/resources/types.rs, crates/medulla-tui/src/ui/plot/graph.rs, crates/medulla-core/src/config/types/document.rs, crates/medulla-core/src/config/types/presentation.rs, crates/medulla-tui/src/ui/plot/mod.rs, crates/medulla-tui/src/ui/plot/symbols.rs, crates/medulla-tui/src/ui/plot/meter.rs, crates/medulla-monitor/src/sampler/history.rs, crates/medulla-core/src/protocol/remote/types.rs, crates/medulla-core/src/resources/agents/registry.rs, crates/medulla-tui/src/ui/app/types/settings_nav.inc.rs, crates/medulla-tui/src/ui/resources/mod.rs, crates/medulla-tui/src/ui/theme/mod.rs, crates/medulla-core/src/resources/agents/mod.rs, crates/medulla-tui/src/ui/app/state_accessors.inc.rs, crates/medulla-monitor/src/agents/mod.rs, crates/medulla-core/src/config/mod.rs, crates/medulla-core/src/config/resources/mod.rs, crates/medulla-monitor/src/lib.rs, crates/medulla-core/src/daemon/providers/types.rs, crates/medulla-core/src/resources/mod.rs, crates/medulla-core/src/lib.rs, crates/medulla-tui/src/ui/mod.rs, crates/medulla-tui/src/ui/app/resources/mod.rs, crates/medulla-tui/src/ui/app/resources/tests.rs, crates/medulla-tui/src/ui/app/settings_edit/resources.rs, crates/medulla-core/src/resources/agents/tests.rs, crates/medulla-tui/tests/feature_settings.rs, crates/medulla-core/tests/feature_embed_agents.rs, crates/medulla-tui/src/ui/app/resources/layout.rs, crates/medulla-tui/src/ui/plot/tests.rs, crates/medulla-core/src/daemon/providers/acp/execution.rs, crates/medulla-tui/src/remote/client/tests.rs, crates/medulla-tui/src/ui/theme/tests.rs, crates/medulla-core/src/config/resources/tests.rs, crates/medulla-core/src/codex_app_server/connection.rs, crates/medulla-tui/tests/feature_resources_tab.rs, config.example.toml, crates/medulla-tui/src/event_loop/mod.rs, crates/medulla-tui/src/remote/client/mod.rs, crates/medulla-tui/src/harness_pty/mod.rs, crates/medulla-tui/src/ui/app/resources/keys.rs, crates/medulla-core/src/wrapper/run/tests/mod.rs, crates/medulla-core/src/protocol/remote/tests.rs, crates/medulla-core/src/config/persist.rs, crates/medulla-core/src/config/persist_tests.rs, crates/medulla-tui/src/ui/app/render/resources/agents_detail.rs, crates/medulla-core/src/daemon/providers/tests.rs, crates/medulla-core/src/daemon/providers/acp/tests/execution.rs, crates/medulla-tui/src/ui/app/keys/settings/mod.rs, crates/medulla-tui/tests/feature_subscriptions.rs, crates/medulla-tui/src/event_loop/tests.rs, gitbooks/developers/host-link-protocol.md, crates/medulla-core/src/daemon/providers/execute.rs, docs/host-link-protocol.md, docs/screenshots/resources-overview.svg, crates/medulla-tui/src/ui/app/types/app_state.inc.rs, crates/medulla-tui/src/ui/app/render/tests.rs, crates/medulla-tui/src/ui/app/keys/mod.rs, crates/medulla-tui/src/ui/app/render/settings/view_tests.rs, Makefile, crates/medulla-core/src/control_socket/tests/paths.rs, crates/medulla-core/tests/e2e_daemon_providers.rs, crates/medulla-tui/src/remote/serve/entry.rs, crates/medulla-tui/src/ui/app/render/settings/mod.rs, crates/medulla-tui/src/ui/app/state_constructor.inc.rs, crates/medulla-core/src/wrapper/run/child/mod.rs, crates/medulla-tui/src/ui/app/input/mouse.rs, crates/medulla-tui/src/ui/app/render/mod.rs, docs/screenshots/resources-agents.svg, e2e/coordination/mockllm/server.py, crates/medulla-core/src/protocol/remote/mod.rs, crates/medulla-tui/src/ui/app/render/resources/mod.rs, crates/medulla-tui/tests/feature_config_editor.rs, e2e/remote-hosts/compose.yaml, crates/medulla-tui/src/main.rs, e2e/coordination/lib.sh, crates/medulla-core/src/protocol/mod.rs, crates/medulla-core/src/wrapper/run/child/types.rs, crates/medulla-tui/src/event_loop/types.rs, crates/medulla-tui/src/ui/app/render/status_line.rs, crates/medulla-core/src/config/types/mod.rs, crates/medulla-core/src/daemon/capabilities/mod.rs, crates/medulla-core/src/daemon/providers/codex_server/tests.rs, crates/medulla-core/src/daemon/providers/embed/tests.rs, crates/medulla-core/src/daemon/task_loop/plain.rs, crates/medulla-core/src/daemon/task_loop/run.rs, crates/medulla-core/src/daemon/task_loop/workflow/dispatch.rs, crates/medulla-core/src/wrapper/run/mod.rs, crates/medulla-core/tests/e2e_daemon_router.rs, crates/medulla-core/tests/feature_embed_compression.rs, crates/medulla-tui/src/local_host/tests/dispatch.rs, crates/medulla-tui/src/ui/app/mod.rs, crates/medulla-tui/src/ui/app/settings_edit/mod.rs, crates/medulla-tui/src/worker/executor_tests/live.rs, crates/medulla-tui/src/worker/executor_tests/mod.rs, crates/medulla-tui/tests/e2e_codex_rename.rs, gitbooks/SUMMARY.md.
  • Complete the security review for Cargo.toml, crates/medulla-core/src/sessions/interactive/session/types.rs, crates/medulla-tui/src/ui/app/render/sessions/harness.rs, crates/medulla-tui/src/ui/app/render/sessions/mod.rs, crates/medulla-core/Cargo.toml, crates/medulla-core/src/sessions/manager/turns.rs, crates/medulla-tui/src/remote/serve/sessions.rs, crates/medulla-tui/src/ui/app/remote_sessions_tests.rs, crates/medulla-tui/src/ui/app/resources/types.rs, crates/medulla-core/src/resources/agents/classify.rs, crates/medulla-tui/src/remote/serve/mod.rs, crates/medulla-monitor/src/sampler/types.rs, crates/medulla-tui/src/ui/theme/gradient.rs, crates/medulla-tui/src/ui/resources/net.rs, crates/medulla-tui/src/ui/theme/types.rs, crates/medulla-core/src/config/resources/types.rs, crates/medulla-tui/src/ui/plot/graph.rs, crates/medulla-core/src/config/types/document.rs, crates/medulla-core/src/config/types/presentation.rs, crates/medulla-tui/src/ui/plot/mod.rs, crates/medulla-tui/src/ui/plot/symbols.rs, crates/medulla-tui/src/ui/plot/meter.rs, crates/medulla-monitor/src/sampler/history.rs, crates/medulla-core/src/protocol/remote/types.rs, crates/medulla-core/src/resources/agents/registry.rs, crates/medulla-tui/src/ui/app/types/settings_nav.inc.rs, crates/medulla-tui/src/ui/resources/mod.rs, crates/medulla-tui/src/ui/theme/mod.rs, crates/medulla-core/src/resources/agents/mod.rs, crates/medulla-tui/src/ui/app/state_accessors.inc.rs, crates/medulla-monitor/src/agents/mod.rs, crates/medulla-core/src/config/mod.rs, crates/medulla-core/src/config/resources/mod.rs, crates/medulla-monitor/src/lib.rs, crates/medulla-core/src/daemon/providers/types.rs, crates/medulla-core/src/resources/mod.rs, crates/medulla-core/src/lib.rs, crates/medulla-tui/src/ui/mod.rs, crates/medulla-tui/src/ui/app/resources/mod.rs, crates/medulla-tui/src/ui/app/resources/tests.rs, crates/medulla-tui/src/ui/app/settings_edit/resources.rs, crates/medulla-core/src/resources/agents/tests.rs, crates/medulla-tui/tests/feature_settings.rs, crates/medulla-core/tests/feature_embed_agents.rs, crates/medulla-tui/src/ui/app/resources/layout.rs, crates/medulla-tui/src/ui/plot/tests.rs, crates/medulla-core/src/daemon/providers/acp/execution.rs, crates/medulla-tui/src/remote/client/tests.rs, crates/medulla-tui/src/ui/theme/tests.rs, crates/medulla-core/src/config/resources/tests.rs, crates/medulla-core/src/codex_app_server/connection.rs, crates/medulla-tui/tests/feature_resources_tab.rs, config.example.toml, crates/medulla-tui/src/event_loop/mod.rs, crates/medulla-tui/src/remote/client/mod.rs, crates/medulla-tui/src/harness_pty/mod.rs, crates/medulla-tui/src/ui/app/resources/keys.rs, crates/medulla-core/src/wrapper/run/tests/mod.rs, crates/medulla-core/src/protocol/remote/tests.rs, crates/medulla-core/src/config/persist.rs, crates/medulla-core/src/config/persist_tests.rs, crates/medulla-tui/src/ui/app/render/resources/agents_detail.rs, crates/medulla-core/src/daemon/providers/tests.rs, crates/medulla-core/src/daemon/providers/acp/tests/execution.rs, crates/medulla-tui/src/ui/app/keys/settings/mod.rs, crates/medulla-tui/tests/feature_subscriptions.rs, crates/medulla-tui/src/event_loop/tests.rs, crates/medulla-core/src/daemon/providers/execute.rs, crates/medulla-tui/src/ui/app/types/app_state.inc.rs, crates/medulla-tui/src/ui/app/render/tests.rs, crates/medulla-tui/src/ui/app/keys/mod.rs, crates/medulla-tui/src/ui/app/render/settings/view_tests.rs, Makefile, crates/medulla-core/src/control_socket/tests/paths.rs, crates/medulla-core/tests/e2e_daemon_providers.rs, crates/medulla-tui/src/remote/serve/entry.rs, crates/medulla-tui/src/ui/app/render/settings/mod.rs, crates/medulla-tui/src/ui/app/state_constructor.inc.rs, crates/medulla-core/src/wrapper/run/child/mod.rs, crates/medulla-tui/src/ui/app/input/mouse.rs, crates/medulla-tui/src/ui/app/render/mod.rs, e2e/coordination/mockllm/server.py, crates/medulla-core/src/protocol/remote/mod.rs, crates/medulla-tui/src/ui/app/render/resources/mod.rs, crates/medulla-tui/tests/feature_config_editor.rs, e2e/remote-hosts/compose.yaml, crates/medulla-tui/src/main.rs, e2e/coordination/lib.sh, crates/medulla-core/src/protocol/mod.rs, crates/medulla-core/src/wrapper/run/child/types.rs, crates/medulla-tui/src/event_loop/types.rs, crates/medulla-tui/src/ui/app/render/status_line.rs, crates/medulla-core/src/config/types/mod.rs, crates/medulla-core/src/daemon/capabilities/mod.rs, crates/medulla-core/src/daemon/providers/codex_server/tests.rs, crates/medulla-core/src/daemon/providers/embed/tests.rs, crates/medulla-core/src/daemon/task_loop/plain.rs, crates/medulla-core/src/daemon/task_loop/run.rs, crates/medulla-core/src/daemon/task_loop/workflow/dispatch.rs, crates/medulla-core/src/wrapper/run/mod.rs, crates/medulla-core/tests/e2e_daemon_router.rs, crates/medulla-core/tests/feature_embed_compression.rs, crates/medulla-tui/src/local_host/tests/dispatch.rs, crates/medulla-tui/src/ui/app/mod.rs, crates/medulla-tui/src/ui/app/settings_edit/mod.rs, crates/medulla-tui/src/worker/executor_tests/live.rs, crates/medulla-tui/src/worker/executor_tests/mod.rs, crates/medulla-tui/tests/e2e_codex_rename.rs.
  • Review uncovered paths: Cargo.toml, Makefile, config.example.toml, crates/medulla-core/Cargo.toml, crates/medulla-core/src/codex_app_server/connection.rs, crates/medulla-core/src/config/mod.rs, crates/medulla-core/src/config/persist.rs, crates/medulla-core/src/config/persist_tests.rs, crates/medulla-core/src/config/resources/mod.rs, crates/medulla-core/src/config/resources/tests.rs, crates/medulla-core/src/config/resources/types.rs, crates/medulla-core/src/config/types/document.rs, crates/medulla-core/src/config/types/mod.rs, crates/medulla-core/src/config/types/presentation.rs, crates/medulla-core/src/control_socket/tests/paths.rs, crates/medulla-core/src/daemon/capabilities/mod.rs, crates/medulla-core/src/daemon/providers/acp/execution.rs, crates/medulla-core/src/daemon/providers/acp/tests/execution.rs, crates/medulla-core/src/daemon/providers/codex_server/tests.rs, crates/medulla-core/src/daemon/providers/embed/tests.rs, crates/medulla-core/src/daemon/providers/execute.rs, crates/medulla-core/src/daemon/providers/tests.rs, crates/medulla-core/src/daemon/providers/types.rs, crates/medulla-core/src/daemon/task_loop/plain.rs, crates/medulla-core/src/daemon/task_loop/run.rs, crates/medulla-core/src/daemon/task_loop/workflow/dispatch.rs, crates/medulla-core/src/lib.rs, crates/medulla-core/src/protocol/mod.rs, crates/medulla-core/src/protocol/remote/mod.rs, crates/medulla-core/src/protocol/remote/tests.rs, crates/medulla-core/src/protocol/remote/types.rs, crates/medulla-core/src/resources/agents/classify.rs, crates/medulla-core/src/resources/agents/mod.rs, crates/medulla-core/src/resources/agents/registry.rs, crates/medulla-core/src/resources/agents/tests.rs, crates/medulla-core/src/resources/mod.rs, crates/medulla-core/src/sessions/interactive/session/types.rs, crates/medulla-core/src/sessions/manager/turns.rs, crates/medulla-core/src/wrapper/run/child/mod.rs, crates/medulla-core/src/wrapper/run/child/types.rs, crates/medulla-core/src/wrapper/run/mod.rs, crates/medulla-core/src/wrapper/run/tests/mod.rs, crates/medulla-core/tests/e2e_daemon_providers.rs, crates/medulla-core/tests/e2e_daemon_router.rs, crates/medulla-core/tests/feature_embed_agents.rs, crates/medulla-core/tests/feature_embed_compression.rs, crates/medulla-monitor/src/agents/mod.rs, crates/medulla-monitor/src/lib.rs, crates/medulla-monitor/src/sampler/history.rs, crates/medulla-monitor/src/sampler/types.rs, crates/medulla-tui/src/event_loop/mod.rs, crates/medulla-tui/src/event_loop/tests.rs, crates/medulla-tui/src/event_loop/types.rs, crates/medulla-tui/src/harness_pty/mod.rs, crates/medulla-tui/src/local_host/tests/dispatch.rs, crates/medulla-tui/src/main.rs, crates/medulla-tui/src/remote/client/mod.rs, crates/medulla-tui/src/remote/client/tests.rs, crates/medulla-tui/src/remote/serve/entry.rs, crates/medulla-tui/src/remote/serve/mod.rs, crates/medulla-tui/src/remote/serve/sessions.rs, crates/medulla-tui/src/ui/app/input/mouse.rs, crates/medulla-tui/src/ui/app/keys/mod.rs, crates/medulla-tui/src/ui/app/keys/settings/mod.rs, crates/medulla-tui/src/ui/app/mod.rs, crates/medulla-tui/src/ui/app/remote_sessions_tests.rs, crates/medulla-tui/src/ui/app/render/mod.rs, crates/medulla-tui/src/ui/app/render/resources/agents_detail.rs, crates/medulla-tui/src/ui/app/render/resources/mod.rs, crates/medulla-tui/src/ui/app/render/sessions/harness.rs, crates/medulla-tui/src/ui/app/render/sessions/mod.rs, crates/medulla-tui/src/ui/app/render/settings/mod.rs, crates/medulla-tui/src/ui/app/render/settings/view_tests.rs, crates/medulla-tui/src/ui/app/render/status_line.rs, crates/medulla-tui/src/ui/app/render/tests.rs, crates/medulla-tui/src/ui/app/resources/keys.rs, crates/medulla-tui/src/ui/app/resources/layout.rs, crates/medulla-tui/src/ui/app/resources/mod.rs, crates/medulla-tui/src/ui/app/resources/tests.rs, crates/medulla-tui/src/ui/app/resources/types.rs, crates/medulla-tui/src/ui/app/settings_edit/mod.rs, crates/medulla-tui/src/ui/app/settings_edit/resources.rs, crates/medulla-tui/src/ui/app/state_accessors.inc.rs, crates/medulla-tui/src/ui/app/state_constructor.inc.rs, crates/medulla-tui/src/ui/app/types/app_state.inc.rs, crates/medulla-tui/src/ui/app/types/settings_nav.inc.rs, crates/medulla-tui/src/ui/mod.rs, crates/medulla-tui/src/ui/plot/graph.rs, crates/medulla-tui/src/ui/plot/meter.rs, crates/medulla-tui/src/ui/plot/mod.rs, crates/medulla-tui/src/ui/plot/symbols.rs, crates/medulla-tui/src/ui/plot/tests.rs, crates/medulla-tui/src/ui/resources/mod.rs, crates/medulla-tui/src/ui/resources/net.rs, crates/medulla-tui/src/ui/theme/gradient.rs, crates/medulla-tui/src/ui/theme/mod.rs, crates/medulla-tui/src/ui/theme/tests.rs, crates/medulla-tui/src/ui/theme/types.rs, crates/medulla-tui/src/worker/executor_tests/live.rs, crates/medulla-tui/src/worker/executor_tests/mod.rs, crates/medulla-tui/tests/e2e_codex_rename.rs, crates/medulla-tui/tests/feature_config_editor.rs, crates/medulla-tui/tests/feature_resources_tab.rs, crates/medulla-tui/tests/feature_settings.rs, crates/medulla-tui/tests/feature_subscriptions.rs, docs/host-link-protocol.md, docs/screenshots/resources-agents.svg, docs/screenshots/resources-overview.svg, e2e/coordination/lib.sh, e2e/coordination/mockllm/server.py, e2e/remote-hosts/compose.yaml, gitbooks/SUMMARY.md, gitbooks/developers/host-link-protocol.md.
Agent review details

critique

  • Conclusion: Neutral
  • Scope reviewed: incomplete; unanswered files: Cargo.toml, crates/medulla-core/src/sessions/interactive/session/types.rs, crates/medulla-tui/src/ui/app/render/sessions/harness.rs, crates/medulla-tui/src/ui/app/render/sessions/mod.rs, crates/medulla-core/Cargo.toml, crates/medulla-core/src/sessions/manager/turns.rs, crates/medulla-tui/src/remote/serve/sessions.rs, crates/medulla-tui/src/ui/app/remote_sessions_tests.rs, crates/medulla-tui/src/ui/app/resources/types.rs, crates/medulla-core/src/resources/agents/classify.rs, crates/medulla-tui/src/remote/serve/mod.rs, crates/medulla-monitor/src/sampler/types.rs, crates/medulla-tui/src/ui/theme/gradient.rs, crates/medulla-tui/src/ui/resources/net.rs, crates/medulla-tui/src/ui/theme/types.rs, crates/medulla-core/src/config/resources/types.rs, crates/medulla-tui/src/ui/plot/graph.rs, crates/medulla-core/src/config/types/document.rs, crates/medulla-core/src/config/types/presentation.rs, crates/medulla-tui/src/ui/plot/mod.rs, crates/medulla-tui/src/ui/plot/symbols.rs, crates/medulla-tui/src/ui/plot/meter.rs, crates/medulla-monitor/src/sampler/history.rs, crates/medulla-core/src/protocol/remote/types.rs, crates/medulla-core/src/resources/agents/registry.rs, crates/medulla-tui/src/ui/app/types/settings_nav.inc.rs, crates/medulla-tui/src/ui/resources/mod.rs, crates/medulla-tui/src/ui/theme/mod.rs, crates/medulla-core/src/resources/agents/mod.rs, crates/medulla-tui/src/ui/app/state_accessors.inc.rs, crates/medulla-monitor/src/agents/mod.rs, crates/medulla-core/src/config/mod.rs, crates/medulla-core/src/config/resources/mod.rs, crates/medulla-monitor/src/lib.rs, crates/medulla-core/src/daemon/providers/types.rs, crates/medulla-core/src/resources/mod.rs, crates/medulla-core/src/lib.rs, crates/medulla-tui/src/ui/mod.rs, crates/medulla-tui/src/ui/app/resources/mod.rs, crates/medulla-tui/src/ui/app/resources/tests.rs, crates/medulla-tui/src/ui/app/settings_edit/resources.rs, crates/medulla-core/src/resources/agents/tests.rs, crates/medulla-tui/tests/feature_settings.rs, crates/medulla-core/tests/feature_embed_agents.rs, crates/medulla-tui/src/ui/app/resources/layout.rs, crates/medulla-tui/src/ui/plot/tests.rs, crates/medulla-core/src/daemon/providers/acp/execution.rs, crates/medulla-tui/src/remote/client/tests.rs, crates/medulla-tui/src/ui/theme/tests.rs, crates/medulla-core/src/config/resources/tests.rs, crates/medulla-core/src/codex_app_server/connection.rs, crates/medulla-tui/tests/feature_resources_tab.rs, config.example.toml, crates/medulla-tui/src/event_loop/mod.rs, crates/medulla-tui/src/remote/client/mod.rs, crates/medulla-tui/src/harness_pty/mod.rs, crates/medulla-tui/src/ui/app/resources/keys.rs, crates/medulla-core/src/wrapper/run/tests/mod.rs, crates/medulla-core/src/protocol/remote/tests.rs, crates/medulla-core/src/config/persist.rs, crates/medulla-core/src/config/persist_tests.rs, crates/medulla-tui/src/ui/app/render/resources/agents_detail.rs, crates/medulla-core/src/daemon/providers/tests.rs, crates/medulla-core/src/daemon/providers/acp/tests/execution.rs, crates/medulla-tui/src/ui/app/keys/settings/mod.rs, crates/medulla-tui/tests/feature_subscriptions.rs, crates/medulla-tui/src/event_loop/tests.rs, gitbooks/developers/host-link-protocol.md, crates/medulla-core/src/daemon/providers/execute.rs, docs/host-link-protocol.md, docs/screenshots/resources-overview.svg, crates/medulla-tui/src/ui/app/types/app_state.inc.rs, crates/medulla-tui/src/ui/app/render/tests.rs, crates/medulla-tui/src/ui/app/keys/mod.rs, crates/medulla-tui/src/ui/app/render/settings/view_tests.rs, Makefile, crates/medulla-core/src/control_socket/tests/paths.rs, crates/medulla-core/tests/e2e_daemon_providers.rs, crates/medulla-tui/src/remote/serve/entry.rs, crates/medulla-tui/src/ui/app/render/settings/mod.rs, crates/medulla-tui/src/ui/app/state_constructor.inc.rs, crates/medulla-core/src/wrapper/run/child/mod.rs, crates/medulla-tui/src/ui/app/input/mouse.rs, crates/medulla-tui/src/ui/app/render/mod.rs, docs/screenshots/resources-agents.svg, e2e/coordination/mockllm/server.py, crates/medulla-core/src/protocol/remote/mod.rs, crates/medulla-tui/src/ui/app/render/resources/mod.rs, crates/medulla-tui/tests/feature_config_editor.rs, e2e/remote-hosts/compose.yaml, crates/medulla-tui/src/main.rs, e2e/coordination/lib.sh, crates/medulla-core/src/protocol/mod.rs, crates/medulla-core/src/wrapper/run/child/types.rs, crates/medulla-tui/src/event_loop/types.rs, crates/medulla-tui/src/ui/app/render/status_line.rs, crates/medulla-core/src/config/types/mod.rs, crates/medulla-core/src/daemon/capabilities/mod.rs, crates/medulla-core/src/daemon/providers/codex_server/tests.rs, crates/medulla-core/src/daemon/providers/embed/tests.rs, crates/medulla-core/src/daemon/task_loop/plain.rs, crates/medulla-core/src/daemon/task_loop/run.rs, crates/medulla-core/src/daemon/task_loop/workflow/dispatch.rs, crates/medulla-core/src/wrapper/run/mod.rs, crates/medulla-core/tests/e2e_daemon_router.rs, crates/medulla-core/tests/feature_embed_compression.rs, crates/medulla-tui/src/local_host/tests/dispatch.rs, crates/medulla-tui/src/ui/app/mod.rs, crates/medulla-tui/src/ui/app/settings_edit/mod.rs, crates/medulla-tui/src/worker/executor_tests/live.rs, crates/medulla-tui/src/worker/executor_tests/mod.rs, crates/medulla-tui/tests/e2e_codex_rename.rs, gitbooks/SUMMARY.md
  • Lane summary: Reviewed 6 of 119 files — 113 not reviewed. Reviewed 6 files; 0 findings. 113 files were omitted: not selected by the large-review budget.

security

  • Conclusion: Neutral
  • Scope reviewed: incomplete; unanswered files: Cargo.toml, crates/medulla-core/src/sessions/interactive/session/types.rs, crates/medulla-tui/src/ui/app/render/sessions/harness.rs, crates/medulla-tui/src/ui/app/render/sessions/mod.rs, crates/medulla-core/Cargo.toml, crates/medulla-core/src/sessions/manager/turns.rs, crates/medulla-tui/src/remote/serve/sessions.rs, crates/medulla-tui/src/ui/app/remote_sessions_tests.rs, crates/medulla-tui/src/ui/app/resources/types.rs, crates/medulla-core/src/resources/agents/classify.rs, crates/medulla-tui/src/remote/serve/mod.rs, crates/medulla-monitor/src/sampler/types.rs, crates/medulla-tui/src/ui/theme/gradient.rs, crates/medulla-tui/src/ui/resources/net.rs, crates/medulla-tui/src/ui/theme/types.rs, crates/medulla-core/src/config/resources/types.rs, crates/medulla-tui/src/ui/plot/graph.rs, crates/medulla-core/src/config/types/document.rs, crates/medulla-core/src/config/types/presentation.rs, crates/medulla-tui/src/ui/plot/mod.rs, crates/medulla-tui/src/ui/plot/symbols.rs, crates/medulla-tui/src/ui/plot/meter.rs, crates/medulla-monitor/src/sampler/history.rs, crates/medulla-core/src/protocol/remote/types.rs, crates/medulla-core/src/resources/agents/registry.rs, crates/medulla-tui/src/ui/app/types/settings_nav.inc.rs, crates/medulla-tui/src/ui/resources/mod.rs, crates/medulla-tui/src/ui/theme/mod.rs, crates/medulla-core/src/resources/agents/mod.rs, crates/medulla-tui/src/ui/app/state_accessors.inc.rs, crates/medulla-monitor/src/agents/mod.rs, crates/medulla-core/src/config/mod.rs, crates/medulla-core/src/config/resources/mod.rs, crates/medulla-monitor/src/lib.rs, crates/medulla-core/src/daemon/providers/types.rs, crates/medulla-core/src/resources/mod.rs, crates/medulla-core/src/lib.rs, crates/medulla-tui/src/ui/mod.rs, crates/medulla-tui/src/ui/app/resources/mod.rs, crates/medulla-tui/src/ui/app/resources/tests.rs, crates/medulla-tui/src/ui/app/settings_edit/resources.rs, crates/medulla-core/src/resources/agents/tests.rs, crates/medulla-tui/tests/feature_settings.rs, crates/medulla-core/tests/feature_embed_agents.rs, crates/medulla-tui/src/ui/app/resources/layout.rs, crates/medulla-tui/src/ui/plot/tests.rs, crates/medulla-core/src/daemon/providers/acp/execution.rs, crates/medulla-tui/src/remote/client/tests.rs, crates/medulla-tui/src/ui/theme/tests.rs, crates/medulla-core/src/config/resources/tests.rs, crates/medulla-core/src/codex_app_server/connection.rs, crates/medulla-tui/tests/feature_resources_tab.rs, config.example.toml, crates/medulla-tui/src/event_loop/mod.rs, crates/medulla-tui/src/remote/client/mod.rs, crates/medulla-tui/src/harness_pty/mod.rs, crates/medulla-tui/src/ui/app/resources/keys.rs, crates/medulla-core/src/wrapper/run/tests/mod.rs, crates/medulla-core/src/protocol/remote/tests.rs, crates/medulla-core/src/config/persist.rs, crates/medulla-core/src/config/persist_tests.rs, crates/medulla-tui/src/ui/app/render/resources/agents_detail.rs, crates/medulla-core/src/daemon/providers/tests.rs, crates/medulla-core/src/daemon/providers/acp/tests/execution.rs, crates/medulla-tui/src/ui/app/keys/settings/mod.rs, crates/medulla-tui/tests/feature_subscriptions.rs, crates/medulla-tui/src/event_loop/tests.rs, crates/medulla-core/src/daemon/providers/execute.rs, crates/medulla-tui/src/ui/app/types/app_state.inc.rs, crates/medulla-tui/src/ui/app/render/tests.rs, crates/medulla-tui/src/ui/app/keys/mod.rs, crates/medulla-tui/src/ui/app/render/settings/view_tests.rs, Makefile, crates/medulla-core/src/control_socket/tests/paths.rs, crates/medulla-core/tests/e2e_daemon_providers.rs, crates/medulla-tui/src/remote/serve/entry.rs, crates/medulla-tui/src/ui/app/render/settings/mod.rs, crates/medulla-tui/src/ui/app/state_constructor.inc.rs, crates/medulla-core/src/wrapper/run/child/mod.rs, crates/medulla-tui/src/ui/app/input/mouse.rs, crates/medulla-tui/src/ui/app/render/mod.rs, e2e/coordination/mockllm/server.py, crates/medulla-core/src/protocol/remote/mod.rs, crates/medulla-tui/src/ui/app/render/resources/mod.rs, crates/medulla-tui/tests/feature_config_editor.rs, e2e/remote-hosts/compose.yaml, crates/medulla-tui/src/main.rs, e2e/coordination/lib.sh, crates/medulla-core/src/protocol/mod.rs, crates/medulla-core/src/wrapper/run/child/types.rs, crates/medulla-tui/src/event_loop/types.rs, crates/medulla-tui/src/ui/app/render/status_line.rs, crates/medulla-core/src/config/types/mod.rs, crates/medulla-core/src/daemon/capabilities/mod.rs, crates/medulla-core/src/daemon/providers/codex_server/tests.rs, crates/medulla-core/src/daemon/providers/embed/tests.rs, crates/medulla-core/src/daemon/task_loop/plain.rs, crates/medulla-core/src/daemon/task_loop/run.rs, crates/medulla-core/src/daemon/task_loop/workflow/dispatch.rs, crates/medulla-core/src/wrapper/run/mod.rs, crates/medulla-core/tests/e2e_daemon_router.rs, crates/medulla-core/tests/feature_embed_compression.rs, crates/medulla-tui/src/local_host/tests/dispatch.rs, crates/medulla-tui/src/ui/app/mod.rs, crates/medulla-tui/src/ui/app/settings_edit/mod.rs, crates/medulla-tui/src/worker/executor_tests/live.rs, crates/medulla-tui/src/worker/executor_tests/mod.rs, crates/medulla-tui/tests/e2e_codex_rename.rs
  • Lane summary: Reviewed 6 of 114 files — 108 not reviewed. Reviewed 6 files; 0 findings. 108 files were omitted: not selected by the large-review budget. 5 files were not security-reviewed: docs/host-link-protocol.md (prose or tabular data), docs/screenshots/resources-agents.svg (binary or image asset), docs/screenshots/resources-overview.svg (binary or image asset), gitbooks/SUMMARY.md (prose or tabular data), gitbooks/developers/host-link-protocol.md (prose or tabular data).

tests

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Lane summary: The new test coverage is largely real: registration lifetimes, chunk reassembly, classification, layout and signal confirmation all have assertions that would fail if the behaviour regressed. One stated invariant is not pinned by any test: the doc comment in `send_sessions`' helper forbids dropping session fields, yet nothing exercises a row whose stable fields alone exceed the datagram budget. _The code index is behind this pull request (indexed at `5c37511d4717`), so retrieved context may be out of date._

commits

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Lane summary: No sensitive content in committed files. _The code index is behind this pull request (indexed at `5c37511d4717`), so retrieved context may be out of date._

description

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Lane summary: The new `/app/e2e/coordination/tests_resources.sh` step in `.github/workflows/ci.yml` looks sound: it reuses the existing `docker run --rm --network none` invocation pattern of the neighbouring steps, involves no permissions change, no third-party action, and no shell interpolation of untrusted context. The Makefile, Cargo and compose volume changes keep the sampler running only where a visible consumer needs it and pick up an out-of-tree target directory; I found nothing to report on the sampled checks. _The code index is behind this pull request (indexed at `5c37511d4717`), so retrieved context may be out of date._
Evidence and run details
  • Models: ladder/vectors-oai3, deepseek-v4.1-flash
  • Spend: $0.001036
  • Tokens: 1573039 input · 9026 output · 497152 cached · 796 embedding
  • Updated: 2026-10-22T15:21:56Z
  • Continuity: summary cache chain restarted at the storage ceiling.
Head State Pass summary
9e9e528c18a0 incomplete 0 active finding(s), 0 resolved finding(s) (at 2026-10-22T12:27:47Z)
5c37511d4717 incomplete 0 active finding(s), 0 resolved finding(s) (at 2026-10-22T14:03:09Z)
2585fbabb24f incomplete 0 active finding(s), 0 resolved finding(s) (at 2026-10-22T14:48:10Z)
11dc97b4d424 incomplete 0 active finding(s), 0 resolved finding(s) (at 2026-10-22T15:21:56Z)

tinysweeper 0.1.2

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-22T12:33:35.480087Z
We couldn’t complete this review. Comment @codex review to try again.
9e9e528 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

  • Run on-demand review

This review includes 133 billable files and costs up to $33.25.

View limit details

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e1572d44-16d2-4a1e-ac77-8ade2986155e
📥 Commits

Reviewing files that changed from the base of the PR and between 75bc9a5 and 11dc97b.

⛔ Files ignored due to path filters: 3
  • Cargo.lock is excluded by !**/*.lock
  • docs/screenshots/resources-agents.svg is excluded by !**/*.svg
  • docs/screenshots/resources-overview.svg is excluded by !**/*.svg
📒 Files selected for processing: 133
  • .github/workflows/ci.yml
  • Cargo.toml
  • Makefile
  • config.example.toml
  • crates/medulla-core/Cargo.toml
  • crates/medulla-core/src/codex_app_server/connection.rs
  • crates/medulla-core/src/config/mod.rs
  • crates/medulla-core/src/config/persist.rs
  • crates/medulla-core/src/config/persist_tests.rs
  • crates/medulla-core/src/config/resources/mod.rs
  • crates/medulla-core/src/config/resources/tests.rs
  • crates/medulla-core/src/config/resources/types.rs
  • crates/medulla-core/src/config/types/document.rs
  • crates/medulla-core/src/config/types/mod.rs
  • crates/medulla-core/src/config/types/presentation.rs
  • crates/medulla-core/src/control_socket/tests/paths.rs
  • crates/medulla-core/src/daemon/capabilities/mod.rs
  • crates/medulla-core/src/daemon/providers/acp/execution.rs
  • crates/medulla-core/src/daemon/providers/acp/tests/execution.rs
  • crates/medulla-core/src/daemon/providers/codex_server/tests.rs
  • crates/medulla-core/src/daemon/providers/embed/tests.rs
  • crates/medulla-core/src/daemon/providers/execute.rs
  • crates/medulla-core/src/daemon/providers/tests.rs
  • crates/medulla-core/src/daemon/providers/types.rs
  • crates/medulla-core/src/daemon/task_loop/plain.rs
  • crates/medulla-core/src/daemon/task_loop/run.rs
  • crates/medulla-core/src/daemon/task_loop/workflow/dispatch.rs
  • crates/medulla-core/src/lib.rs
  • crates/medulla-core/src/protocol/mod.rs
  • crates/medulla-core/src/protocol/remote/mod.rs
  • crates/medulla-core/src/protocol/remote/tests.rs
  • crates/medulla-core/src/protocol/remote/types.rs
  • crates/medulla-core/src/resources/agents/classify.rs
  • crates/medulla-core/src/resources/agents/mod.rs
  • crates/medulla-core/src/resources/agents/registry.rs
  • crates/medulla-core/src/resources/agents/tests.rs
  • crates/medulla-core/src/resources/agents/types.rs
  • crates/medulla-core/src/resources/mod.rs
  • crates/medulla-core/src/sessions/interactive/session/mod.rs
  • crates/medulla-core/src/sessions/interactive/session/types.rs
  • crates/medulla-core/src/sessions/interactive/tests.rs
  • crates/medulla-core/src/sessions/manager/turns.rs
  • crates/medulla-core/src/workflows/run/reconcile_tests.rs
  • crates/medulla-core/src/wrapper/run/child/mod.rs
  • crates/medulla-core/src/wrapper/run/child/types.rs
  • crates/medulla-core/src/wrapper/run/mod.rs
  • crates/medulla-core/src/wrapper/run/tests/mod.rs
  • crates/medulla-core/tests/e2e_codex_app_server.rs
  • crates/medulla-core/tests/e2e_daemon_providers.rs
  • crates/medulla-core/tests/e2e_daemon_router.rs
  • crates/medulla-core/tests/feature_embed_agents.rs
  • crates/medulla-core/tests/feature_embed_compression.rs
  • crates/medulla-core/tests/support/fake_app_server.rs
  • crates/medulla-monitor/Cargo.toml
  • crates/medulla-monitor/src/agents/mod.rs
  • crates/medulla-monitor/src/agents/registry.rs
  • crates/medulla-monitor/src/agents/registry_tests.rs
  • crates/medulla-monitor/src/cpu.rs
  • crates/medulla-monitor/src/lib.rs
  • crates/medulla-monitor/src/sampler/history.rs
  • crates/medulla-monitor/src/sampler/mod.rs
  • crates/medulla-monitor/src/sampler/tests.rs
  • crates/medulla-monitor/src/sampler/types.rs
  • crates/medulla-tui/Cargo.toml
  • crates/medulla-tui/src/event_loop/mod.rs
  • crates/medulla-tui/src/event_loop/tests.rs
  • crates/medulla-tui/src/event_loop/types.rs
  • crates/medulla-tui/src/harness_pty/mod.rs
  • crates/medulla-tui/src/local_host/tests/dispatch.rs
  • crates/medulla-tui/src/main.rs
  • crates/medulla-tui/src/remote/client/mod.rs
  • crates/medulla-tui/src/remote/client/tests.rs
  • crates/medulla-tui/src/remote/serve/entry.rs
  • crates/medulla-tui/src/remote/serve/mod.rs
  • crates/medulla-tui/src/remote/serve/sessions.rs
  • crates/medulla-tui/src/remote/serve/tests/sessions.rs
  • crates/medulla-tui/src/ui/app/input/mouse.rs
  • crates/medulla-tui/src/ui/app/keys/mod.rs
  • crates/medulla-tui/src/ui/app/keys/settings/mod.rs
  • crates/medulla-tui/src/ui/app/mod.rs
  • crates/medulla-tui/src/ui/app/remote_sessions_tests.rs
  • crates/medulla-tui/src/ui/app/render/mod.rs
  • crates/medulla-tui/src/ui/app/render/resources/agents.rs
  • crates/medulla-tui/src/ui/app/render/resources/agents_detail.rs
  • crates/medulla-tui/src/ui/app/render/resources/mod.rs
  • crates/medulla-tui/src/ui/app/render/sessions/harness.rs
  • crates/medulla-tui/src/ui/app/render/sessions/mod.rs
  • crates/medulla-tui/src/ui/app/render/sessions/rail/device_footer.rs
  • crates/medulla-tui/src/ui/app/render/settings/harnesses.rs
  • crates/medulla-tui/src/ui/app/render/settings/mod.rs
  • crates/medulla-tui/src/ui/app/render/settings/view_tests.rs
  • crates/medulla-tui/src/ui/app/render/status_line.rs
  • crates/medulla-tui/src/ui/app/render/tests.rs
  • crates/medulla-tui/src/ui/app/resources/keys.rs
  • crates/medulla-tui/src/ui/app/resources/layout.rs
  • crates/medulla-tui/src/ui/app/resources/mod.rs
  • crates/medulla-tui/src/ui/app/resources/tests.rs
  • crates/medulla-tui/src/ui/app/resources/types.rs
  • crates/medulla-tui/src/ui/app/settings_edit/mod.rs
  • crates/medulla-tui/src/ui/app/settings_edit/resources.rs
  • crates/medulla-tui/src/ui/app/state_accessors.inc.rs
  • crates/medulla-tui/src/ui/app/state_constructor.inc.rs
  • crates/medulla-tui/src/ui/app/types/app_state.inc.rs
  • crates/medulla-tui/src/ui/app/types/settings_nav.inc.rs
  • crates/medulla-tui/src/ui/mod.rs
  • crates/medulla-tui/src/ui/plot/graph.rs
  • crates/medulla-tui/src/ui/plot/meter.rs
  • crates/medulla-tui/src/ui/plot/mod.rs
  • crates/medulla-tui/src/ui/plot/symbols.rs
  • crates/medulla-tui/src/ui/plot/tests.rs
  • crates/medulla-tui/src/ui/resources/mod.rs
  • crates/medulla-tui/src/ui/resources/net.rs
  • crates/medulla-tui/src/ui/theme/gradient.rs
  • crates/medulla-tui/src/ui/theme/mod.rs
  • crates/medulla-tui/src/ui/theme/tests.rs
  • crates/medulla-tui/src/ui/theme/types.rs
  • crates/medulla-tui/src/worker/executor_tests/live.rs
  • crates/medulla-tui/src/worker/executor_tests/mod.rs
  • crates/medulla-tui/tests/e2e_codex_rename.rs
  • crates/medulla-tui/tests/feature_config_editor.rs
  • crates/medulla-tui/tests/feature_resources_tab.rs
  • crates/medulla-tui/tests/feature_session_usage_title.rs
  • crates/medulla-tui/tests/feature_settings.rs
  • crates/medulla-tui/tests/feature_subscriptions.rs
  • docs/host-link-protocol.md
  • docs/plans/resources-tab.md
  • e2e/coordination/lib.sh
  • e2e/coordination/mockllm/server.py
  • e2e/coordination/tests_resources.sh
  • e2e/remote-hosts/compose.yaml
  • gitbooks/SUMMARY.md
  • gitbooks/developers/host-link-protocol.md
  • gitbooks/features/resources.md
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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 could not complete coverage (126 unanswered item(s)), so this is not an approval.

Diagnostics

Total spend: $0.0080

senamakel and others added 15 commits October 22, 2026 13:18
Add a Linux-only test asserting that should_refresh_task_details returns true for
agent executables and node processes carrying an ACP agent argument, and false
for unrelated processes such as sleep. This pins the gating logic so thread
details are only collected for processes that can actually be agents.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Task details are now refreshed only for processes that look like coding
agents, such as claude, codex, opencode, and their node or npx wrappers,
instead of for every process on the system. This keeps the sampler from
paying the cost of enumerating tasks for unrelated processes.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reformatted the process filter in the system resource source so the
closure body fits on a single line. No behaviour change.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The sweep test now names its runs after the test itself instead of the
generic run-a and run-b, so failures point at the case that produced them
rather than at an ambiguous identifier.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add the captured end-to-end run log for the opencode CI job so the
output is available for inspection.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Capture the full CI output from the docker, tmux, and opencode end-to-end
job so the run can be inspected without re-executing the workflow.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add a linux-only test asserting that may_be_agent_process accepts known agent
runtimes like claude, node and bash while rejecting unrelated processes such as
sleep and postgres.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
On Linux the sampler now refreshes executable and command line only for
processes whose names look like agents or their shells, instead of for every
process on the system. This cuts the per-sample cost of the extra refresh
while still giving classification the argv it needs, and the tests were
updated to cover the narrowed behaviour.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Delete the accidentally committed e2e opencode CI log and adjust the sampler
module and its tests accordingly.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add a Linux-only test asserting that pids_in_process_trees returns an agent
process together with its descendants while leaving unrelated process trees
untouched.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
On Linux, process metrics are now collected only for the agent's process
tree plus the monitor itself, instead of refreshing cpu, memory and disk
usage for every process on the system. This cuts the cost of each sample
while keeping metrics for the processes that matter, and non-Linux
targets keep refreshing all processes as before.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Restructure the Linux process metric PID collection into a single block
expression and reindent the process snapshot construction. No behaviour
change; the change only improves readability and formatting.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Shell processes were being treated as agent roots, which pulled every
child of a shell into the process metric set. A dedicated predicate now
skips common shells when selecting tree roots while still refreshing
their own task details, and an empty root list short-circuits the tree
walk.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The stale socket test now captures the result of prepare_bind and includes the path and error in the assertion message, so a failure shows why reaping failed instead of only that it did.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…ertion

Move the detailed failure message from the plain bind test to the stale
socket reaping test, where a failure is more likely to need the extra
context. The plain bind test now uses a bare is_ok assertion.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
@senamakel
senamakel merged commit 7329a34 into tinyhumansai:main Oct 22, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

1 participant