Summary
Ruby XTalk substrate support is partially working, but the page-proxy request/dispatch path still times out. Other agents should investigate this using REPL-driven development and incremental target tests.
Reproduction
Run with maintained Ruby and the external gems available:
PATH=/opt/homebrew/opt/ruby/bin:/opt/homebrew/lib/ruby/gems/4.0.0/bin:$PATH \
./lein seedgen test '[xt.lang.spec-promise]' :with '[ruby]'
PATH=/opt/homebrew/opt/ruby/bin:/opt/homebrew/lib/ruby/gems/4.0.0/bin:$PATH \
./lein seedgen test '[xt.substrate.base-util]' :with '[ruby]'
PATH=/opt/homebrew/opt/ruby/bin:/opt/homebrew/lib/ruby/gems/4.0.0/bin:$PATH \
./lein seedgen test '[xt.substrate.page-core]' :with '[ruby]'
PATH=/opt/homebrew/opt/ruby/bin:/opt/homebrew/lib/ruby/gems/4.0.0/bin:$PATH \
./lein seedgen test '[xt.substrate.page-proxy]' :with '[ruby]'
Observed results:
- Promise layer: 11/11 passed.
- Base-util and handlers: 33/33 passed.
- Page-core: 37/37 passed.
- Page-proxy: 29 passed; failures remain in:
xt.substrate.page-proxy/proxy-dispatch-op
xt.substrate.page-proxy/proxy-dispatcher
xt.substrate.page-proxy/model-proxy-call
xt.substrate.page-proxy/group-sync-proxy
The failures occur around deferred request creation, transport sending, pending-response settlement, and proxy dispatch. The direct promise suite does not currently cover a resolver called later, so add an isolated deferred-resolution probe first.
Investigation notes
- Ruby 4.0.6 with
concurrent-ruby 1.3.8 works for the promise seed.
pg 1.6.3 loads successfully with Homebrew Ruby and Homebrew libpq.
websocket-client-simple 0.9.0 loads after installation.
- Apple system Ruby 2.6 cannot reliably build the
pg native extension because its SDK/Ruby headers and architecture metadata are stale.
- Ruby destructuring was checked in the REPL:
transport-id lowers to "transport_id", and send-fn lowers to "send_fn"; that is not currently established as the failure.
- Do not edit generated
test-lang/xtbench/** output as the source fix.
Container provisioning requirement
The Ruby runtime/container must install and expose the external libraries required by the generated target code:
gem install concurrent-ruby
gem install pg
gem install websocket-client-simple
Use a maintained Ruby version (Ruby >= 2.7 for current pg; Ruby 3.x/4.x is preferable) and ensure the selected Ruby executable is the one used by Hara's :ruby basic runtime. The container should also have PostgreSQL client development/runtime libraries available for pg where a prebuilt gem is not used.
Definition of done
- Ruby container setup installs the required gems and selects the intended Ruby executable.
- A deferred
promise-new resolution test passes.
- The four page-proxy failures are either fixed or reduced to a clearly documented external dependency/transport limitation.
- Validate source and generated target tests with the project’s
./lein seedgen test ... :with ... workflow.
Summary
Ruby XTalk substrate support is partially working, but the page-proxy request/dispatch path still times out. Other agents should investigate this using REPL-driven development and incremental target tests.
Reproduction
Run with maintained Ruby and the external gems available:
Observed results:
xt.substrate.page-proxy/proxy-dispatch-opxt.substrate.page-proxy/proxy-dispatcherxt.substrate.page-proxy/model-proxy-callxt.substrate.page-proxy/group-sync-proxyThe failures occur around deferred request creation, transport sending, pending-response settlement, and proxy dispatch. The direct promise suite does not currently cover a resolver called later, so add an isolated deferred-resolution probe first.
Investigation notes
concurrent-ruby1.3.8 works for the promise seed.pg1.6.3 loads successfully with Homebrew Ruby and Homebrew libpq.websocket-client-simple0.9.0 loads after installation.pgnative extension because its SDK/Ruby headers and architecture metadata are stale.transport-idlowers to"transport_id", andsend-fnlowers to"send_fn"; that is not currently established as the failure.test-lang/xtbench/**output as the source fix.Container provisioning requirement
The Ruby runtime/container must install and expose the external libraries required by the generated target code:
Use a maintained Ruby version (Ruby >= 2.7 for current
pg; Ruby 3.x/4.x is preferable) and ensure the selected Ruby executable is the one used by Hara's:rubybasic runtime. The container should also have PostgreSQL client development/runtime libraries available forpgwhere a prebuilt gem is not used.Definition of done
promise-newresolution test passes../lein seedgen test ... :with ...workflow.