- Run cargo test directly through testCmd instead of faking results
- Add 60s per-test timeout on vmExec to prevent hung suite
- Make report path configurable via --report flag (default: project root)
- Fix shell injection in testRewrite by escaping single quotes
Signed-off-by: Patrick szymkowiak <patrick.szymkowiak@innovtech.eu>
- Strict exit codes: cargo/python/go tests expect exact exit codes
instead of "any" (catches real regressions)
- Binary size limit documented: 8MB for ARM Linux VM vs 5MB x86 stripped
- --phase NaN guard: error message instead of silent no-op
- Verdict: 0 failures = READY, any failure = NOT READY (no more "minor issues" budget)
- rtk err exit code bug tracked in #846
Signed-off-by: Patrick szymkowiak <patrick.szymkowiak@innovtech.eu>
Previously `filter_cargo_clippy` only captured the first line of each
error diagnostic (truncated to 160 chars), discarding the file location,
code snippet, `^` markers, and `= note:` context that developers need to
actually fix the issue. This made rtk unusable for `cargo clippy -- -D warnings`.
Now errors are collected as full multi-line blocks (up to 15 lines each,
up to 10 errors total), matching the approach used by `filter_cargo_build`.
Warning grouping by lint rule is unchanged.
Fixes#602
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add rtk init --agent kilocode and rtk init --agent antigravity commands.
Kilo Code: installs .kilocode/rules/rtk-rules.md (project-scoped)
Google Antigravity: installs .agents/rules/antigravity-rtk-rules.md (project-scoped)
Both follow the same prompt-level guidance pattern as Cline and Windsurf,
using rules files that instruct the agent to prefix shell commands with rtk.
P0 fixes:
- top_passthrough: GROUP BY first word only, not full command args (privacy leak)
- build_meta_usage: use dedicated count query instead of scanning deduplicated top list (was always returning 0 or 1)
P1 fixes:
- Single Tracker connection per ping (was opening 2 SQLite connections)
- first_seen_days: propagate DB errors instead of unwrap_or(None)
- ecosystem_mix: bound to 90 days instead of full table scan
- avg_savings_per_command: compute per-command mean, not per-row mean
- estimated_savings_usd_30d: use $3/Mtok (Sonnet input rate) not $5/Mtok
Signed-off-by: Patrick Szymkowiak <patrick@rtk-ai.app>
Signed-off-by: Patrick szymkowiak <patrick.szymkowiak@innovtech.eu>
When go test times out or is killed by a signal, the JSON stream
contains a package-level {"action":"fail"} with no Test field and no
FailedBuild field. The parser only handled test-level and build-level
failures, so this event was silently dropped. The summary then saw
0 passes + 0 fails and reported "No tests found" instead of the
actual failure.
The fix adds handling for package-level failures: a new else branch
in the fail handler, package-level output capture in the output
handler, and inclusion in the summary count and display.
Before: "Go test: No tests found"
After: "Go test: 0 passed, 1 failed in 1 packages" with the
timeout output shown under the package name.
Fixes#958
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix broken links: docs/TROUBLESHOOTING.md and docs/AUDIT_GUIDE.md were
removed in previous commit; update nav header and Documentation section
- Condense Supported AI Tools: keep the summary table, replace 12 per-agent
detail blocks with a single link to rtk-ai.app/guide/supported-agents
- Condense Configuration: keep essential snippet and tee recovery example,
link to rtk-ai.app/guide/configuration for full reference
- Update Documentation section: lead with rtk-ai.app/guide as primary entry,
keep INSTALL.md, ARCHITECTURE.md, CONTRIBUTING.md, SECURITY.md
Signed-off-by: Florian BRUNIAUX <florian@bruniaux.com>
Keep develop's [Unreleased] section on top, followed by master's
released versions (0.34.3, 0.34.2).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Creates docs/README.md (interface contract defining 3-tab structure,
required frontmatter, and conventions) and 4 stub pages with valid
frontmatter for docs/guide/, docs/reference/, and docs/architecture/.
These are the prerequisites for the prepare-docs.mjs pipeline (Plan B)
and for Adrien's Phase 1 content work.
No existing files modified.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Florian BRUNIAUX <florian@bruniaux.com>
Drop-based ChildGuard doesn't run on signals with panic=abort (release
profile). Register a signal handler that stores the child PID in an
AtomicU32 and kills it on SIGINT/SIGTERM, then re-raises the signal
with default handler for correct exit status propagation.
Fixes orphan processes when rtk proxy is killed by Claude Code, process
managers, or manual kill — the root cause behind issue #897.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add validate_pnpm_filters() to warn when filters used with unsupported commands
- Add comprehensive tests for all scenarios
- Improve comments and use idiomatic rust
Signed-off-by: Nicolas Le Cam <niko.lecam@gmail.com>
- Add support for pnpm global filter arguments (`--filter`) across all pnpm commands (`list`, `outdated`, `install`, etc.).
- Merge pnpm filters with native command arguments (`--filter` + custom args like `--depth`).
- Implement proper handling for `Vec<String>` (text filters) and `Vec<OsString>` (OS-specific filters).
- Add unit tests for `merge_pnpm_args` and CLI parsing to validate expected behavior.
This enables users to apply workspace-specific filtering directly via `--filter @scope` before running pnpm commands,
reducing token overhead by excluding irrelevant packages/dependencies from output.
Fixes: #259
FIXME: Add notes for typechecking/building with workspaces when filters are applied.
Signed-off-by: Nicolas Le Cam <niko.lecam@gmail.com>