ibex 0.2.0 → 0.3.0

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.
Files changed (437) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +95 -272
  3. data/docs/architecture.md +187 -35
  4. data/docs/bison-import.md +103 -0
  5. data/docs/comparison-policy.md +127 -0
  6. data/docs/configuration-model.md +59 -0
  7. data/docs/configuration-report.md +28 -0
  8. data/docs/conflict-explanation-reviews/v1/records/README.md +28 -0
  9. data/docs/conflict-explanation-study.md +62 -0
  10. data/docs/construction-profiling.md +157 -0
  11. data/docs/cst-migration.md +3 -4
  12. data/docs/cst.md +24 -0
  13. data/docs/decisions/0000-template.md +24 -0
  14. data/docs/decisions/0001-separate-ir-pipeline.md +34 -0
  15. data/docs/decisions/0002-opaque-user-code-boundary.md +32 -0
  16. data/docs/decisions/0003-self-hosted-grammar-frontend.md +32 -0
  17. data/docs/decisions/0004-shared-semantic-and-lossless-source-model.md +33 -0
  18. data/docs/decisions/0005-contained-grammar-composition.md +34 -0
  19. data/docs/decisions/0006-bounded-structural-grammar-lowering.md +32 -0
  20. data/docs/decisions/0007-shared-parser-construction-pipeline.md +33 -0
  21. data/docs/decisions/0008-versioned-runtime-package-boundary.md +36 -0
  22. data/docs/decisions/0009-isolated-parser-sessions.md +34 -0
  23. data/docs/decisions/0010-committed-runtime-observation.md +34 -0
  24. data/docs/decisions/0011-versioned-semantic-action-boundary.md +37 -0
  25. data/docs/decisions/0012-bounded-nonexecuting-analysis.md +37 -0
  26. data/docs/decisions/0013-transactional-generation-publication.md +37 -0
  27. data/docs/decisions/0014-versioned-generated-lexer.md +35 -0
  28. data/docs/decisions/0015-worker-isolated-browser-analysis.md +32 -0
  29. data/docs/decisions/0016-red-green-concrete-syntax.md +34 -0
  30. data/docs/decisions/0017-persistent-syntax-artifacts.md +35 -0
  31. data/docs/decisions/0018-conservative-incremental-syntax-reuse.md +38 -0
  32. data/docs/decisions/0019-runtime-syntax-session-boundary.md +51 -0
  33. data/docs/decisions/0020-grammar-ir-parser-contract.md +65 -0
  34. data/docs/decisions/0021-data-only-parser-table-sidecar.md +50 -0
  35. data/docs/decisions/0022-manifest-bound-verification-report.md +77 -0
  36. data/docs/decisions/0023-syntax-only-repair-results.md +48 -0
  37. data/docs/decisions/0024-direct-ielr-construction.md +42 -0
  38. data/docs/decisions/README.md +74 -0
  39. data/docs/declarative-configuration.md +262 -0
  40. data/docs/development.md +179 -2
  41. data/docs/direct-ielr-decision.md +120 -0
  42. data/docs/direct-multi-entry-decision.md +82 -0
  43. data/docs/editor-setup.md +2 -1
  44. data/docs/error-ux-review-rubric-v1.md +117 -0
  45. data/docs/error-ux-reviews/v1/records/README.md +22 -0
  46. data/docs/error-ux-round2-review-status-v1.json +27 -0
  47. data/docs/error-ux-round2-reviews/v1/records/README.md +30 -0
  48. data/docs/error-ux-round2-v1.json +1581 -0
  49. data/docs/error-ux-round2.md +111 -0
  50. data/docs/error-ux.md +54 -0
  51. data/docs/getting-started.md +80 -0
  52. data/docs/grammar-reference.md +184 -13
  53. data/docs/ielr-design.md +43 -0
  54. data/docs/ielr.md +92 -0
  55. data/docs/ja/bison-import.md +51 -0
  56. data/docs/ja/stable-api.md +53 -0
  57. data/docs/lexer-construction-profile.md +109 -0
  58. data/docs/lexer-migration.md +5 -0
  59. data/docs/maturity.md +128 -0
  60. data/docs/project-site-strategy.md +54 -0
  61. data/docs/racc-migration-evidence.md +45 -0
  62. data/docs/racc-migration.md +11 -0
  63. data/docs/release-readiness.md +126 -68
  64. data/docs/repair-semantics.md +123 -0
  65. data/docs/runtime-abi-evolution.md +307 -0
  66. data/docs/stability.md +144 -34
  67. data/docs/status.md +43 -0
  68. data/docs/syntax-sessions.md +183 -0
  69. data/docs/table-artifact.md +125 -0
  70. data/docs/test-interactions.md +219 -0
  71. data/docs/verification-report.md +137 -0
  72. data/docs/verifier-trust-boundary.md +199 -0
  73. data/docs/workloads.md +132 -0
  74. data/lib/ibex/analysis/digraph.rb +128 -0
  75. data/lib/ibex/analysis.rb +1 -0
  76. data/lib/ibex/bison_import/importer.rb +516 -0
  77. data/lib/ibex/bison_import/tokenizer.rb +260 -0
  78. data/lib/ibex/bison_import.rb +200 -0
  79. data/lib/ibex/bounded_subprocess.rb +171 -0
  80. data/lib/ibex/cli/ambiguity.rb +14 -5
  81. data/lib/ibex/cli/analysis.rb +134 -0
  82. data/lib/ibex/cli/bison_import.rb +121 -0
  83. data/lib/ibex/cli/config.rb +128 -0
  84. data/lib/ibex/cli/diagnostics.rb +31 -11
  85. data/lib/ibex/cli/documentation.rb +11 -8
  86. data/lib/ibex/cli/equiv.rb +169 -0
  87. data/lib/ibex/cli/error_messages.rb +11 -4
  88. data/lib/ibex/cli/explain.rb +14 -5
  89. data/lib/ibex/cli/fix.rb +203 -0
  90. data/lib/ibex/cli/formatting.rb +11 -10
  91. data/lib/ibex/cli/fuzz.rb +200 -0
  92. data/lib/ibex/cli/fuzz_regressions.rb +145 -0
  93. data/lib/ibex/cli/generation_artifacts.rb +53 -2
  94. data/lib/ibex/cli/generation_error_messages.rb +1 -1
  95. data/lib/ibex/cli/grammar_tests.rb +32 -14
  96. data/lib/ibex/cli/ir_tools.rb +5 -61
  97. data/lib/ibex/cli/outputs.rb +60 -33
  98. data/lib/ibex/cli/reduce.rb +202 -0
  99. data/lib/ibex/cli/reduce_reporting.rb +71 -0
  100. data/lib/ibex/cli/samples.rb +49 -23
  101. data/lib/ibex/cli/verify.rb +116 -0
  102. data/lib/ibex/cli/watch.rb +6 -5
  103. data/lib/ibex/cli.rb +357 -56
  104. data/lib/ibex/codegen/action_locations.rb +1 -1
  105. data/lib/ibex/codegen/action_method_source.rb +5 -6
  106. data/lib/ibex/codegen/action_source.rb +3 -2
  107. data/lib/ibex/codegen/ambiguity.rb +5 -4
  108. data/lib/ibex/codegen/explain.rb +123 -55
  109. data/lib/ibex/codegen/generated_action_abi.rb +10 -5
  110. data/lib/ibex/codegen/rbs.rb +15 -7
  111. data/lib/ibex/codegen/report.rb +25 -13
  112. data/lib/ibex/codegen/ruby.rb +28 -64
  113. data/lib/ibex/codegen/ruby_actions.rb +9 -6
  114. data/lib/ibex/codegen/ruby_syntax.rb +15 -9
  115. data/lib/ibex/configuration/analysis_grammar.rb +35 -0
  116. data/lib/ibex/configuration/explanation.rb +421 -0
  117. data/lib/ibex/configuration/inspector.rb +232 -0
  118. data/lib/ibex/configuration.rb +580 -0
  119. data/lib/ibex/coverage/collector.rb +21 -11
  120. data/lib/ibex/coverage/event_stream.rb +13 -7
  121. data/lib/ibex/coverage/report.rb +26 -18
  122. data/lib/ibex/coverage/runtime_event_validator.rb +30 -21
  123. data/lib/ibex/delta_reducer.rb +99 -0
  124. data/lib/ibex/diff.rb +140 -0
  125. data/lib/ibex/equiv/machine.rb +135 -0
  126. data/lib/ibex/equiv.rb +373 -0
  127. data/lib/ibex/fix.rb +557 -0
  128. data/lib/ibex/frontend/ast.rb +22 -2
  129. data/lib/ibex/frontend/bootstrap_parser.rb +6 -13
  130. data/lib/ibex/frontend/diagnostic.rb +1 -1
  131. data/lib/ibex/frontend/formatter.rb +72 -26
  132. data/lib/ibex/frontend/generated_parser.rb +147 -117
  133. data/lib/ibex/frontend/generated_parser_base.rb +7 -3
  134. data/lib/ibex/frontend/generated_parser_includes.rb +1 -11
  135. data/lib/ibex/frontend/generation.rb +1 -1
  136. data/lib/ibex/frontend/parser/declarations.rb +17 -2
  137. data/lib/ibex/frontend/parser_configuration_support.rb +56 -0
  138. data/lib/ibex/frontend/regenerator.rb +1 -0
  139. data/lib/ibex/frontend/resolution.rb +2 -1
  140. data/lib/ibex/frontend/resolver.rb +1 -1
  141. data/lib/ibex/frontend/rule_documentation.rb +2 -1
  142. data/lib/ibex/frontend/source_cursor.rb +2 -2
  143. data/lib/ibex/frontend/source_span.rb +9 -1
  144. data/lib/ibex/frontend/token_adapter/declaration_state.rb +38 -6
  145. data/lib/ibex/frontend/token_adapter.rb +10 -0
  146. data/lib/ibex/frontend.rb +1 -0
  147. data/lib/ibex/fuzz.rb +219 -0
  148. data/lib/ibex/generation_input.rb +1 -1
  149. data/lib/ibex/generation_manifest.rb +36 -25
  150. data/lib/ibex/generation_transaction.rb +1 -1
  151. data/lib/ibex/generation_transaction_recovery.rb +4 -4
  152. data/lib/ibex/generation_transaction_validation.rb +2 -2
  153. data/lib/ibex/grammar_tests.rb +1 -1
  154. data/lib/ibex/ir/automaton_ir.rb +61 -19
  155. data/lib/ibex/ir/grammar_ir.rb +76 -45
  156. data/lib/ibex/ir/lexer_ir.rb +5 -5
  157. data/lib/ibex/ir/parser_contract.rb +135 -0
  158. data/lib/ibex/ir/serialize.rb +203 -76
  159. data/lib/ibex/ir/validator/automaton.rb +64 -34
  160. data/lib/ibex/ir/validator/base.rb +51 -33
  161. data/lib/ibex/ir/validator/grammar.rb +113 -83
  162. data/lib/ibex/ir/validator/lexer.rb +2 -2
  163. data/lib/ibex/ir/validator.rb +2 -1
  164. data/lib/ibex/ir.rb +16 -3
  165. data/lib/ibex/lalr/build_metrics.rb +50 -2
  166. data/lib/ibex/lalr/builder.rb +191 -56
  167. data/lib/ibex/lalr/conflict_search.rb +15 -4
  168. data/lib/ibex/lalr/counterexample.rb +19 -14
  169. data/lib/ibex/lalr/direct_lookaheads.rb +110 -57
  170. data/lib/ibex/lalr/goto_follows.rb +229 -0
  171. data/lib/ibex/lalr/ielr/annotator.rb +214 -0
  172. data/lib/ibex/lalr/ielr/bits.rb +28 -0
  173. data/lib/ibex/lalr/ielr/inadequacy.rb +47 -0
  174. data/lib/ibex/lalr/ielr/item_lookaheads.rb +78 -0
  175. data/lib/ibex/lalr/ielr/pipeline.rb +75 -0
  176. data/lib/ibex/lalr/ielr/split_stability.rb +78 -0
  177. data/lib/ibex/lalr/ielr/split_state.rb +20 -0
  178. data/lib/ibex/lalr/ielr/state_splitter.rb +258 -0
  179. data/lib/ibex/lalr/ielr_partition.rb +22 -8
  180. data/lib/ibex/lalr/inadequacy_report.rb +50 -0
  181. data/lib/ibex/lalr/lookahead_propagation.rb +111 -0
  182. data/lib/ibex/lalr/lr0_collection.rb +121 -0
  183. data/lib/ibex/lalr/unreachable_states.rb +80 -0
  184. data/lib/ibex/lalr.rb +52 -1
  185. data/lib/ibex/location.rb +3 -3
  186. data/lib/ibex/lsp/document_handlers.rb +9 -7
  187. data/lib/ibex/lsp/initialization_handlers.rb +9 -7
  188. data/lib/ibex/lsp/navigation_handlers.rb +25 -11
  189. data/lib/ibex/lsp/parser_configuration_assistance.rb +149 -0
  190. data/lib/ibex/lsp/position_codec.rb +6 -2
  191. data/lib/ibex/lsp/request_handlers.rb +3 -2
  192. data/lib/ibex/lsp/request_support.rb +14 -7
  193. data/lib/ibex/lsp/server.rb +13 -11
  194. data/lib/ibex/lsp/symbol_index.rb +13 -13
  195. data/lib/ibex/lsp/symbol_index_builder.rb +30 -20
  196. data/lib/ibex/lsp/symbol_occurrence.rb +8 -2
  197. data/lib/ibex/lsp/transport.rb +13 -3
  198. data/lib/ibex/lsp/workspace.rb +5 -4
  199. data/lib/ibex/lsp/workspace_analyzer.rb +1 -1
  200. data/lib/ibex/lsp.rb +1 -0
  201. data/lib/ibex/messages/en.yml +28 -0
  202. data/lib/ibex/messages/ja.yml +28 -0
  203. data/lib/ibex/messages.rb +68 -0
  204. data/lib/ibex/metrics.rb +175 -0
  205. data/lib/ibex/normalize/declarations.rb +2 -0
  206. data/lib/ibex/normalize/diagnostics.rb +63 -38
  207. data/lib/ibex/normalize/expander.rb +5 -4
  208. data/lib/ibex/normalize/expression.rb +8 -6
  209. data/lib/ibex/normalize/grammar_builder.rb +26 -0
  210. data/lib/ibex/normalize/inline_expansion.rb +100 -49
  211. data/lib/ibex/normalize/lexer.rb +3 -3
  212. data/lib/ibex/normalize/parameter_ebnf_lowering.rb +11 -10
  213. data/lib/ibex/normalize/parameter_lowering.rb +40 -23
  214. data/lib/ibex/normalize/parameters.rb +31 -4
  215. data/lib/ibex/normalize/parser_configuration.rb +70 -0
  216. data/lib/ibex/normalize.rb +10 -20
  217. data/lib/ibex/racc_migration/report.rb +6 -3
  218. data/lib/ibex/rake_task.rb +1 -1
  219. data/lib/ibex/samples.rb +43 -13
  220. data/lib/ibex/table_artifact/builder.rb +266 -0
  221. data/lib/ibex/table_artifact/cst_projection.rb +70 -0
  222. data/lib/ibex/table_artifact/document.rb +39 -0
  223. data/lib/ibex/table_artifact/executor.rb +187 -0
  224. data/lib/ibex/table_artifact/serializer.rb +57 -0
  225. data/lib/ibex/table_artifact/validator/metadata.rb +179 -0
  226. data/lib/ibex/table_artifact/validator/support.rb +86 -0
  227. data/lib/ibex/table_artifact/validator/tables.rb +238 -0
  228. data/lib/ibex/table_artifact/validator.rb +253 -0
  229. data/lib/ibex/table_artifact.rb +88 -0
  230. data/lib/ibex/table_simulation/result.rb +6 -2
  231. data/lib/ibex/table_simulation/step.rb +3 -1
  232. data/lib/ibex/tables.rb +14 -0
  233. data/lib/ibex/verifiable_generation_bundle.rb +86 -0
  234. data/lib/ibex/verification_report/builder.rb +159 -0
  235. data/lib/ibex/verification_report/canonical_ir.rb +123 -0
  236. data/lib/ibex/verification_report/logical_path.rb +68 -0
  237. data/lib/ibex/verification_report/validator.rb +329 -0
  238. data/lib/ibex/verification_report.rb +69 -0
  239. data/lib/ibex/verify/action_correspondence.rb +138 -0
  240. data/lib/ibex/verify/language_witness.rb +295 -0
  241. data/lib/ibex/verify/reference_collection.rb +190 -0
  242. data/lib/ibex/verify/result.rb +73 -0
  243. data/lib/ibex/verify/verifier.rb +598 -0
  244. data/lib/ibex/verify.rb +15 -0
  245. data/lib/ibex/version.rb +1 -1
  246. data/lib/ibex/watch/runner.rb +10 -1
  247. data/lib/ibex/watch/source_snapshot.rb +13 -8
  248. data/lib/ibex.rb +10 -0
  249. data/schema/{automaton-ir-v1.schema.json → automaton-ir-definitions.schema.json} +6 -6
  250. data/schema/{automaton-ir-v2.schema.json → automaton-ir.schema.json} +14 -7
  251. data/schema/bison-import-v1.schema.json +106 -0
  252. data/schema/conflict-explanation-review-v1.schema.json +196 -0
  253. data/schema/conflict-explanation-study-v1.schema.json +528 -0
  254. data/schema/construction-profile-v1.schema.json +779 -0
  255. data/schema/diff-v1.schema.json +41 -0
  256. data/schema/direct-ielr-decision-v1.schema.json +200 -0
  257. data/schema/equiv-v1.schema.json +64 -0
  258. data/schema/error-ux-review-v1.schema.json +609 -0
  259. data/schema/error-ux-round2-review-v1.schema.json +191 -0
  260. data/schema/error-ux-round2-v1.schema.json +519 -0
  261. data/schema/explain-v1.schema.json +63 -1
  262. data/schema/fix-v1.schema.json +64 -0
  263. data/schema/fix-v2.schema.json +66 -0
  264. data/schema/fix-v3.schema.json +101 -0
  265. data/schema/fuzz-regression-v1.schema.json +79 -0
  266. data/schema/fuzz-v1.schema.json +114 -0
  267. data/schema/{grammar-ir-v2.schema.json → grammar-ir-extensions.schema.json} +20 -65
  268. data/schema/{grammar-ir-v1.schema.json → grammar-ir-foundation.schema.json} +3 -3
  269. data/schema/grammar-ir.schema.json +271 -0
  270. data/schema/ielr-benchmark-v1.schema.json +85 -0
  271. data/schema/lexer-profile-v1.schema.json +491 -0
  272. data/schema/metrics-v1.schema.json +60 -0
  273. data/schema/reduce-v1.schema.json +22 -0
  274. data/schema/reduce-v2.schema.json +63 -0
  275. data/schema/table-artifact-v1.schema.json +377 -0
  276. data/schema/verification-report-v1.schema.json +222 -0
  277. data/schema/verify-v1.schema.json +42 -0
  278. data/sig/ibex/analysis/digraph.rbs +19 -0
  279. data/sig/ibex/bison_import/importer.rbs +140 -0
  280. data/sig/ibex/bison_import/tokenizer.rbs +91 -0
  281. data/sig/ibex/bison_import.rbs +95 -0
  282. data/sig/ibex/bounded_subprocess.rbs +76 -0
  283. data/sig/ibex/cli/ambiguity.rbs +6 -0
  284. data/sig/ibex/cli/analysis.rbs +43 -0
  285. data/sig/ibex/cli/bison_import.rbs +32 -0
  286. data/sig/ibex/cli/config.rbs +35 -0
  287. data/sig/ibex/cli/diagnostics.rbs +16 -3
  288. data/sig/ibex/cli/documentation.rbs +5 -1
  289. data/sig/ibex/cli/equiv.rbs +49 -0
  290. data/sig/ibex/cli/error_messages.rbs +6 -0
  291. data/sig/ibex/cli/explain.rbs +6 -0
  292. data/sig/ibex/cli/fix.rbs +53 -0
  293. data/sig/ibex/cli/formatting.rbs +5 -1
  294. data/sig/ibex/cli/fuzz.rbs +47 -0
  295. data/sig/ibex/cli/fuzz_regressions.rbs +40 -0
  296. data/sig/ibex/cli/generation_artifacts.rbs +21 -2
  297. data/sig/ibex/cli/generation_error_messages.rbs +2 -2
  298. data/sig/ibex/cli/grammar_tests.rbs +15 -3
  299. data/sig/ibex/cli/ir_tools.rbs +7 -19
  300. data/sig/ibex/cli/outputs.rbs +9 -3
  301. data/sig/ibex/cli/reduce.rbs +60 -0
  302. data/sig/ibex/cli/reduce_reporting.rbs +27 -0
  303. data/sig/ibex/cli/samples.rbs +8 -0
  304. data/sig/ibex/cli/verify.rbs +28 -0
  305. data/sig/ibex/cli/watch.rbs +2 -2
  306. data/sig/ibex/cli.rbs +79 -5
  307. data/sig/ibex/codegen/action_method_source.rbs +4 -4
  308. data/sig/ibex/codegen/explain.rbs +45 -25
  309. data/sig/ibex/codegen/generated_action_abi.rbs +14 -10
  310. data/sig/ibex/codegen/rbs.rbs +12 -10
  311. data/sig/ibex/codegen/report.rbs +12 -12
  312. data/sig/ibex/codegen/ruby.rbs +18 -15
  313. data/sig/ibex/codegen/ruby_actions.rbs +6 -6
  314. data/sig/ibex/codegen/ruby_syntax.rbs +10 -8
  315. data/sig/ibex/configuration/analysis_grammar.rbs +13 -0
  316. data/sig/ibex/configuration/explanation.rbs +195 -0
  317. data/sig/ibex/configuration/inspector.rbs +53 -0
  318. data/sig/ibex/configuration.rbs +242 -0
  319. data/sig/ibex/coverage/collector.rbs +16 -14
  320. data/sig/ibex/coverage/event_stream.rbs +12 -10
  321. data/sig/ibex/coverage/report.rbs +20 -18
  322. data/sig/ibex/coverage/runtime_event_validator.rbs +38 -36
  323. data/sig/ibex/delta_reducer.rbs +38 -0
  324. data/sig/ibex/diff.rbs +47 -0
  325. data/sig/ibex/equiv/machine.rbs +54 -0
  326. data/sig/ibex/equiv.rbs +129 -0
  327. data/sig/ibex/fix.rbs +138 -0
  328. data/sig/ibex/frontend/ast.rbs +33 -7
  329. data/sig/ibex/frontend/bootstrap_parser.rbs +2 -0
  330. data/sig/ibex/frontend/diagnostic.rbs +2 -2
  331. data/sig/ibex/frontend/formatter.rbs +38 -30
  332. data/sig/ibex/frontend/generated_parser.rbs +87 -77
  333. data/sig/ibex/frontend/generated_parser_base.rbs +4 -2
  334. data/sig/ibex/frontend/parser/declarations.rbs +3 -0
  335. data/sig/ibex/frontend/parser_configuration_support.rbs +27 -0
  336. data/sig/ibex/frontend/resolution.rbs +3 -2
  337. data/sig/ibex/frontend/source_cursor.rbs +2 -2
  338. data/sig/ibex/frontend/source_span.rbs +5 -2
  339. data/sig/ibex/frontend/token_adapter/declaration_state.rbs +13 -1
  340. data/sig/ibex/frontend/token_adapter.rbs +6 -0
  341. data/sig/ibex/fuzz.rbs +71 -0
  342. data/sig/ibex/generation_input.rbs +2 -2
  343. data/sig/ibex/generation_manifest.rbs +35 -32
  344. data/sig/ibex/generation_transaction_recovery.rbs +2 -2
  345. data/sig/ibex/generation_transaction_validation.rbs +2 -2
  346. data/sig/ibex/grammar_tests.rbs +2 -2
  347. data/sig/ibex/ir/automaton_ir.rbs +30 -11
  348. data/sig/ibex/ir/grammar_ir.rbs +41 -27
  349. data/sig/ibex/ir/lexer_ir.rbs +8 -8
  350. data/sig/ibex/ir/parser_contract.rbs +69 -0
  351. data/sig/ibex/ir/serialize.rbs +63 -28
  352. data/sig/ibex/ir/validator/automaton.rbs +47 -44
  353. data/sig/ibex/ir/validator/base.rbs +35 -31
  354. data/sig/ibex/ir/validator/grammar.rbs +78 -67
  355. data/sig/ibex/ir/validator/lexer.rbs +4 -4
  356. data/sig/ibex/ir.rbs +9 -3
  357. data/sig/ibex/lalr/build_metrics.rbs +42 -2
  358. data/sig/ibex/lalr/builder.rbs +75 -24
  359. data/sig/ibex/lalr/conflict_search.rbs +5 -2
  360. data/sig/ibex/lalr/counterexample.rbs +17 -14
  361. data/sig/ibex/lalr/direct_lookaheads.rbs +35 -28
  362. data/sig/ibex/lalr/goto_follows.rbs +89 -0
  363. data/sig/ibex/lalr/ielr/annotator.rbs +67 -0
  364. data/sig/ibex/lalr/ielr/bits.rbs +14 -0
  365. data/sig/ibex/lalr/ielr/inadequacy.rbs +24 -0
  366. data/sig/ibex/lalr/ielr/item_lookaheads.rbs +35 -0
  367. data/sig/ibex/lalr/ielr/pipeline.rbs +17 -0
  368. data/sig/ibex/lalr/ielr/split_stability.rbs +27 -0
  369. data/sig/ibex/lalr/ielr/split_state.rbs +14 -0
  370. data/sig/ibex/lalr/ielr/state_splitter.rbs +76 -0
  371. data/sig/ibex/lalr/ielr_partition.rbs +17 -5
  372. data/sig/ibex/lalr/inadequacy_report.rbs +21 -0
  373. data/sig/ibex/lalr/lookahead_propagation.rbs +38 -0
  374. data/sig/ibex/lalr/lr0_collection.rbs +50 -0
  375. data/sig/ibex/lalr/unreachable_states.rbs +25 -0
  376. data/sig/ibex/lalr.rbs +11 -1
  377. data/sig/ibex/location.rbs +6 -6
  378. data/sig/ibex/lsp/document_handlers.rbs +8 -8
  379. data/sig/ibex/lsp/initialization_handlers.rbs +12 -12
  380. data/sig/ibex/lsp/navigation_handlers.rbs +15 -12
  381. data/sig/ibex/lsp/parser_configuration_assistance.rbs +49 -0
  382. data/sig/ibex/lsp/position_codec.rbs +8 -4
  383. data/sig/ibex/lsp/request_handlers.rbs +4 -4
  384. data/sig/ibex/lsp/request_support.rbs +8 -8
  385. data/sig/ibex/lsp/server.rbs +16 -16
  386. data/sig/ibex/lsp/symbol_index.rbs +20 -21
  387. data/sig/ibex/lsp/symbol_index_builder.rbs +9 -8
  388. data/sig/ibex/lsp/symbol_occurrence.rbs +11 -5
  389. data/sig/ibex/lsp/transport.rbs +18 -6
  390. data/sig/ibex/lsp/workspace.rbs +3 -2
  391. data/sig/ibex/lsp/workspace_analyzer.rbs +1 -1
  392. data/sig/ibex/messages.rbs +26 -0
  393. data/sig/ibex/metrics.rbs +50 -0
  394. data/sig/ibex/normalize/diagnostics.rbs +4 -4
  395. data/sig/ibex/normalize/expander.rbs +2 -2
  396. data/sig/ibex/normalize/expression.rbs +10 -8
  397. data/sig/ibex/normalize/grammar_builder.rbs +11 -0
  398. data/sig/ibex/normalize/inline_expansion.rbs +59 -50
  399. data/sig/ibex/normalize/lexer.rbs +4 -4
  400. data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +15 -14
  401. data/sig/ibex/normalize/parameter_lowering.rbs +18 -18
  402. data/sig/ibex/normalize/parameters.rbs +13 -8
  403. data/sig/ibex/normalize/parser_configuration.rbs +23 -0
  404. data/sig/ibex/normalize.rbs +11 -5
  405. data/sig/ibex/racc_migration/report.rbs +8 -6
  406. data/sig/ibex/rake_task.rbs +1 -1
  407. data/sig/ibex/samples.rbs +13 -4
  408. data/sig/ibex/table_artifact/builder.rbs +93 -0
  409. data/sig/ibex/table_artifact/cst_projection.rbs +20 -0
  410. data/sig/ibex/table_artifact/document.rbs +27 -0
  411. data/sig/ibex/table_artifact/executor.rbs +66 -0
  412. data/sig/ibex/table_artifact/serializer.rbs +25 -0
  413. data/sig/ibex/table_artifact/validator/metadata.rbs +52 -0
  414. data/sig/ibex/table_artifact/validator/support.rbs +46 -0
  415. data/sig/ibex/table_artifact/validator/tables.rbs +63 -0
  416. data/sig/ibex/table_artifact/validator.rbs +66 -0
  417. data/sig/ibex/table_artifact.rbs +32 -0
  418. data/sig/ibex/table_simulation/result.rbs +8 -4
  419. data/sig/ibex/table_simulation/step.rbs +4 -2
  420. data/sig/ibex/tables.rbs +10 -9
  421. data/sig/ibex/verifiable_generation_bundle.rbs +24 -0
  422. data/sig/ibex/verification_report/builder.rbs +53 -0
  423. data/sig/ibex/verification_report/canonical_ir.rbs +41 -0
  424. data/sig/ibex/verification_report/logical_path.rbs +34 -0
  425. data/sig/ibex/verification_report/validator.rbs +114 -0
  426. data/sig/ibex/verification_report.rbs +44 -0
  427. data/sig/ibex/verify/action_correspondence.rbs +50 -0
  428. data/sig/ibex/verify/language_witness.rbs +112 -0
  429. data/sig/ibex/verify/reference_collection.rbs +63 -0
  430. data/sig/ibex/verify/result.rbs +52 -0
  431. data/sig/ibex/verify/verifier.rbs +170 -0
  432. data/sig/ibex/verify.rbs +6 -0
  433. data/sig/ibex/watch/runner.rbs +12 -2
  434. data/sig/ibex/watch/source_snapshot.rbs +13 -9
  435. metadata +232 -12
  436. data/lib/ibex/ir/migration.rb +0 -120
  437. data/sig/ibex/ir/migration.rbs +0 -34
@@ -0,0 +1,93 @@
1
+ # Generated from lib/ibex/table_artifact/builder.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ # Projects validated Automaton IR into an action-free executable sidecar.
6
+ class Builder
7
+ type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
8
+
9
+ type json_hash = Hash[String, untyped]
10
+
11
+ type action_rows = Array[Hash[Integer, IR::runtime_action]]
12
+
13
+ type action_table = action_rows | Tables::CompactActions
14
+
15
+ type goto_rows = Array[Hash[Integer, Integer]]
16
+
17
+ type goto_table = goto_rows | Tables::Compact
18
+
19
+ include CSTProjection
20
+
21
+ REPRESENTATIONS: Array[Symbol]
22
+
23
+ # @rbs (IR::Automaton automaton, ?representation: Symbol | String, ?cst_trivia: Symbol | String?,
24
+ # ?omit_action_call: bool?) -> void
25
+ def initialize: (IR::Automaton automaton, ?representation: Symbol | String, ?cst_trivia: Symbol | String?, ?omit_action_call: bool?) -> void
26
+
27
+ # @rbs () -> Document
28
+ def build: () -> Document
29
+
30
+ private
31
+
32
+ # @rbs (Hash[String, String] source_identity) -> json_hash
33
+ def build_payload: (Hash[String, String] source_identity) -> json_hash
34
+
35
+ # @rbs () -> String
36
+ def automaton_digest: () -> String
37
+
38
+ # @rbs () -> json_hash
39
+ def table_format: () -> json_hash
40
+
41
+ # @rbs () -> Array[json_hash]
42
+ def symbols: () -> Array[json_hash]
43
+
44
+ # @rbs () -> Array[json_hash]
45
+ def tokens: () -> Array[json_hash]
46
+
47
+ # @rbs () -> Array[json_hash]
48
+ def entry_states: () -> Array[json_hash]
49
+
50
+ # @rbs () -> json_hash
51
+ def tables: () -> json_hash
52
+
53
+ # @rbs (action_table table) -> json_hash
54
+ def action_table: (action_table table) -> json_hash
55
+
56
+ # @rbs (Tables::CompactActions table) -> json_hash
57
+ def compact_action_table: (Tables::CompactActions table) -> json_hash
58
+
59
+ # @rbs (goto_table table) -> json_hash
60
+ def goto_table: (goto_table table) -> json_hash
61
+
62
+ # @rbs (Tables::Compact table) -> json_hash
63
+ def compact_goto_table: (Tables::Compact table) -> json_hash
64
+
65
+ # @rbs () -> Array[json_hash]
66
+ def productions: () -> Array[json_hash]
67
+
68
+ # @rbs (IR::Production production) -> bool
69
+ def action_slot?: (IR::Production production) -> bool
70
+
71
+ # @rbs () -> json_hash
72
+ def semantic_actions: () -> json_hash
73
+
74
+ # @rbs () -> json_hash
75
+ def recovery: () -> json_hash
76
+
77
+ # @rbs (json_hash payload) -> json_hash
78
+ def build_cost: (json_hash payload) -> json_hash
79
+
80
+ # @rbs (json_hash table, String values_key) -> Integer
81
+ def occupied_cells: (json_hash table, String values_key) -> Integer
82
+
83
+ # @rbs () -> String
84
+ def lookup_cost: () -> String
85
+
86
+ # @rbs () -> String
87
+ def recognition_cost: () -> String
88
+
89
+ # @rbs (Symbol | String? requested) -> Symbol
90
+ def effective_cst_trivia: (Symbol | String? requested) -> Symbol
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,20 @@
1
+ # Generated from lib/ibex/table_artifact/cst_projection.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ # Converts code-generation CST metadata into closed JSON records.
6
+ module CSTProjection
7
+ private def cst: () -> Hash[String, Builder::json_value]?
8
+
9
+ private def normalize_cst: (Codegen::CSTMetadata::metadata metadata) -> Hash[String, Builder::json_value]
10
+
11
+ private def normalize_cst_kinds: (Codegen::CSTMetadata::kinds kinds) -> Hash[String, Builder::json_value]
12
+
13
+ private def named_kinds: (Hash[String, Integer] values) -> Array[Hash[String, String | Integer]]
14
+
15
+ private def normalize_cst_slot: (Integer production_id, Codegen::CSTMetadata::slot slot) -> Hash[String, Builder::json_value]
16
+
17
+ private
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,27 @@
1
+ # Generated from lib/ibex/table_artifact/document.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ # An immutable, validated table artifact document.
6
+ class Document
7
+ type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
8
+
9
+ attr_reader data: Hash[String, json_value]
10
+
11
+ # @rbs (Hash[String, json_value] data) -> void
12
+ def initialize: (Hash[String, json_value] data) -> void
13
+
14
+ # @rbs () -> String
15
+ def dump: () -> String
16
+
17
+ # @rbs () -> Hash[String, json_value]
18
+ def payload: () -> Hash[String, json_value]
19
+
20
+ # @rbs () -> Hash[String, String]
21
+ def identity: () -> Hash[String, String]
22
+
23
+ # @rbs () -> Hash[String, json_value]
24
+ def cost: () -> Hash[String, json_value]
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,66 @@
1
+ # Generated from lib/ibex/table_artifact/executor.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ # Recognition-only driver over internal token ids; it never loads wrapper code.
6
+ class Executor
7
+ class Result
8
+ attr_reader status: Symbol
9
+
10
+ attr_reader steps: Integer
11
+
12
+ attr_reader consumed_tokens: Integer
13
+
14
+ attr_reader reason: String?
15
+
16
+ # @rbs (status: Symbol, steps: Integer, consumed_tokens: Integer, reason: String?) -> void
17
+ def initialize: (status: Symbol, steps: Integer, consumed_tokens: Integer, reason: String?) -> void
18
+
19
+ # @rbs () -> bool
20
+ def accepted?: () -> bool
21
+
22
+ # @rbs () -> bool
23
+ def rejected?: () -> bool
24
+
25
+ # @rbs () -> bool
26
+ def exhausted?: () -> bool
27
+ end
28
+
29
+ # @rbs (Document | Hash[String, ValidationSupport::json_value] document) -> void
30
+ def initialize: (Document | Hash[String, ValidationSupport::json_value] document) -> void
31
+
32
+ # @rbs (Array[Integer] token_ids, ?entry: String | Symbol?, ?max_steps: Integer) -> Result
33
+ def recognize: (Array[Integer] token_ids, ?entry: String | Symbol?, ?max_steps: Integer) -> Result
34
+
35
+ private
36
+
37
+ # @rbs (Array[Integer] input, Array[Integer] stack, Integer max_steps) -> Result
38
+ def execute: (Array[Integer] input, Array[Integer] stack, Integer max_steps) -> Result
39
+
40
+ # @rbs (Integer? code, Integer token_id, Integer step, Integer cursor) -> Result?
41
+ def immediate_result: (Integer? code, Integer token_id, Integer step, Integer cursor) -> Result?
42
+
43
+ # @rbs (Array[Integer] token_ids) -> Array[Integer]
44
+ def validate_input: (Array[Integer] token_ids) -> Array[Integer]
45
+
46
+ # @rbs (String | Symbol? requested) -> Integer
47
+ def entry_state: (String | Symbol? requested) -> Integer
48
+
49
+ # @rbs (Integer row, Integer column) -> Integer?
50
+ def action: (Integer row, Integer column) -> Integer?
51
+
52
+ # @rbs (Integer row, Integer column) -> Integer?
53
+ def goto_state: (Integer row, Integer column) -> Integer?
54
+
55
+ # @rbs (Hash[String, ValidationSupport::json_value] table, Integer row, Integer column,
56
+ # String value_key) -> Integer?
57
+ def displacement_lookup: (Hash[String, ValidationSupport::json_value] table, Integer row, Integer column, String value_key) -> Integer?
58
+
59
+ # @rbs (Array[Integer] stack, Integer code) -> String?
60
+ def reduce_stack: (Array[Integer] stack, Integer code) -> String?
61
+
62
+ # @rbs (Symbol status, Integer steps, Integer consumed, String? reason) -> Result
63
+ def result: (Symbol status, Integer steps, Integer consumed, String? reason) -> Result
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,25 @@
1
+ # Generated from lib/ibex/table_artifact/serializer.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ # Canonical JSON ordering and digest primitives shared by writer and loader.
6
+ module Serializer
7
+ type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[json_value, json_value]
8
+
9
+ # @rbs (json_value value) -> json_value
10
+ def self.canonical: (json_value value) -> json_value
11
+
12
+ # @rbs (json_value value) -> String
13
+ def self.compact: (json_value value) -> String
14
+
15
+ # @rbs (json_value value) -> String
16
+ def self.dump: (json_value value) -> String
17
+
18
+ # @rbs (json_value value) -> String
19
+ def self.digest: (json_value value) -> String
20
+
21
+ # @rbs (json_value value) -> json_value
22
+ def self.deep_freeze: (json_value value) -> json_value
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,52 @@
1
+ # Generated from lib/ibex/table_artifact/validator/metadata.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ class MetadataValidator
6
+ include ValidationSupport
7
+
8
+ # @rbs (Hash[String, ValidationSupport::json_value] payload, symbols: Array[Hash[String, ValidationSupport::json_value]],
9
+ # productions: Array[Hash[String, ValidationSupport::json_value]]) -> void
10
+ def initialize: (Hash[String, ValidationSupport::json_value] payload, symbols: Array[Hash[String, ValidationSupport::json_value]], productions: Array[Hash[String, ValidationSupport::json_value]]) -> void
11
+
12
+ # @rbs () -> void
13
+ def validate!: () -> void
14
+
15
+ private
16
+
17
+ # @rbs (Array[Hash[String, ValidationSupport::json_value]] symbols, String kind) -> Set[Integer]
18
+ def ids_for_kind: (Array[Hash[String, ValidationSupport::json_value]] symbols, String kind) -> Set[Integer]
19
+
20
+ # @rbs (ValidationSupport::json_value data) -> void
21
+ def validate_semantic_actions: (ValidationSupport::json_value data) -> void
22
+
23
+ # @rbs (ValidationSupport::json_value data) -> void
24
+ def validate_recovery: (ValidationSupport::json_value data) -> void
25
+
26
+ # @rbs (ValidationSupport::json_value data) -> void
27
+ def validate_cst: (ValidationSupport::json_value data) -> void
28
+
29
+ # @rbs (ValidationSupport::json_value data, String path) -> Integer
30
+ def validate_cst_kinds: (ValidationSupport::json_value data, String path) -> Integer
31
+
32
+ # @rbs (ValidationSupport::json_value data, String path, Integer limit) -> void
33
+ def validate_range: (ValidationSupport::json_value data, String path, Integer limit) -> void
34
+
35
+ # @rbs (ValidationSupport::json_value data, String path, Array[String] names) -> void
36
+ def validate_named_kinds: (ValidationSupport::json_value data, String path, Array[String] names) -> void
37
+
38
+ # @rbs (ValidationSupport::json_value data, String path, Integer kind_count) -> void
39
+ def validate_named_nonterminals: (ValidationSupport::json_value data, String path, Integer kind_count) -> void
40
+
41
+ # @rbs (ValidationSupport::json_value data, String path, Integer kind_count) -> void
42
+ def validate_cst_slots: (ValidationSupport::json_value data, String path, Integer kind_count) -> void
43
+
44
+ # @rbs (ValidationSupport::json_value data, String path,
45
+ # Hash[String, ValidationSupport::json_value] production) -> void
46
+ def validate_fields: (ValidationSupport::json_value data, String path, Hash[String, ValidationSupport::json_value] production) -> void
47
+
48
+ # @rbs (ValidationSupport::json_value data, String path, ?sorted: bool) -> Array[Integer]
49
+ def integer_ids: (ValidationSupport::json_value data, String path, ?sorted: bool) -> Array[Integer]
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,46 @@
1
+ # Generated from lib/ibex/table_artifact/validator/support.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ module ValidationSupport
6
+ type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
7
+
8
+ DIGEST: Regexp
9
+
10
+ private
11
+
12
+ # @rbs (json_value value, String path, Array[String] keys) -> Hash[String, json_value]
13
+ def record: (json_value value, String path, Array[String] keys) -> Hash[String, json_value]
14
+
15
+ # @rbs (json_value value, String path) -> Array[json_value]
16
+ def array: (json_value value, String path) -> Array[json_value]
17
+
18
+ # @rbs (json_value value, String path, ?allow_empty: bool) -> String
19
+ def string: (json_value value, String path, ?allow_empty: bool) -> String
20
+
21
+ # @rbs (json_value value, String path, ?minimum: Integer?) -> Integer
22
+ def integer: (json_value value, String path, ?minimum: Integer?) -> Integer
23
+
24
+ # @rbs (json_value value, String path) -> bool
25
+ def boolean: (json_value value, String path) -> bool
26
+
27
+ # @rbs [T] (T value, String path, Array[T] values) -> T
28
+ def enum: [T] (T value, String path, Array[T] values) -> T
29
+
30
+ # @rbs (json_value value, String path) -> String
31
+ def digest: (json_value value, String path) -> String
32
+
33
+ # @rbs (json_value value, String path) -> String?
34
+ def nullable_string: (json_value value, String path) -> String?
35
+
36
+ # @rbs (json_value value, String path, ?minimum: Integer?) -> Integer?
37
+ def nullable_integer: (json_value value, String path, ?minimum: Integer?) -> Integer?
38
+
39
+ # @rbs (Array[json_value] values, String path) -> void
40
+ def sorted_unique!: (Array[json_value] values, String path) -> void
41
+
42
+ # @rbs (String path, String message) -> bot
43
+ def invalid: (String path, String message) -> bot
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,63 @@
1
+ # Generated from lib/ibex/table_artifact/validator/tables.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ class TableValidator
6
+ include ValidationSupport
7
+
8
+ private def integer_array: (ValidationSupport::json_value value, String path, allow_nil: false, minimum: Integer?) -> Array[Integer]
9
+ | (ValidationSupport::json_value value, String path, allow_nil: true, minimum: Integer?) -> Array[Integer?]
10
+
11
+ # @rbs (Hash[String, ValidationSupport::json_value] data, state_count: Integer, production_count: Integer,
12
+ # terminal_ids: Set[Integer], nonterminal_ids: Set[Integer], representation: String) -> void
13
+ def initialize: (Hash[String, ValidationSupport::json_value] data, state_count: Integer, production_count: Integer, terminal_ids: Set[Integer], nonterminal_ids: Set[Integer], representation: String) -> void
14
+
15
+ # @rbs () -> void
16
+ def validate!: () -> void
17
+
18
+ private
19
+
20
+ # @rbs (ValidationSupport::json_value table) -> void
21
+ def validate_actions: (ValidationSupport::json_value table) -> void
22
+
23
+ # @rbs (Hash[String, ValidationSupport::json_value] table) -> void
24
+ def validate_sparse_actions: (Hash[String, ValidationSupport::json_value] table) -> void
25
+
26
+ # @rbs (Hash[String, ValidationSupport::json_value] table) -> void
27
+ def validate_compact_actions: (Hash[String, ValidationSupport::json_value] table) -> void
28
+
29
+ # @rbs (ValidationSupport::json_value table) -> void
30
+ def validate_gotos: (ValidationSupport::json_value table) -> void
31
+
32
+ # @rbs (Hash[String, ValidationSupport::json_value] table) -> void
33
+ def validate_sparse_gotos: (Hash[String, ValidationSupport::json_value] table) -> void
34
+
35
+ # @rbs (Hash[String, ValidationSupport::json_value] table) -> void
36
+ def validate_compact_gotos: (Hash[String, ValidationSupport::json_value] table) -> void
37
+
38
+ # @rbs (Hash[String, ValidationSupport::json_value] table, String path) -> void
39
+ def validate_row_count: (Hash[String, ValidationSupport::json_value] table, String path) -> void
40
+
41
+ # @rbs (Hash[String, ValidationSupport::json_value] table, value_key: String, path: String)
42
+ # { (Integer, ValidationSupport::json_value, String) -> void } -> Array[Hash[Integer, ValidationSupport::json_value]]
43
+ def validate_displacement: (Hash[String, ValidationSupport::json_value] table, value_key: String, path: String) { (Integer, ValidationSupport::json_value, String) -> void } -> Array[Hash[Integer, ValidationSupport::json_value]]
44
+
45
+ # @rbs (Hash[String, ValidationSupport::json_value] table,
46
+ # Array[Hash[Integer, ValidationSupport::json_value]] rows, value_key: String,
47
+ # width_key: String, width: Integer?, dense: bool, path: String) -> void
48
+ def validate_canonical_displacement: (Hash[String, ValidationSupport::json_value] table, Array[Hash[Integer, ValidationSupport::json_value]] rows, value_key: String, width_key: String, width: Integer?, dense: bool, path: String) -> void
49
+
50
+ # @rbs (ValidationSupport::json_value defaults) -> void
51
+ def validate_defaults: (ValidationSupport::json_value defaults) -> void
52
+
53
+ # @rbs (ValidationSupport::json_value code, Integer token_id, String path) -> void
54
+ def validate_token_action: (ValidationSupport::json_value code, Integer token_id, String path) -> void
55
+
56
+ # @rbs (ValidationSupport::json_value code, String path) -> void
57
+ def validate_action_code: (ValidationSupport::json_value code, String path) -> void
58
+
59
+ # @rbs (ValidationSupport::json_value state, String path) -> void
60
+ def validate_state: (ValidationSupport::json_value state, String path) -> void
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,66 @@
1
+ # Generated from lib/ibex/table_artifact/validator.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ # Closed structural and referential validation for untrusted sidecars.
6
+ class Validator
7
+ include ValidationSupport
8
+
9
+ ROOT_KEYS: Array[String]
10
+
11
+ PAYLOAD_KEYS: Array[String]
12
+
13
+ # @rbs (Hash[String, ValidationSupport::json_value] data) -> true
14
+ def self.validate!: (Hash[String, ValidationSupport::json_value] data) -> true
15
+
16
+ # @rbs (Hash[String, ValidationSupport::json_value] data) -> void
17
+ def initialize: (Hash[String, ValidationSupport::json_value] data) -> void
18
+
19
+ # rubocop:disable Naming/PredicateMethod -- bang denotes fail-fast validation.
20
+ # @rbs () -> true
21
+ def validate!: () -> true
22
+
23
+ private
24
+
25
+ # @rbs () -> void
26
+ def validate_root_identity: () -> void
27
+
28
+ # @rbs (ValidationSupport::json_value data) -> String
29
+ def validate_table_format: (ValidationSupport::json_value data) -> String
30
+
31
+ # @rbs (ValidationSupport::json_value data) -> void
32
+ def validate_source: (ValidationSupport::json_value data) -> void
33
+
34
+ # @rbs (ValidationSupport::json_value data) -> Array[Hash[String, ValidationSupport::json_value]]
35
+ def validate_symbols: (ValidationSupport::json_value data) -> Array[Hash[String, ValidationSupport::json_value]]
36
+
37
+ # @rbs (ValidationSupport::json_value data, Array[Hash[String, ValidationSupport::json_value]] symbols) -> void
38
+ def validate_tokens: (ValidationSupport::json_value data, Array[Hash[String, ValidationSupport::json_value]] symbols) -> void
39
+
40
+ # @rbs (ValidationSupport::json_value data,
41
+ # Array[Hash[String, ValidationSupport::json_value]] symbols, Integer state_count) -> void
42
+ def validate_entries: (ValidationSupport::json_value data, Array[Hash[String, ValidationSupport::json_value]] symbols, Integer state_count) -> void
43
+
44
+ # @rbs (ValidationSupport::json_value data,
45
+ # Array[Hash[String, ValidationSupport::json_value]] symbols) -> Array[Hash[String, ValidationSupport::json_value]]
46
+ def validate_productions: (ValidationSupport::json_value data, Array[Hash[String, ValidationSupport::json_value]] symbols) -> Array[Hash[String, ValidationSupport::json_value]]
47
+
48
+ # @rbs (ValidationSupport::json_value data, Hash[String, ValidationSupport::json_value] payload) -> void
49
+ def validate_cost: (ValidationSupport::json_value data, Hash[String, ValidationSupport::json_value] payload) -> void
50
+
51
+ # @rbs (Hash[String, ValidationSupport::json_value] payload) -> [String, String]
52
+ def expected_costs: (Hash[String, ValidationSupport::json_value] payload) -> [ String, String ]
53
+
54
+ # @rbs (Hash[String, ValidationSupport::json_value] table, String values_key) -> Integer
55
+ def occupied: (Hash[String, ValidationSupport::json_value] table, String values_key) -> Integer
56
+
57
+ # @rbs (Array[Hash[String, ValidationSupport::json_value]] symbols, String kind) -> Set[Integer]
58
+ def symbol_ids: (Array[Hash[String, ValidationSupport::json_value]] symbols, String kind) -> Set[Integer]
59
+
60
+ # @rbs (Hash[String, ValidationSupport::json_value] identity,
61
+ # Hash[String, ValidationSupport::json_value] payload, String identity_name,
62
+ # String payload_name) -> void
63
+ def validate_named_digest: (Hash[String, ValidationSupport::json_value] identity, Hash[String, ValidationSupport::json_value] payload, String identity_name, String payload_name) -> void
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,32 @@
1
+ # Generated from lib/ibex/table_artifact.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Experimental data-only authority for executable parser tables.
5
+ module TableArtifact
6
+ interface _Reader
7
+ def read: (Integer length) -> String?
8
+ end
9
+
10
+ ARTIFACT_TYPE: String
11
+
12
+ SCHEMA_VERSION: Integer
13
+
14
+ DEFAULT_MAX_BYTES: Integer
15
+
16
+ class ValidationError < Ibex::Error
17
+ end
18
+
19
+ # @rbs (IR::Automaton automaton, ?representation: Symbol | String, ?cst_trivia: Symbol | String?,
20
+ # ?omit_action_call: bool?) -> Document
21
+ def self.build: (IR::Automaton automaton, ?representation: Symbol | String, ?cst_trivia: Symbol | String?, ?omit_action_call: bool?) -> Document
22
+
23
+ # @rbs (String | _Reader source, ?max_bytes: Integer) -> Document
24
+ def self.load: (String | _Reader source, ?max_bytes: Integer) -> Document
25
+
26
+ # @rbs (untyped source, Integer max_bytes) -> String
27
+ private def self.read_bounded: (untyped source, Integer max_bytes) -> String
28
+
29
+ # @rbs (_Reader source, Integer max_bytes) -> String
30
+ private def self.read_from: (_Reader source, Integer max_bytes) -> String
31
+ end
32
+ end
@@ -4,6 +4,10 @@ module Ibex
4
4
  module TableSimulation
5
5
  # Final immutable simulation document.
6
6
  class Result
7
+ type step_document = Hash[String, Step::document_value]
8
+
9
+ type document_value = String | Integer | Array[String] | Array[step_document]
10
+
7
11
  IDENTIFIER: String
8
12
 
9
13
  SCHEMA_VERSION: Integer
@@ -22,11 +26,11 @@ module Ibex
22
26
  # steps: Array[Step]) -> void
23
27
  def initialize: (grammar_digest: String, algorithm: String, tokens: Array[String], status: Symbol, steps: Array[Step]) -> void
24
28
 
25
- # @rbs () -> Hash[String, untyped]
26
- def to_h: () -> Hash[String, untyped]
29
+ # @rbs () -> Hash[String, document_value]
30
+ def to_h: () -> Hash[String, document_value]
27
31
 
28
- # @rbs (*untyped) -> String
29
- def to_json: (*untyped) -> String
32
+ # @rbs (*Object?) -> String
33
+ def to_json: (*Object?) -> String
30
34
  end
31
35
  end
32
36
  end
@@ -4,6 +4,8 @@ module Ibex
4
4
  module TableSimulation
5
5
  # One immutable parser-table action.
6
6
  class Step
7
+ type document_value = String | Integer | nil
8
+
7
9
  attr_reader sequence: Integer
8
10
 
9
11
  attr_reader state: Integer
@@ -33,8 +35,8 @@ module Ibex
33
35
  # target_state: Integer?, stack_depth_before: Integer, stack_depth_after: Integer) -> void
34
36
  def initialize: (sequence: Integer, state: Integer, token_id: Integer, token: String, action: String, action_source: String, production_id: Integer?, lhs: String?, rhs_length: Integer?, target_state: Integer?, stack_depth_before: Integer, stack_depth_after: Integer) -> void
35
37
 
36
- # @rbs () -> Hash[String, untyped]
37
- def to_h: () -> Hash[String, untyped]
38
+ # @rbs () -> Hash[String, document_value]
39
+ def to_h: () -> Hash[String, document_value]
38
40
  end
39
41
  end
40
42
  end
data/sig/ibex/tables.rbs CHANGED
@@ -3,19 +3,20 @@
3
3
  module Ibex
4
4
  # Parser table construction and row-displacement compression.
5
5
  module Tables
6
- private def runtime_action: (IR::parser_action action) -> IR::runtime_action
7
-
8
- private def self.runtime_action: (IR::parser_action action) -> IR::runtime_action
6
+ type action_table = Array[Hash[Integer, IR::runtime_action]] | CompactActions
9
7
 
10
- class TableSet < Struct[untyped]
11
- attr_accessor actions(): untyped
8
+ type goto_table = Array[Hash[Integer, Integer]] | Compact
12
9
 
13
- attr_accessor gotos(): untyped
10
+ private def runtime_action: (IR::parser_action action) -> IR::runtime_action
14
11
 
15
- attr_accessor default_actions(): untyped
12
+ private def self.runtime_action: (IR::parser_action action) -> IR::runtime_action
16
13
 
17
- def self.new: (?actions: untyped, ?gotos: untyped, ?default_actions: untyped) -> instance
18
- | ({ ?actions: untyped, ?gotos: untyped, ?default_actions: untyped }) -> instance
14
+ class TableSet < Struct[Object?]
15
+ attr_accessor actions: action_table
16
+ attr_accessor gotos: goto_table
17
+ attr_accessor default_actions: Array[IR::runtime_action?]
18
+ def self.new: (?actions: action_table, ?gotos: goto_table, ?default_actions: Array[IR::runtime_action?]) -> instance
19
+ | ({ ?actions: action_table, ?gotos: goto_table, ?default_actions: Array[IR::runtime_action?] }) -> instance
19
20
  end
20
21
 
21
22
  # @rbs (IR::Automaton automaton, ?format: Symbol | String) -> TableSet
@@ -0,0 +1,24 @@
1
+ # Generated from lib/ibex/verifiable_generation_bundle.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Explicitly renders and publishes one manifest-bound verification bundle.
5
+ class VerifiableGenerationBundle
6
+ # rubocop:disable Metrics/ParameterLists -- persisted artifact paths and verification bounds are explicit inputs.
7
+ # @rbs (IR::Automaton automaton, wrapper_path: String, wrapper_source: String,
8
+ # table_path: String, report_path: String, manifest_path: String,
9
+ # source_records: Array[GenerationInput], ?manifest_options: Hash[String, Object?],
10
+ # ?wrapper_mode: Integer?, ?representation: Symbol | String, ?cst_trivia: Symbol | String?,
11
+ # ?omit_action_call: bool?, ?strict: bool, ?max_states: Integer, ?max_items: Integer) -> void
12
+ def initialize: (IR::Automaton automaton, wrapper_path: String, wrapper_source: String, table_path: String, report_path: String, manifest_path: String, source_records: Array[GenerationInput], ?manifest_options: Hash[String, Object?], ?wrapper_mode: Integer?, ?representation: Symbol | String, ?cst_trivia: Symbol | String?, ?omit_action_call: bool?, ?strict: bool, ?max_states: Integer, ?max_items: Integer) -> void
13
+
14
+ # Render table, wrapper, and report before the non-cyclic manifest marker.
15
+ # @rbs () -> ArtifactSet
16
+ def render: () -> ArtifactSet
17
+
18
+ # @rbs (?warning: ^(String) -> void, ?stability_check: ^() -> bool) -> ArtifactSet
19
+ def publish: (?warning: ^(String) -> void, ?stability_check: ^() -> bool) -> ArtifactSet
20
+
21
+ # @rbs (String manifest_path) -> Hash[String, VerificationReport::Validator::json_value]
22
+ def self.validate_file: (String manifest_path) -> Hash[String, VerificationReport::Validator::json_value]
23
+ end
24
+ end
@@ -0,0 +1,53 @@
1
+ # Generated from lib/ibex/verification_report/builder.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module VerificationReport
5
+ # Builds deterministic evidence from an Automaton IR verification run.
6
+ class Builder
7
+ type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
8
+
9
+ # @rbs (IR::Automaton automaton, table: TableArtifact::Document,
10
+ # source_records: Array[GenerationInput], table_path: String, strict: bool,
11
+ # max_states: Integer, max_items: Integer) -> void
12
+ def initialize: (IR::Automaton automaton, table: TableArtifact::Document, source_records: Array[GenerationInput], table_path: String, strict: bool, max_states: Integer, max_items: Integer) -> void
13
+
14
+ # @rbs () -> String
15
+ def render: () -> String
16
+
17
+ private
18
+
19
+ # @rbs () -> Hash[Symbol, Integer]
20
+ def bounds: () -> Hash[Symbol, Integer]
21
+
22
+ # @rbs () -> Array[String]
23
+ def requested_checks: () -> Array[String]
24
+
25
+ # @rbs () -> Hash[String, json_value]
26
+ def verification_outcome: () -> Hash[String, json_value]
27
+
28
+ # @rbs () -> Hash[String, json_value]
29
+ def input_identity: () -> Hash[String, json_value]
30
+
31
+ # @rbs () -> Hash[String, json_value]
32
+ def ir_identity: () -> Hash[String, json_value]
33
+
34
+ # @rbs () -> Hash[String, json_value]
35
+ def table_identity: () -> Hash[String, json_value]
36
+
37
+ # @rbs () -> void
38
+ def validate_table_identity!: () -> void
39
+
40
+ # @rbs () -> String
41
+ def grammar_digest: () -> String
42
+
43
+ # @rbs () -> String
44
+ def automaton_digest: () -> String
45
+
46
+ # @rbs (String digest) -> String
47
+ def prefixed_digest: (String digest) -> String
48
+
49
+ # @rbs (Hash[Symbol, String] value) -> Hash[String, String]
50
+ def stringify_keys: (Hash[Symbol, String] value) -> Hash[String, String]
51
+ end
52
+ end
53
+ end