ibex 0.1.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 (603) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +89 -123
  3. data/docs/architecture.md +477 -31
  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 +106 -0
  12. data/docs/cst.md +237 -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 +306 -0
  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 +26 -0
  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 +114 -0
  51. data/docs/getting-started.md +80 -0
  52. data/docs/grammar-reference.md +629 -18
  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 +56 -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 +45 -6
  63. data/docs/release-readiness.md +221 -0
  64. data/docs/repair-semantics.md +123 -0
  65. data/docs/runtime-abi-evolution.md +307 -0
  66. data/docs/stability.md +234 -0
  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/examples/README.md +60 -0
  75. data/examples/calculator.y +44 -0
  76. data/examples/csv.y +32 -0
  77. data/examples/ini.y +70 -0
  78. data/examples/json.y +48 -0
  79. data/examples/tiny_language.y +75 -0
  80. data/lib/ibex/analysis/digraph.rb +128 -0
  81. data/lib/ibex/analysis/sets.rb +5 -4
  82. data/lib/ibex/analysis.rb +1 -0
  83. data/lib/ibex/artifact_set.rb +63 -0
  84. data/lib/ibex/bison_import/importer.rb +516 -0
  85. data/lib/ibex/bison_import/tokenizer.rb +260 -0
  86. data/lib/ibex/bison_import.rb +200 -0
  87. data/lib/ibex/bounded_subprocess.rb +171 -0
  88. data/lib/ibex/cli/ambiguity.rb +75 -0
  89. data/lib/ibex/cli/analysis.rb +134 -0
  90. data/lib/ibex/cli/bison_import.rb +121 -0
  91. data/lib/ibex/cli/config.rb +128 -0
  92. data/lib/ibex/cli/counterexample_options.rb +6 -2
  93. data/lib/ibex/cli/coverage.rb +173 -0
  94. data/lib/ibex/cli/debug.rb +106 -0
  95. data/lib/ibex/cli/diagnostics.rb +136 -0
  96. data/lib/ibex/cli/documentation.rb +70 -0
  97. data/lib/ibex/cli/equiv.rb +169 -0
  98. data/lib/ibex/cli/error_messages.rb +184 -0
  99. data/lib/ibex/cli/explain.rb +85 -0
  100. data/lib/ibex/cli/fix.rb +203 -0
  101. data/lib/ibex/cli/formatting.rb +387 -0
  102. data/lib/ibex/cli/fuzz.rb +200 -0
  103. data/lib/ibex/cli/fuzz_regressions.rb +145 -0
  104. data/lib/ibex/cli/generation_artifacts.rb +189 -0
  105. data/lib/ibex/cli/generation_error_messages.rb +39 -0
  106. data/lib/ibex/cli/grammar_tests.rb +140 -0
  107. data/lib/ibex/cli/ir_tools.rb +128 -0
  108. data/lib/ibex/cli/lsp.rb +33 -0
  109. data/lib/ibex/cli/outputs.rb +133 -23
  110. data/lib/ibex/cli/racc_migration.rb +87 -0
  111. data/lib/ibex/cli/reduce.rb +202 -0
  112. data/lib/ibex/cli/reduce_reporting.rb +71 -0
  113. data/lib/ibex/cli/samples.rb +118 -0
  114. data/lib/ibex/cli/verify.rb +116 -0
  115. data/lib/ibex/cli/watch.rb +104 -0
  116. data/lib/ibex/cli.rb +825 -55
  117. data/lib/ibex/codegen/action_locations.rb +103 -0
  118. data/lib/ibex/codegen/action_method_source.rb +209 -0
  119. data/lib/ibex/codegen/action_source.rb +119 -0
  120. data/lib/ibex/codegen/ambiguity.rb +174 -0
  121. data/lib/ibex/codegen/cst_metadata.rb +171 -0
  122. data/lib/ibex/codegen/documentation.rb +170 -0
  123. data/lib/ibex/codegen/explain.rb +380 -0
  124. data/lib/ibex/codegen/generated_action_abi.rb +293 -0
  125. data/lib/ibex/codegen/html.rb +94 -10
  126. data/lib/ibex/codegen/mermaid.rb +43 -0
  127. data/lib/ibex/codegen/railroad.rb +197 -0
  128. data/lib/ibex/codegen/railroad_documentation.rb +59 -0
  129. data/lib/ibex/codegen/rbs.rb +331 -2
  130. data/lib/ibex/codegen/report.rb +67 -15
  131. data/lib/ibex/codegen/ruby.rb +305 -66
  132. data/lib/ibex/codegen/ruby_actions.rb +146 -0
  133. data/lib/ibex/codegen/ruby_ast.rb +121 -0
  134. data/lib/ibex/codegen/ruby_error_messages.rb +28 -0
  135. data/lib/ibex/codegen/ruby_lexer.rb +83 -0
  136. data/lib/ibex/codegen/ruby_syntax.rb +96 -0
  137. data/lib/ibex/codegen/ruby_table_metadata.rb +57 -0
  138. data/lib/ibex/codegen/ruby_value_printers.rb +56 -0
  139. data/lib/ibex/codegen/symbol_labels.rb +1 -1
  140. data/lib/ibex/configuration/analysis_grammar.rb +35 -0
  141. data/lib/ibex/configuration/explanation.rb +421 -0
  142. data/lib/ibex/configuration/inspector.rb +232 -0
  143. data/lib/ibex/configuration.rb +580 -0
  144. data/lib/ibex/coverage/collector.rb +198 -0
  145. data/lib/ibex/coverage/event_stream.rb +103 -0
  146. data/lib/ibex/coverage/report.rb +267 -0
  147. data/lib/ibex/coverage/runtime_event_validator.rb +169 -0
  148. data/lib/ibex/coverage.rb +13 -0
  149. data/lib/ibex/delta_reducer.rb +99 -0
  150. data/lib/ibex/diff.rb +140 -0
  151. data/lib/ibex/equiv/machine.rb +135 -0
  152. data/lib/ibex/equiv.rb +373 -0
  153. data/lib/ibex/error_messages/parser.rb +159 -0
  154. data/lib/ibex/error_messages/parser_v2.rb +198 -0
  155. data/lib/ibex/error_messages/renderer.rb +65 -0
  156. data/lib/ibex/error_messages/sentence_search.rb +196 -0
  157. data/lib/ibex/error_messages/update.rb +169 -0
  158. data/lib/ibex/error_messages.rb +165 -0
  159. data/lib/ibex/fix.rb +557 -0
  160. data/lib/ibex/frontend/ast.rb +166 -7
  161. data/lib/ibex/frontend/bootstrap_parser.rb +40 -4
  162. data/lib/ibex/frontend/diagnostic.rb +81 -0
  163. data/lib/ibex/frontend/diagnostic_recovery.rb +268 -0
  164. data/lib/ibex/frontend/dsl.rb +66 -7
  165. data/lib/ibex/frontend/formatter.rb +453 -0
  166. data/lib/ibex/frontend/generated_parser.rb +644 -190
  167. data/lib/ibex/frontend/generated_parser_base.rb +170 -32
  168. data/lib/ibex/frontend/generated_parser_includes.rb +51 -0
  169. data/lib/ibex/frontend/generated_parser_metadata.rb +61 -0
  170. data/lib/ibex/frontend/generated_parser_parameters.rb +60 -0
  171. data/lib/ibex/frontend/generation.rb +33 -0
  172. data/lib/ibex/frontend/lexer.rb +162 -10
  173. data/lib/ibex/frontend/lexer_recovery.rb +84 -0
  174. data/lib/ibex/frontend/parser/declarations.rb +262 -11
  175. data/lib/ibex/frontend/parser/parameters.rb +82 -0
  176. data/lib/ibex/frontend/parser/rules.rb +43 -6
  177. data/lib/ibex/frontend/parser.rb +182 -4
  178. data/lib/ibex/frontend/parser_configuration_support.rb +56 -0
  179. data/lib/ibex/frontend/regenerator.rb +27 -1
  180. data/lib/ibex/frontend/resolution.rb +70 -0
  181. data/lib/ibex/frontend/resolver.rb +217 -0
  182. data/lib/ibex/frontend/rule_documentation.rb +104 -0
  183. data/lib/ibex/frontend/source_cursor.rb +133 -9
  184. data/lib/ibex/frontend/source_document.rb +229 -0
  185. data/lib/ibex/frontend/source_loader.rb +150 -0
  186. data/lib/ibex/frontend/source_span.rb +89 -0
  187. data/lib/ibex/frontend/token_adapter/declaration_document_state.rb +47 -0
  188. data/lib/ibex/frontend/token_adapter/declaration_lexer_state.rb +83 -0
  189. data/lib/ibex/frontend/token_adapter/declaration_state.rb +244 -22
  190. data/lib/ibex/frontend/token_adapter/delimiter_tracker.rb +8 -2
  191. data/lib/ibex/frontend/token_adapter/rule_state.rb +60 -2
  192. data/lib/ibex/frontend/token_adapter.rb +18 -3
  193. data/lib/ibex/frontend.rb +14 -2
  194. data/lib/ibex/fuzz.rb +219 -0
  195. data/lib/ibex/generation_input.rb +57 -0
  196. data/lib/ibex/generation_manifest.rb +211 -0
  197. data/lib/ibex/generation_transaction.rb +261 -0
  198. data/lib/ibex/generation_transaction_recovery.rb +109 -0
  199. data/lib/ibex/generation_transaction_validation.rb +196 -0
  200. data/lib/ibex/grammar_tests.rb +206 -0
  201. data/lib/ibex/ir/automaton_ir.rb +86 -11
  202. data/lib/ibex/ir/grammar_ir.rb +170 -26
  203. data/lib/ibex/ir/lexer_ir.rb +76 -0
  204. data/lib/ibex/ir/parser_contract.rb +135 -0
  205. data/lib/ibex/ir/serialize.rb +268 -50
  206. data/lib/ibex/ir/validator/automaton.rb +375 -0
  207. data/lib/ibex/ir/validator/base.rb +147 -0
  208. data/lib/ibex/ir/validator/grammar.rb +634 -0
  209. data/lib/ibex/ir/validator/lexer.rb +113 -0
  210. data/lib/ibex/ir/validator.rb +63 -0
  211. data/lib/ibex/ir.rb +71 -5
  212. data/lib/ibex/lalr/build_metrics.rb +71 -0
  213. data/lib/ibex/lalr/builder.rb +514 -52
  214. data/lib/ibex/lalr/conflict.rb +1 -0
  215. data/lib/ibex/lalr/conflict_search.rb +26 -9
  216. data/lib/ibex/lalr/counterexample.rb +38 -18
  217. data/lib/ibex/lalr/direct_lookaheads.rb +289 -0
  218. data/lib/ibex/lalr/goto_follows.rb +229 -0
  219. data/lib/ibex/lalr/ielr/annotator.rb +214 -0
  220. data/lib/ibex/lalr/ielr/bits.rb +28 -0
  221. data/lib/ibex/lalr/ielr/inadequacy.rb +47 -0
  222. data/lib/ibex/lalr/ielr/item_lookaheads.rb +78 -0
  223. data/lib/ibex/lalr/ielr/pipeline.rb +75 -0
  224. data/lib/ibex/lalr/ielr/split_stability.rb +78 -0
  225. data/lib/ibex/lalr/ielr/split_state.rb +20 -0
  226. data/lib/ibex/lalr/ielr/state_splitter.rb +258 -0
  227. data/lib/ibex/lalr/ielr_partition.rb +166 -0
  228. data/lib/ibex/lalr/inadequacy_report.rb +50 -0
  229. data/lib/ibex/lalr/lookahead_propagation.rb +111 -0
  230. data/lib/ibex/lalr/lr0_collection.rb +121 -0
  231. data/lib/ibex/lalr/on_error_reductions.rb +74 -0
  232. data/lib/ibex/lalr/unreachable_states.rb +80 -0
  233. data/lib/ibex/lalr.rb +59 -1
  234. data/lib/ibex/location.rb +129 -0
  235. data/lib/ibex/lsp/document_handlers.rb +68 -0
  236. data/lib/ibex/lsp/document_store.rb +264 -0
  237. data/lib/ibex/lsp/document_store_diagnostics.rb +44 -0
  238. data/lib/ibex/lsp/document_store_validation.rb +61 -0
  239. data/lib/ibex/lsp/initialization_handlers.rb +80 -0
  240. data/lib/ibex/lsp/navigation_handlers.rb +70 -0
  241. data/lib/ibex/lsp/parser_configuration_assistance.rb +149 -0
  242. data/lib/ibex/lsp/position_codec.rb +113 -0
  243. data/lib/ibex/lsp/protocol_error.rb +33 -0
  244. data/lib/ibex/lsp/request_handlers.rb +46 -0
  245. data/lib/ibex/lsp/request_support.rb +94 -0
  246. data/lib/ibex/lsp/server.rb +148 -0
  247. data/lib/ibex/lsp/symbol_index.rb +241 -0
  248. data/lib/ibex/lsp/symbol_index_builder.rb +277 -0
  249. data/lib/ibex/lsp/symbol_index_precedence_references.rb +44 -0
  250. data/lib/ibex/lsp/symbol_index_source_queries.rb +61 -0
  251. data/lib/ibex/lsp/symbol_occurrence.rb +23 -0
  252. data/lib/ibex/lsp/transport.rb +128 -0
  253. data/lib/ibex/lsp/workspace.rb +128 -0
  254. data/lib/ibex/lsp/workspace_analyzer.rb +199 -0
  255. data/lib/ibex/lsp.rb +33 -0
  256. data/lib/ibex/messages/en.yml +28 -0
  257. data/lib/ibex/messages/ja.yml +28 -0
  258. data/lib/ibex/messages.rb +68 -0
  259. data/lib/ibex/metrics.rb +175 -0
  260. data/lib/ibex/normalize/declarations.rb +142 -7
  261. data/lib/ibex/normalize/diagnostics.rb +94 -24
  262. data/lib/ibex/normalize/expander.rb +64 -59
  263. data/lib/ibex/normalize/expression.rb +63 -40
  264. data/lib/ibex/normalize/grammar_builder.rb +26 -0
  265. data/lib/ibex/normalize/inline_expansion.rb +465 -0
  266. data/lib/ibex/normalize/inline_validation.rb +174 -0
  267. data/lib/ibex/normalize/lexer.rb +131 -0
  268. data/lib/ibex/normalize/named_references.rb +60 -0
  269. data/lib/ibex/normalize/nodes.rb +46 -0
  270. data/lib/ibex/normalize/parameter_ebnf_lowering.rb +70 -0
  271. data/lib/ibex/normalize/parameter_lowering.rb +143 -0
  272. data/lib/ibex/normalize/parameter_substitution.rb +125 -0
  273. data/lib/ibex/normalize/parameter_validation.rb +140 -0
  274. data/lib/ibex/normalize/parameters.rb +226 -0
  275. data/lib/ibex/normalize/parser_configuration.rb +70 -0
  276. data/lib/ibex/normalize/recovery_declarations.rb +84 -0
  277. data/lib/ibex/normalize.rb +172 -17
  278. data/lib/ibex/racc_migration/checker.rb +122 -0
  279. data/lib/ibex/racc_migration/harness.rb +177 -0
  280. data/lib/ibex/racc_migration/report.rb +97 -0
  281. data/lib/ibex/racc_migration.rb +12 -0
  282. data/lib/ibex/rake_task.rb +116 -0
  283. data/lib/ibex/samples.rb +216 -0
  284. data/lib/ibex/table_artifact/builder.rb +266 -0
  285. data/lib/ibex/table_artifact/cst_projection.rb +70 -0
  286. data/lib/ibex/table_artifact/document.rb +39 -0
  287. data/lib/ibex/table_artifact/executor.rb +187 -0
  288. data/lib/ibex/table_artifact/serializer.rb +57 -0
  289. data/lib/ibex/table_artifact/validator/metadata.rb +179 -0
  290. data/lib/ibex/table_artifact/validator/support.rb +86 -0
  291. data/lib/ibex/table_artifact/validator/tables.rb +238 -0
  292. data/lib/ibex/table_artifact/validator.rb +253 -0
  293. data/lib/ibex/table_artifact.rb +88 -0
  294. data/lib/ibex/table_simulation/result.rb +55 -0
  295. data/lib/ibex/table_simulation/simulator.rb +253 -0
  296. data/lib/ibex/table_simulation/step.rb +62 -0
  297. data/lib/ibex/table_simulation/text.rb +31 -0
  298. data/lib/ibex/table_simulation.rb +13 -0
  299. data/lib/ibex/tables.rb +22 -69
  300. data/lib/ibex/verifiable_generation_bundle.rb +86 -0
  301. data/lib/ibex/verification_report/builder.rb +159 -0
  302. data/lib/ibex/verification_report/canonical_ir.rb +123 -0
  303. data/lib/ibex/verification_report/logical_path.rb +68 -0
  304. data/lib/ibex/verification_report/validator.rb +329 -0
  305. data/lib/ibex/verification_report.rb +69 -0
  306. data/lib/ibex/verify/action_correspondence.rb +138 -0
  307. data/lib/ibex/verify/language_witness.rb +295 -0
  308. data/lib/ibex/verify/reference_collection.rb +190 -0
  309. data/lib/ibex/verify/result.rb +73 -0
  310. data/lib/ibex/verify/verifier.rb +598 -0
  311. data/lib/ibex/verify.rb +15 -0
  312. data/lib/ibex/version.rb +1 -1
  313. data/lib/ibex/watch/runner.rb +181 -0
  314. data/lib/ibex/watch/source_snapshot.rb +98 -0
  315. data/lib/ibex/watch.rb +11 -0
  316. data/lib/ibex.rb +35 -1
  317. data/schema/automaton-ir-definitions.schema.json +401 -0
  318. data/schema/automaton-ir.schema.json +65 -0
  319. data/schema/benchmark-v1.schema.json +212 -0
  320. data/schema/benchmark-v2.schema.json +61 -0
  321. data/schema/bison-import-v1.schema.json +106 -0
  322. data/schema/conflict-explanation-review-v1.schema.json +196 -0
  323. data/schema/conflict-explanation-study-v1.schema.json +528 -0
  324. data/schema/construction-profile-v1.schema.json +779 -0
  325. data/schema/cst-v1.json +170 -0
  326. data/schema/diff-v1.schema.json +41 -0
  327. data/schema/direct-ielr-decision-v1.schema.json +200 -0
  328. data/schema/equiv-v1.schema.json +64 -0
  329. data/schema/error-ux-review-v1.schema.json +609 -0
  330. data/schema/error-ux-round2-review-v1.schema.json +191 -0
  331. data/schema/error-ux-round2-v1.schema.json +519 -0
  332. data/schema/error-ux-v1.schema.json +258 -0
  333. data/schema/explain-v1.schema.json +495 -0
  334. data/schema/fix-v1.schema.json +64 -0
  335. data/schema/fix-v2.schema.json +66 -0
  336. data/schema/fix-v3.schema.json +101 -0
  337. data/schema/frontend-diagnostics-v1.schema.json +154 -0
  338. data/schema/fuzz-regression-v1.schema.json +79 -0
  339. data/schema/fuzz-v1.schema.json +114 -0
  340. data/schema/generation-manifest-v1.schema.json +115 -0
  341. data/schema/grammar-ir-extensions.schema.json +734 -0
  342. data/schema/grammar-ir-foundation.schema.json +426 -0
  343. data/schema/grammar-ir.schema.json +271 -0
  344. data/schema/ielr-benchmark-v1.schema.json +85 -0
  345. data/schema/lexer-ir-v1.schema.json +215 -0
  346. data/schema/lexer-profile-v1.schema.json +491 -0
  347. data/schema/metrics-v1.schema.json +60 -0
  348. data/schema/migration-check-v1.schema.json +60 -0
  349. data/schema/performance-comparison-v1.schema.json +395 -0
  350. data/schema/public-performance-comparison-v1.schema.json +506 -0
  351. data/schema/public-performance-profile-v1.schema.json +360 -0
  352. data/schema/reduce-v1.schema.json +22 -0
  353. data/schema/reduce-v2.schema.json +63 -0
  354. data/schema/runtime-coverage-v1.schema.json +86 -0
  355. data/schema/runtime-event-v1.schema.json +308 -0
  356. data/schema/table-artifact-v1.schema.json +377 -0
  357. data/schema/table-simulation-v1.schema.json +70 -0
  358. data/schema/verification-report-v1.schema.json +222 -0
  359. data/schema/verify-v1.schema.json +42 -0
  360. data/sig/ibex/analysis/digraph.rbs +19 -0
  361. data/sig/ibex/artifact_set.rbs +37 -0
  362. data/sig/ibex/bison_import/importer.rbs +140 -0
  363. data/sig/ibex/bison_import/tokenizer.rbs +91 -0
  364. data/sig/ibex/bison_import.rbs +95 -0
  365. data/sig/ibex/bounded_subprocess.rbs +76 -0
  366. data/sig/ibex/cli/ambiguity.rbs +28 -0
  367. data/sig/ibex/cli/analysis.rbs +43 -0
  368. data/sig/ibex/cli/bison_import.rbs +32 -0
  369. data/sig/ibex/cli/config.rbs +35 -0
  370. data/sig/ibex/cli/counterexample_options.rbs +2 -0
  371. data/sig/ibex/cli/coverage.rbs +53 -0
  372. data/sig/ibex/cli/debug.rbs +28 -0
  373. data/sig/ibex/cli/diagnostics.rbs +51 -0
  374. data/sig/ibex/cli/documentation.rbs +29 -0
  375. data/sig/ibex/cli/equiv.rbs +49 -0
  376. data/sig/ibex/cli/error_messages.rbs +63 -0
  377. data/sig/ibex/cli/explain.rbs +31 -0
  378. data/sig/ibex/cli/fix.rbs +53 -0
  379. data/sig/ibex/cli/formatting.rbs +107 -0
  380. data/sig/ibex/cli/fuzz.rbs +47 -0
  381. data/sig/ibex/cli/fuzz_regressions.rbs +40 -0
  382. data/sig/ibex/cli/generation_artifacts.rbs +69 -0
  383. data/sig/ibex/cli/generation_error_messages.rbs +19 -0
  384. data/sig/ibex/cli/grammar_tests.rbs +48 -0
  385. data/sig/ibex/cli/ir_tools.rbs +39 -0
  386. data/sig/ibex/cli/lsp.rbs +14 -0
  387. data/sig/ibex/cli/outputs.rbs +26 -3
  388. data/sig/ibex/cli/racc_migration.rbs +30 -0
  389. data/sig/ibex/cli/reduce.rbs +60 -0
  390. data/sig/ibex/cli/reduce_reporting.rbs +27 -0
  391. data/sig/ibex/cli/samples.rbs +38 -0
  392. data/sig/ibex/cli/verify.rbs +28 -0
  393. data/sig/ibex/cli/watch.rbs +43 -0
  394. data/sig/ibex/cli.rbs +182 -9
  395. data/sig/ibex/codegen/action_locations.rbs +45 -0
  396. data/sig/ibex/codegen/action_method_source.rbs +65 -0
  397. data/sig/ibex/codegen/action_source.rbs +50 -0
  398. data/sig/ibex/codegen/ambiguity.rbs +60 -0
  399. data/sig/ibex/codegen/cst_metadata.rbs +59 -0
  400. data/sig/ibex/codegen/documentation.rbs +50 -0
  401. data/sig/ibex/codegen/explain.rbs +105 -0
  402. data/sig/ibex/codegen/generated_action_abi.rbs +105 -0
  403. data/sig/ibex/codegen/html.rbs +18 -2
  404. data/sig/ibex/codegen/mermaid.rbs +16 -0
  405. data/sig/ibex/codegen/railroad.rbs +82 -0
  406. data/sig/ibex/codegen/railroad_documentation.rbs +31 -0
  407. data/sig/ibex/codegen/rbs.rbs +86 -4
  408. data/sig/ibex/codegen/report.rbs +16 -8
  409. data/sig/ibex/codegen/ruby.rbs +105 -28
  410. data/sig/ibex/codegen/ruby_actions.rbs +54 -0
  411. data/sig/ibex/codegen/ruby_ast.rbs +34 -0
  412. data/sig/ibex/codegen/ruby_error_messages.rbs +16 -0
  413. data/sig/ibex/codegen/ruby_lexer.rbs +25 -0
  414. data/sig/ibex/codegen/ruby_syntax.rbs +27 -0
  415. data/sig/ibex/codegen/ruby_table_metadata.rbs +26 -0
  416. data/sig/ibex/codegen/ruby_value_printers.rbs +28 -0
  417. data/sig/ibex/configuration/analysis_grammar.rbs +13 -0
  418. data/sig/ibex/configuration/explanation.rbs +195 -0
  419. data/sig/ibex/configuration/inspector.rbs +53 -0
  420. data/sig/ibex/configuration.rbs +242 -0
  421. data/sig/ibex/coverage/collector.rbs +78 -0
  422. data/sig/ibex/coverage/event_stream.rbs +44 -0
  423. data/sig/ibex/coverage/report.rbs +102 -0
  424. data/sig/ibex/coverage/runtime_event_validator.rbs +70 -0
  425. data/sig/ibex/coverage.rbs +7 -0
  426. data/sig/ibex/delta_reducer.rbs +38 -0
  427. data/sig/ibex/diff.rbs +47 -0
  428. data/sig/ibex/equiv/machine.rbs +54 -0
  429. data/sig/ibex/equiv.rbs +129 -0
  430. data/sig/ibex/error_messages/parser.rbs +58 -0
  431. data/sig/ibex/error_messages/parser_v2.rbs +67 -0
  432. data/sig/ibex/error_messages/renderer.rbs +23 -0
  433. data/sig/ibex/error_messages/sentence_search.rbs +80 -0
  434. data/sig/ibex/error_messages/update.rbs +43 -0
  435. data/sig/ibex/error_messages.rbs +85 -0
  436. data/sig/ibex/fix.rbs +138 -0
  437. data/sig/ibex/frontend/ast.rbs +237 -22
  438. data/sig/ibex/frontend/bootstrap_parser.rbs +13 -0
  439. data/sig/ibex/frontend/diagnostic.rbs +53 -0
  440. data/sig/ibex/frontend/diagnostic_recovery.rbs +98 -0
  441. data/sig/ibex/frontend/dsl.rbs +33 -4
  442. data/sig/ibex/frontend/formatter.rbs +143 -0
  443. data/sig/ibex/frontend/generated_parser.rbs +228 -68
  444. data/sig/ibex/frontend/generated_parser_base.rbs +65 -12
  445. data/sig/ibex/frontend/generated_parser_includes.rbs +23 -0
  446. data/sig/ibex/frontend/generated_parser_metadata.rbs +23 -0
  447. data/sig/ibex/frontend/generated_parser_parameters.rbs +24 -0
  448. data/sig/ibex/frontend/generation.rbs +6 -0
  449. data/sig/ibex/frontend/lexer.rbs +49 -2
  450. data/sig/ibex/frontend/lexer_recovery.rbs +25 -0
  451. data/sig/ibex/frontend/parser/declarations.rbs +57 -0
  452. data/sig/ibex/frontend/parser/parameters.rbs +28 -0
  453. data/sig/ibex/frontend/parser/rules.rbs +3 -0
  454. data/sig/ibex/frontend/parser.rbs +66 -0
  455. data/sig/ibex/frontend/parser_configuration_support.rbs +27 -0
  456. data/sig/ibex/frontend/regenerator.rbs +11 -0
  457. data/sig/ibex/frontend/resolution.rbs +34 -0
  458. data/sig/ibex/frontend/resolver.rbs +91 -0
  459. data/sig/ibex/frontend/rule_documentation.rbs +42 -0
  460. data/sig/ibex/frontend/source_cursor.rbs +38 -5
  461. data/sig/ibex/frontend/source_document.rbs +119 -0
  462. data/sig/ibex/frontend/source_loader.rbs +66 -0
  463. data/sig/ibex/frontend/source_span.rbs +56 -0
  464. data/sig/ibex/frontend/token_adapter/declaration_document_state.rbs +21 -0
  465. data/sig/ibex/frontend/token_adapter/declaration_lexer_state.rbs +27 -0
  466. data/sig/ibex/frontend/token_adapter/declaration_state.rbs +83 -3
  467. data/sig/ibex/frontend/token_adapter/rule_state.rbs +20 -0
  468. data/sig/ibex/frontend/token_adapter.rbs +11 -2
  469. data/sig/ibex/frontend.rbs +1 -1
  470. data/sig/ibex/fuzz.rbs +71 -0
  471. data/sig/ibex/generation_input.rbs +37 -0
  472. data/sig/ibex/generation_manifest.rbs +70 -0
  473. data/sig/ibex/generation_transaction.rbs +82 -0
  474. data/sig/ibex/generation_transaction_recovery.rbs +36 -0
  475. data/sig/ibex/generation_transaction_validation.rbs +65 -0
  476. data/sig/ibex/grammar_tests.rbs +93 -0
  477. data/sig/ibex/ir/automaton_ir.rbs +35 -10
  478. data/sig/ibex/ir/grammar_ir.rbs +96 -22
  479. data/sig/ibex/ir/lexer_ir.rbs +57 -0
  480. data/sig/ibex/ir/parser_contract.rbs +69 -0
  481. data/sig/ibex/ir/serialize.rbs +75 -23
  482. data/sig/ibex/ir/validator/automaton.rbs +112 -0
  483. data/sig/ibex/ir/validator/base.rbs +69 -0
  484. data/sig/ibex/ir/validator/grammar.rbs +195 -0
  485. data/sig/ibex/ir/validator/lexer.rbs +37 -0
  486. data/sig/ibex/ir/validator.rbs +16 -0
  487. data/sig/ibex/ir.rbs +45 -5
  488. data/sig/ibex/lalr/build_metrics.rbs +60 -0
  489. data/sig/ibex/lalr/builder.rbs +150 -19
  490. data/sig/ibex/lalr/conflict_search.rbs +12 -5
  491. data/sig/ibex/lalr/counterexample.rbs +20 -14
  492. data/sig/ibex/lalr/direct_lookaheads.rbs +93 -0
  493. data/sig/ibex/lalr/goto_follows.rbs +89 -0
  494. data/sig/ibex/lalr/ielr/annotator.rbs +67 -0
  495. data/sig/ibex/lalr/ielr/bits.rbs +14 -0
  496. data/sig/ibex/lalr/ielr/inadequacy.rbs +24 -0
  497. data/sig/ibex/lalr/ielr/item_lookaheads.rbs +35 -0
  498. data/sig/ibex/lalr/ielr/pipeline.rbs +17 -0
  499. data/sig/ibex/lalr/ielr/split_stability.rbs +27 -0
  500. data/sig/ibex/lalr/ielr/split_state.rbs +14 -0
  501. data/sig/ibex/lalr/ielr/state_splitter.rbs +76 -0
  502. data/sig/ibex/lalr/ielr_partition.rbs +71 -0
  503. data/sig/ibex/lalr/inadequacy_report.rbs +21 -0
  504. data/sig/ibex/lalr/lookahead_propagation.rbs +38 -0
  505. data/sig/ibex/lalr/lr0_collection.rbs +50 -0
  506. data/sig/ibex/lalr/on_error_reductions.rbs +22 -0
  507. data/sig/ibex/lalr/unreachable_states.rbs +25 -0
  508. data/sig/ibex/lalr.rbs +17 -1
  509. data/sig/ibex/location.rbs +67 -0
  510. data/sig/ibex/lsp/document_handlers.rbs +24 -0
  511. data/sig/ibex/lsp/document_store.rbs +94 -0
  512. data/sig/ibex/lsp/document_store_diagnostics.rbs +20 -0
  513. data/sig/ibex/lsp/document_store_validation.rbs +26 -0
  514. data/sig/ibex/lsp/initialization_handlers.rbs +30 -0
  515. data/sig/ibex/lsp/navigation_handlers.rbs +33 -0
  516. data/sig/ibex/lsp/parser_configuration_assistance.rbs +49 -0
  517. data/sig/ibex/lsp/position_codec.rbs +44 -0
  518. data/sig/ibex/lsp/protocol_error.rbs +32 -0
  519. data/sig/ibex/lsp/request_handlers.rbs +26 -0
  520. data/sig/ibex/lsp/request_support.rbs +40 -0
  521. data/sig/ibex/lsp/server.rbs +55 -0
  522. data/sig/ibex/lsp/symbol_index.rbs +77 -0
  523. data/sig/ibex/lsp/symbol_index_builder.rbs +88 -0
  524. data/sig/ibex/lsp/symbol_index_precedence_references.rbs +18 -0
  525. data/sig/ibex/lsp/symbol_index_source_queries.rbs +26 -0
  526. data/sig/ibex/lsp/symbol_occurrence.rbs +31 -0
  527. data/sig/ibex/lsp/transport.rbs +47 -0
  528. data/sig/ibex/lsp/workspace.rbs +42 -0
  529. data/sig/ibex/lsp/workspace_analyzer.rbs +69 -0
  530. data/sig/ibex/lsp.rbs +7 -0
  531. data/sig/ibex/messages.rbs +26 -0
  532. data/sig/ibex/metrics.rbs +50 -0
  533. data/sig/ibex/normalize/declarations.rbs +31 -0
  534. data/sig/ibex/normalize/diagnostics.rbs +13 -4
  535. data/sig/ibex/normalize/expander.rbs +22 -16
  536. data/sig/ibex/normalize/expression.rbs +11 -9
  537. data/sig/ibex/normalize/grammar_builder.rbs +11 -0
  538. data/sig/ibex/normalize/inline_expansion.rbs +129 -0
  539. data/sig/ibex/normalize/inline_validation.rbs +40 -0
  540. data/sig/ibex/normalize/lexer.rbs +37 -0
  541. data/sig/ibex/normalize/named_references.rbs +20 -0
  542. data/sig/ibex/normalize/nodes.rbs +14 -0
  543. data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +33 -0
  544. data/sig/ibex/normalize/parameter_lowering.rbs +35 -0
  545. data/sig/ibex/normalize/parameter_substitution.rbs +42 -0
  546. data/sig/ibex/normalize/parameter_validation.rbs +44 -0
  547. data/sig/ibex/normalize/parameters.rbs +51 -0
  548. data/sig/ibex/normalize/parser_configuration.rbs +23 -0
  549. data/sig/ibex/normalize/recovery_declarations.rbs +24 -0
  550. data/sig/ibex/normalize.rbs +129 -18
  551. data/sig/ibex/racc_migration/checker.rbs +36 -0
  552. data/sig/ibex/racc_migration/harness.rbs +16 -0
  553. data/sig/ibex/racc_migration/report.rbs +55 -0
  554. data/sig/ibex/racc_migration.rbs +8 -0
  555. data/sig/ibex/rake_task.rbs +51 -0
  556. data/sig/ibex/samples.rbs +60 -0
  557. data/sig/ibex/table_artifact/builder.rbs +93 -0
  558. data/sig/ibex/table_artifact/cst_projection.rbs +20 -0
  559. data/sig/ibex/table_artifact/document.rbs +27 -0
  560. data/sig/ibex/table_artifact/executor.rbs +66 -0
  561. data/sig/ibex/table_artifact/serializer.rbs +25 -0
  562. data/sig/ibex/table_artifact/validator/metadata.rbs +52 -0
  563. data/sig/ibex/table_artifact/validator/support.rbs +46 -0
  564. data/sig/ibex/table_artifact/validator/tables.rbs +63 -0
  565. data/sig/ibex/table_artifact/validator.rbs +66 -0
  566. data/sig/ibex/table_artifact.rbs +32 -0
  567. data/sig/ibex/table_simulation/result.rbs +36 -0
  568. data/sig/ibex/table_simulation/simulator.rbs +98 -0
  569. data/sig/ibex/table_simulation/step.rbs +42 -0
  570. data/sig/ibex/table_simulation/text.rbs +14 -0
  571. data/sig/ibex/table_simulation.rbs +7 -0
  572. data/sig/ibex/tables.rbs +10 -35
  573. data/sig/ibex/verifiable_generation_bundle.rbs +24 -0
  574. data/sig/ibex/verification_report/builder.rbs +53 -0
  575. data/sig/ibex/verification_report/canonical_ir.rbs +41 -0
  576. data/sig/ibex/verification_report/logical_path.rbs +34 -0
  577. data/sig/ibex/verification_report/validator.rbs +114 -0
  578. data/sig/ibex/verification_report.rbs +44 -0
  579. data/sig/ibex/verify/action_correspondence.rbs +50 -0
  580. data/sig/ibex/verify/language_witness.rbs +112 -0
  581. data/sig/ibex/verify/reference_collection.rbs +63 -0
  582. data/sig/ibex/verify/result.rbs +52 -0
  583. data/sig/ibex/verify/verifier.rbs +170 -0
  584. data/sig/ibex/verify.rbs +6 -0
  585. data/sig/ibex/watch/runner.rbs +58 -0
  586. data/sig/ibex/watch/source_snapshot.rbs +46 -0
  587. data/sig/ibex/watch.rbs +7 -0
  588. data/sig/ibex.rbs +2 -0
  589. metadata +524 -19
  590. data/.rubocop.yml +0 -43
  591. data/CHANGELOG.md +0 -30
  592. data/Rakefile +0 -25
  593. data/Steepfile +0 -10
  594. data/docs/compat-notes.md +0 -37
  595. data/docs/lexer-coverage.md +0 -14
  596. data/docs/phase10-extensions.md +0 -27
  597. data/gemfiles/Gemfile +0 -7
  598. data/gemfiles/Gemfile.lock +0 -98
  599. data/lib/ibex/frontend/grammar.y +0 -156
  600. data/lib/ibex/runtime/parser.rb +0 -360
  601. data/lib/ibex/runtime.rb +0 -8
  602. data/sig/ibex/runtime/parser.rbs +0 -167
  603. data/sig/ibex/runtime.rbs +0 -6
@@ -0,0 +1,37 @@
1
+ # Generated from lib/ibex/generation_input.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Digest and identity of source bytes actually consumed by one generation.
5
+ class GenerationInput
6
+ attr_reader path: String
7
+
8
+ attr_reader sha256: String
9
+
10
+ attr_reader bytesize: Integer
11
+
12
+ attr_reader dev: Integer
13
+
14
+ attr_reader ino: Integer
15
+
16
+ attr_reader access_paths: Array[String]
17
+
18
+ # @rbs (String path, String source, ?access_path: String) -> void
19
+ def initialize: (String path, String source, ?access_path: String) -> void
20
+
21
+ # Record another lexical path that supplied these canonical bytes.
22
+ # @rbs (String path) -> void
23
+ def add_access_path: (String path) -> void
24
+
25
+ # @rbs () -> Hash[String, String | Integer]
26
+ def to_h: () -> Hash[String, String | Integer]
27
+
28
+ # Detect content changes even when size and timestamps are preserved.
29
+ # @rbs () -> bool
30
+ def current?: () -> bool
31
+
32
+ private
33
+
34
+ # @rbs () -> bool
35
+ def lexical_paths_current?: () -> bool
36
+ end
37
+ end
@@ -0,0 +1,70 @@
1
+ # Generated from lib/ibex/generation_manifest.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Deterministic description of one published parser generation.
5
+ # rubocop:disable Metrics/ModuleLength -- manifest schema validation is kept in one auditable unit.
6
+ module GenerationManifest
7
+ type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
8
+
9
+ SCHEMA_VERSION: Integer
10
+
11
+ IDENTIFIER: String
12
+
13
+ ROOT_KEYS: Array[String]
14
+
15
+ INPUT_KEYS: Array[String]
16
+
17
+ FILE_KEYS: Array[String]
18
+
19
+ ARTIFACT_KEYS: Array[String]
20
+
21
+ # @rbs (ArtifactSet artifacts, source_records: Array[GenerationInput], options: Hash[String, Object?]) -> String
22
+ def self?.render: (ArtifactSet artifacts, source_records: Array[GenerationInput], options: Hash[String, Object?]) -> String
23
+
24
+ # Validate the manifest shape and, by default, every published artifact digest.
25
+ # @rbs (String source, ?verify_artifacts: bool) -> Hash[String, json_value]
26
+ def self?.validate: (String source, ?verify_artifacts: bool) -> Hash[String, json_value]
27
+
28
+ # @rbs (String path, ?verify_artifacts: bool) -> Hash[String, json_value]
29
+ def self?.validate_file: (String path, ?verify_artifacts: bool) -> Hash[String, json_value]
30
+
31
+ # @rbs (Artifact artifact) -> Hash[String, json_value]
32
+ def self?.artifact_entry: (Artifact artifact) -> Hash[String, json_value]
33
+
34
+ # @rbs (Array[Hash[String, json_value]] files) -> String
35
+ def self?.input_digest: (Array[Hash[String, json_value]] files) -> String
36
+
37
+ # @rbs (Hash[String, Object?] value) -> Hash[String, Object?]
38
+ def self?.sorted_hash: (Hash[String, Object?] value) -> Hash[String, Object?]
39
+
40
+ # @rbs (Object? document) -> void
41
+ def self?.validate_document: (Object? document) -> void
42
+
43
+ # @rbs (Hash[Object?, Object?] document) -> void
44
+ def self?.validate_identity: (Hash[Object?, Object?] document) -> void
45
+
46
+ # @rbs (Object? input) -> void
47
+ def self?.validate_input: (Object? input) -> void
48
+
49
+ # @rbs (Array[Object?] entries, String label, ?require_kind: bool) -> void
50
+ def self?.validate_entries: (Array[Object?] entries, String label, ?require_kind: bool) -> void
51
+
52
+ # @rbs (Object? entry, String label, bool require_kind) -> void
53
+ def self?.validate_entry: (Object? entry, String label, bool require_kind) -> void
54
+
55
+ # @rbs (Object? path, String label) -> void
56
+ def self?.validate_path: (Object? path, String label) -> void
57
+
58
+ # @rbs (Object? kind, String label) -> void
59
+ def self?.validate_kind: (Object? kind, String label) -> void
60
+
61
+ # @rbs (Object? digest, String label) -> void
62
+ def self?.validate_digest: (Object? digest, String label) -> void
63
+
64
+ # @rbs (Hash[Object?, Object?] value, Array[String] expected, String label) -> void
65
+ def self?.exact_keys!: (Hash[Object?, Object?] value, Array[String] expected, String label) -> void
66
+
67
+ # @rbs (Array[Object?] entries) -> void
68
+ def self?.verify_entries: (Array[Object?] entries) -> void
69
+ end
70
+ end
@@ -0,0 +1,82 @@
1
+ # Generated from lib/ibex/generation_transaction.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Publishes a rendered ArtifactSet with rollback and a manifest-last marker.
5
+ class GenerationTransaction
6
+ include GenerationTransactionRecovery
7
+
8
+ include GenerationTransactionValidation
9
+
10
+ class SourceChanged < Ibex::Error
11
+ end
12
+
13
+ class Error < Ibex::Error
14
+ attr_reader rollback_failed: bool
15
+
16
+ attr_reader recovery_artifacts: Array[String]
17
+
18
+ # @rbs (String message, ?rollback_failed: bool, ?recovery_artifacts: Array[String]) -> void
19
+ def initialize: (String message, ?rollback_failed: bool, ?recovery_artifacts: Array[String]) -> void
20
+ end
21
+
22
+ # rubocop:disable Layout/LineLength
23
+ # @rbs (ArtifactSet artifacts, ?warning: ^(String) -> void, ?stability_check: ^() -> bool, ?source_records: Array[GenerationInput], ?lock_sleeper: ^(Float) -> void) -> void
24
+ def initialize: (ArtifactSet artifacts, ?warning: ^(String) -> void, ?stability_check: ^() -> bool, ?source_records: Array[GenerationInput], ?lock_sleeper: ^(Float) -> void) -> void
25
+
26
+ # @rbs () -> void
27
+ def commit: () -> void
28
+
29
+ private
30
+
31
+ # @rbs () -> void
32
+ def prepare_records: () -> void
33
+
34
+ # @rbs (Artifact artifact, String target) -> Integer
35
+ def target_mode: (Artifact artifact, String target) -> Integer
36
+
37
+ # @rbs () -> void
38
+ def acquire_locks: () -> void
39
+
40
+ # @rbs (File lock, String path) -> void
41
+ def acquire_lock: (File lock, String path) -> void
42
+
43
+ # @rbs (String target) -> String
44
+ def lock_path: (String target) -> String
45
+
46
+ # @rbs () -> void
47
+ def stage_records: () -> void
48
+
49
+ # @rbs () -> void
50
+ def backup_records: () -> void
51
+
52
+ # @rbs (String directory, String suffix) -> File
53
+ def create_temporary_file: (String directory, String suffix) -> File
54
+
55
+ # @rbs (String target, String directory) -> String
56
+ def create_backup_link: (String target, String directory) -> String
57
+
58
+ # @rbs (String directory, String suffix) { (String) -> void } -> void
59
+ def with_temporary_path: (String directory, String suffix) { (String) -> void } -> void
60
+
61
+ # @rbs (Symbol group) -> void
62
+ def install_group: (Symbol group) -> void
63
+
64
+ # @rbs (Artifact artifact) -> Symbol
65
+ def publication_group: (Artifact artifact) -> Symbol
66
+
67
+ # @rbs () -> void
68
+ def sync_directories!: () -> void
69
+
70
+ # @rbs () -> void
71
+ def cleanup_success: () -> void
72
+
73
+ # @rbs (Exception error) -> void
74
+ def report_post_commit_failure: (Exception error) -> void
75
+
76
+ # @rbs (String message) -> void
77
+ def warn_best_effort: (String message) -> void
78
+
79
+ # @rbs () -> void
80
+ def release_locks: () -> void
81
+ end
82
+ end
@@ -0,0 +1,36 @@
1
+ # Generated from lib/ibex/generation_transaction_recovery.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Failure recovery and best-effort cleanup for GenerationTransaction.
5
+ module GenerationTransactionRecovery
6
+ private
7
+
8
+ # @rbs (Exception cause) -> bot
9
+ def handle_failure: (Exception cause) -> bot
10
+
11
+ # @rbs (Exception cause, Array[String] rollback, Array[String] cleanup, Array[String] sync) -> bool
12
+ def source_change_clean?: (Exception cause, Array[String] rollback, Array[String] cleanup, Array[String] sync) -> bool
13
+
14
+ # rubocop:disable Layout/LineLength
15
+ # @rbs (Exception cause, Array[String] rollback, Array[String] cleanup, Array[String] sync, Array[String] recovery) -> Array[String]
16
+ def failure_details: (Exception cause, Array[String] rollback, Array[String] cleanup, Array[String] sync, Array[String] recovery) -> Array[String]
17
+
18
+ # @rbs () -> Array[String]
19
+ def recovery_artifacts: () -> Array[String]
20
+
21
+ # @rbs () -> Array[String]
22
+ def rollback: () -> Array[String]
23
+
24
+ # @rbs (Hash[Symbol, Object?] record) -> void
25
+ def rollback_record: (Hash[Symbol, Object?] record) -> void
26
+
27
+ # @rbs (preserve_backups: bool) -> Array[String]
28
+ def cleanup_artifacts: (preserve_backups: bool) -> Array[String]
29
+
30
+ # @rbs (String path, Array[String] failures) -> void
31
+ def remove_artifact: (String path, Array[String] failures) -> void
32
+
33
+ # @rbs () -> Array[String]
34
+ def sync_directories_best_effort: () -> Array[String]
35
+ end
36
+ end
@@ -0,0 +1,65 @@
1
+ # Generated from lib/ibex/generation_transaction_validation.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Canonical target, source, symlink, and lock identity checks for generation.
5
+ module GenerationTransactionValidation
6
+ private def lock_path: (String) -> String
7
+
8
+ private
9
+
10
+ # Follow a final symlink while preserving the symlink path itself during publication.
11
+ # @rbs (String path, ?Hash[String, bool] seen, ?validate_links: bool) -> String
12
+ def resolved_target: (String path, ?Hash[String, bool] seen, ?validate_links: bool) -> String
13
+
14
+ # @rbs (String expanded, bool validate_links) -> String
15
+ def existing_target: (String expanded, bool validate_links) -> String
16
+
17
+ # @rbs (String target) -> void
18
+ def validate_existing_target!: (String target) -> void
19
+
20
+ # @rbs () -> void
21
+ def validate_source_boundaries!: () -> void
22
+
23
+ # @rbs (Array[String] lock_paths) -> void
24
+ def validate_lock_boundaries!: (Array[String] lock_paths) -> void
25
+
26
+ # @rbs (String path, File lock) -> void
27
+ def validate_lock_identity!: (String path, File lock) -> void
28
+
29
+ # @rbs () -> Array[String]
30
+ def protected_generation_paths: () -> Array[String]
31
+
32
+ # @rbs () -> Array[File::Stat]
33
+ def protected_generation_stats: () -> Array[File::Stat]
34
+
35
+ # @rbs (File::Stat path_stat, File::Stat lock_stat) -> bool
36
+ def stable_lock_identity?: (File::Stat path_stat, File::Stat lock_stat) -> bool
37
+
38
+ # @rbs (File::Stat left, File::Stat right) -> bool
39
+ def same_inode?: (File::Stat left, File::Stat right) -> bool
40
+
41
+ # @rbs (String left, String right) -> bool
42
+ def paths_alias?: (String left, String right) -> bool
43
+
44
+ # Reject target names that collide on common case-insensitive or
45
+ # normalization-insensitive filesystems, even when the current filesystem
46
+ # would permit both names.
47
+ # @rbs (String path) -> [String, String]
48
+ def portable_target_key: (String path) -> [ String, String ]
49
+
50
+ # @rbs (String phase) -> void
51
+ def ensure_sources_stable!: (String phase) -> void
52
+
53
+ # @rbs (String phase) -> void
54
+ def validate_active_locks!: (String phase) -> void
55
+
56
+ # @rbs (String phase) -> void
57
+ def validate_current_targets!: (String phase) -> void
58
+
59
+ # @rbs (Hash[Symbol, Object?] record, Array[String] sources, String phase) -> void
60
+ def validate_current_target!: (Hash[Symbol, Object?] record, Array[String] sources, String phase) -> void
61
+
62
+ # @rbs () -> void
63
+ def validate_locked_targets!: () -> void
64
+ end
65
+ end
@@ -0,0 +1,93 @@
1
+ # Generated from lib/ibex/grammar_tests.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Executes grammar-declared source examples against one generated parser.
5
+ module GrammarTests
6
+ DEFAULT_TIMEOUT: ::Integer
7
+
8
+ RESULT_MARKER: ::String
9
+
10
+ class Result < Struct[Symbol | String? | IR::location | Array[Integer]]
11
+ attr_accessor expectation(): Symbol
12
+
13
+ attr_accessor actual(): Symbol
14
+
15
+ attr_accessor error_class(): String?
16
+
17
+ attr_accessor error_message(): String?
18
+
19
+ attr_accessor location(): IR::location
20
+
21
+ attr_accessor production_ids(): Array[Integer]
22
+
23
+ def self.new: (?expectation: Symbol, ?actual: Symbol, ?error_class: String?, ?error_message: String?, ?location: IR::location, ?production_ids: Array[Integer]) -> instance
24
+ | ({ ?expectation: Symbol, ?actual: Symbol, ?error_class: String?, ?error_message: String?, ?location: IR::location, ?production_ids: Array[Integer] }) -> instance
25
+ end
26
+
27
+ class Result
28
+ # @rbs () -> bool
29
+ def passed?: () -> bool
30
+ end
31
+
32
+ class ProductionCoverage < Struct[Array[Integer] | Integer]
33
+ attr_accessor covered_ids(): Array[Integer]
34
+
35
+ attr_accessor missing_ids(): Array[Integer]
36
+
37
+ attr_accessor production_count(): Integer
38
+
39
+ def self.new: (?covered_ids: Array[Integer], ?missing_ids: Array[Integer], ?production_count: Integer) -> instance
40
+ | ({ ?covered_ids: Array[Integer], ?missing_ids: Array[Integer], ?production_count: Integer }) -> instance
41
+ end
42
+
43
+ class ProductionCoverage
44
+ # @rbs () -> Float
45
+ def percentage: () -> Float
46
+
47
+ # @rbs (Integer minimum) -> bool
48
+ def meets?: (Integer minimum) -> bool
49
+
50
+ # @rbs () -> bool
51
+ def complete?: () -> bool
52
+ end
53
+
54
+ # Runs all examples in one isolated process while creating a fresh parser
55
+ # instance for every case.
56
+ class Runner
57
+ CHILD_RUNNER: ::String
58
+
59
+ @automaton: IR::Automaton
60
+
61
+ @timeout: Integer
62
+
63
+ # @rbs (IR::Automaton automaton, ?timeout: Integer) -> void
64
+ def initialize: (IR::Automaton automaton, ?timeout: Integer) -> void
65
+
66
+ # @rbs () -> Array[Result]
67
+ def run: () -> Array[Result]
68
+
69
+ # @rbs (Array[Result] results) -> ProductionCoverage
70
+ def production_coverage: (Array[Result] results) -> ProductionCoverage
71
+
72
+ private
73
+
74
+ # @rbs () -> String
75
+ def generated_parser: () -> String
76
+
77
+ # @rbs (String parser_path, String runner_path) -> Array[Result]
78
+ def execute_child: (String parser_path, String runner_path) -> Array[Result]
79
+
80
+ # @rbs (Integer pid) -> Process::Status
81
+ def wait_for_child: (Integer pid) -> Process::Status
82
+
83
+ # @rbs (Process::Status status, String errors) -> bot
84
+ def raise_child_failure: (Process::Status status, String errors) -> bot
85
+
86
+ # @rbs (String output) -> Array[Result]
87
+ def decode_results: (String output) -> Array[Result]
88
+
89
+ # @rbs (IR::grammar_test test, Object? document) -> Result
90
+ def build_result: (IR::grammar_test test, Object? document) -> Result
91
+ end
92
+ end
93
+ end
@@ -13,8 +13,8 @@ module Ibex
13
13
  # @rbs (production: Integer, dot: Integer, lookaheads: Array[Integer]) -> void
14
14
  def initialize: (production: Integer, dot: Integer, lookaheads: Array[Integer]) -> void
15
15
 
16
- # @rbs (Grammar grammar) -> Hash[Symbol, untyped]
17
- def to_h: (Grammar grammar) -> Hash[Symbol, untyped]
16
+ # @rbs (Grammar grammar) -> Hash[Symbol, Object?]
17
+ def to_h: (Grammar grammar) -> Hash[Symbol, Object?]
18
18
  end
19
19
 
20
20
  # A deterministic LALR automaton state.
@@ -38,13 +38,13 @@ module Ibex
38
38
  # ?conflicts: Array[conflict]) -> void
39
39
  def initialize: (id: Integer, items: Array[AutomatonItem], transitions: Hash[Integer, Integer], actions: Hash[Integer, parser_action], gotos: Hash[Integer, Integer], ?default_action: parser_action?, ?conflicts: Array[conflict]) -> void
40
40
 
41
- # @rbs (Grammar grammar) -> Hash[Symbol, untyped]
42
- def to_h: (Grammar grammar) -> Hash[Symbol, untyped]
41
+ # @rbs (Grammar grammar) -> Hash[Symbol, Object?]
42
+ def to_h: (Grammar grammar) -> Hash[Symbol, Object?]
43
43
 
44
44
  private
45
45
 
46
- # @rbs (Hash[Integer, untyped] values, Grammar grammar) -> Hash[String, untyped]
47
- def named_keys: (Hash[Integer, untyped] values, Grammar grammar) -> Hash[String, untyped]
46
+ # @rbs (Hash[Integer, Object?] values, Grammar grammar) -> Hash[String, Object?]
47
+ def named_keys: (Hash[Integer, Object?] values, Grammar grammar) -> Hash[String, Object?]
48
48
  end
49
49
 
50
50
  # Immutable LALR automaton and its source grammar.
@@ -57,21 +57,46 @@ module Ibex
57
57
 
58
58
  attr_reader states: Array[AutomatonState]
59
59
 
60
+ attr_reader entry_states: Hash[String, Integer]
61
+
60
62
  attr_reader conflict_summary: conflict_summary
61
63
 
62
64
  attr_reader schema_version: Integer
63
65
 
66
+ attr_reader entry_construction: String
67
+
64
68
  # @rbs (grammar: Grammar, states: Array[AutomatonState], conflict_summary: conflict_summary,
65
- # ?algorithm: String, ?grammar_digest: String?, ?schema_version: Integer) -> void
66
- def initialize: (grammar: Grammar, states: Array[AutomatonState], conflict_summary: conflict_summary, ?algorithm: String, ?grammar_digest: String?, ?schema_version: Integer) -> void
69
+ # ?algorithm: String, ?grammar_digest: String?, ?entry_states: Hash[String, Integer]?,
70
+ # ?entry_construction: String) -> void
71
+ def initialize: (grammar: Grammar, states: Array[AutomatonState], conflict_summary: conflict_summary, ?algorithm: String, ?grammar_digest: String?, ?entry_states: Hash[String, Integer]?, ?entry_construction: String) -> void
67
72
 
68
- # @rbs () -> Hash[Symbol, untyped]
69
- def to_h: () -> Hash[Symbol, untyped]
73
+ # @rbs (grammar: Grammar, states: Array[AutomatonState], conflict_summary: conflict_summary,
74
+ # algorithm: String, grammar_digest: String?, entry_states: Hash[String, Integer]?,
75
+ # entry_construction: String) -> void
76
+ def initialize_current: (grammar: Grammar, states: Array[AutomatonState], conflict_summary: conflict_summary, algorithm: String, grammar_digest: String?, entry_states: Hash[String, Integer]?, entry_construction: String) -> void
77
+
78
+ # @rbs () -> Hash[Symbol, Object?]
79
+ def to_h: () -> Hash[Symbol, Object?]
70
80
 
71
81
  private
72
82
 
83
+ # @rbs () -> void
84
+ def validate_entry_states: () -> void
85
+
73
86
  # @rbs (Grammar grammar) -> String
74
87
  def digest_for: (Grammar grammar) -> String
88
+
89
+ # @rbs (String value) -> String
90
+ def validate_entry_construction: (String value) -> String
91
+
92
+ # @rbs () -> void
93
+ def validate_parser_contract: () -> void
94
+
95
+ # @rbs (ParserContract contract) -> void
96
+ def validate_parser_algorithm: (ParserContract contract) -> void
97
+
98
+ # @rbs (ParserContract contract) -> void
99
+ def validate_parser_entries: (ParserContract contract) -> void
75
100
  end
76
101
  end
77
102
  end
@@ -2,10 +2,15 @@
2
2
 
3
3
  module Ibex
4
4
  module IR
5
+ # Grammar IR has one active wire format. A future incompatible format
6
+ # change may advance this number, but the runtime never treats old
7
+ # formats as an alternate compatibility surface.
5
8
  SCHEMA_VERSION: ::Integer
6
9
 
7
- # @rbs (untyped value) -> untyped
8
- def self?.deep_freeze: (untyped value) -> untyped
10
+ SUPPORTED_SCHEMA_VERSIONS: Array[Integer]
11
+
12
+ # @rbs (Object? value) -> Object?
13
+ def self?.deep_freeze: (Object? value) -> Object?
9
14
 
10
15
  # An interned terminal or nonterminal.
11
16
  class GrammarSymbol
@@ -21,9 +26,15 @@ module Ibex
21
26
 
22
27
  attr_reader location: location?
23
28
 
29
+ attr_reader display_name: String?
30
+
31
+ attr_reader semantic_type: String?
32
+
33
+ attr_reader documentation: String?
34
+
24
35
  # @rbs (id: Integer, name: String, kind: Symbol, ?reserved: bool, ?precedence: precedence?,
25
- # ?location: location?) -> void
26
- def initialize: (id: Integer, name: String, kind: Symbol, ?reserved: bool, ?precedence: precedence?, ?location: location?) -> void
36
+ # ?location: location?, ?display_name: String?, ?semantic_type: String?, ?documentation: String?) -> void
37
+ def initialize: (id: Integer, name: String, kind: Symbol, ?reserved: bool, ?precedence: precedence?, ?location: location?, ?display_name: String?, ?semantic_type: String?, ?documentation: String?) -> void
27
38
 
28
39
  # @rbs () -> bool
29
40
  def terminal?: () -> bool
@@ -31,8 +42,8 @@ module Ibex
31
42
  # @rbs () -> bool
32
43
  def nonterminal?: () -> bool
33
44
 
34
- # @rbs () -> Hash[Symbol, untyped]
35
- def to_h: () -> Hash[Symbol, untyped]
45
+ # @rbs () -> Hash[Symbol, Object?]
46
+ def to_h: () -> Hash[Symbol, Object?]
36
47
  end
37
48
 
38
49
  # Opaque Ruby semantic action metadata.
@@ -45,11 +56,14 @@ module Ibex
45
56
 
46
57
  attr_reader context_length: Integer
47
58
 
48
- # @rbs (code: String, location: location, ?named_refs: Array[named_ref], ?context_length: Integer) -> void
49
- def initialize: (code: String, location: location, ?named_refs: Array[named_ref], ?context_length: Integer) -> void
59
+ attr_reader composition: action_composition?
50
60
 
51
- # @rbs () -> Hash[Symbol, untyped]
52
- def to_h: () -> Hash[Symbol, untyped]
61
+ # @rbs (code: String, location: location, ?named_refs: Array[named_ref], ?context_length: Integer,
62
+ # ?composition: action_composition?) -> void
63
+ def initialize: (code: String, location: location, ?named_refs: Array[named_ref], ?context_length: Integer, ?composition: action_composition?) -> void
64
+
65
+ # @rbs () -> Hash[Symbol, Object?]
66
+ def to_h: () -> Hash[Symbol, Object?]
53
67
  end
54
68
 
55
69
  # A normalized BNF production using symbol ids.
@@ -64,14 +78,21 @@ module Ibex
64
78
 
65
79
  attr_reader precedence_override: Integer?
66
80
 
67
- attr_reader origin: Hash[Symbol, untyped]
81
+ attr_reader origin: Hash[Symbol, Object?]
82
+
83
+ attr_reader documentation: String?
84
+
85
+ attr_reader expansion: production_expansion?
86
+
87
+ attr_reader node: node_annotation?
68
88
 
69
89
  # @rbs (id: Integer, lhs: Integer, rhs: Array[Integer], action: Action?, precedence_override: Integer?,
70
- # origin: Hash[Symbol, untyped]) -> void
71
- def initialize: (id: Integer, lhs: Integer, rhs: Array[Integer], action: Action?, precedence_override: Integer?, origin: Hash[Symbol, untyped]) -> void
90
+ # origin: Hash[Symbol, Object?], ?documentation: String?, ?expansion: production_expansion?,
91
+ # ?node: node_annotation?) -> void
92
+ def initialize: (id: Integer, lhs: Integer, rhs: Array[Integer], action: Action?, precedence_override: Integer?, origin: Hash[Symbol, Object?], ?documentation: String?, ?expansion: production_expansion?, ?node: node_annotation?) -> void
72
93
 
73
- # @rbs () -> Hash[Symbol, untyped]
74
- def to_h: () -> Hash[Symbol, untyped]
94
+ # @rbs () -> Hash[Symbol, Object?]
95
+ def to_h: () -> Hash[Symbol, Object?]
75
96
  end
76
97
 
77
98
  # One opaque user-code block and the location of its first code line.
@@ -83,8 +104,8 @@ module Ibex
83
104
  # @rbs (code: String, location: location) -> void
84
105
  def initialize: (code: String, location: location) -> void
85
106
 
86
- # @rbs () -> Hash[Symbol, untyped]
87
- def to_h: () -> Hash[Symbol, untyped]
107
+ # @rbs () -> Hash[Symbol, Object?]
108
+ def to_h: () -> Hash[Symbol, Object?]
88
109
  end
89
110
 
90
111
  # Immutable normalized grammar exchanged between pipeline stages.
@@ -95,8 +116,24 @@ module Ibex
95
116
 
96
117
  attr_reader start: String
97
118
 
119
+ attr_reader starts: Array[String]
120
+
121
+ attr_reader mode: grammar_mode
122
+
98
123
  attr_reader expect: Integer
99
124
 
125
+ attr_reader expect_rr: Integer?
126
+
127
+ attr_reader parser_parameters: Array[parser_parameter]
128
+
129
+ attr_reader value_printers: Array[value_printer]
130
+
131
+ attr_reader grammar_tests: Array[grammar_test]
132
+
133
+ attr_reader lexer: Lexer?
134
+
135
+ attr_reader recovery: recovery_policy
136
+
100
137
  attr_reader options: grammar_options
101
138
 
102
139
  attr_reader symbols: Array[GrammarSymbol]
@@ -113,11 +150,30 @@ module Ibex
113
150
 
114
151
  attr_reader schema_version: Integer
115
152
 
116
- # @rbs (class_name: String, superclass: String?, start: String, expect: Integer, options: grammar_options,
153
+ attr_reader source_provenance: source_provenance?
154
+
155
+ attr_reader parser_contract: ParserContract
156
+
157
+ # @rbs (class_name: String, superclass: String?, start: String, expect: Integer, ?expect_rr: Integer?,
158
+ # options: grammar_options,
117
159
  # symbols: Array[GrammarSymbol], productions: Array[Production], user_code: Hash[String, String],
118
160
  # conversions: Hash[String, String], warnings: Array[grammar_warning], ?user_code_chunks: user_code_chunks?,
119
- # ?schema_version: Integer) -> void
120
- def initialize: (class_name: String, superclass: String?, start: String, expect: Integer, options: grammar_options, symbols: Array[GrammarSymbol], productions: Array[Production], user_code: Hash[String, String], conversions: Hash[String, String], warnings: Array[grammar_warning], ?user_code_chunks: user_code_chunks?, ?schema_version: Integer) -> void
161
+ # ?parser_parameters: Array[parser_parameter],
162
+ # ?value_printers: Array[value_printer], ?grammar_tests: Array[grammar_test],
163
+ # ?recovery: recovery_policy?, ?lexer: Lexer?,
164
+ # ?mode: grammar_mode, ?starts: Array[String]?, ?parser_contract: ParserContract,
165
+ # ?source_provenance: source_provenance?) -> void
166
+ # rubocop:disable Metrics/AbcSize, Metrics/ParameterLists
167
+ # Immutable current IR is constructed from explicit public fields.
168
+ def initialize: (class_name: String, superclass: String?, start: String, expect: Integer, options: grammar_options, symbols: Array[GrammarSymbol], productions: Array[Production], user_code: Hash[String, String], conversions: Hash[String, String], warnings: Array[grammar_warning], ?expect_rr: Integer?, ?user_code_chunks: user_code_chunks?, ?parser_parameters: Array[parser_parameter], ?value_printers: Array[value_printer], ?grammar_tests: Array[grammar_test], ?recovery: recovery_policy?, ?lexer: Lexer?, ?mode: grammar_mode, ?starts: Array[String]?, ?parser_contract: ParserContract, ?source_provenance: source_provenance?) -> void
169
+
170
+ # @rbs (class_name: String, superclass: String?, start: String, expect: Integer, options: grammar_options,
171
+ # symbols: Array[GrammarSymbol], productions: Array[Production], user_code: Hash[String, String],
172
+ # conversions: Hash[String, String], warnings: Array[grammar_warning], user_code_chunks: user_code_chunks?,
173
+ # source_provenance: source_provenance?, expect_rr: Integer?, parser_parameters: Array[parser_parameter],
174
+ # value_printers: Array[value_printer], grammar_tests: Array[grammar_test], recovery: recovery_policy?,
175
+ # lexer: Lexer?, mode: grammar_mode, starts: Array[String]?, parser_contract: ParserContract) -> void
176
+ def initialize_current: (class_name: String, superclass: String?, start: String, expect: Integer, options: grammar_options, symbols: Array[GrammarSymbol], productions: Array[Production], user_code: Hash[String, String], conversions: Hash[String, String], warnings: Array[grammar_warning], user_code_chunks: user_code_chunks?, source_provenance: source_provenance?, expect_rr: Integer?, parser_parameters: Array[parser_parameter], value_printers: Array[value_printer], grammar_tests: Array[grammar_test], recovery: recovery_policy?, lexer: Lexer?, mode: grammar_mode, starts: Array[String]?, parser_contract: ParserContract) -> void
121
177
 
122
178
  # @rbs (String name) -> GrammarSymbol?
123
179
  def symbol: (String name) -> GrammarSymbol?
@@ -131,13 +187,31 @@ module Ibex
131
187
  # @rbs () -> Array[GrammarSymbol]
132
188
  def nonterminals: () -> Array[GrammarSymbol]
133
189
 
134
- # @rbs () -> Hash[Symbol, untyped]
135
- def to_h: () -> Hash[Symbol, untyped]
190
+ # @rbs () -> Hash[Symbol, Object?]
191
+ def to_h: () -> Hash[Symbol, Object?]
136
192
 
137
193
  private
138
194
 
195
+ # @rbs (grammar_mode mode) -> void
196
+ def validate_mode: (grammar_mode mode) -> void
197
+
198
+ # @rbs (String start, Array[String]? starts, grammar_mode mode) -> Array[String]
199
+ def validate_starts: (String start, Array[String]? starts, grammar_mode mode) -> Array[String]
200
+
201
+ # @rbs (Hash[Symbol, Object?] value) -> void
202
+ def append_optional_metadata: (Hash[Symbol, Object?] value) -> void
203
+
204
+ # @rbs (Hash[Symbol, Object?] value) -> void
205
+ def append_parser_metadata: (Hash[Symbol, Object?] value) -> void
206
+
207
+ # @rbs (Hash[Symbol, Object?] value) -> void
208
+ def append_recovery_metadata: (Hash[Symbol, Object?] value) -> void
209
+
139
210
  # @rbs () -> void
140
211
  def validate_user_code_chunks: () -> void
212
+
213
+ # @rbs (ParserContract parser_contract) -> void
214
+ def validate_current_metadata: (ParserContract parser_contract) -> void
141
215
  end
142
216
  end
143
217
  end