rubik 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a799e64cfe31504bbb5c2da2dff00070725c885e04abb896addfc32ed48d3f87
4
- data.tar.gz: 8dbaabb4fba7e1dc076924b0be25527307700728bc6e21e2f9e842edc0b8987b
3
+ metadata.gz: bced6a0406961cf92cb6e9bcba59607c5517e4a14a205fca253d07cb461b6391
4
+ data.tar.gz: 2b1812eecdf480852cbaaae6d3ef507de561b10e0f628e87e7c831969db8dbd2
5
5
  SHA512:
6
- metadata.gz: bd0f68f48ddf4f8b35c4ac625abc97a8e8673162529cb21806b664fa7b5d6c718d45e299f91b9ef4bebf7437371b6282655fff2e02574c7ec16171259c00311f
7
- data.tar.gz: fa4a485d719537c0bd40d56d32fb97794c9b9de8288bf2f0a0159c5290a02c1d2906071d70e75585dda0b2d677980047a899d94634270b03bc9d13559444955f
6
+ metadata.gz: e084f7f8f448a21537c39f0b96b2ef218ad02c7f1699aaf6da07318c1049a224d893595a90109dadc6838cfa2db92fd70302f9374065dd1cb869d12ee7441425
7
+ data.tar.gz: 7b19fb4c8ff589ffc386f65fe83d01117132c600e7fd316fc990d3047cb7eeb8f6d7c4a6f5498857d1a185d4be43ac41f4e47d6b8530c31c5fb24dec908e2c12
data/ATTRIBUTION.md CHANGED
@@ -121,7 +121,7 @@ SOFTWARE.
121
121
  | **`strings-ansi`** | Piotr Murach | MIT | ANSI-aware string truncation and alignment for REPL formatters. |
122
122
  | **`reline`** | Hiroshi SHIBATA & Ruby Team | Ruby License / BSD-2-Clause | Line-editing, history navigation, autocompletion hooks, and headless terminal adaptation. |
123
123
  | **`prism`** | Kevin Newton & Ruby Core Team | MIT | High-performance Ruby parsing and AST extraction ([`Rubik::AST::RubyExtractor`](lib/rubik/ast/ruby_extractor.rb)). |
124
- | **`minitest`** | Ryan Davis & seattlerb | MIT | Fast, modular test suite powering Rubik's 3,400+ unit, integration, and contract tests. |
124
+ | **`minitest`** | Ryan Davis & seattlerb | MIT | Fast, modular test suite powering Rubik's 3,500+ unit, integration, and contract tests. |
125
125
  | **`rubocop`** | Bozhidar Batsov & contributors | MIT | Static code analysis, style enforcement, and architectural hygiene gates. |
126
126
  | **`benchmark`, `logger`, `pstore`, `reline`, `fiddle`** | Ruby core / rubygems teams | Ruby License / BSD-2-Clause | Ruby stdlib gems pinned explicitly in `rubik.gemspec` as they are unbundled from the default set in Ruby 3.4/3.5. |
127
127
 
data/CHANGELOG.md CHANGED
@@ -10,6 +10,30 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
10
10
 
11
11
  Nothing yet.
12
12
 
13
+ ## [0.1.5] - 2026-10-13
14
+
15
+ A dependency-floor release: the reactive wakeup contract moves into
16
+ the gemspec, and the triaged open-PR backlog lands as reviewed test
17
+ hardening.
18
+
19
+ ### Fixed
20
+
21
+ - **Reactive wakeup requires Reline >= 0.7:** the idle-prompt kick
22
+ (`TerminalGuard#safe_wakeup!` → `Reline.ungetc`) only reaches a reader
23
+ already blocked in Reline's getc loop on 0.7.0+, whose ANSI gate re-checks
24
+ the ungetc buffer on every poll iteration; on 0.6.x the injected Enter
25
+ stranded until the next keystroke (maestro "wakes only when I press a
26
+ key"). `rubik.gemspec` now floors `reline >= 0.7`, the gemspec-integrity
27
+ test pins the floor (0.7.0 satisfies, 0.6.3 does not), and an integration
28
+ test pins the contract against the real gate under a PTY.
29
+
30
+ ### Changed
31
+
32
+ - **Triaged open-PR batch lands (#110–#119):** SkillTool branch pins,
33
+ real-supervisor error paths, and ast/symbols/storage coverage harden
34
+ the suite; ContextBuilder builds its prompt parts with `filter_map`
35
+ (parity proven, golden-prompt pinned).
36
+
13
37
  ## [0.1.4] - 2026-10-13
14
38
 
15
39
  The autonomy release: `!goal` becomes resumable across transient
@@ -334,7 +334,7 @@ module Rubik
334
334
  tool_section = if tool_schemas.nil? || tool_schemas.empty?
335
335
  ""
336
336
  elsif native_tools
337
- names = tool_schemas.map { |t| t[:name] || t["name"] }.compact.join(", ")
337
+ names = tool_schemas.filter_map { |t| t[:name] || t["name"] }.join(", ")
338
338
  Doctrine.native_tools_note(names)
339
339
  else
340
340
  Doctrine.json_tools_note(tool_schemas)
@@ -108,7 +108,11 @@ module Rubik
108
108
  # Plan 109: wake a blocked empty readline by injecting an Enter.
109
109
  # Reline 0.7.0's IO gates (ANSI/Windows/Dumb) all poll and re-check
110
110
  # their ungetc buffer (10ms/100ms/100ms), so the injection reaches
111
- # the blocked reader on every gate. idle_and_empty? is re-evaluated
111
+ # the blocked reader on every gate. The per-poll re-check is 0.7.0+
112
+ # behavior — rubik.gemspec floors that version and
113
+ # test/integration/test_reline_wakeup_contract.rb pins the real gate
114
+ # (on 0.6.x the injected Enter strands until the next keystroke).
115
+ # idle_and_empty? is re-evaluated
112
116
  # inside this critical section (Monitor reentrancy makes the nested
113
117
  # synchronize free); the residual window between check and gate
114
118
  # consumption is inherent to Reline's thread model and accepted. A
data/lib/rubik/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rubik
4
- VERSION = "0.1.4"
4
+ VERSION = "0.1.5"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubik
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Özgür Ulukır
@@ -190,14 +190,14 @@ dependencies:
190
190
  requirements:
191
191
  - - ">="
192
192
  - !ruby/object:Gem::Version
193
- version: '0'
193
+ version: '0.7'
194
194
  type: :runtime
195
195
  prerelease: false
196
196
  version_requirements: !ruby/object:Gem::Requirement
197
197
  requirements:
198
198
  - - ">="
199
199
  - !ruby/object:Gem::Version
200
- version: '0'
200
+ version: '0.7'
201
201
  - !ruby/object:Gem::Dependency
202
202
  name: prism
203
203
  requirement: !ruby/object:Gem::Requirement