Skip to content

W2 endorsed Reborn crate folds - #5874

Merged
serrrfirat merged 9 commits into
mainfrom
codex/reborn-w2-endorsed-folds
Jul 9, 2026
Merged

serrrfirat merged 9 commits into
mainfrom
codex/reborn-w2-endorsed-folds

Conversation

@serrrfirat

@serrrfirat serrrfirat commented Jul 9, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

This is the combined W2 endorsed-folds PR for the remaining W2 crate-count reductions. It supersedes the individual draft PRs #5864, #5865, #5866, #5869, and #5870.

Note: #5868 (ironclaw_reborn_openai_compat_storage cleanup) already merged into the W0 base branch, so this PR is rebased on top of it rather than duplicating that diff.

This PR:

  • folds ironclaw_wasm_sandbox_core into ironclaw_wasm
  • folds ironclaw_oauth into ironclaw_auth
  • folds ironclaw_skill_learning into ironclaw_skills
  • cleans remaining references for the already-folded ironclaw_product_workflow_storage boundary
  • records the W2 decision to keep ironclaw_projects separate for now, and only reconsider ironclaw_product_workflow as a future consumer-side target, never composition
  • removes the stale coverage exemption for the deleted ironclaw_oauth crate

Why this shape

We want fewer crates, but not a broad collapse. W0 added the mechanical guardrail first: every Reborn workspace crate must declare a layer and obey the allowlisted layer matrix. That means these W2 folds can remove low-value package boundaries without letting product/app/composition concerns drift downward into substrates.

Combining the remaining W2 work into one PR makes review easier than separate PRs because the reviewer can validate the net package graph once:

  • the workspace package set loses the folded crates
  • public imports point at the owning crates
  • architecture tests pin the folded boundaries that still matter
  • historical docs remain historical, while live crate/docs references point at the new homes

The commits are intentionally separated by fold/decision so reviewers can still inspect each move independently inside this one PR.

Reviewer guide

  • Fold WASM sandbox core into WASM runtime: pure domain-free WASM kernel code moves under ironclaw_wasm::wasm_sandbox_core; product adapter code remains outside ironclaw_wasm.
  • Fold OAuth loopback transport into auth: v1 loopback OAuth callback transport moves under ironclaw_auth::loopback_oauth; Reborn OAuth/product auth ownership remains in ironclaw_auth.
  • Fold skill learning into skills: extraction/refinement logic and prompts move under ironclaw_skills::learning; composition imports the owning skills crate directly.
  • Clean up product workflow storage fold references: durable ledger storage docs/tests now point at ironclaw_product_workflow instead of the retired storage crate.
  • Document projects crate W2 decision: keeps ironclaw_projects as a substrate entity/repository crate in W2.
  • Remove folded OAuth crate coverage exemption: deletes the stale coverage exemption for a crate that no longer exists.

Validation

  • cargo metadata --format-version 1 --no-deps | jq '[.packages[] | select(.name=="ironclaw_wasm_sandbox_core" or .name=="ironclaw_oauth" or .name=="ironclaw_skill_learning" or .name=="ironclaw_reborn_openai_compat_storage" or .name=="ironclaw_product_workflow_storage")] | map(.name)' -> []
  • cargo test -p ironclaw_auth -p ironclaw_skills -p ironclaw_wasm -p ironclaw_wasm_product_adapters -p ironclaw_projects
  • cargo test -p ironclaw_reborn_openai_compat -p ironclaw_architecture
  • cargo check -p ironclaw_reborn_composition --features root-llm-provider
    • passed with existing warnings in ironclaw_reborn dead-code helpers and one ironclaw_reborn_composition unused import
  • cargo test -p ironclaw_product_workflow --features storage --test durable_scoped_ledger_contract
    • passed 11 tests, with the same existing composition unused-import warning
  • cargo fmt --check
  • git diff --check origin/codex/reborn-layer-allowlist-w0-main...HEAD

serrrfirat and others added 2 commits July 9, 2026 12:39
* Clean up OpenAI compat storage fold references

* Update crates/ironclaw_reborn_openai_compat/tests/ref_store_contract.rs

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
@ironloopai

ironloopai Bot commented Jul 9, 2026 •

Copy link
Copy Markdown
Contributor

🔎 IronLoop Review Status

Head: e8a387282ff1835da03244a096b887f53f3ca340
Result: No reviewer jobs are scheduled yet.
Next: Run @ironloopai review to start reviewers.
Updated: 2026-07-09T11:50:30.379Z

Current reviewers:

Reviewer State Verdict Findings Last update
none Queued N/A No reviewer jobs scheduled yet. N/A
Reviewer summaries
Reviewer Detail
none No reviewer jobs scheduled yet.
Recent activity
Time Reviewer State Detail
N/A N/A Waiting No progress events recorded yet.
Available commands
  • @ironloopai help
  • @ironloopai agents
  • @ironloopai review
  • @ironloopai review --agent <agent>
  • @ironloopai status
Run metadata

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

@coderabbitai

coderabbitai Bot commented Jul 9, 2026 •

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

  • Refactor

    • Consolidated legacy OAuth and WASM sandbox functionality into the main auth/runtime modules.
    • Removed several deprecated workspace crates and updated dependencies accordingly.
    • Simplified skill-learning integration by routing it through the shared skills module.
  • Documentation

    • Updated architecture and guidance docs to reflect the new module layout and legacy boundaries.
    • Clarified which components are legacy-only and which remain part of the active product stack.

Walkthrough

This PR removes three standalone crates (ironclaw_oauth, ironclaw_skill_learning, ironclaw_wasm_sandbox_core) from the workspace, folding their code into ironclaw_auth::loopback_oauth, ironclaw_skills::learning, and ironclaw_wasm::wasm_sandbox_core respectively. Adds package.metadata.ironclaw layer tags, updates dependency-boundary tests, coverage exemptions, and crate-map/guardrail documentation to match the folded layout.

Changes

Crate Consolidation and Layer Metadata

Layer / File(s) Summary
Workspace membership and layer tagging
Cargo.toml, crates/ironclaw_auth/Cargo.toml, crates/ironclaw_reborn_composition/Cargo.toml
Removes three crate paths from workspace members, switches ironclaw_oauth workspace dependency to ironclaw_auth, and adds [package.metadata.ironclaw] layer tags to select crates.
ironclaw_oauth folded into ironclaw_auth
crates/ironclaw_auth/src/lib.rs, .../loopback_oauth.rs, .../oauth.rs, crates/ironclaw_auth/AGENTS.md, crates/ironclaw_auth/CLAUDE.md, crates/ironclaw_oauth/*, crates/Architecture.md, src/auth/oauth.rs, src/NETWORK_SECURITY.md, tests/integration/coverage-exemptions.toml
Adds a public loopback_oauth module in ironclaw_auth, re-exports its callback/listener APIs from oauth, deletes the old ironclaw_oauth crate files, and repoints doc/security/coverage references to ironclaw_auth.
ironclaw_skill_learning folded into ironclaw_skills::learning
crates/ironclaw_skills/src/lib.rs, .../learning.rs, crates/ironclaw_skills/AGENTS.md, crates/ironclaw_skill_learning/Cargo.toml, crates/ironclaw_reborn_composition/src/extension_host/skill_learning.rs, .../runtime.rs, docs/reborn/engine-v2-to-reborn-parity.md
Adds a public learning module to ironclaw_skills, deletes the old crate manifest, repoints composition imports/types to the new module, and updates parity docs.
ironclaw_wasm_sandbox_core folded into ironclaw_wasm
crates/ironclaw_wasm/src/lib.rs, .../config.rs, .../runtime.rs, .../types.rs, crates/ironclaw_wasm/Cargo.toml, crates/ironclaw_wasm/AGENTS.md, crates/ironclaw_wasm/CLAUDE.md, crates/ironclaw_wasm_limiter/src/lib.rs, crates/ironclaw_wasm_product_adapters/*, crates/ironclaw_wasm/tests/*, crates/ironclaw_wasm_sandbox_core/*
Adds a wasm_sandbox_core module inside ironclaw_wasm, repoints SandboxLimits/SandboxStoreCore imports across ironclaw_wasm and ironclaw_wasm_product_adapters, deletes the old crate files, and updates guardrail docs.
Dependency-boundary test updates
crates/ironclaw_architecture/tests/reborn_dependency_boundaries.rs
Replaces the standalone-crate boundary test with a module-domain check on wasm_sandbox_core, updates expected dependency lists for ironclaw_wasm_product_adapters, and removes ironclaw_wasm from its forbidden-dependency list.
Storage adapter folding docs
crates/ironclaw_filesystem/CLAUDE.md, crates/ironclaw_product_workflow/Cargo.toml, .../lib.rs, .../tests/durable_scoped_ledger_contract.rs, crates/AGENTS.md, crates/README.md
Rewords comments/docs to reflect feature-gated storage adapters living directly in ironclaw_product_workflow and ironclaw_reborn_openai_compat instead of the removed storage crates.
Crate map and architecture docs
crates/AGENTS.md, crates/ironclaw_projects/CLAUDE.md, docs/plans/2026-07-02-reborn-internal-module-refactor.md
Removes oauth/skill_learning routing entries from the crate map and marks ironclaw_projects as kept standalone for W2.

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

Sequence Diagram(s)

sequenceDiagram
  participant SrcAuthOauth as src/auth/oauth.rs
  participant IronclawAuthOauth as ironclaw_auth::oauth
  participant LoopbackOauth as ironclaw_auth::loopback_oauth
  SrcAuthOauth->>IronclawAuthOauth: pub use re-export
  IronclawAuthOauth->>LoopbackOauth: pub use bind_callback_listener, wait_for_callback
  LoopbackOauth-->>IronclawAuthOauth: OAUTH_CALLBACK_PORT, OAuthCallbackError
Loading

Possibly related issues

Possibly related PRs

  • nearai/ironclaw#5015: Both PRs modify crates/ironclaw_projects/CLAUDE.md guardrails.
  • nearai/ironclaw#5567: Both PRs shift SandboxLimits import paths in ironclaw_wasm between ironclaw_wasm_sandbox_core and the folded ironclaw_wasm::wasm_sandbox_core.
  • nearai/ironclaw#5569: Both PRs revolve around retiring crates/ironclaw_oauth and folding it into ironclaw_auth.
🚥 Pre-merge checks | ✅ 3 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The core summary and validation are present, but the template is missing required sections like Change Type, Linked Issue, Security Impact, and the trust-boundary checklist. Add the missing template sections with concrete entries for change type, linked issue, security impact, trust-boundary, database impact, rollback, and review track.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed It clearly summarizes the combined W2 crate-fold change set, though it does not use Conventional Commits formatting.
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-5874 July 9, 2026 11:37 Destroyed
@github-actions github-actions Bot added scope: docs Documentation scope: dependencies Dependency updates size: L 200-499 changed lines risk: medium Business logic, config, or moderate-risk modules labels Jul 9, 2026
@github-actions github-actions Bot added the contributor: core 20+ merged PRs label Jul 9, 2026

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request refactors the workspace by folding several standalone crates into existing ones to simplify the crate structure. Specifically, ironclaw_oauth is folded into ironclaw_auth as a legacy loopback transport, ironclaw_skill_learning is integrated into ironclaw_skills::learning, and ironclaw_wasm_sandbox_core is merged into ironclaw_wasm::wasm_sandbox_core. Additionally, ironclaw_projects is retained as a standalone substrate crate. Feedback on the changes suggests correcting a historical reference in the ironclaw_wasm_limiter documentation and refining the dependency boundary tests to ignore comments when checking for forbidden imports to prevent false positives.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

//! enforce identical limits; centralizing the impl prevents drift and
//! makes the dependency edge visible to `cargo check`, `cargo doc`, and
//! architecture-linting tests. `ironclaw_wasm_sandbox_core` previously kept a
//! architecture-linting tests. `ironclaw_wasm` previously kept a

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.

medium

The comment states that ironclaw_wasm previously kept a verbatim copy of the limiter. However, it was actually the folded ironclaw_wasm_sandbox_core (now ironclaw_wasm::wasm_sandbox_core) that kept the verbatim copy. To maintain historical accuracy and clarity, this should refer to ironclaw_wasm::wasm_sandbox_core instead of ironclaw_wasm.

Suggested change
//! architecture-linting tests. `ironclaw_wasm` previously kept a
//! architecture-linting tests. `ironclaw_wasm::wasm_sandbox_core` previously kept a

Comment on lines +1129 to +1145
let source = std::fs::read_to_string(&module).expect("WASM sandbox core module is readable");
for forbidden in [
"ironclaw_product",
"ironclaw_dispatcher",
"ironclaw_extensions",
"ironclaw_filesystem",
"ironclaw_network",
"ironclaw_secrets",
"ironclaw_host_runtime",
"ironclaw_reborn_composition",
] {
assert!(
!source.contains(forbidden),
"folded WASM sandbox core module must stay independent of product/runtime/app crates; \
unexpected reference to `{forbidden}`"
);
}

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.

medium

The substring check source.contains(forbidden) runs against the entire raw source file, including comments. This means any explanatory comments or documentation mentioning these forbidden crates (e.g., // This module must not depend on ironclaw_product_adapters) will trigger a test failure. To prevent false positives from documentation or comments, consider naively filtering out comment-only lines before performing the check.

    let source = std::fs::read_to_string(&module).expect("WASM sandbox core module is readable");
    let clean_source: String = source
        .lines()
        .filter(|line| !line.trim().starts_with("//"))
        .collect::<Vec<_>>()
        .join("\n");
    for forbidden in [
        "ironclaw_product",
        "ironclaw_dispatcher",
        "ironclaw_extensions",
        "ironclaw_filesystem",
        "ironclaw_network",
        "ironclaw_secrets",
        "ironclaw_host_runtime",
        "ironclaw_reborn_composition",
    ] {
        assert!(
            !clean_source.contains(forbidden),
            "folded WASM sandbox core module must stay independent of product/runtime/app crates; \
             unexpected reference to `{forbidden}`"
        );
    }

@serrrfirat
serrrfirat force-pushed the codex/reborn-w2-endorsed-folds branch from e2916be to e8a3872 Compare July 9, 2026 11:50
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5874 July 9, 2026 11:50 Destroyed
@railway-app

railway-app Bot commented Jul 9, 2026 •

Copy link
Copy Markdown

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

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

Base automatically changed from codex/reborn-layer-allowlist-w0-main to main July 9, 2026 14:51
@serrrfirat
serrrfirat marked this pull request as ready for review July 9, 2026 14:56
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5874 July 9, 2026 15:06 Destroyed

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

Caution

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

⚠️ Outside diff range comments (1)
crates/ironclaw_architecture/tests/reborn_dependency_boundaries.rs (1)

124-157: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider merging the two dependency-iteration loops.

Both loops iterate the same workspace_dependency_names(package).filter(|dep| is_normal_dependency(dep)) iterator. The first checks layer-matrix violations (plus the ironclaw_agent_loop special rule); the second checks legacy-layer dependencies. Merging them into a single pass would avoid redundant iteration and make the relationship between the two checks clearer.

This is a test file so the performance impact is negligible, but the duplication is a readability smell that will grow if a third cross-cutting check is added later.

🤖 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 `@crates/ironclaw_architecture/tests/reborn_dependency_boundaries.rs` around
lines 124 - 157, The dependency validation in reborn_dependency_boundaries.rs
iterates over workspace_dependency_names(package).filter(|dep|
is_normal_dependency(dep)) twice, which duplicates the same traversal. Merge the
checks in the two loops into a single pass and keep both the ironclaw_agent_loop
contracts-layer rule and the legacy-layer dependency rule in that combined flow.
Use the existing helper symbols layer_matrix_exception, used_exceptions, and
violations to preserve current behavior while making the cross-cutting checks
easier to follow.
🤖 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.

Outside diff comments:
In `@crates/ironclaw_architecture/tests/reborn_dependency_boundaries.rs`:
- Around line 124-157: The dependency validation in
reborn_dependency_boundaries.rs iterates over
workspace_dependency_names(package).filter(|dep| is_normal_dependency(dep))
twice, which duplicates the same traversal. Merge the checks in the two loops
into a single pass and keep both the ironclaw_agent_loop contracts-layer rule
and the legacy-layer dependency rule in that combined flow. Use the existing
helper symbols layer_matrix_exception, used_exceptions, and violations to
preserve current behavior while making the cross-cutting checks easier to
follow.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 188de88e-839d-4dac-be20-ef6b74dd2890

📥 Commits

Reviewing files that changed from the base of the PR and between e8a3872 and f3a38dc.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock, !**/Cargo.lock
📒 Files selected for processing (1)
  • crates/ironclaw_architecture/tests/reborn_dependency_boundaries.rs

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Coverage ratchet

Ratchet mode: ENFORCING

RATCHET PASS: global
  observed: 85.14% (284130 / 333732 lines)
  floor:    85.3% (tolerance 0.5pp -> effective floor 84.8%)
  denominator: 333732 lines now vs 320188 at floor capture (+13544 lines, +4.23%) — 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.14% — 284130 / 333732 lines

Per-crate breakdown (63 crates, lowest-covered first)
Crate Line % Covered / Total
ironclaw_prompt_envelope 0% 0 / 88
ironclaw_scripts 0% 0 / 347
ironclaw_runtime_policy 33.2% 80 / 241
ironclaw_event_projections 43.34% 673 / 1553
ironclaw_run_state 52.36% 222 / 424
ironclaw_authorization 53.54% 461 / 861
ironclaw_triggers 59.79% 1740 / 2910
ironclaw_observability 61.54% 16 / 26
ironclaw_webui_v2 62.62% 2632 / 4203
ironclaw_reborn_cli 62.84% 3816 / 6073
ironclaw_mcp 63.15% 581 / 920
ironclaw_reborn_migration 67.01% 1172 / 1749
ironclaw_memory 67.12% 747 / 1113
ironclaw_dispatcher 67.15% 92 / 137
ironclaw_filesystem 67.44% 3815 / 5657
ironclaw_trust 72.88% 661 / 907
ironclaw_capabilities 74.08% 1658 / 2238
ironclaw_wasm_limiter 74.6% 47 / 63
ironclaw_reborn_event_store 74.61% 958 / 1284
ironclaw_extractors 74.72% 538 / 720
ironclaw_first_party_extensions 77.62% 5411 / 6971
ironclaw_llm 78.16% 20071 / 25680
ironclaw_product_context 78.57% 11 / 14
ironclaw_process_sandbox 80.65% 671 / 832
ironclaw_wasm_product_adapters 80.71% 1448 / 1794
ironclaw_reborn_openai_compat 80.95% 956 / 1181
ironclaw_memory_native 81.52% 3189 / 3912
ironclaw_secrets 82.7% 2791 / 3375
ironclaw_wasm 82.72% 996 / 1204
ironclaw_events 83.47% 1762 / 2111
ironclaw_processes 84.06% 965 / 1148
ironclaw_auth 84.08% 3068 / 3649
ironclaw_turns 84.26% 13127 / 15579
ironclaw_host_api 85.17% 2549 / 2993
ironclaw_product_workflow 85.34% 10748 / 12594
ironclaw_projects 85.92% 659 / 767
ironclaw_network 86.12% 670 / 778
ironclaw_common 86.46% 1514 / 1751
ironclaw_threads 86.62% 4132 / 4770
ironclaw_slack_v2_adapter 86.79% 1806 / 2081
ironclaw_reborn_config 86.98% 1730 / 1989
ironclaw_product_adapters 86.98% 3207 / 3687
ironclaw_reborn_identity 87.03% 557 / 640
ironclaw_skills 87.58% 4470 / 5104
ironclaw_hooks 87.84% 9916 / 11289
ironclaw_product_adapter_registry 87.96% 526 / 598
ironclaw_reborn_traces 88.21% 11931 / 13526
ironclaw_extensions 88.26% 2631 / 2981
ironclaw_reborn_composition 88.76% 70139 / 79019
ironclaw_host_runtime 88.95% 17523 / 19700
ironclaw_reborn 89.15% 15846 / 17774
ironclaw_conversations 90% 2924 / 3249
ironclaw_approvals 90.51% 1507 / 1665
ironclaw_event_streams 91.48% 1009 / 1103
ironclaw_loop_support 92.44% 14731 / 15936
ironclaw_attachments 93.06% 630 / 677
ironclaw_resources 93.09% 4637 / 4981
ironclaw_reborn_webui_ingress 93.19% 2217 / 2379
ironclaw_telegram_v2_adapter 93.87% 2452 / 2612
ironclaw_agent_loop 94.58% 8776 / 9279
ironclaw_safety 94.8% 3668 / 3869
ironclaw_first_party_extension_ports 95% 3094 / 3257
ironclaw_outbound 95.59% 3556 / 3720

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

This branch was successfully deployed

No deployments
ironclaw-ci-preview / ironclaw-pr-5874 — f3a38dcf Deployed Jul 9, 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: dependencies Dependency updates scope: docs Documentation size: L 200-499 changed lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant