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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Cross-package release notes for relayburn. Package changelogs contain package-le

- `relayburn-sdk-node` (Rust): napi-rs bindings skeleton — `#[napi]` shims for every public verb in `relayburn-sdk` (`summary`, `sessionCost`, `overhead`, `overheadTrim`, `hotspots`, `search`, `exportLedger`, `exportStamps`, async `ingest`, plus `ledgerOpen`), with u64 token counts surfaced as JS `BigInt`, ISO-8601 timestamps as `String`, async verbs returning `Promise<T>`, and a typed `BurnError` mapping for SDK failures. (#247)
- `relayburn-cli` (Rust): introduce the harness substrate — `HarnessAdapter` trait, lazy compile-time `phf` registry (`lookup` / `list_harness_names`), and the shared `pending_stamp::adapter` factory codex + opencode will reuse. Adapter slots in the registry are reserved but empty pending the Wave 2 PRs (#248-d/e/f). `relayburn-sdk` re-exports `start_watch_loop`, `WatchController`, `write_pending_stamp`, `PendingStampHarness`, and friends so the CLI doesn't have to reach into private SDK modules. (#248)
- `relayburn-cli` (Rust): scaffold the clap v4 derive root with global `--json` / `--ledger-path` / `--no-color` flags, eight stub subcommands (`summary`, `hotspots`, `overhead`, `compare`, `run`, `state`, `ingest`, `mcp-server`), and shared `render::{table,json,error}` helpers. Stubs exit `1` with a `not yet implemented` message (or a `{"error": …}` envelope under `--json`); Wave 2 fan-out PRs replace each stub with a thin presenter over `relayburn-sdk`. (#248 part a)

@coderabbitai coderabbitai Bot May 6, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Move this CLI-only note out of root CHANGELOG.md.

This entry is scoped to relayburn-cli; it should live in the package changelog rather than root [Unreleased].

As per coding guidelines, "single-package work belongs only in that package's CHANGELOG."

🤖 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 `@CHANGELOG.md` at line 7, Remove the CLI-only entry from the root CHANGELOG.md
and add it to the relayburn-cli package changelog instead: delete the bullet
describing `relayburn-cli` (the clap v4 root flags
`--json`/`--ledger-path`/`--no-color`, the eight stub subcommands `summary,
hotspots, overhead, compare, run, state, ingest, mcp-server`, and the
`render::{table,json,error}` helpers) from the root `[Unreleased]` section, and
append or create an equivalent entry under the relayburn-cli package
CHANGELOG.md so the single-package work is only recorded in that package’s
changelog.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Pushing back on this one — keeping the entry in root CHANGELOG.md.

The root file is currently the cross-package narrative for the Rust port (epic #240) progress. Per-port-milestone entries land there until the 2.0 cutover so the high-level Wave 1 / Wave 2 progression is readable in one place.

Per-package CHANGELOG flow described in CLAUDE.md (packages/*/CHANGELOG.md curated under [Unreleased], promoted at publish time, git-log fallback) only applies to the eight npm packages under packages/. Rust crates under crates/ aren't on that flow yet — there's no crates/relayburn-cli/CHANGELOG.md and no publish workflow that would promote it. Until the cutover, the root file is where Rust-port milestones go.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

@willwashburn, that's a clear and well-reasoned explanation — thanks for the context. I misapplied the packages/*/CHANGELOG.md convention to the Rust crates, which are on a different flow. I'll stand down on this one and note it for future reviews.


✏️ Learnings added
Learnt from: willwashburn
Repo: AgentWorkforce/burn PR: 309
File: CHANGELOG.md:7-7
Timestamp: 2026-05-06T12:35:11.052Z
Learning: In the AgentWorkforce/burn repository, the root `CHANGELOG.md` is intentionally used as the cross-package narrative for Rust port (epic `#240`) milestones. Per-port-milestone entries for Rust crates under `crates/` land in the root `[Unreleased]` section until the 2.0 cutover. The per-package CHANGELOG flow (curated `[Unreleased]`, promoted at publish time) described in CLAUDE.md applies only to the eight npm packages under `packages/`, not to Rust crates under `crates/`. There is no `crates/relayburn-cli/CHANGELOG.md` or Rust publish workflow yet. Do not flag Rust-crate entries in root CHANGELOG.md as misplaced.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

- `relayburn-ingest` (Rust): port the per-process gap-warning state machine (`gap` module — `record_session_gap`, `emit_gap_warning`, `count_tool_call_gaps`, `reset_ingest_gap_warnings`, `set_ingest_gap_writer`) and `reingest_missing_content` (`reingest` module). Suppression mirrors the TS surface: one warning per fresh affected session, silent on steady-state, re-fires after the affected set decays back to empty. `relayburn-ledger` adds `Ledger::list_user_turn_session_ids` to power the `reingest_missing_content` skip filter alongside `list_content_session_ids`. (#278)
- `relayburn-analyze` (Rust): port the behavioral-pattern detectors (`patterns` module). `detect_patterns` runs retry-loop, failure-run, cancellation-run, compaction-loss, edit-revert, OpenCode skill-recall-dup, OpenCode skill-pruning-protection, OpenCode system-prompt-tax, and edit-heavy detectors against an ordered turn stream, with optional content-sidecar / tool-result-event / user-turn enrichment. Public surface: `detect_patterns`, `DetectPatternsOptions`; per-pattern result structs are re-exported from `findings` (`RetryLoop`, `FailureRun`, `CancellationRun`, `CompactionLoss`, `EditRevertCycle`, `SkillRecallDup`, `SkillPruningProtection`, `SystemPromptTax`, `EditHeavySession`, `SessionPatternSummary`, `PatternsResult`, `PatternEventSource`). (#275)
- `relayburn-analyze` (Rust): port the tool-output-bloat detector — Signal A's `BASH_MAX_OUTPUT_LENGTH` static-config check (with `~/.claude/settings.json` + `<cwd>/.claude/settings.json` loader) and Signal B's cross-harness observed-bloat aggregation, plus the `WasteFinding` adapter. Public surface mirrors `@relayburn/analyze`: `BASH_MAX_OUTPUT_ENV_KEY`, `DEFAULT_BLOAT_TOKEN_THRESHOLD`, `detect_observed_bloat`, `detect_static_config_bloat`, `detect_tool_output_bloat`, `load_claude_settings`, `project_claude_settings_path`, `user_claude_settings_path`, `tool_output_bloat_to_finding`. (#271)
Expand Down
Loading
Loading