Skip to content

Move performance benchmark to Go#87

Merged
anandh8x merged 3 commits into
mainfrom
feat/go-perf-bench
Jun 6, 2026
Merged

Move performance benchmark to Go#87
anandh8x merged 3 commits into
mainfrom
feat/go-perf-bench

Conversation

@anandh8x

@anandh8x anandh8x commented Jun 6, 2026

Copy link
Copy Markdown
Collaborator

Summary:

  • Add a Go-native performance benchmark command and testable internal perfbench package.
  • Switch perf:bench/perf:smoke and CI performance smoke from the TS script to Go.
  • Remove the replaced TS perf/artifact helpers and move perf coverage into Go tests.

Notes:

  • The JSON report is schemaVersion 3 because the harness runtime metadata is now Go-based.
  • Linux memory reads RSS from /proc/self/statm; non-Linux falls back to Go runtime memory.

Tests:

  • go test ./internal/perfbench ./cmd/zero-perf-bench
  • bun test ./tests --timeout 15000
  • bun run typecheck
  • bun run build
  • bun run smoke:build
  • go test ./...
  • bun run perf:bench --iterations=1 --warmup=0 --cold-start-warn-ms=60000 --first-output-warn-ms=60000 --harness-end-rss-warn-mb=4096
  • bun run perf:smoke --ci
  • bun run perf:bench --json --iterations=1 --warmup=0 --cold-start-warn-ms=60000 --first-output-warn-ms=60000 --harness-end-rss-warn-mb=4096
  • git diff --check

Summary by CodeRabbit

  • New Features

    • Added a native Go performance benchmark CLI; CI/perf smoke tasks now use the new runner.
  • Bug Fixes / Chores

    • Removed the legacy JS/Bun perf runner and related artifact helper scripts.
  • Documentation

    • Clarified performance harness memory metrics and RSS measurement.
    • Updated benchmark CLI invocation docs, README layout, and smoke checklist wording.
  • Tests

    • Updated and added tests to reflect the new perf tooling and npm wrapper behavior.

@github-actions

github-actions Bot commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

Zero automated PR review

Verdict: No blockers found

Blockers

  • None found.

Validation

  • [pass] Diff hygiene: git diff --check
  • [pass] Typecheck: bun run typecheck
  • [pass] Tests: bun run test
  • [pass] Build: bun run build
  • [pass] Smoke build: bun run smoke:build

Scope

Head: 8abb510b81d6
Changed files (13): .github/workflows/ci.yml, README.md, cmd/zero-perf-bench/main.go, cmd/zero-perf-bench/main_test.go, docs/NPM_WRAPPER_SMOKE.md, docs/PERFORMANCE.md, internal/perfbench/perfbench.go, internal/perfbench/perfbench_test.go, package.json, scripts/artifact.ts, scripts/perf-bench.ts, tests/build-scripts.test.ts, and 1 more

This deterministic review checks validation status and basic diff hygiene. A human reviewer still owns product judgment and design quality.

@coderabbitai

coderabbitai Bot commented Jun 6, 2026

Copy link
Copy Markdown

Lost in the diff? Review this PR in Change Stack to follow the change map from intent to exact ranges.

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 37817cdc-1591-45a8-8f5b-9913c1675f67

📥 Commits

Reviewing files that changed from the base of the PR and between 5425de7 and 8abb510.

📒 Files selected for processing (1)
  • internal/perfbench/perfbench.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • internal/perfbench/perfbench.go

Walkthrough

Migrates the perf benchmark from Bun/TypeScript to Go: adds internal/perfbench library and a cmd/zero-perf-bench CLI, replaces Bun scripts and artifact helpers, updates npm scripts and CI to run the Go CLI, and adds tests and docs reflecting the new flow.

Changes

Performance Benchmark System Migration

Layer / File(s) Summary
Perfbench data model and orchestration
internal/perfbench/perfbench.go
Defines schema version, default thresholds, Options/Result/Warning/Platform types and the Run orchestration that validates inputs, runs warmups/iterations, aggregates samples, and produces a Result.
Command resolution & measurement primitives
internal/perfbench/perfbench.go
Implements zero-binary resolution, MeasureColdStart, MeasureFirstOutput with concurrent stdout/stderr readers and first-output timestamping, timed pipe reader, command error shaping, environment sanitization, env mutation, and harness RSS sampling with Linux /proc fallback.
Statistics, warnings and reporting
internal/perfbench/perfbench.go
Summarizes samples (min/median/avg/p95/max), evaluates warnings against thresholds, renders human-readable summaries, emits GitHub Actions ::warning annotations (escaped), and writes indented JSON results.
Go CLI entrypoint and arg parsing
cmd/zero-perf-bench/main.go
Adds CLI parsing (flags and env overrides), help text, report-file writing, CI/json/fail-on-warning toggles, runs perfbench.Run, prints formatted or JSON output, and maps exit codes for parse/report/warning outcomes.
Tests
internal/perfbench/perfbench_test.go, cmd/zero-perf-bench/main_test.go
Adds unit and e2e-style tests for summarization, warning evaluation, Run behavior with helper subprocess, formatting, escaping, and CLI parse/help behavior including env/flag precedence and invalid-value handling.
Wiring: npm/CI/tests/docs
package.json, .github/workflows/ci.yml, tests/build-scripts.test.ts, README.md, docs/PERFORMANCE.md, docs/NPM_WRAPPER_SMOKE.md
Replaces Bun perf scripts with go run ./cmd/zero-perf-bench in npm scripts and CI; refactors wrapper-focused tests; removes Bun scripts/artifact helpers; updates README and performance docs to reflect Go harness memory measurement and new CLI example.
Removed Bun script & helpers
scripts/perf-bench.ts, scripts/artifact.ts, tests/perf-bench.test.ts
Removes the TypeScript perf runner, artifact helper module, and the associated Bun perf test suite.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Suggested reviewers

  • gnanam1990
  • Vasanthdev2004
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Move performance benchmark to Go' directly and accurately describes the main objective of the PR—migrating the performance benchmarking implementation from TypeScript to Go.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/go-perf-bench

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

@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

🧹 Nitpick comments (1)
docs/PERFORMANCE.md (1)

12-14: PERFORMANCE.md RSS collection matches perfbench implementation.
perfbench reads /proc/self/statm via readLinuxRSSMb() and uses it when available; otherwise readHarnessMemoryMb() falls back to runtime.ReadMemStats() and reports stats.Sys (MB). Consider tweaking wording from generic “Go runtime memory” to “MemStats.Sys” for precision.

🤖 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 `@docs/PERFORMANCE.md` around lines 12 - 14, The wording in PERFORMANCE.md is
imprecise: update the sentence that currently says “Go runtime memory” to
explicitly state that the fallback uses runtime.ReadMemStats() and reports
MemStats.Sys (MB); reference the existing functions readLinuxRSSMb() and
readHarnessMemoryMb() so the doc matches perfbench’s behavior and mentions
MemStats.Sys as the reported metric.
🤖 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 `@cmd/zero-perf-bench/main.go`:
- Line 193: The error string in the return statement currently uses "Unknown
option: %s" which violates Go error string capitalization conventions; update
the fmt.Errorf call (the line that returns fmt.Errorf("Unknown option: %s",
arg)) to use a lowercase leading word ("unknown option: %s") so the error starts
with a lowercase letter while preserving the argument formatting.

In `@internal/perfbench/perfbench.go`:
- Line 384: Change the error string returned in the fmt.Errorf call that
references binaryName to follow Go convention: make it start lowercase and
remove trailing punctuation. Replace the current message "No %s binary found.
Run `bun run build` before running the performance benchmark." with a lowercase,
non-terminated sentence such as "no %s binary found; run `bun run build` before
running the performance benchmark" in the fmt.Errorf(...) that returns the
error.

---

Nitpick comments:
In `@docs/PERFORMANCE.md`:
- Around line 12-14: The wording in PERFORMANCE.md is imprecise: update the
sentence that currently says “Go runtime memory” to explicitly state that the
fallback uses runtime.ReadMemStats() and reports MemStats.Sys (MB); reference
the existing functions readLinuxRSSMb() and readHarnessMemoryMb() so the doc
matches perfbench’s behavior and mentions MemStats.Sys as the reported metric.
🪄 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: CHILL

Plan: Pro Plus

Run ID: e87c9b80-3f8e-4d82-acd4-50d0671bc904

📥 Commits

Reviewing files that changed from the base of the PR and between 8b9b19b and e46b610.

📒 Files selected for processing (13)
  • .github/workflows/ci.yml
  • README.md
  • cmd/zero-perf-bench/main.go
  • cmd/zero-perf-bench/main_test.go
  • docs/NPM_WRAPPER_SMOKE.md
  • docs/PERFORMANCE.md
  • internal/perfbench/perfbench.go
  • internal/perfbench/perfbench_test.go
  • package.json
  • scripts/artifact.ts
  • scripts/perf-bench.ts
  • tests/build-scripts.test.ts
  • tests/perf-bench.test.ts
💤 Files with no reviewable changes (4)
  • tests/perf-bench.test.ts
  • scripts/perf-bench.ts
  • scripts/artifact.ts
  • tests/build-scripts.test.ts

Comment thread cmd/zero-perf-bench/main.go Outdated
Comment thread internal/perfbench/perfbench.go Outdated

@gnanam1990 gnanam1990 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Review: PR #87 — Move performance benchmark to Go (anandh8x / Anandan)

URL: #87
State: OPEN (as of analysis)
Author: anandh8x (Anandan)
Size: +1092 / -927 lines (13 files)
Branch: feat/go-perf-bench
Review Date: 2026-06 (current session)
Reviewer context: Gnanam (runtime core owner per WORK_SPLIT_PRD.md)

Ownership Fit (WORK_SPLIT_PRD v3)

Strong match for Anandan's lane:

  • "performance and release checks"
  • "CI as product verification"
  • "package and binary smoke tests"
  • "install/update/release artifact verification"

Explicitly called out in the split as Anandan's responsibility (alongside #84 update verification, #81 sandbox platform reporting, build smoke, checksums, etc.).

This PR delivers user-runnable behavior: new zero-perf-bench binary + bun run perf:smoke / perf:bench wired to the real Go binary (not in-process TS).

Does not touch Gnanam's core contracts (provider events, permission events, session schema, stream-json, agent protocols, config/redaction). It measures the external binary. Good boundary.

Summary of Change

  • Introduces internal/perfbench package (pure measurement harness):
    • Run(ctx, Options)Result with structured Metrics (NumericStats: min/median/avg/p95/max for cold start, first output, drain, RSS, RSS delta).
    • Platform capture (OS/Arch/GoVersion).
    • Warning evaluation against configurable thresholds (env-overridable: ZERO_PERF_*).
    • JSON output (SchemaVersion: 3 — bumped because harness is now Go).
    • Linux: reads RSS from /proc/self/statm; fallback to runtime.MemStats.
    • Helper to resolve cold-start vs first-output commands (probes the built zero binary with a minimal prompt).
  • New CLI entry: cmd/zero-perf-bench/main.go + tests. Separate from main cmd/zero (correct — smoke/perf is tooling).
  • CI updates: switches performance smoke from old scripts/perf-bench.ts --ci to bun run perf:smoke --ci.
  • Cleanup: deletes large chunks of old TS perf scripts + tests that assumed the legacy runtime.
  • Docs: PERFORMANCE.md, NPM_WRAPPER_SMOKE.md, README layout notes updated.
  • Threshold defaults look reasonable (cold 300ms, first-output 500ms, RSS 256MB harness).

Code Quality & Go Idioms

Positive:

  • Clean separation: perfbench package is testable in isolation (go test ./internal/perfbench).
  • Good stats helpers (sorting + rounding for p95 etc.).
  • Context propagation, error returns.
  • JSON structs are well-tagged and versioned.
  • Platform + command capture for reproducibility.
  • Tests include end-to-end minimal benchmark + warning classification + helper process.

Areas to examine / suggestions (pre-merge):

  1. Measurement fidelity for "first output": The harness execs the binary and watches for first stdout. Confirm it correctly simulates a real user prompt (not just --version or empty). The PR description says it probes the agent — good, but the exact prompt/args used in ResolveFirstOutputCommand should be visible and perhaps overridable for future "realistic task" benches.
  2. RSS on non-Linux: The fallback to runtime.MemStats.Alloc or similar is noted; document the approximation clearly (current docs update helps).
  3. Thresholds as product contract: These are now part of the "platform/release contract" Anandan owns. If TUI or runtime later wants to surface perf budgets, coordinate the schema (currently internal + JSON report).
  4. Large TS deletion: Welcome. The perf script rework now treats the Go binary as a black box (correct post-#78 legacy removal). Make sure bun run perf:smoke still works from a fresh npm-installed zero (the smoke checklist update is mentioned).
  5. CodeRabbit "Changes requested": Review the specific CodeRabbit feedback on the PR page before merge (it was present at time of analysis).

Tests & Verification

PR claims (and CI runs):

  • go test ./internal/perfbench ./cmd/zero-perf-bench
  • Full go test ./...
  • bun run perf:bench --iterations=1 ... (with warn thresholds relaxed for CI)
  • bun run perf:smoke --ci
  • bun run build + smoke:build

Recommendation: Before approval, run locally:

go test ./internal/perfbench -run TestRunMinimalBenchmarkEndToEnd -count=1
bun run perf:smoke --ci

Also exercise the new binary directly after go run ./cmd/zero-release build or equivalent.

Alignment with Broader Goals (PRD + Split)

  • Contributes to "Performance" non-functional reqs in PRD (TTFT, cold start targets).
  • Supports Anandan's DoD requirement: "CI jobs that prove real Zero commands work after installation" + performance/release checks.
  • Post-legacy-TS world (#78), measuring the Go binary is the only correct thing.

Overall Recommendation

Approve after addressing CodeRabbit feedback (if any blocking) and confirming measurement prompt realism + cross-platform RSS docs.

This is exactly the kind of platform/product-verification work Anandan is supposed to own. Clean boundary with runtime (Gnanam) and TUI (Vasanth).

Status suggestion: LGTM with minor polish on docs/threshold provenance + the first-output command visibility.


Review generated as part of "analyse the repo PRs except gnanam1990 PRs".
Files: reviews/pr-87-anandan-go-perf-bench.md

@gnanam1990

gnanam1990 commented Jun 6, 2026

Copy link
Copy Markdown
Collaborator

Review: PR #87 — Move performance benchmark to Go (anandh8x / Anandan)

URL: #87
State: OPEN (as of analysis)
Author: anandh8x (Anandan)
Size: +1092 / -927 lines (13 files)
Branch: feat/go-perf-bench
Review Date: 2026-06 (current session)
Reviewer context: Gnanam (runtime core owner per WORK_SPLIT_PRD.md)

Ownership Fit (WORK_SPLIT_PRD v3)

Strong match for Anandan's lane:

  • "performance and release checks"
  • "CI as product verification"
  • "package and binary smoke tests"
  • "install/update/release artifact verification"

Explicitly called out in the split as Anandan's responsibility (alongside #84 update verification, #81 sandbox platform reporting, build smoke, checksums, etc.).

This PR delivers user-runnable behavior: new zero-perf-bench binary + bun run perf:smoke / perf:bench wired to the real Go binary (not in-process TS).

Does not touch Gnanam's core contracts (provider events, permission events, session schema, stream-json, agent protocols, config/redaction). It measures the external binary. Good boundary.

Summary of Change

  • Introduces internal/perfbench package (pure measurement harness):
    • Run(ctx, Options)Result with structured Metrics (NumericStats: min/median/avg/p95/max for cold start, first output, drain, RSS, RSS delta).
    • Platform capture (OS/Arch/GoVersion).
    • Warning evaluation against configurable thresholds (env-overridable: ZERO_PERF_*).
    • JSON output (SchemaVersion: 3 — bumped because harness is now Go).
    • Linux: reads RSS from /proc/self/statm; fallback to runtime.MemStats.
    • Helper to resolve cold-start vs first-output commands (probes the built zero binary with a minimal prompt).
  • New CLI entry: cmd/zero-perf-bench/main.go + tests. Separate from main cmd/zero (correct — smoke/perf is tooling).
  • CI updates: switches performance smoke from old scripts/perf-bench.ts --ci to bun run perf:smoke --ci.
  • Cleanup: deletes large chunks of old TS perf scripts + tests that assumed the legacy runtime.
  • Docs: PERFORMANCE.md, NPM_WRAPPER_SMOKE.md, README layout notes updated.
  • Threshold defaults look reasonable (cold 300ms, first-output 500ms, RSS 256MB harness).

Code Quality & Go Idioms

Positive:

  • Clean separation: perfbench package is testable in isolation (go test ./internal/perfbench).
  • Good stats helpers (sorting + rounding for p95 etc.).
  • Context propagation, error returns.
  • JSON structs are well-tagged and versioned.
  • Platform + command capture for reproducibility.
  • Tests include end-to-end minimal benchmark + warning classification + helper process.

Areas to examine / suggestions (pre-merge):

  1. Measurement fidelity for "first output": The harness execs the binary and watches for first stdout. Confirm it correctly simulates a real user prompt (not just --version or empty). The PR description says it probes the agent — good, but the exact prompt/args used in ResolveFirstOutputCommand should be visible and perhaps overridable for future "realistic task" benches.
  2. RSS on non-Linux: The fallback to runtime.MemStats.Alloc or similar is noted; document the approximation clearly (current docs update helps).
  3. Thresholds as product contract: These are now part of the "platform/release contract" Anandan owns. If TUI or runtime later wants to surface perf budgets, coordinate the schema (currently internal + JSON report).
  4. Large TS deletion: Welcome. The perf script rework now treats the Go binary as a black box (correct post-Remove legacy TypeScript runtime #78 legacy removal). Make sure bun run perf:smoke still works from a fresh npm-installed zero (the smoke checklist update is mentioned).
  5. CodeRabbit "Changes requested": Review the specific CodeRabbit feedback on the PR page before merge (it was present at time of analysis).

Tests & Verification

PR claims (and CI runs):

  • go test ./internal/perfbench ./cmd/zero-perf-bench
  • Full go test ./...
  • bun run perf:bench --iterations=1 ... (with warn thresholds relaxed for CI)
  • bun run perf:smoke --ci
  • bun run build + smoke:build

Recommendation: Before approval, run locally:

go test ./internal/perfbench -run TestRunMinimalBenchmarkEndToEnd -count=1
bun run perf:smoke --ci

Also exercise the new binary directly after go run ./cmd/zero-release build or equivalent.

Alignment with Broader Goals (PRD + Split)

  • Contributes to "Performance" non-functional reqs in PRD (TTFT, cold start targets).
  • Supports Anandan's DoD requirement: "CI jobs that prove real Zero commands work after installation" + performance/release checks.
  • Post-legacy-TS world (Remove legacy TypeScript runtime #78), measuring the Go binary is the only correct thing.

Overall Recommendation

Approve after addressing CodeRabbit feedback (if any blocking) and confirming measurement prompt realism + cross-platform RSS docs.

This is exactly the kind of platform/product-verification work Anandan is supposed to own. Clean boundary with runtime (Gnanam) and TUI (Vasanth).

Status suggestion: LGTM with minor polish on docs/threshold provenance + the first-output command visibility.

@gnanam1990

gnanam1990 commented Jun 6, 2026

Copy link
Copy Markdown
Collaborator

Re-review: PR #87 — Move performance benchmark to Go (anandh8x)

Updated: 2026-06-06 (after feedback commits)

Thanks for the follow-ups. The two recent commits ("Address perf benchmark review feedback" + "Fix perf benchmark pipe drain order") address several of the points from the initial review.

What was addressed

  • Pipe drain / measurement accuracy (critical): The order in MeasureFirstOutput was fixed — channels are now read before cmd.Wait() + finishedAt. This prevents potential blocking/deadlock issues and ensures ProcessDrainMs and first-output timing are measured correctly. Good catch/fix.
  • Error message style / docs: Lowercase errors ("unknown option", "no %s binary found..."), clarified PERFORMANCE.md around readHarnessMemoryMb() fallback to runtime.ReadMemStats() / MemStats.Sys, and the binary resolution error message. Minor but consistent.
  • CodeRabbit now shows APPROVED with "No actionable comments" in the latest run.

Remaining / new observations

  1. First-output vs cold-start distinction is still thin: Both ResolveColdStartCommand and ResolveFirstOutputCommand currently resolve to the same binary --version. This measures pure binary launch time (which is valuable for "cold start" and harness), but the previous review suggested making the "first output" path probe something closer to real agent startup (e.g. a minimal prompt that produces actual stdout from the runtime).

    Current docs now correctly state: "This smoke benchmark does not measure provider TTFT or Go agent memory." So if the intent is purely "time to first byte from the built binary + harness RSS", --version is fine and fast. If we ever want a more "realistic task" first-output number, we can extend ResolveFirstOutputCommand later (it already supports override via env/flag).

  2. Docstrings: CodeRabbit still flags 0% docstring coverage on the new package. Not a blocker for this PR (perf tooling), but worth a quick pass on the exported types (Options, Result, Thresholds, NumericStats, etc.) if you want to silence it.

  3. No impact on runtime contracts: This stays cleanly in Anandan's lane (perf + release checks / CI verification). It measures the external binary and does not touch permission events, stream-json payloads, session schema, provider internals, or anything Gnanam owns. Perfect boundary.

  4. Tests & smoke: All Go tests for perfbench pass. The npm/CI wiring changes look correct post-Remove legacy TypeScript runtime #78 legacy removal. The "no binary found" error now guides users to bun run build as expected.

Recommendation

LGTM — ready to merge.

The important measurement correctness fix (pipe drain) landed, previous nits were polished, and CodeRabbit is happy. This delivers exactly the "performance and release checks" / "CI as product verification" work called out for Anandan in the WORK_SPLIT_PRD.

Minor future follow-ups (not blocking):

  • Consider whether we want a more agent-like first-output command in a separate small PR (once the runtime exposes easy "minimal prompt" harnesses).
  • Optional godoc on the public perfbench types for the coverage warning.

Great work moving the harness to Go and cleaning up the old TS bits.

@gnanam1990 gnanam1990 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Re-reviewed after the feedback commits (pipe drain order fix + docs/error message polish).

All previous concerns addressed. Tests pass, clean boundary with runtime contracts, good platform/perf work per the WORK_SPLIT_PRD.

LGTM. Approving.

@gnanam1990 gnanam1990 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Re-review complete after feedback commits (pipe drain fix + polish).

LGTM. Approving as runtime owner — clean platform/perf work, no impact on runtime contracts, tests pass, CodeRabbit green.

@anandh8x
anandh8x merged commit 503b6c5 into main Jun 6, 2026
6 checks passed
@Vasanthdev2004
Vasanthdev2004 deleted the feat/go-perf-bench branch June 28, 2026 08:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants