Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude/commands/deslop-reborn.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ List the crates (`ls crates/`). A crate is a **candidate** when ALL hold:
**Selection bias:** prefer **smaller / leaf crates first** — they fit entirely in context, gate
cleanly, and merge independently. A crate whose `src` is **under ~2k lines** can and SHOULD be read in
full (§3). Clear the small, high-leverage crates before taking on the giants (e.g.
`ironclaw_reborn_composition`, `ironclaw_product_workflow`, `ironclaw_gateway`-scale surfaces need
`ironclaw_reborn_composition`, `ironclaw_product`, `ironclaw_gateway`-scale surfaces need
targeted reading, not a full load, and may warrant splitting the de-slop across iterations
module-by-module). When unsure, prefer a crate that is **load-bearing for invariants** (turns,
dispatcher, authorization, approvals, secrets, run_state, event store) over a purely mechanical one —
Expand Down Expand Up @@ -199,7 +199,7 @@ it.** When grep floods on a name collision, when you can't tell which of two sam
site means, when tracing a value across layers required re-reading three files, or when an item's
purpose was unclear until you found (or failed to find) its caller — the defect is in the code's
**naming or comments**, and it is in-scope for this de-slop. Rename the colliding/ambiguous item so the
name is load-bearing for grep and agents (unique names are an invariant — `.claude/rules/type-placement.md`),
name is load-bearing for grep and agents (unique names are an invariant — `.claude/rules/types.md`),
or add the one-line comment that would have saved the trace. Record it as a finding alongside the ones
the sub-agents raised; the friction you just hit is the next reader's friction too.

Expand Down
6 changes: 3 additions & 3 deletions .claude/commands/trace.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ New features and almost all current work are **Reborn** (`crates/`). Trace v1 (`

| Hop | Anchor | Re-derive with |
|---|---|---|
| Browser JS | `crates/ironclaw_webui_v2_static/static/js/lib/api.js` (`apiFetch`) + `static/js/pages/*/lib/*-api.js` | `grep -rn "apiFetch(" crates/ironclaw_webui_v2_static/static/js/pages` |
| Browser JS | `crates/ironclaw_webui/frontend/src` API client and page modules | `rg -n "apiFetch\(" crates/ironclaw_webui/frontend/src` |
| Route + policy | `crates/ironclaw_webui/src/webui_v2/descriptors.rs`, `router.rs`, `handlers.rs` | `grep -n "WEBUI_V2_PATTERN_\|_descriptor" crates/ironclaw_webui/src/webui_v2/descriptors.rs` |
| Facade | `RebornServicesApi` in `crates/ironclaw_product_workflow/src/reborn_services.rs` | `grep -n "async fn <name>" crates/ironclaw_product_workflow/src/reborn_services.rs` |
| Port impl | `crates/ironclaw_reborn_composition/src/<feature>*.rs` | `grep -rn "impl <PortTrait>" crates/ironclaw_reborn_composition/src` |
| Product surface | `ProductSurface` in `ironclaw_host_api`, descriptors in `crates/ironclaw_product/src/reborn_services.rs` | `rg -n "ProductSurface|ProductView|ProductSurfaceCommandDescriptor" crates/ironclaw_host_api crates/ironclaw_product` |
| Composition | `crates/ironclaw_reborn_composition/src` | `rg -n "build_.*service|impl .*Service" crates/ironclaw_reborn_composition/src` |
| Turn accept | `SessionThreadService::accept_inbound_message` (`crates/ironclaw_threads`) → `TurnCoordinator::submit_turn` (`crates/ironclaw_turns/src/coordinator.rs`) | `grep -rn --include='*.rs' "submit_turn(" crates/` |
| Claim + execute | `TurnRunScheduler` → `RebornTurnRunExecutor` (`crates/ironclaw_runner/src/`) | `grep -n "claim_next_run\|invoke_driver" crates/ironclaw_runner/src/turn_scheduler.rs crates/ironclaw_runner/src/turn_run_executor.rs` |
| Loop | `PlannedDriver` (`crates/ironclaw_runner/src/planned_driver.rs`) → `CanonicalAgentLoopExecutor` (`crates/ironclaw_agent_loop/src/executor.rs`) → host ports (`crates/ironclaw_loop_host`) | `grep -rn "invoke_capability\|stream_model" crates/ironclaw_agent_loop/src/executor` |
Expand Down
2 changes: 1 addition & 1 deletion .claude/commands/triage-prs.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ For each open PR, determine the primary module it touches by examining the `file

| Category | Directories |
|----------|------------|
| **Reborn stack (most current work)** | `crates/ironclaw_runner/`, `crates/ironclaw_reborn_cli/`, `crates/ironclaw_reborn_composition/`, `crates/ironclaw_reborn_event_store/`, `crates/ironclaw_reborn_identity/`, `crates/ironclaw_reborn_openai_compat*/`, `crates/ironclaw_reborn_traces/`, `crates/ironclaw_webui/`, `crates/ironclaw_product_workflow/`, `crates/ironclaw_webui*/`, `crates/ironclaw_turns/`, `crates/ironclaw_threads/`, `crates/ironclaw_agent_loop/`, `crates/ironclaw_host_runtime/`, `crates/ironclaw_loop_host/`, `crates/ironclaw_capabilities/` |
| **Reborn stack (most current work)** | `crates/ironclaw_runner/`, `crates/ironclaw_reborn_cli/`, `crates/ironclaw_reborn_composition/`, `crates/ironclaw_reborn_event_store/`, `crates/ironclaw_reborn_identity/`, `crates/ironclaw_reborn_openai_compat*/`, `crates/ironclaw_reborn_traces/`, `crates/ironclaw_webui/`, `crates/ironclaw_product/`, `crates/ironclaw_turns/`, `crates/ironclaw_threads/`, `crates/ironclaw_agent_loop/`, `crates/ironclaw_host_runtime/`, `crates/ironclaw_loop_host/`, `crates/ironclaw_capabilities/` |
| **Legacy v1 crates** | `crates/ironclaw_engine/`, `crates/ironclaw_gateway/`, `crates/ironclaw_oauth/`, `crates/ironclaw_embeddings/`, `crates/ironclaw_tui/` |
| **LLM & Inference** | `crates/ironclaw_llm/` |
| **Agent Core** | `src/agent/`, `src/skills/` |
Expand Down
129 changes: 0 additions & 129 deletions .claude/rules/agent-loop-capabilities.md

This file was deleted.

19 changes: 7 additions & 12 deletions .claude/rules/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,7 @@ places that each implement their own pre-checks (lease, policy,
sanitization), they are one pipeline written twice. Every
safety/policy change must then land in both — and one always lags.

This mirrors the rule in `tools.md` ("Everything Goes Through Tools")
and `safety-and-sandbox.md` ("Every New Ingress Scans Before Storage
This mirrors the boundary in `safety-and-sandbox.md` ("Every New Ingress Scans Before Storage
or LLM"). The pattern: identify the converging downstream call,
extract a single gateway, route both sides through it.

Expand Down Expand Up @@ -202,20 +201,16 @@ exempt without a plan link is a violation, not an exception.

## Direction: the consolidation plan for this debt

The smells above are the *symptoms*; the accumulated debt (the ~14-type
mirror-DTO capability path, single-impl `dyn` mediators kept for test doubles,
per-domain `InMemory*Store` duplication, the `LocalDev*` deployment-mode type
family) and the target structure are catalogued in
`docs/reborn/2026-07-17-architecture-simplification-dto-dyn-local.md`. When a
smell here traces to one of those, cite that doc's section as the "plan #NNNN"
an `arch-exempt` must name, rather than opening a new one. The doc's §5 is the
minimal-kernel/clean-interface destination; new code should move toward it, not
add to the debt.
The smells above are symptoms of duplicated ownership, optional production
dependencies, and parallel execution paths. When an exemption is necessary,
name the missing owner or aggregation in the `arch-exempt` comment and link the
current issue or contract that governs the follow-up. Do not cite deleted plan
documents as architectural authority.

## References

- Adjacent rules with the same shape (extract a single gateway,
route everything through it): `tools.md`, `safety-and-sandbox.md`,
route everything through it): `safety-and-sandbox.md`,
`gateway-events.md`.
- Type location/multiplicity (mirror DTOs, `host_api` ownership):
`type-placement.md` — the rule the capability-path collapse applies.
Expand Down
2 changes: 1 addition & 1 deletion .claude/rules/cargo-features.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ when introduced:
with the feature and a `-D warnings` error without it. PR CI runs only
the slim `all-features` lane, so this class breaks `main` after a green
PR. Run all three legs locally when you add, move, or remove a gate —
see `.claude/rules/review-discipline.md` ("Required checks").
see `.claude/rules/testing.md` ("Validation").
- **Deleting a feature is not just deleting `#[cfg]` lines.** Also
handle: `#[cfg(not(...))]` items (delete them — they are dead
alternates), optional dependencies that become mandatory, forwards in
Expand Down
42 changes: 0 additions & 42 deletions .claude/rules/default-builders.md

This file was deleted.

62 changes: 0 additions & 62 deletions .claude/rules/discovery-claims.md

This file was deleted.

15 changes: 0 additions & 15 deletions .claude/rules/doc-hygiene.md

This file was deleted.

Loading
Loading