

1909931238
feat(kernel): R7b Ruby walker — ruby module, tree-sitter-ruby 0.23.1 bump, ref-flag wire slot, ruby default-routed (#1379)
Third R7b port, checklist-first recipe (docs/design/ruby-kernel-port-checklist.md).
Grammar bump first, validated standalone (the rust pattern): tree-sitter-ruby
^0.20.1 (tree-sitter-wasms, 2024-02) → v0.23.1 — crate pinned =0.23.1, wasm
built from tag 71bd32f's checked-in parser.c/scanner.c (both sha-matched
against the crates.io tarball; content bump, ABI stays 14). Old-vs-new
full-init dumps: sinatra/jekyll byte-identical; rails = exactly the one
classified hunk (the `recv&.!=` safe-nav operator misparse fix,
`table_name.!` → `table_name.!=`, precision-positive).
Walker (python.rs chassis + the six ruby divergences) preserves bug-for-bug:
the importTypes:['call'] funnel (class-body DSL — attr_accessor, has_many,
define_method incl. its block, sinatra route blocks — emits NOTHING at
non-body scope), hook-handled module multiply-capture (nested modules re-scan
their subtree per level after popping — `this.hooked` fn-refs from class AND
module AND file), the sibling-scan visibility trio (bare `private` invisible;
`private :sym`/`private def` poison all later defs; the inner def stays
public), bare-call statements (do…end body_statement emits, brace-block
block_body doesn't), `.new` instantiates with last-`::`-segment names,
constant-receiver references refs, require/require_relative path refs
(posix-normalized, `.rb`-suffixed, `Kernel.require` and interpolated-path
quirks included), `=begin` docstring marker survival, and the reverse-order
value-ref DFS.
Wire v2: the hook's mixin `implements` refs carry `filePath: ctx.filePath` —
the ONE extraction-ref denormalized field (php's trait-use refs share the
shape). RefRow's first pad byte becomes a flags slot (REF_FLAG_FILE_PATH);
decode re-attaches its own filePath parameter; KERNEL_ABI_VERSION 1→2 on both
sides (mismatched dist/.node pairs degrade to wasm, as designed).
Gates: sweeps 0-diff sinatra 147/147, jekyll 164/164, rails 3452/3452 (3,763
files, 0 deferrals — ruby error incidence 0.00%, any deferral = walker bug);
full-init dumps byte-identical ×3 (7.2k/9.4k/375.6k lines); kernel-ruby-parity
suite (torture + CRLF + wire-flag pin + defer) + ruby grammar-parity row;
full suite 2,613 green ×2 under CODEGRAPH_KERNEL_EXPECT=1 (one unrelated
mcp-initialize timing flake under parallel load, passes solo 3/3 ×3).
DEFAULT_ROUTED += ruby (12 langs).
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 15:44:13 -05:00
..
2026-04-06 14:27:13 -05:00
2026-07-20 15:44:13 -05:00
2026-06-02 10:15:27 -05:00
2026-06-22 12:06:35 -05:00
2026-06-28 22:46:24 -05:00
2026-07-06 09:07:15 -05:00
2026-07-12 20:09:03 -05:00
2026-07-15 19:11:06 -05:00
2026-07-19 17:48:27 -05:00
2026-07-15 20:05:35 -05:00
2026-06-20 21:22:52 -05:00
2026-07-02 18:41:55 -05:00
2026-07-02 19:02:16 -05:00
2026-06-13 14:48:52 -05:00
2026-07-16 14:39:26 -05:00
2026-07-16 15:30:17 -05:00
2026-06-28 22:01:47 -05:00
2026-06-13 15:18:55 -05:00
2026-07-09 20:54:45 -05:00
2026-05-21 15:48:04 -05:00
2026-06-08 00:10:10 -04:00
2026-06-08 22:43:54 -04:00
2026-01-18 18:48:22 -06:00
2026-07-01 12:13:42 -05:00
2026-06-08 01:25:21 -04:00
2026-06-28 20:11:05 -05:00
2026-07-07 09:13:13 -05:00
2026-06-13 13:53:38 -05:00
2026-06-13 12:59:41 -05:00
2026-06-27 13:47:29 -05:00
2026-07-10 12:19:08 -05:00
2026-06-21 14:03:07 -05:00
2026-05-24 04:41:04 -05:00
2026-07-02 12:56:02 -05:00
2026-07-03 14:53:04 -05:00
2026-06-26 20:25:47 -05:00
2026-06-22 12:06:35 -05:00
2026-06-22 12:06:35 -05:00
2026-07-10 16:20:28 -05:00
2026-07-03 14:32:20 -05:00
2026-06-28 22:23:35 -05:00
2026-06-22 12:06:35 -05:00
2026-06-06 11:02:59 -04:00
2026-06-22 16:16:23 -05:00
2026-07-18 01:00:00 -05:00
2026-05-26 02:14:00 -05:00
2026-06-13 09:48:44 -05:00
2026-07-16 16:11:24 -05:00
2026-07-10 12:19:08 -05:00
2026-07-07 14:17:16 -05:00
2026-07-16 14:59:00 -05:00
2026-07-02 17:05:51 -05:00
2026-06-11 15:44:14 -05:00
2026-05-28 12:38:03 -05:00
2026-05-28 23:41:11 -05:00
2026-05-20 10:32:08 -05:00
2026-07-16 14:52:11 -05:00
2026-06-22 18:16:11 -05:00
2026-07-10 03:42:30 -05:00
2026-07-01 13:37:20 -05:00
2026-07-02 17:23:54 -05:00
2026-07-07 10:11:58 -05:00
2026-07-07 13:01:38 -05:00
2026-06-29 23:15:41 -05:00
2026-06-26 20:25:47 -05:00
2026-06-29 23:35:50 -05:00
2026-07-10 10:58:55 -05:00
2026-05-28 15:13:23 -05:00
2026-05-20 18:36:18 -05:00
2026-06-02 14:23:33 -05:00
2026-07-17 16:56:41 -05:00
2026-07-20 13:46:12 -05:00
2026-07-20 15:44:13 -05:00
2026-07-20 15:44:13 -05:00
2026-07-20 00:08:09 -05:00
2026-07-20 15:44:13 -05:00
2026-07-17 01:28:21 -05:00
2026-06-21 09:45:24 -05:00
2026-07-10 08:25:23 -05:00
2026-06-22 12:41:26 -05:00
2026-06-22 11:31:49 -05:00
2026-07-08 23:18:23 -05:00
2026-05-25 23:48:10 -05:00
2026-05-26 15:39:48 -05:00
2026-06-02 17:49:15 -05:00
2026-05-25 19:54:56 -05:00
2026-06-26 19:31:12 -05:00
2026-05-20 11:35:13 -05:00
2026-06-22 12:06:35 -05:00
2026-07-07 08:45:12 -05:00
2026-06-20 13:23:16 -05:00
2026-06-27 15:47:31 -05:00
2026-06-23 12:57:47 -05:00
2026-06-20 22:34:24 -05:00
2026-07-16 16:01:08 -05:00
2026-07-07 09:46:22 -05:00
2026-07-06 12:41:32 -05:00
2026-06-22 12:06:35 -05:00
2026-05-21 15:48:04 -05:00
2026-05-21 15:48:04 -05:00
2026-05-31 19:05:40 -05:00
2026-07-07 08:45:12 -05:00
2026-06-02 10:15:27 -05:00
2026-06-20 15:17:31 -05:00
2026-07-06 14:20:19 -05:00
2026-07-10 03:42:30 -05:00
2026-07-10 15:47:57 -05:00
2026-06-20 20:30:13 -05:00
2026-06-26 20:25:47 -05:00
2026-07-10 12:19:08 -05:00
2026-05-26 03:25:06 -05:00
2026-06-24 14:48:16 -05:00
2026-07-08 23:18:23 -05:00
2026-06-21 11:35:12 -05:00
2026-06-06 11:02:59 -04:00
2026-06-20 14:45:51 -05:00
2026-07-10 17:37:20 -05:00
2026-07-16 15:55:38 -05:00
2026-07-17 08:56:26 -05:00
2026-06-06 11:02:59 -04:00
2026-06-20 19:23:37 -05:00
2026-06-22 12:06:35 -05:00
2026-05-07 20:35:49 -05:00
2026-06-22 17:23:17 -05:00
2026-07-02 17:23:54 -05:00
2026-06-21 01:32:33 -05:00
2026-06-20 22:00:43 -05:00
2026-05-21 15:48:04 -05:00
2026-07-07 08:45:12 -05:00
2026-07-06 09:07:15 -05:00
2026-06-11 12:04:51 -05:00
2026-05-07 22:03:33 -05:00
2026-07-19 17:48:27 -05:00
2026-07-02 17:11:19 -05:00
2026-05-26 02:14:00 -05:00
2026-05-26 02:14:00 -05:00
2026-06-02 10:15:27 -05:00
2026-07-10 12:19:08 -05:00
2026-07-16 18:07:51 -05:00
2026-07-08 23:18:23 -05:00
2026-06-23 11:26:23 -05:00
2026-06-11 14:48:11 -05:00
2026-06-13 12:35:18 -05:00
2026-07-10 17:36:47 -05:00
2026-07-15 19:11:06 -05:00
2026-06-16 12:16:00 -05:00
2026-06-20 20:08:34 -05:00
2026-06-20 20:49:06 -05:00
2026-07-17 11:27:30 -05:00
2026-07-15 19:44:09 -05:00
2026-05-21 18:06:02 -05:00
2026-07-16 15:27:10 -05:00
2026-06-28 19:35:17 -05:00