Skip to content

Default cargo run to WebUI serve - #6663

Merged
ilblackdragon merged 3 commits into
mainfrom
agent/default-cargo-run-serves-webui
Jul 24, 2026
Merged

ilblackdragon merged 3 commits into
mainfrom
agent/default-cargo-run-serves-webui

Conversation

@ilblackdragon

Copy link
Copy Markdown
Member

Summary

  • Make workspace-root cargo run select the shipping Reborn CLI package instead of the root integration-test package.
  • Make no-subcommand ironclaw default to serve, preserving the existing fail-closed WebUI auth checks.
  • Add a WebUI build-script fallback to pinned pnpm@11.7.0 through npm exec when corepack is not on PATH, and document it.
  • Add smoke coverage for the workspace default target and default serve command path.

Change Type

  • Bug fix
  • New feature
  • Refactor
  • Documentation
  • CI/Infrastructure
  • Security
  • Dependencies

Linked Issue

None.

Validation

  • cargo fmt --all -- --check
  • cargo clippy --all --benches --tests --examples --all-features -- -D warnings
  • cargo build
  • Relevant tests pass: cargo test -p ironclaw --test smoke workspace_default_cargo_run_targets_reborn_cli; cargo test -p ironclaw --test smoke no_subcommand_defaults_to_serve_command
  • cargo test --features integration if database-backed or integration behavior changed
  • Manual testing: cargo run -- --help; no-arg cargo run builds and reaches the default serve path, then fails closed on missing WebUI token as expected.
  • If a coding agent was used and supports it, review-pr or pr-shepherd --fix was run before requesting review

Test Strategy

User behavior:
Root cargo run should build and run the Reborn ironclaw binary. With no command, ironclaw should behave like ironclaw serve, using the existing WebUI auth setup and fail-closed checks.

Risk areas:

  • Model behavior
  • Browser
  • Side effect
  • Persistence
  • Security or permissions
  • External provider
  • Cross-component behavior

Tests added or updated:

  • Unit or contract: workspace_default_cargo_run_targets_reborn_cli; no_subcommand_defaults_to_serve_command; updated traces parser test for optional top-level subcommand.
  • Reborn integration: Not applicable: this changes CLI/package selection and frontend build tooling, not a whole-turn product workflow.
  • Recorded fixture: Not applicable: no model behavior or request shape changed.
  • Browser E2E: Not applicable: no browser-visible UI behavior changed.
  • Backend or runtime: cargo run -- --help; no-arg cargo run manual runtime-entry check; crate clippy for ironclaw and ironclaw_webui.
  • Live canary: Not applicable: no live provider behavior changed.

What the tests prove:
The workspace manifest selects crates/ironclaw_reborn_cli for default Cargo commands, no-subcommand CLI parsing dispatches to serve, and the WebUI build script can complete without corepack when npm is available.

Commands run:

  • cargo fmt -p ironclaw_webui -p ironclaw
  • cargo fmt --all -- --check
  • cargo run -- --help
  • cargo run with a temporary IRONCLAW_REBORN_HOME and no WebUI token, expecting fail-closed auth error
  • cargo clippy -p ironclaw_webui --all-targets -- -D warnings
  • cargo clippy -p ironclaw --all-targets -- -D warnings
  • cargo test -p ironclaw --test smoke workspace_default_cargo_run_targets_reborn_cli
  • cargo test -p ironclaw --test smoke no_subcommand_defaults_to_serve_command
  • git diff --check
  • Pre-push hook: fmt, clippy correctness, include_str/Docker COPY coverage, hermetic env mutation. The first push exposed a local hook issue in its test phase (no library targets found in package ironclaw); the branch was pushed with IRONCLAW_PREPUSH_TEST=0 after the focused tests above passed.

Security Impact

No authentication or authorization behavior is weakened. The default command now enters the existing serve path, which still fails closed if neither IRONCLAW_REBORN_WEBUI_TOKEN nor the onboarded token file exists. The npm fallback fetches the already-pinned pnpm package version when Corepack is unavailable.

Reborn Trust-Boundary Checklist

  • Public policy/evidence/trust-bearing types: who can construct them? N/A: no trust-bearing types changed.
  • Untrusted content enters prompts only through an envelope/escaping primitive. N/A: no prompt content path changed.
  • Hashes declare purpose; trust/binding/authenticity uses SHA-256/BLAKE3 or separate authenticity check. N/A: no hash behavior changed.
  • New/changed status, exit, policy, runtime, or error variants: downstream match sites audited. Command/output: no variants changed; top-level CLI parser match updated, traces parser test updated.
  • Security/durability serde(default) fields fail closed or have migration tests. N/A: no serde fields changed.
  • Queues/maps/buffers/counters have bounds and overflow-safe arithmetic. N/A: no queues/maps/buffers/counters changed.
  • Driver/operator-visible errors have stable class semantics (Transient, Permanent, Misconfigured, PolicyDenied or equivalent). N/A: no runtime error taxonomy changed; existing serve missing-token error is preserved.
  • Sandbox/native/host names accurately describe trust boundary. N/A: no sandbox/native/host naming changed.

Database Impact

None.

Blast Radius

Touches workspace Cargo default package selection, Reborn CLI top-level command parsing, WebUI build tooling, and CLI smoke tests. Possible breakage would be local cargo run workflows expecting the old no-bin error or a required subcommand; those workflows should now use explicit subcommands when needed.

Rollback Plan

Revert the single commit to restore the previous workspace default behavior, required CLI subcommand parsing, and Corepack-only WebUI frontend build.

Review Follow-Through

Reviewer judgment requested on whether defaulting no-argument ironclaw to serve should remain the canonical source-development behavior, or whether the default should be revisited before marking the PR ready.


Review track: B (feature/maintainer-requested refactor)

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@ironloopai

ironloopai Bot commented Jul 24, 2026 •

Copy link
Copy Markdown
Contributor

🔎 IronLoop Review Status

Head: f0d93897f6e985b0e4024fde83da5c39a6dbad00
Result: One or more review results were superseded by a newer PR head.
Next: Run @ironloopai review on the latest PR head.
Updated: 2026-07-24T21:56:46.226Z

Current reviewers:

Reviewer State Verdict Findings Last update
ironloop/common-reviewer (reviewer) Superseded N/A N/A 2026-07-24T21:53:14.866Z
Reviewer summaries
Reviewer Detail
ironloop/common-reviewer (reviewer) Superseded by a newer PR head. New head: 81149b6. Previous verdict: Changes requested.
Recent activity
Time Reviewer State Detail
2026-07-24T21:21:35.126Z ironloop/common-reviewer (reviewer) Queued Accepted review request for head 66b151e.
2026-07-24T21:21:35.126Z ironloop/common-reviewer (reviewer) Queued Waiting for this reviewer lane to become available.
2026-07-24T21:21:35.148Z ironloop/common-reviewer (reviewer) Started Reviewer worker started.
2026-07-24T21:21:38.521Z ironloop/common-reviewer (reviewer) Workspace ready Prepared isolated checkout (merge_ref) at 7b6b66c.
2026-07-24T21:23:02.944Z ironloop/common-reviewer (reviewer) Deduplicated Repeated trigger reused the existing reviewer job.
2026-07-24T21:25:23.369Z ironloop/common-reviewer (reviewer) Result captured Changes requested; 1 blocking finding.
2026-07-24T21:25:23.369Z ironloop/common-reviewer (reviewer) Completed Review completed and terminal status was persisted.
2026-07-24T21:53:14.866Z ironloop/common-reviewer (reviewer) Superseded A newer PR head replaced this review (81149b6).
Available commands
  • @ironloopai help
  • @ironloopai agents
  • @ironloopai review
  • @ironloopai review --agent <agent>
Run metadata

Admission: webhook accepted the request and IronLoop persisted reviewer state before this projection.

@coderabbitai

coderabbitai Bot commented Jul 24, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 316dca50-cdc6-46ae-a239-27f5e480b7d4

📥 Commits

Reviewing files that changed from the base of the PR and between 81149b6 and f0d9389.

📒 Files selected for processing (1)
  • scripts/ci/quality_gate.sh

📝 Walkthrough

Summary by CodeRabbit

  • New Features
    • Running the CLI without a subcommand now starts the server by default (and subcommand handling behaves predictably).
  • Bug Fixes
    • Web UI frontend builds are more resilient when Corepack isn’t available, with clearer fallback behavior and improved error guidance.
  • Documentation
    • Updated frontend build documentation to explain embedding and the Corepack/pnpm fallback.
  • Tests
    • Added a smoke test to confirm the CLI defaults to the server when no subcommand is provided.
  • Chores
    • CI quality gates and integration test execution now target the intended workspace/package scope for consistency.

Walkthrough

The workspace now defaults to the Reborn CLI. Missing CLI subcommands resolve to serve, WebUI builds fall back to pinned pnpm through npm exec, and CI commands explicitly target workspace or Reborn integration-test packages.

Changes

Reborn CLI dispatch

Layer / File(s) Summary
Default serve parsing and execution
Cargo.toml, crates/ironclaw_reborn_cli/src/cli.rs, crates/ironclaw_reborn_cli/src/commands/serve.rs
The workspace defaults to the Reborn CLI, and ordinary invocations without a subcommand parse and execute Command::Serve.
CLI validation and smoke coverage
crates/ironclaw_reborn_cli/src/commands/traces/tests.rs, crates/ironclaw_reborn_cli/src/cli.rs, crates/ironclaw_reborn_cli/tests/smoke.rs
Command extraction handles the optional subcommand, while unit and smoke tests cover default dispatch and argument validation.

WebUI build fallback

Layer / File(s) Summary
pnpm execution fallback
crates/ironclaw_webui/build.rs, crates/ironclaw_webui/frontend/README.md
Corepack pnpm not-found errors retry through npm exec with pinned pnpm, with combined failure reporting and documented behavior.

Workspace and CI targeting

Layer / File(s) Summary
Explicit Cargo test selection
.github/workflows/reborn-tests.yml, scripts/ci/*
Quality gates run workspace tests, while Reborn fixture, group, and partition tests explicitly target ironclaw_reborn_integration_tests.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant RebornCLI
  participant Clap
  participant Serve
  User->>RebornCLI: invoke without subcommand
  RebornCLI->>Clap: inject and parse serve
  Clap-->>RebornCLI: return Command::Serve
  RebornCLI->>Serve: execute serve command
Loading
sequenceDiagram
  participant BuildScript
  participant Corepack
  participant NpmExec
  BuildScript->>Corepack: run pnpm
  alt Corepack unavailable
    BuildScript->>NpmExec: run pinned pnpm package
    NpmExec-->>BuildScript: return build result
  else Corepack available
    Corepack-->>BuildScript: return build result
  end
Loading

Possibly related PRs

Suggested reviewers: think-in-universe

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly describes the main change: defaulting cargo run to the WebUI serve path.
Description check ✅ Passed The PR description follows the template and fills the required sections with concrete validation and test strategy details.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

❤️ Share

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

@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-6663 July 24, 2026 21:21 Destroyed
@github-actions github-actions Bot added scope: docs Documentation scope: dependencies Dependency updates size: M 50-199 changed lines risk: medium Business logic, config, or moderate-risk modules contributor: core 20+ merged PRs labels Jul 24, 2026
@ilblackdragon
ilblackdragon marked this pull request as ready for review July 24, 2026 21:23
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@ironloopai ironloopai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

❌ IronLoop Review: reviewer

Review at a glance

Verdict Blocking Notes Inline Head
❌ Changes requested 1 0 1 66b151e25326

Head: 66b151e25326666ac2112c01cd41019c88ab985a
Next: Fix the blocking findings, push the PR branch, then re-run this reviewer.

Run details

Status: Current
Needs human: no
Needs validation: no

Summary

default-members changes all unqualified workspace Cargo commands, breaking existing root integration-test and pre-push commands rather than only changing cargo run.

Findings

Blocking: 1 / Notes: 0

Blocking findings

1. ❌ [MEDIUM] Preserve root integration-test command selection

Location: Cargo.toml:3
default-members applies to cargo test, cargo check, and cargo clippy too, not only cargo run. The default package becomes ironclaw, which has no library and does not own the root reborn_* test targets. Consequently the installed pre-push hook's cargo test --locked --lib fails (as noted in the PR), while CI's scripts/ci/run-reborn-root-partition.sh and cargo test --test reborn_qa_recorded_behavior select the CLI package and cannot find their root-package tests. Keep those callers explicitly targeting ironclaw_reborn_integration_tests (or use a Cargo configuration that preserves their selection) before changing the workspace default.

Developer follow-up

After fixing this feedback:

  1. Push the fix to this PR branch.
  2. Re-run this reviewer with @ironloopai review --agent reviewer if you only changed this reviewer's findings.
  3. Re-run all reviewers with @ironloopai review when the fix may affect multiple areas.

Comment thread Cargo.toml
@@ -1,5 +1,6 @@
[workspace]
members = [".", "crates/ironclaw_common", "crates/ironclaw_observability", "crates/ironclaw_host_api", "crates/ironclaw_host_ingress", "crates/ironclaw_filesystem", "crates/ironclaw_attachments", "crates/ironclaw_extractors", "crates/ironclaw_memory", "crates/ironclaw_memory_native", "crates/ironclaw_memory_mem0", "crates/ironclaw_events", "crates/ironclaw_event_projections", "crates/ironclaw_event_streams", "crates/ironclaw_reborn_event_store", "crates/ironclaw_extensions", "crates/ironclaw_extension_host", "crates/ironclaw_processes", "crates/ironclaw_dispatcher", "crates/ironclaw_scripts", "crates/ironclaw_process_sandbox", "crates/ironclaw_mcp", "crates/ironclaw_wasm", "crates/ironclaw_wasm_limiter", "crates/ironclaw_capabilities", "crates/ironclaw_secrets", "crates/ironclaw_network", "crates/ironclaw_host_runtime", "crates/ironclaw_runtime_policy", "crates/ironclaw_authorization", "crates/ironclaw_run_state", "crates/ironclaw_approvals", "crates/ironclaw_resources", "crates/ironclaw_auth", "crates/ironclaw_trust", "crates/ironclaw_turns", "crates/ironclaw_agent_loop", "crates/ironclaw_threads", "crates/ironclaw_prompt_envelope", "crates/ironclaw_hooks", "crates/ironclaw_loop_host", "crates/ironclaw_runner", "crates/ironclaw_reborn_config", "crates/ironclaw_operator", "crates/ironclaw_reborn_composition", "crates/ironclaw_reborn_identity", "crates/ironclaw_first_party_extensions", "crates/ironclaw_reborn_cli", "crates/ironclaw_reborn_traces", "crates/ironclaw_webui", "crates/ironclaw_reborn_openai_compat", "crates/ironclaw_conversations", "crates/ironclaw_product", "crates/ironclaw_telegram_extension", "crates/ironclaw_telegram_v2_adapter", "crates/ironclaw_slack_extension", "crates/ironclaw_outbound", "crates/ironclaw_triggers", "crates/ironclaw_projects", "crates/ironclaw_architecture", "crates/ironclaw_safety", "crates/ironclaw_skills", "crates/ironclaw_llm", "crates/ironclaw_embeddings", "tools/ironclaw_stress"]
default-members = ["crates/ironclaw_reborn_cli"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

default-members applies to every package-unspecified Cargo command, not just cargo run. This switches cargo test --locked --lib to the bin-only CLI and makes root reborn_* test commands in CI select a package that does not own those targets. Please preserve or explicitly set the root integration-test package for those callers.

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

Actionable comments posted: 2

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

Inline comments:
In `@Cargo.toml`:
- Line 3: Remove the workspace-level default-members setting from Cargo.toml so
root cargo build, test, check, and clippy commands continue targeting the full
workspace. If CLI-only execution is required, replace it with a scope-limited
run alias or equivalent metadata rather than changing workspace defaults.

In `@crates/ironclaw_reborn_cli/src/cli.rs`:
- Around line 8-13: Update the CLI definitions and run() command-selection flow
around Cli, ServeCommand, and Command::Serve so serve-only flags are not
flattened onto the top-level parser. Consolidate those options under
Command::Serve or explicitly reject any top-level serve flags when another
subcommand is selected, returning an error instead of silently ignoring them.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

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

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: cc2f0396-377e-4cb1-9f5c-2ba031ae2ac1

📥 Commits

Reviewing files that changed from the base of the PR and between e074a39 and 66b151e.

📒 Files selected for processing (7)
  • Cargo.toml
  • crates/ironclaw_reborn_cli/src/cli.rs
  • crates/ironclaw_reborn_cli/src/commands/serve.rs
  • crates/ironclaw_reborn_cli/src/commands/traces/tests.rs
  • crates/ironclaw_reborn_cli/tests/smoke.rs
  • crates/ironclaw_webui/build.rs
  • crates/ironclaw_webui/frontend/README.md

Comment thread Cargo.toml
@@ -1,5 +1,6 @@
[workspace]
members = [".", "crates/ironclaw_common", "crates/ironclaw_observability", "crates/ironclaw_host_api", "crates/ironclaw_host_ingress", "crates/ironclaw_filesystem", "crates/ironclaw_attachments", "crates/ironclaw_extractors", "crates/ironclaw_memory", "crates/ironclaw_memory_native", "crates/ironclaw_memory_mem0", "crates/ironclaw_events", "crates/ironclaw_event_projections", "crates/ironclaw_event_streams", "crates/ironclaw_reborn_event_store", "crates/ironclaw_extensions", "crates/ironclaw_extension_host", "crates/ironclaw_processes", "crates/ironclaw_dispatcher", "crates/ironclaw_scripts", "crates/ironclaw_process_sandbox", "crates/ironclaw_mcp", "crates/ironclaw_wasm", "crates/ironclaw_wasm_limiter", "crates/ironclaw_capabilities", "crates/ironclaw_secrets", "crates/ironclaw_network", "crates/ironclaw_host_runtime", "crates/ironclaw_runtime_policy", "crates/ironclaw_authorization", "crates/ironclaw_run_state", "crates/ironclaw_approvals", "crates/ironclaw_resources", "crates/ironclaw_auth", "crates/ironclaw_trust", "crates/ironclaw_turns", "crates/ironclaw_agent_loop", "crates/ironclaw_threads", "crates/ironclaw_prompt_envelope", "crates/ironclaw_hooks", "crates/ironclaw_loop_host", "crates/ironclaw_runner", "crates/ironclaw_reborn_config", "crates/ironclaw_operator", "crates/ironclaw_reborn_composition", "crates/ironclaw_reborn_identity", "crates/ironclaw_first_party_extensions", "crates/ironclaw_reborn_cli", "crates/ironclaw_reborn_traces", "crates/ironclaw_webui", "crates/ironclaw_reborn_openai_compat", "crates/ironclaw_conversations", "crates/ironclaw_product", "crates/ironclaw_telegram_extension", "crates/ironclaw_telegram_v2_adapter", "crates/ironclaw_slack_extension", "crates/ironclaw_outbound", "crates/ironclaw_triggers", "crates/ironclaw_projects", "crates/ironclaw_architecture", "crates/ironclaw_safety", "crates/ironclaw_skills", "crates/ironclaw_llm", "crates/ironclaw_embeddings", "tools/ironclaw_stress"]
default-members = ["crates/ironclaw_reborn_cli"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== candidate files =="
git ls-files | rg '(^|/)(Cargo\.toml|CLAUDE\.md|AGENTS\.md|\.claude/.*rules.*|README\.md)$|\.cargo/config.toml$' | sed -n '1,200p'

echo
echo "== Cargo.toml relevant =="
if [ -f Cargo.toml ]; then
  cat -n Cargo.toml | sed -n '1,80p'
fi

echo
echo "== rule mentions =="
for f in CLAUDE.md AGENTS.md; do
  if [ -f "$f" ]; then
    echo "-- $f --"
    rg -n "workspace|workspace-wide|CLIP|Clippy|cargo clippy|default-members|validation|zero-warning|Reborn" "$f" || true
  fi
done
if [ -d .claude/rules ]; then
  for f in .claude/rules/*; do
    echo "-- $f --"
    rg -n "workspace|workspace-wide|CLIP|Clippy|cargo clippy|default-members|validation|zero-warning|Reborn" "$f" || true
  done
fi

echo
echo "== workspace member count and crate features summary =="
python3 - <<'PY'
import tomllib
from pathlib import Path
cargo = Path('Cargo.toml')
if not cargo.exists():
    raise SystemExit(1)
data = tomllib.loads(cargo.read_text())
ws=data.get('workspace',{})
print('members=', ws.get('members'))
print('default-members=', ws.get('default-members'))
print('package=', data.get('package',{}).get('name'))
PY

echo
echo "== deterministic cargo default-members selector probe if cargo/config available =="
if command -v cargo >/dev/null 2>&1; then
  tmp="$(mktemp -d)"
  mkdir -p "$tmp/proj" "$tmp/proj/a" "$tmp/proj/b"
  cat > "$tmp/proj/Cargo.toml" <<'EOF'
[workspace]
members = ["a", "b"]
default-members = ["a"]
EOF
  mkdir -p "$tmp/proj/a/src" "$tmp/proj/b/src"
  cat > "$tmp/proj/a/src/lib.rs" <<'EOF'
pub fn add(a: i32, b: i32) -> i32 { a + b }
EOF
  cat > "$tmp/proj/b/src/lib.rs" <<'EOF'
pub fn sub(x: i32, y: i32) -> i32 { x - y }
EOF
  mkdir -p "$tmp/proj/.cargo"
  echo 'cargo-default = true' > "$tmp/proj/.cargo/config.toml"
  (cd "$tmp/proj" && cargo metadata --format-version 1 --offline >/tmp/cargo_metadata_default.json)
  python3 - <<'PY'
import json
from pathlib import Path
data=json.loads(Path('/tmp/cargo_metadata_default.json').read_text())
print("workspace=.", data["workspace_root"])
print("packages=", sorted(p.get("name") for p in data["packages"]))
PY
else
  echo "cargo not available"
fi

Repository: nearai/ironclaw

Length of output: 24141


Disable default-members unless it is needed for a scoped run command.

default-members = ["crates/ironclaw_reborn_cli"] changes root commands such as cargo build, cargo test, cargo check, and cargo clippy to select only the CLI crate. CLAUDE.md/AGENTS.md and .claude/rules/review-discipline.md require the workspace-wide clippy command for Reborn work; keeping this setting creates a confusing root command that violates that workspace-wide validation invariant. Use a scope-limited run alias/metadata instead of making the whole workspace default to the CLI.

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

In `@Cargo.toml` at line 3, Remove the workspace-level default-members setting
from Cargo.toml so root cargo build, test, check, and clippy commands continue
targeting the full workspace. If CLI-only execution is required, replace it with
a scope-limited run alias or equivalent metadata rather than changing workspace
defaults.

Source: Coding guidelines

Comment thread crates/ironclaw_reborn_cli/src/cli.rs Outdated
@github-actions

github-actions Bot commented Jul 24, 2026 •

Copy link
Copy Markdown
Contributor

Coverage ratchet

Ratchet mode: ENFORCING

RATCHET PASS: global
  observed: 85.96% (313745 / 365002 lines)
  floor:    86.27% (tolerance 0.5pp -> effective floor 85.77%)
  denominator: 365002 lines now vs 354049 at floor capture (+10953 lines, +3.09%) — not a material change

⚠️ 2 Reborn crate(s) have 0 int-tier coverage (target: 0) — ironclaw_prompt_envelope, ironclaw_scripts

Reborn integration-tier coverage

Line coverage (Reborn crates): 85.96% — 313745 / 365002 lines

Per-crate breakdown (61 crates, lowest-covered first)
Crate Line % Covered / Total
ironclaw_prompt_envelope 0% 0 / 88
ironclaw_scripts 0% 0 / 345
ironclaw_host_ingress 42.5% 17 / 40
ironclaw_event_projections 43.71% 684 / 1565
ironclaw_observability 61.54% 16 / 26
ironclaw_telegram_v2_adapter 62.35% 631 / 1012
ironclaw_authorization 62.98% 609 / 967
ironclaw_dispatcher 64.75% 79 / 122
ironclaw_memory 70.15% 919 / 1310
ironclaw_trust 73.21% 664 / 907
ironclaw_filesystem 73.7% 4587 / 6224
ironclaw_wasm_limiter 74.6% 47 / 63
ironclaw_extractors 74.72% 538 / 720
ironclaw_capabilities 75.36% 2593 / 3441
ironclaw_mcp 76.2% 775 / 1017
ironclaw_projects 76.48% 400 / 523
ironclaw_reborn_cli 78.17% 10668 / 13647
ironclaw_telegram_extension 78.59% 962 / 1224
ironclaw_llm 78.73% 20989 / 26659
ironclaw_wasm 79.72% 735 / 922
ironclaw_process_sandbox 80.46% 671 / 834
ironclaw_memory_native 80.97% 3114 / 3846
ironclaw_auth 82.08% 6679 / 8137
ironclaw_first_party_extensions 82.38% 6682 / 8111
ironclaw_events 82.47% 1604 / 1945
ironclaw_operator 83.2% 5625 / 6761
ironclaw_processes 83.3% 933 / 1120
ironclaw_host_api 83.5% 8942 / 10709
ironclaw_secrets 83.79% 2548 / 3041
ironclaw_reborn_identity 83.8% 450 / 537
ironclaw_reborn_config 85.24% 2102 / 2466
ironclaw_common 85.53% 2252 / 2633
ironclaw_run_state 85.77% 458 / 534
ironclaw_triggers 85.92% 2783 / 3239
ironclaw_network 85.97% 913 / 1062
ironclaw_webui 86% 10791 / 12547
ironclaw_reborn_event_store 86.51% 1251 / 1446
ironclaw_hooks 86.58% 9930 / 11469
ironclaw_product 86.8% 21683 / 24981
ironclaw_extensions 87.2% 3678 / 4218
ironclaw_threads 87.24% 4853 / 5563
ironclaw_skills 87.77% 4480 / 5104
ironclaw_turns 88.06% 14312 / 16253
ironclaw_reborn_traces 88.13% 11986 / 13600
ironclaw_reborn_composition 88.16% 43849 / 49740
ironclaw_slack_extension 88.47% 1934 / 2186
ironclaw_host_runtime 88.57% 18997 / 21448
ironclaw_extension_host 89.12% 3745 / 4202
ironclaw_reborn_openai_compat 89.32% 3780 / 4232
ironclaw_resources 90.84% 4474 / 4925
ironclaw_runner 90.87% 17192 / 18920
ironclaw_conversations 91.1% 3202 / 3515
ironclaw_approvals 91.12% 1682 / 1846
ironclaw_event_streams 91.24% 1063 / 1165
ironclaw_loop_host 91.93% 16508 / 17958
ironclaw_attachments 93.06% 630 / 677
ironclaw_outbound 94.43% 3987 / 4222
ironclaw_agent_loop 94.88% 9837 / 10368
ironclaw_safety 95.15% 3749 / 3940
ironclaw_first_party_extension_ports 95.62% 3672 / 3840
ironclaw_runtime_policy 96.55% 811 / 840

This table itself is informational and never gates the PR on its own — not the percentage, not the per-crate holes, not the 0-coverage callout. A separate coverage ratchet (dry-run until enforce=true; see tests/integration/coverage-floor.toml) can fail the build on specific configured floors.

Exemptions (3 entry/entries excluded from the accounting above)
Module / Crate Reason Issue
crate: ironclaw_embeddings v1-only: consumed only by root ironclaw (src/app.rs, src/tools/builtin/memory.rs, src/workspace/mod.rs, src/config/{mod,embeddings}.rs); no crates/* dependents. Covered by "Tests (Legacy)". #5657
crate: ironclaw_gateway v1-only: consumed only by root ironclaw (src/channels/web/platform/static_files.rs, src/channels/web/handlers/frontend.rs); no crates/* dependents. Covered by "Tests (Legacy)". #5657
crate: ironclaw_tui v1-only: consumed only by root ironclaw (src/main.rs, src/channels/tui.rs); no crates/* dependents. Crate's own doc comment confirms it bridges INTO v1, not Reborn. Covered by "Tests (Legacy)". #5657

@railway-app

railway-app Bot commented Jul 24, 2026

Copy link
Copy Markdown

🚅 Deployed to the ironclaw-pr-6663 environment in ironclaw-ci-preview

Service Status Web Updated (UTC)
ironclaw ✅ Success (View Logs) Web Jul 24, 2026 at 9:31 pm

@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-6663 July 24, 2026 21:53 Destroyed
@github-actions github-actions Bot added the scope: ci CI/CD workflows label Jul 24, 2026
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-6663 July 24, 2026 21:56 Destroyed
@ilblackdragon
ilblackdragon merged commit cb34f37 into main Jul 24, 2026
64 checks passed
@ilblackdragon
ilblackdragon deleted the agent/default-cargo-run-serves-webui branch July 24, 2026 22:16

This branch was successfully deployed

No deployments
ironclaw-ci-preview / ironclaw-pr-6663 — f0d93897 Deployed Jul 24, 2026 by railway-app[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contributor: core 20+ merged PRs risk: medium Business logic, config, or moderate-risk modules scope: ci CI/CD workflows scope: dependencies Dependency updates scope: docs Documentation size: M 50-199 changed lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant