Skip to content

fix: adversarial review round 6 — release v0.1.8#10

Merged
ejwhite7 merged 1 commit into
mainfrom
fix/review-round6
Jun 9, 2026
Merged

fix: adversarial review round 6 — release v0.1.8#10
ejwhite7 merged 1 commit into
mainfrom
fix/review-round6

Conversation

@ejwhite7

@ejwhite7 ejwhite7 commented Jun 9, 2026

Copy link
Copy Markdown
Owner

Fixes all 13 findings from review round 6:

High:

  • Honor server Retry-After on 429 (capped at 60s) instead of always using local exponential backoff (base_provider.rb)
  • Parallel executor timeout/rejection Results carry the real tool name instead of "unknown"; rejected futures no longer report a misleading full-timeout duration (executor.rb)
  • Tool blocks with keyword parameters now work — arguments are splatted to keywords when the block declares them (definition.rb)

Medium:

  • Wire the Loop's emitter into Compaction so the documented :compaction event actually fires (loop.rb)
  • Buffer SSE chunks as BINARY and re-encode complete lines to UTF-8 in all three providers; streaming deltas are now always valid UTF-8
  • :fallback_start payload includes partial_output/partial_chars so consumers can truncate partial primary text (fallback.rb)
  • Validate tool names against provider constraints at definition time
  • Declare json as a runtime dependency and require it in every file that uses it (composability; pinned by a source-scan spec)

Low/docs:

  • Configuration rejects negative numeric settings; eager-init the global configuration to remove the first-access race
  • Document continue() per-invocation Result accounting, schema-as-hints (not validation), and unbounded message growth without compaction
  • Correct CLAUDE.md module map (agent/agent.rb never existed), version reference, and extension handler signature
  • CHANGELOG note: 0.1.4 was never actually released (version.rb went 0.1.3 → 0.1.5); created the missing v0.1.7 tag locally

22 new regression specs in spec/ruby_pi/fixes/review_round6_spec.rb. Suite: 492 examples, 0 failures.

Fixes all 13 findings from review round 6:

High:
- Honor server Retry-After on 429 (capped at 60s) instead of always
  using local exponential backoff (base_provider.rb)
- Parallel executor timeout/rejection Results carry the real tool name
  instead of "unknown"; rejected futures no longer report a misleading
  full-timeout duration (executor.rb)
- Tool blocks with keyword parameters now work — arguments are splatted
  to keywords when the block declares them (definition.rb)

Medium:
- Wire the Loop's emitter into Compaction so the documented :compaction
  event actually fires (loop.rb)
- Buffer SSE chunks as BINARY and re-encode complete lines to UTF-8 in
  all three providers; streaming deltas are now always valid UTF-8
- :fallback_start payload includes partial_output/partial_chars so
  consumers can truncate partial primary text (fallback.rb)
- Validate tool names against provider constraints at definition time
- Declare json as a runtime dependency and require it in every file
  that uses it (composability; pinned by a source-scan spec)

Low/docs:
- Configuration rejects negative numeric settings; eager-init the
  global configuration to remove the first-access race
- Document continue() per-invocation Result accounting, schema-as-hints
  (not validation), and unbounded message growth without compaction
- Correct CLAUDE.md module map (agent/agent.rb never existed), version
  reference, and extension handler signature
- CHANGELOG note: 0.1.4 was never actually released (version.rb went
  0.1.3 → 0.1.5); created the missing v0.1.7 tag locally

22 new regression specs in spec/ruby_pi/fixes/review_round6_spec.rb.
Suite: 492 examples, 0 failures.

Co-Authored-By: Claude Fable 5 <[email protected]>
@ejwhite7 ejwhite7 merged commit 315ce6d into main Jun 9, 2026
3 checks passed
@ejwhite7 ejwhite7 deleted the fix/review-round6 branch June 9, 2026 18:28
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.

1 participant