ibex 0.2.0 → 0.4.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 (461) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +100 -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 +274 -0
  40. data/docs/development.md +196 -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 +1617 -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/impact.md +101 -0
  56. data/docs/ja/bison-import.md +51 -0
  57. data/docs/ja/stable-api.md +53 -0
  58. data/docs/lexer-construction-profile.md +109 -0
  59. data/docs/lexer-migration.md +5 -0
  60. data/docs/maturity.md +129 -0
  61. data/docs/project-site-strategy.md +54 -0
  62. data/docs/racc-migration-evidence.md +45 -0
  63. data/docs/racc-migration.md +11 -0
  64. data/docs/release-readiness.md +126 -68
  65. data/docs/repair-semantics.md +123 -0
  66. data/docs/runtime-abi-evolution.md +310 -0
  67. data/docs/stability.md +145 -34
  68. data/docs/status.md +43 -0
  69. data/docs/syntax-sessions.md +183 -0
  70. data/docs/table-artifact.md +125 -0
  71. data/docs/test-interactions.md +219 -0
  72. data/docs/verification-report.md +137 -0
  73. data/docs/verifier-trust-boundary.md +199 -0
  74. data/docs/workloads.md +132 -0
  75. data/lib/ibex/analysis/digraph.rb +128 -0
  76. data/lib/ibex/analysis/sets.rb +14 -0
  77. data/lib/ibex/analysis.rb +1 -0
  78. data/lib/ibex/bison_import/importer.rb +516 -0
  79. data/lib/ibex/bison_import/tokenizer.rb +260 -0
  80. data/lib/ibex/bison_import.rb +200 -0
  81. data/lib/ibex/bounded_subprocess.rb +171 -0
  82. data/lib/ibex/cli/ambiguity.rb +14 -5
  83. data/lib/ibex/cli/analysis.rb +134 -0
  84. data/lib/ibex/cli/bison_import.rb +121 -0
  85. data/lib/ibex/cli/config.rb +128 -0
  86. data/lib/ibex/cli/diagnostics.rb +31 -11
  87. data/lib/ibex/cli/documentation.rb +11 -8
  88. data/lib/ibex/cli/equiv.rb +169 -0
  89. data/lib/ibex/cli/error_messages.rb +11 -4
  90. data/lib/ibex/cli/explain.rb +14 -5
  91. data/lib/ibex/cli/fix.rb +203 -0
  92. data/lib/ibex/cli/formatting.rb +11 -10
  93. data/lib/ibex/cli/fuzz.rb +200 -0
  94. data/lib/ibex/cli/fuzz_regressions.rb +145 -0
  95. data/lib/ibex/cli/generation_artifacts.rb +53 -2
  96. data/lib/ibex/cli/generation_error_messages.rb +1 -1
  97. data/lib/ibex/cli/grammar_tests.rb +32 -14
  98. data/lib/ibex/cli/impact.rb +393 -0
  99. data/lib/ibex/cli/ir_tools.rb +5 -61
  100. data/lib/ibex/cli/outputs.rb +60 -33
  101. data/lib/ibex/cli/reduce.rb +202 -0
  102. data/lib/ibex/cli/reduce_reporting.rb +71 -0
  103. data/lib/ibex/cli/samples.rb +49 -23
  104. data/lib/ibex/cli/verify.rb +116 -0
  105. data/lib/ibex/cli/watch.rb +6 -5
  106. data/lib/ibex/cli.rb +362 -56
  107. data/lib/ibex/codegen/action_locations.rb +1 -1
  108. data/lib/ibex/codegen/action_method_source.rb +5 -6
  109. data/lib/ibex/codegen/action_source.rb +3 -2
  110. data/lib/ibex/codegen/ambiguity.rb +5 -4
  111. data/lib/ibex/codegen/explain.rb +123 -55
  112. data/lib/ibex/codegen/generated_action_abi.rb +10 -5
  113. data/lib/ibex/codegen/rbs.rb +15 -7
  114. data/lib/ibex/codegen/report.rb +25 -13
  115. data/lib/ibex/codegen/ruby.rb +28 -64
  116. data/lib/ibex/codegen/ruby_actions.rb +9 -6
  117. data/lib/ibex/codegen/ruby_syntax.rb +15 -9
  118. data/lib/ibex/configuration/analysis_grammar.rb +35 -0
  119. data/lib/ibex/configuration/explanation.rb +421 -0
  120. data/lib/ibex/configuration/inspector.rb +232 -0
  121. data/lib/ibex/configuration.rb +580 -0
  122. data/lib/ibex/coverage/collector.rb +21 -11
  123. data/lib/ibex/coverage/event_stream.rb +13 -7
  124. data/lib/ibex/coverage/report.rb +26 -18
  125. data/lib/ibex/coverage/runtime_event_validator.rb +30 -21
  126. data/lib/ibex/delta_reducer.rb +99 -0
  127. data/lib/ibex/diff.rb +141 -0
  128. data/lib/ibex/equiv/machine.rb +135 -0
  129. data/lib/ibex/equiv.rb +373 -0
  130. data/lib/ibex/fix.rb +557 -0
  131. data/lib/ibex/frontend/ast.rb +22 -2
  132. data/lib/ibex/frontend/bootstrap_parser.rb +6 -13
  133. data/lib/ibex/frontend/diagnostic.rb +1 -1
  134. data/lib/ibex/frontend/formatter.rb +72 -26
  135. data/lib/ibex/frontend/generated_parser.rb +147 -117
  136. data/lib/ibex/frontend/generated_parser_base.rb +7 -3
  137. data/lib/ibex/frontend/generated_parser_includes.rb +1 -11
  138. data/lib/ibex/frontend/generation.rb +1 -1
  139. data/lib/ibex/frontend/parser/declarations.rb +17 -2
  140. data/lib/ibex/frontend/parser_configuration_support.rb +56 -0
  141. data/lib/ibex/frontend/regenerator.rb +1 -0
  142. data/lib/ibex/frontend/resolution.rb +2 -1
  143. data/lib/ibex/frontend/resolver.rb +1 -1
  144. data/lib/ibex/frontend/rule_documentation.rb +2 -1
  145. data/lib/ibex/frontend/source_cursor.rb +2 -2
  146. data/lib/ibex/frontend/source_span.rb +9 -1
  147. data/lib/ibex/frontend/token_adapter/declaration_state.rb +38 -6
  148. data/lib/ibex/frontend/token_adapter.rb +10 -0
  149. data/lib/ibex/frontend.rb +1 -0
  150. data/lib/ibex/fuzz.rb +219 -0
  151. data/lib/ibex/generation_input.rb +1 -1
  152. data/lib/ibex/generation_manifest.rb +36 -25
  153. data/lib/ibex/generation_transaction.rb +1 -1
  154. data/lib/ibex/generation_transaction_recovery.rb +4 -4
  155. data/lib/ibex/generation_transaction_validation.rb +2 -2
  156. data/lib/ibex/grammar_tests.rb +1 -1
  157. data/lib/ibex/impact/action_impact.rb +148 -0
  158. data/lib/ibex/impact/automaton_impact.rb +57 -0
  159. data/lib/ibex/impact/coverage_impact.rb +53 -0
  160. data/lib/ibex/impact/graph.rb +132 -0
  161. data/lib/ibex/impact/propagation.rb +147 -0
  162. data/lib/ibex/impact/report.rb +273 -0
  163. data/lib/ibex/impact/seeds.rb +69 -0
  164. data/lib/ibex/impact/severity.rb +139 -0
  165. data/lib/ibex/impact.rb +16 -0
  166. data/lib/ibex/ir/automaton_ir.rb +61 -19
  167. data/lib/ibex/ir/grammar_ir.rb +76 -45
  168. data/lib/ibex/ir/lexer_ir.rb +5 -5
  169. data/lib/ibex/ir/parser_contract.rb +135 -0
  170. data/lib/ibex/ir/serialize.rb +203 -76
  171. data/lib/ibex/ir/validator/automaton.rb +64 -34
  172. data/lib/ibex/ir/validator/base.rb +51 -33
  173. data/lib/ibex/ir/validator/grammar.rb +113 -83
  174. data/lib/ibex/ir/validator/lexer.rb +2 -2
  175. data/lib/ibex/ir/validator.rb +2 -1
  176. data/lib/ibex/ir.rb +16 -3
  177. data/lib/ibex/lalr/build_metrics.rb +50 -2
  178. data/lib/ibex/lalr/builder.rb +191 -56
  179. data/lib/ibex/lalr/conflict_search.rb +15 -4
  180. data/lib/ibex/lalr/counterexample.rb +19 -14
  181. data/lib/ibex/lalr/direct_lookaheads.rb +110 -57
  182. data/lib/ibex/lalr/goto_follows.rb +229 -0
  183. data/lib/ibex/lalr/ielr/annotator.rb +214 -0
  184. data/lib/ibex/lalr/ielr/bits.rb +28 -0
  185. data/lib/ibex/lalr/ielr/inadequacy.rb +47 -0
  186. data/lib/ibex/lalr/ielr/item_lookaheads.rb +78 -0
  187. data/lib/ibex/lalr/ielr/pipeline.rb +75 -0
  188. data/lib/ibex/lalr/ielr/split_stability.rb +78 -0
  189. data/lib/ibex/lalr/ielr/split_state.rb +20 -0
  190. data/lib/ibex/lalr/ielr/state_splitter.rb +258 -0
  191. data/lib/ibex/lalr/ielr_partition.rb +22 -8
  192. data/lib/ibex/lalr/inadequacy_report.rb +50 -0
  193. data/lib/ibex/lalr/lookahead_propagation.rb +111 -0
  194. data/lib/ibex/lalr/lr0_collection.rb +121 -0
  195. data/lib/ibex/lalr/unreachable_states.rb +80 -0
  196. data/lib/ibex/lalr.rb +52 -1
  197. data/lib/ibex/location.rb +3 -3
  198. data/lib/ibex/lsp/document_handlers.rb +9 -7
  199. data/lib/ibex/lsp/initialization_handlers.rb +9 -7
  200. data/lib/ibex/lsp/navigation_handlers.rb +25 -11
  201. data/lib/ibex/lsp/parser_configuration_assistance.rb +149 -0
  202. data/lib/ibex/lsp/position_codec.rb +6 -2
  203. data/lib/ibex/lsp/request_handlers.rb +3 -2
  204. data/lib/ibex/lsp/request_support.rb +14 -7
  205. data/lib/ibex/lsp/server.rb +13 -11
  206. data/lib/ibex/lsp/symbol_index.rb +13 -13
  207. data/lib/ibex/lsp/symbol_index_builder.rb +30 -20
  208. data/lib/ibex/lsp/symbol_occurrence.rb +8 -2
  209. data/lib/ibex/lsp/transport.rb +13 -3
  210. data/lib/ibex/lsp/workspace.rb +5 -4
  211. data/lib/ibex/lsp/workspace_analyzer.rb +1 -1
  212. data/lib/ibex/lsp.rb +1 -0
  213. data/lib/ibex/messages/en.yml +28 -0
  214. data/lib/ibex/messages/ja.yml +28 -0
  215. data/lib/ibex/messages.rb +68 -0
  216. data/lib/ibex/metrics.rb +175 -0
  217. data/lib/ibex/normalize/declarations.rb +2 -0
  218. data/lib/ibex/normalize/diagnostics.rb +63 -38
  219. data/lib/ibex/normalize/expander.rb +5 -4
  220. data/lib/ibex/normalize/expression.rb +8 -6
  221. data/lib/ibex/normalize/grammar_builder.rb +26 -0
  222. data/lib/ibex/normalize/inline_expansion.rb +100 -49
  223. data/lib/ibex/normalize/lexer.rb +3 -3
  224. data/lib/ibex/normalize/parameter_ebnf_lowering.rb +11 -10
  225. data/lib/ibex/normalize/parameter_lowering.rb +40 -23
  226. data/lib/ibex/normalize/parameters.rb +31 -4
  227. data/lib/ibex/normalize/parser_configuration.rb +70 -0
  228. data/lib/ibex/normalize.rb +10 -20
  229. data/lib/ibex/racc_migration/report.rb +6 -3
  230. data/lib/ibex/rake_task.rb +1 -1
  231. data/lib/ibex/samples.rb +43 -13
  232. data/lib/ibex/table_artifact/builder.rb +266 -0
  233. data/lib/ibex/table_artifact/cst_projection.rb +70 -0
  234. data/lib/ibex/table_artifact/document.rb +39 -0
  235. data/lib/ibex/table_artifact/executor.rb +187 -0
  236. data/lib/ibex/table_artifact/serializer.rb +57 -0
  237. data/lib/ibex/table_artifact/validator/metadata.rb +179 -0
  238. data/lib/ibex/table_artifact/validator/support.rb +86 -0
  239. data/lib/ibex/table_artifact/validator/tables.rb +238 -0
  240. data/lib/ibex/table_artifact/validator.rb +253 -0
  241. data/lib/ibex/table_artifact.rb +88 -0
  242. data/lib/ibex/table_simulation/result.rb +6 -2
  243. data/lib/ibex/table_simulation/step.rb +3 -1
  244. data/lib/ibex/tables.rb +14 -0
  245. data/lib/ibex/verifiable_generation_bundle.rb +86 -0
  246. data/lib/ibex/verification_report/builder.rb +159 -0
  247. data/lib/ibex/verification_report/canonical_ir.rb +123 -0
  248. data/lib/ibex/verification_report/logical_path.rb +68 -0
  249. data/lib/ibex/verification_report/validator.rb +329 -0
  250. data/lib/ibex/verification_report.rb +69 -0
  251. data/lib/ibex/verify/action_correspondence.rb +138 -0
  252. data/lib/ibex/verify/language_witness.rb +295 -0
  253. data/lib/ibex/verify/reference_collection.rb +190 -0
  254. data/lib/ibex/verify/result.rb +73 -0
  255. data/lib/ibex/verify/verifier.rb +598 -0
  256. data/lib/ibex/verify.rb +15 -0
  257. data/lib/ibex/version.rb +1 -1
  258. data/lib/ibex/watch/runner.rb +10 -1
  259. data/lib/ibex/watch/source_snapshot.rb +13 -8
  260. data/lib/ibex.rb +11 -0
  261. data/schema/{automaton-ir-v1.schema.json → automaton-ir-definitions.schema.json} +6 -6
  262. data/schema/{automaton-ir-v2.schema.json → automaton-ir.schema.json} +14 -7
  263. data/schema/bison-import-v1.schema.json +106 -0
  264. data/schema/conflict-explanation-review-v1.schema.json +196 -0
  265. data/schema/conflict-explanation-study-v1.schema.json +528 -0
  266. data/schema/construction-profile-v1.schema.json +779 -0
  267. data/schema/diff-v1.schema.json +41 -0
  268. data/schema/direct-ielr-decision-v1.schema.json +200 -0
  269. data/schema/equiv-v1.schema.json +64 -0
  270. data/schema/error-ux-review-v1.schema.json +609 -0
  271. data/schema/error-ux-round2-review-v1.schema.json +191 -0
  272. data/schema/error-ux-round2-v1.schema.json +519 -0
  273. data/schema/explain-v1.schema.json +63 -1
  274. data/schema/fix-v1.schema.json +64 -0
  275. data/schema/fix-v2.schema.json +66 -0
  276. data/schema/fix-v3.schema.json +101 -0
  277. data/schema/fuzz-regression-v1.schema.json +79 -0
  278. data/schema/fuzz-v1.schema.json +114 -0
  279. data/schema/{grammar-ir-v2.schema.json → grammar-ir-extensions.schema.json} +20 -65
  280. data/schema/{grammar-ir-v1.schema.json → grammar-ir-foundation.schema.json} +3 -3
  281. data/schema/grammar-ir.schema.json +271 -0
  282. data/schema/ielr-benchmark-v1.schema.json +85 -0
  283. data/schema/impact-v1.schema.json +208 -0
  284. data/schema/lexer-profile-v1.schema.json +491 -0
  285. data/schema/metrics-v1.schema.json +60 -0
  286. data/schema/reduce-v1.schema.json +22 -0
  287. data/schema/reduce-v2.schema.json +63 -0
  288. data/schema/table-artifact-v1.schema.json +377 -0
  289. data/schema/verification-report-v1.schema.json +222 -0
  290. data/schema/verify-v1.schema.json +42 -0
  291. data/sig/ibex/analysis/digraph.rbs +19 -0
  292. data/sig/ibex/analysis/sets.rbs +10 -0
  293. data/sig/ibex/bison_import/importer.rbs +140 -0
  294. data/sig/ibex/bison_import/tokenizer.rbs +91 -0
  295. data/sig/ibex/bison_import.rbs +95 -0
  296. data/sig/ibex/bounded_subprocess.rbs +76 -0
  297. data/sig/ibex/cli/ambiguity.rbs +6 -0
  298. data/sig/ibex/cli/analysis.rbs +43 -0
  299. data/sig/ibex/cli/bison_import.rbs +32 -0
  300. data/sig/ibex/cli/config.rbs +35 -0
  301. data/sig/ibex/cli/diagnostics.rbs +16 -3
  302. data/sig/ibex/cli/documentation.rbs +5 -1
  303. data/sig/ibex/cli/equiv.rbs +49 -0
  304. data/sig/ibex/cli/error_messages.rbs +6 -0
  305. data/sig/ibex/cli/explain.rbs +6 -0
  306. data/sig/ibex/cli/fix.rbs +53 -0
  307. data/sig/ibex/cli/formatting.rbs +5 -1
  308. data/sig/ibex/cli/fuzz.rbs +47 -0
  309. data/sig/ibex/cli/fuzz_regressions.rbs +40 -0
  310. data/sig/ibex/cli/generation_artifacts.rbs +21 -2
  311. data/sig/ibex/cli/generation_error_messages.rbs +2 -2
  312. data/sig/ibex/cli/grammar_tests.rbs +15 -3
  313. data/sig/ibex/cli/impact.rbs +95 -0
  314. data/sig/ibex/cli/ir_tools.rbs +7 -19
  315. data/sig/ibex/cli/outputs.rbs +9 -3
  316. data/sig/ibex/cli/reduce.rbs +60 -0
  317. data/sig/ibex/cli/reduce_reporting.rbs +27 -0
  318. data/sig/ibex/cli/samples.rbs +8 -0
  319. data/sig/ibex/cli/verify.rbs +28 -0
  320. data/sig/ibex/cli/watch.rbs +2 -2
  321. data/sig/ibex/cli.rbs +79 -5
  322. data/sig/ibex/codegen/action_method_source.rbs +4 -4
  323. data/sig/ibex/codegen/explain.rbs +45 -25
  324. data/sig/ibex/codegen/generated_action_abi.rbs +14 -10
  325. data/sig/ibex/codegen/rbs.rbs +12 -10
  326. data/sig/ibex/codegen/report.rbs +12 -12
  327. data/sig/ibex/codegen/ruby.rbs +18 -15
  328. data/sig/ibex/codegen/ruby_actions.rbs +6 -6
  329. data/sig/ibex/codegen/ruby_syntax.rbs +10 -8
  330. data/sig/ibex/configuration/analysis_grammar.rbs +13 -0
  331. data/sig/ibex/configuration/explanation.rbs +195 -0
  332. data/sig/ibex/configuration/inspector.rbs +53 -0
  333. data/sig/ibex/configuration.rbs +242 -0
  334. data/sig/ibex/coverage/collector.rbs +16 -14
  335. data/sig/ibex/coverage/event_stream.rbs +12 -10
  336. data/sig/ibex/coverage/report.rbs +20 -18
  337. data/sig/ibex/coverage/runtime_event_validator.rbs +38 -36
  338. data/sig/ibex/delta_reducer.rbs +38 -0
  339. data/sig/ibex/diff.rbs +47 -0
  340. data/sig/ibex/equiv/machine.rbs +54 -0
  341. data/sig/ibex/equiv.rbs +129 -0
  342. data/sig/ibex/fix.rbs +138 -0
  343. data/sig/ibex/frontend/ast.rbs +33 -7
  344. data/sig/ibex/frontend/bootstrap_parser.rbs +2 -0
  345. data/sig/ibex/frontend/diagnostic.rbs +2 -2
  346. data/sig/ibex/frontend/formatter.rbs +38 -30
  347. data/sig/ibex/frontend/generated_parser.rbs +87 -77
  348. data/sig/ibex/frontend/generated_parser_base.rbs +4 -2
  349. data/sig/ibex/frontend/parser/declarations.rbs +3 -0
  350. data/sig/ibex/frontend/parser_configuration_support.rbs +27 -0
  351. data/sig/ibex/frontend/resolution.rbs +3 -2
  352. data/sig/ibex/frontend/source_cursor.rbs +2 -2
  353. data/sig/ibex/frontend/source_span.rbs +5 -2
  354. data/sig/ibex/frontend/token_adapter/declaration_state.rbs +13 -1
  355. data/sig/ibex/frontend/token_adapter.rbs +6 -0
  356. data/sig/ibex/fuzz.rbs +71 -0
  357. data/sig/ibex/generation_input.rbs +2 -2
  358. data/sig/ibex/generation_manifest.rbs +35 -32
  359. data/sig/ibex/generation_transaction_recovery.rbs +2 -2
  360. data/sig/ibex/generation_transaction_validation.rbs +2 -2
  361. data/sig/ibex/grammar_tests.rbs +2 -2
  362. data/sig/ibex/impact/action_impact.rbs +58 -0
  363. data/sig/ibex/impact/automaton_impact.rbs +37 -0
  364. data/sig/ibex/impact/coverage_impact.rbs +28 -0
  365. data/sig/ibex/impact/graph.rbs +67 -0
  366. data/sig/ibex/impact/propagation.rbs +56 -0
  367. data/sig/ibex/impact/report.rbs +107 -0
  368. data/sig/ibex/impact/seeds.rbs +36 -0
  369. data/sig/ibex/impact/severity.rbs +55 -0
  370. data/sig/ibex/impact.rbs +6 -0
  371. data/sig/ibex/ir/automaton_ir.rbs +30 -11
  372. data/sig/ibex/ir/grammar_ir.rbs +41 -27
  373. data/sig/ibex/ir/lexer_ir.rbs +8 -8
  374. data/sig/ibex/ir/parser_contract.rbs +69 -0
  375. data/sig/ibex/ir/serialize.rbs +63 -28
  376. data/sig/ibex/ir/validator/automaton.rbs +47 -44
  377. data/sig/ibex/ir/validator/base.rbs +35 -31
  378. data/sig/ibex/ir/validator/grammar.rbs +78 -67
  379. data/sig/ibex/ir/validator/lexer.rbs +4 -4
  380. data/sig/ibex/ir.rbs +9 -3
  381. data/sig/ibex/lalr/build_metrics.rbs +42 -2
  382. data/sig/ibex/lalr/builder.rbs +75 -24
  383. data/sig/ibex/lalr/conflict_search.rbs +5 -2
  384. data/sig/ibex/lalr/counterexample.rbs +17 -14
  385. data/sig/ibex/lalr/direct_lookaheads.rbs +35 -28
  386. data/sig/ibex/lalr/goto_follows.rbs +89 -0
  387. data/sig/ibex/lalr/ielr/annotator.rbs +67 -0
  388. data/sig/ibex/lalr/ielr/bits.rbs +14 -0
  389. data/sig/ibex/lalr/ielr/inadequacy.rbs +24 -0
  390. data/sig/ibex/lalr/ielr/item_lookaheads.rbs +35 -0
  391. data/sig/ibex/lalr/ielr/pipeline.rbs +17 -0
  392. data/sig/ibex/lalr/ielr/split_stability.rbs +27 -0
  393. data/sig/ibex/lalr/ielr/split_state.rbs +14 -0
  394. data/sig/ibex/lalr/ielr/state_splitter.rbs +76 -0
  395. data/sig/ibex/lalr/ielr_partition.rbs +17 -5
  396. data/sig/ibex/lalr/inadequacy_report.rbs +21 -0
  397. data/sig/ibex/lalr/lookahead_propagation.rbs +38 -0
  398. data/sig/ibex/lalr/lr0_collection.rbs +50 -0
  399. data/sig/ibex/lalr/unreachable_states.rbs +25 -0
  400. data/sig/ibex/lalr.rbs +11 -1
  401. data/sig/ibex/location.rbs +6 -6
  402. data/sig/ibex/lsp/document_handlers.rbs +8 -8
  403. data/sig/ibex/lsp/initialization_handlers.rbs +12 -12
  404. data/sig/ibex/lsp/navigation_handlers.rbs +15 -12
  405. data/sig/ibex/lsp/parser_configuration_assistance.rbs +49 -0
  406. data/sig/ibex/lsp/position_codec.rbs +8 -4
  407. data/sig/ibex/lsp/request_handlers.rbs +4 -4
  408. data/sig/ibex/lsp/request_support.rbs +8 -8
  409. data/sig/ibex/lsp/server.rbs +16 -16
  410. data/sig/ibex/lsp/symbol_index.rbs +20 -21
  411. data/sig/ibex/lsp/symbol_index_builder.rbs +9 -8
  412. data/sig/ibex/lsp/symbol_occurrence.rbs +11 -5
  413. data/sig/ibex/lsp/transport.rbs +18 -6
  414. data/sig/ibex/lsp/workspace.rbs +3 -2
  415. data/sig/ibex/lsp/workspace_analyzer.rbs +1 -1
  416. data/sig/ibex/messages.rbs +26 -0
  417. data/sig/ibex/metrics.rbs +50 -0
  418. data/sig/ibex/normalize/diagnostics.rbs +4 -4
  419. data/sig/ibex/normalize/expander.rbs +2 -2
  420. data/sig/ibex/normalize/expression.rbs +10 -8
  421. data/sig/ibex/normalize/grammar_builder.rbs +11 -0
  422. data/sig/ibex/normalize/inline_expansion.rbs +59 -50
  423. data/sig/ibex/normalize/lexer.rbs +4 -4
  424. data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +15 -14
  425. data/sig/ibex/normalize/parameter_lowering.rbs +18 -18
  426. data/sig/ibex/normalize/parameters.rbs +13 -8
  427. data/sig/ibex/normalize/parser_configuration.rbs +23 -0
  428. data/sig/ibex/normalize.rbs +11 -5
  429. data/sig/ibex/racc_migration/report.rbs +8 -6
  430. data/sig/ibex/rake_task.rbs +1 -1
  431. data/sig/ibex/samples.rbs +13 -4
  432. data/sig/ibex/table_artifact/builder.rbs +93 -0
  433. data/sig/ibex/table_artifact/cst_projection.rbs +20 -0
  434. data/sig/ibex/table_artifact/document.rbs +27 -0
  435. data/sig/ibex/table_artifact/executor.rbs +66 -0
  436. data/sig/ibex/table_artifact/serializer.rbs +25 -0
  437. data/sig/ibex/table_artifact/validator/metadata.rbs +52 -0
  438. data/sig/ibex/table_artifact/validator/support.rbs +46 -0
  439. data/sig/ibex/table_artifact/validator/tables.rbs +63 -0
  440. data/sig/ibex/table_artifact/validator.rbs +66 -0
  441. data/sig/ibex/table_artifact.rbs +32 -0
  442. data/sig/ibex/table_simulation/result.rbs +8 -4
  443. data/sig/ibex/table_simulation/step.rbs +4 -2
  444. data/sig/ibex/tables.rbs +10 -9
  445. data/sig/ibex/verifiable_generation_bundle.rbs +24 -0
  446. data/sig/ibex/verification_report/builder.rbs +53 -0
  447. data/sig/ibex/verification_report/canonical_ir.rbs +41 -0
  448. data/sig/ibex/verification_report/logical_path.rbs +34 -0
  449. data/sig/ibex/verification_report/validator.rbs +114 -0
  450. data/sig/ibex/verification_report.rbs +44 -0
  451. data/sig/ibex/verify/action_correspondence.rbs +50 -0
  452. data/sig/ibex/verify/language_witness.rbs +112 -0
  453. data/sig/ibex/verify/reference_collection.rbs +63 -0
  454. data/sig/ibex/verify/result.rbs +52 -0
  455. data/sig/ibex/verify/verifier.rbs +170 -0
  456. data/sig/ibex/verify.rbs +6 -0
  457. data/sig/ibex/watch/runner.rbs +12 -2
  458. data/sig/ibex/watch/source_snapshot.rbs +13 -9
  459. metadata +254 -12
  460. data/lib/ibex/ir/migration.rb +0 -120
  461. data/sig/ibex/ir/migration.rbs +0 -34
@@ -0,0 +1,1617 @@
1
+ {
2
+ "ibex_error_ux_round2": "repository-capture",
3
+ "schema_version": 1,
4
+ "repository_capture": {
5
+ "status": "complete",
6
+ "generator": "tool/error_ux_round2.rb",
7
+ "corpus": {
8
+ "path": "test/fixtures/error_ux_round2/corpus-v1.json",
9
+ "sha256": "b3545aea560ac5b8d23589124fb5d2276673e5c84e69eca61f5da233c2f5bfb9"
10
+ },
11
+ "implementation_sources": [
12
+ {
13
+ "path": "lib/ibex.rb",
14
+ "sha256": "d55ef0e0d5a3e4647eee23093055574078e26a99338a64162aa8cdabaa05b129"
15
+ },
16
+ {
17
+ "path": "lib/ibex/analysis.rb",
18
+ "sha256": "66a7ce62e3e877d084deb3de720055e9e9a1f3081f9903a3c5f948bb496394b5"
19
+ },
20
+ {
21
+ "path": "lib/ibex/analysis/digraph.rb",
22
+ "sha256": "470aa4ed7af53c60993044667ed74813e15c19d3f0450a3404f12c10a88f9b98"
23
+ },
24
+ {
25
+ "path": "lib/ibex/analysis/sets.rb",
26
+ "sha256": "23356c106d47467f1d52f4d2bad4e8e29caf8a55b74fb245e6307b8275fc5027"
27
+ },
28
+ {
29
+ "path": "lib/ibex/artifact_set.rb",
30
+ "sha256": "79a350a24af5aaa47515c396b737870ab748db0c7e94fa8b90ea79ef23535bb5"
31
+ },
32
+ {
33
+ "path": "lib/ibex/bison_import.rb",
34
+ "sha256": "ba25097d5f4342406f5d358bcdb3614fe17f363c15f1a5364eaf4f69b28a642a"
35
+ },
36
+ {
37
+ "path": "lib/ibex/bison_import/importer.rb",
38
+ "sha256": "458f80fc482246e35c40612b78adf88177db045bd082ce4305c21fe6a6f82c46"
39
+ },
40
+ {
41
+ "path": "lib/ibex/bison_import/tokenizer.rb",
42
+ "sha256": "1aef258c1399a24509f37be2e4a136063bbf1c0ea557515a1f0dc567727223e8"
43
+ },
44
+ {
45
+ "path": "lib/ibex/codegen/action_locations.rb",
46
+ "sha256": "39e3abb50898da471cbadd35ee8943038960c34ad58b29f2c0e9db01e64c1fdc"
47
+ },
48
+ {
49
+ "path": "lib/ibex/codegen/action_method_source.rb",
50
+ "sha256": "4331c52fd0e478e864f4fa52c1c66212529fb17597f2e6b543a8d88dd4682291"
51
+ },
52
+ {
53
+ "path": "lib/ibex/codegen/action_source.rb",
54
+ "sha256": "14fdb71504bc6ce4e93aaf21053c2cc17188bbc9d3ef406cfb1c809393fbbaac"
55
+ },
56
+ {
57
+ "path": "lib/ibex/codegen/ambiguity.rb",
58
+ "sha256": "23dcf6a3f9318b611a41cc05ecaecbeaa122b76dab614ad857ddfcd0b7820e4b"
59
+ },
60
+ {
61
+ "path": "lib/ibex/codegen/cst_metadata.rb",
62
+ "sha256": "fc2ed04a48d7a0199d4b20967673c6f97f6e2b373e0aac616124eae286c2c6ee"
63
+ },
64
+ {
65
+ "path": "lib/ibex/codegen/documentation.rb",
66
+ "sha256": "6551a3dc29862c1de172ee75681f20b234f7c271891419d9a997d61e1b69e5c9"
67
+ },
68
+ {
69
+ "path": "lib/ibex/codegen/dot.rb",
70
+ "sha256": "92111bc3bc75d6e1e285a39717d04652e539ca096f5c33531efb3064b7fe2447"
71
+ },
72
+ {
73
+ "path": "lib/ibex/codegen/explain.rb",
74
+ "sha256": "f8c9123224ee6ab443a8ead6c7a2773655a7884756a3202120293c06d151b061"
75
+ },
76
+ {
77
+ "path": "lib/ibex/codegen/generated_action_abi.rb",
78
+ "sha256": "5c6b56e424869af9b5d921b6a6ad6093948dc6d051b22e4f2e8bbf4fbcfc755c"
79
+ },
80
+ {
81
+ "path": "lib/ibex/codegen/html.rb",
82
+ "sha256": "79bc81557be7874877a86a40ccb367b35f1815bf057827b228fcda905d2d19e8"
83
+ },
84
+ {
85
+ "path": "lib/ibex/codegen/mermaid.rb",
86
+ "sha256": "423dc0ec00b80e31f828a1470bf925d9d6d6ca22e6a5e919558a1cb342bfbcf3"
87
+ },
88
+ {
89
+ "path": "lib/ibex/codegen/railroad.rb",
90
+ "sha256": "512f0a8f904934ba6e4856d386d4f08817c19ad07a61d8ec0c86b4da08c505a5"
91
+ },
92
+ {
93
+ "path": "lib/ibex/codegen/railroad_documentation.rb",
94
+ "sha256": "fb3f39420d793903a0a5292743241d39bfc5d7e9691a9a23c8542935fc26f355"
95
+ },
96
+ {
97
+ "path": "lib/ibex/codegen/rbs.rb",
98
+ "sha256": "80dead575a27ed8c4d78d57e7d47bbab815864c474b170ffd3da4411e7c74c4a"
99
+ },
100
+ {
101
+ "path": "lib/ibex/codegen/report.rb",
102
+ "sha256": "8cb444f1375a2457a5b10ad38fc3afd6db27f2548fabb2bcc463d07c709282fa"
103
+ },
104
+ {
105
+ "path": "lib/ibex/codegen/ruby.rb",
106
+ "sha256": "933a156a39aa4dcbfe3396da0262054378ca3c73c7f651561b24347997fdd3dc"
107
+ },
108
+ {
109
+ "path": "lib/ibex/codegen/ruby_actions.rb",
110
+ "sha256": "8ccb5550a8996ee6ff18a31541d5205dde9d4837c8544cb7628e9bf4a5335460"
111
+ },
112
+ {
113
+ "path": "lib/ibex/codegen/ruby_ast.rb",
114
+ "sha256": "d7a2b97ce75a9ee3aba1097634dcb175a791e1d05ad085b1cf5e2aeffa41eab5"
115
+ },
116
+ {
117
+ "path": "lib/ibex/codegen/ruby_error_messages.rb",
118
+ "sha256": "088ef1cd4a583c80e11802f025de18e255a4fb634328c46696f0876c74808b71"
119
+ },
120
+ {
121
+ "path": "lib/ibex/codegen/ruby_lexer.rb",
122
+ "sha256": "683558eb0560201d6cda7dd241203375874952b803f41eb51ee7ef24bf1d9b81"
123
+ },
124
+ {
125
+ "path": "lib/ibex/codegen/ruby_syntax.rb",
126
+ "sha256": "553b4a002337b7d82fc91eec6efe3a866aa35040cba9185016d3491589cba734"
127
+ },
128
+ {
129
+ "path": "lib/ibex/codegen/ruby_table_metadata.rb",
130
+ "sha256": "b9df0e8ba6ced2b1d099fccb85127c9fd55ea69ce22a77c3226c3056fe955bad"
131
+ },
132
+ {
133
+ "path": "lib/ibex/codegen/ruby_value_printers.rb",
134
+ "sha256": "fcacd00a33b8dca75c95f3f89ec7fc655406c596f6e183224ad90c5b7d854e7b"
135
+ },
136
+ {
137
+ "path": "lib/ibex/codegen/symbol_labels.rb",
138
+ "sha256": "f29d9b3c80e2030303c44d6c011efad1ee9e6307ae9041a189a0753a39a94cdf"
139
+ },
140
+ {
141
+ "path": "lib/ibex/configuration.rb",
142
+ "sha256": "94a5f8ec80e1d28ca1254720128f3b703e20321e8989442f516548b210c92aa6"
143
+ },
144
+ {
145
+ "path": "lib/ibex/configuration/analysis_grammar.rb",
146
+ "sha256": "da24d7fdd07ec0b0238040e857998c75ede8e958db3795930687f8e8fca68f74"
147
+ },
148
+ {
149
+ "path": "lib/ibex/configuration/explanation.rb",
150
+ "sha256": "6016b85c5c55f8a0ac2bf5927de9d0d0ecb1e39386be451f9aafb39b0d98a8f9"
151
+ },
152
+ {
153
+ "path": "lib/ibex/coverage.rb",
154
+ "sha256": "8578aadb7e8b1b7e89d106e4f19f45fe400b1461531fd74eca7495b1bcded30a"
155
+ },
156
+ {
157
+ "path": "lib/ibex/coverage/collector.rb",
158
+ "sha256": "8e573956fe787766c40f45eacab484995e7ff453e3045e3ea4188e21396069a5"
159
+ },
160
+ {
161
+ "path": "lib/ibex/coverage/event_stream.rb",
162
+ "sha256": "cc7665a0a5681eb5f88ecbb2c13e877f200e657a593a9e48252fe3ae9648141f"
163
+ },
164
+ {
165
+ "path": "lib/ibex/coverage/report.rb",
166
+ "sha256": "73647f9207d53c5c18a077ff0faf4b933b51b173a29fa0526f95a21c9fc61fca"
167
+ },
168
+ {
169
+ "path": "lib/ibex/coverage/runtime_event_validator.rb",
170
+ "sha256": "72a1ab41d460fb292f31b9669ab241f9830e77c6ec913491b452edb5edc52ae8"
171
+ },
172
+ {
173
+ "path": "lib/ibex/delta_reducer.rb",
174
+ "sha256": "fac7b70b174a279fb3122b31fc8bbfbbf9ff66938bab5b998c7756f22fd8498a"
175
+ },
176
+ {
177
+ "path": "lib/ibex/diff.rb",
178
+ "sha256": "05d5a262f7760eef66392f7392a98912b565c5363555de1bddfd69be353ac0fe"
179
+ },
180
+ {
181
+ "path": "lib/ibex/equiv.rb",
182
+ "sha256": "37e6ec2228ca70720702367087bebfa4d87047ba2422b86f855c6047a364d217"
183
+ },
184
+ {
185
+ "path": "lib/ibex/equiv/machine.rb",
186
+ "sha256": "c4977be48906668087f5654029e065b9d24d0dfdf1ae708f7fdafe1e1bd46751"
187
+ },
188
+ {
189
+ "path": "lib/ibex/error.rb",
190
+ "sha256": "d9ea061a96dae780e52c6dbe947416f92ae901bd270aef587f8961cd558b623e"
191
+ },
192
+ {
193
+ "path": "lib/ibex/error_messages.rb",
194
+ "sha256": "55d26c809659e46688b759a2be3823a7bd1385a8a738852e5c03c49152d677c4"
195
+ },
196
+ {
197
+ "path": "lib/ibex/error_messages/parser.rb",
198
+ "sha256": "8158c0feec56b4e7656d1c78e64cd075a115f74a48426254eb7ea0781bb546bd"
199
+ },
200
+ {
201
+ "path": "lib/ibex/error_messages/parser_v2.rb",
202
+ "sha256": "50df0e76ceaea93a11ca662e1015f7ec68050ddbda58e8302c74f32d7e5c67bb"
203
+ },
204
+ {
205
+ "path": "lib/ibex/error_messages/renderer.rb",
206
+ "sha256": "ace98678c537f6e42b88bfafd978400bb71f40703f441bf987d0d4300101edaf"
207
+ },
208
+ {
209
+ "path": "lib/ibex/error_messages/sentence_search.rb",
210
+ "sha256": "602a0196340ff6bd4a202e48d60f3ac39734dcbcb860503f7867ad2f36b5f014"
211
+ },
212
+ {
213
+ "path": "lib/ibex/error_messages/update.rb",
214
+ "sha256": "64df37e83ae380a57a7e15a663772b1c81a117722da60be344bb4f1a277d79ab"
215
+ },
216
+ {
217
+ "path": "lib/ibex/fix.rb",
218
+ "sha256": "ba706969093bca0bafcc514324871c3de8d9cc9e54c8738dd1892dd0239508fc"
219
+ },
220
+ {
221
+ "path": "lib/ibex/frontend.rb",
222
+ "sha256": "332550c378c40abdc6011d96a925ad6cf39257728b370eaece6d644f5796a981"
223
+ },
224
+ {
225
+ "path": "lib/ibex/frontend/action_scanner.rb",
226
+ "sha256": "bc8388401500590e60699b2a23a570dc5793e372c124029c061036561a67f68d"
227
+ },
228
+ {
229
+ "path": "lib/ibex/frontend/ast.rb",
230
+ "sha256": "375868cac068483b08f8e5cffe78ad4d475955c96054aa113ad19d6f364ff1d7"
231
+ },
232
+ {
233
+ "path": "lib/ibex/frontend/diagnostic.rb",
234
+ "sha256": "fa0c7df1d775ba678444eacbc52de6e0db4d4be7d500affb818859b81d784422"
235
+ },
236
+ {
237
+ "path": "lib/ibex/frontend/diagnostic_recovery.rb",
238
+ "sha256": "9ec381cdef8b0020f8f9ad811e9651c59e85b3221ac0ae41b8feeadd76d34af7"
239
+ },
240
+ {
241
+ "path": "lib/ibex/frontend/dsl.rb",
242
+ "sha256": "d372c12d8bd8c35edb533aac3f9349859d4f01d38eb9767c25f5d3e56747aa49"
243
+ },
244
+ {
245
+ "path": "lib/ibex/frontend/formatter.rb",
246
+ "sha256": "93c65ffab32c0ce5bdc7583bf2bc5cd8e1ca290d8fe40eceb846dabf99cc392b"
247
+ },
248
+ {
249
+ "path": "lib/ibex/frontend/generated_parser.rb",
250
+ "sha256": "a9c909a60c9e9b44e10a417e9c80098f03217399726542936cebcfe2a35ed88a"
251
+ },
252
+ {
253
+ "path": "lib/ibex/frontend/generated_parser_base.rb",
254
+ "sha256": "50ba7a94e3c33704a4627c047328bebb55c2a5d5afcb0afa22c6ae57753d608a"
255
+ },
256
+ {
257
+ "path": "lib/ibex/frontend/generated_parser_includes.rb",
258
+ "sha256": "0a616acbe04b8660aae2581c08b75726c92f5a92fabc298be4f6204c7dd7c159"
259
+ },
260
+ {
261
+ "path": "lib/ibex/frontend/generated_parser_metadata.rb",
262
+ "sha256": "27fdc65dd639fe8c7766bcaaa6c8e495948405e1e37b49edf042cf9cd34664b7"
263
+ },
264
+ {
265
+ "path": "lib/ibex/frontend/generated_parser_parameters.rb",
266
+ "sha256": "47ecaaf7e87c7a9c025aed44a7fad9149dbad11324200c34dd88588f3c898bad"
267
+ },
268
+ {
269
+ "path": "lib/ibex/frontend/lexer.rb",
270
+ "sha256": "9aa2d3e780b1a50c605b8d6ea7ecd3f278ad25ba90205c204995bc94ed521f2c"
271
+ },
272
+ {
273
+ "path": "lib/ibex/frontend/lexer_recovery.rb",
274
+ "sha256": "97bc85b832b4e69691bbbf6256892a3a480d9a4a61244121073f50434e81d516"
275
+ },
276
+ {
277
+ "path": "lib/ibex/frontend/parser.rb",
278
+ "sha256": "a7ca03ed4092c476cef2ca05f22831438b6688b65f6abbbb446dd91b2966e17f"
279
+ },
280
+ {
281
+ "path": "lib/ibex/frontend/parser_configuration_support.rb",
282
+ "sha256": "d742ac1908ccad9b3cfe610921fd698c3d8aca33ae611ad9e8572ef3993a3c2a"
283
+ },
284
+ {
285
+ "path": "lib/ibex/frontend/resolution.rb",
286
+ "sha256": "b6ab6eed610a75c2e900304c68b9b68b0387028ed1fc06e304d270bd89bc9812"
287
+ },
288
+ {
289
+ "path": "lib/ibex/frontend/resolver.rb",
290
+ "sha256": "2d4d8d481a0d7bfacc068869d88564f4673a79b458b4e7debbcdc24b8fe53de3"
291
+ },
292
+ {
293
+ "path": "lib/ibex/frontend/rule_documentation.rb",
294
+ "sha256": "f0dcf27145a407ad253ec553b08d3004618248bc805d97a6f2b20f66765396b6"
295
+ },
296
+ {
297
+ "path": "lib/ibex/frontend/source_cursor.rb",
298
+ "sha256": "61ebec80cd3c69eaecfb61f94b1e918b32382a14a185a42f8716a1df4104642e"
299
+ },
300
+ {
301
+ "path": "lib/ibex/frontend/source_document.rb",
302
+ "sha256": "1d4d8aeb8f920b63d102453e9e8b8c8487571368d1239bcc7eae16ac011c1bd0"
303
+ },
304
+ {
305
+ "path": "lib/ibex/frontend/source_loader.rb",
306
+ "sha256": "8a5c95b5e7a66475b240ed630d06ecf98321c8335d2e9163a5c64d46bae0e27c"
307
+ },
308
+ {
309
+ "path": "lib/ibex/frontend/source_span.rb",
310
+ "sha256": "e8cafbfd62a8e13a30665bd1fae00a013f78da22aabfa229c924cec9694e0b14"
311
+ },
312
+ {
313
+ "path": "lib/ibex/frontend/token_adapter.rb",
314
+ "sha256": "5c12f66069c1162021f1b1d0b452b752168f2588fdc98811bbcc04962450f778"
315
+ },
316
+ {
317
+ "path": "lib/ibex/frontend/token_adapter/declaration_document_state.rb",
318
+ "sha256": "dc8fc43ce3872d69c271ae0e00d7a240da26bc188928ad48d6f720bf50163f9b"
319
+ },
320
+ {
321
+ "path": "lib/ibex/frontend/token_adapter/declaration_lexer_state.rb",
322
+ "sha256": "0063fc8b18f713b826f893cfa9aef1f9fa8257a2fab1485f61ca4d3f954e1def"
323
+ },
324
+ {
325
+ "path": "lib/ibex/frontend/token_adapter/declaration_state.rb",
326
+ "sha256": "b586ae991e9d70b4490f0c860e0f5160d810556581067232dfcd6f127fc7f4ba"
327
+ },
328
+ {
329
+ "path": "lib/ibex/frontend/token_adapter/delimiter_tracker.rb",
330
+ "sha256": "ee700ff1f8f9b49e16874226d4250de2175bb1fd2504f84c855f1cd7a72bad51"
331
+ },
332
+ {
333
+ "path": "lib/ibex/frontend/token_adapter/rule_state.rb",
334
+ "sha256": "bf3da6774b77224e9f3ce3f6eba43d532b632688c645f03951ad3216d0497430"
335
+ },
336
+ {
337
+ "path": "lib/ibex/fuzz.rb",
338
+ "sha256": "b9527e38fc6087c4d5abac30d11b7adf18dd2dc92610400064e02c6ed0ad85ac"
339
+ },
340
+ {
341
+ "path": "lib/ibex/generation_input.rb",
342
+ "sha256": "12b9c3f6461dbaa3e9893e4c8d0b64e64cf51201074ded3f7b6178874e8a854a"
343
+ },
344
+ {
345
+ "path": "lib/ibex/generation_manifest.rb",
346
+ "sha256": "d753ec8e50662c02d2eaf7074e0d6fa1d4cc5c219c06ffc9c3387075c17c962c"
347
+ },
348
+ {
349
+ "path": "lib/ibex/generation_transaction.rb",
350
+ "sha256": "3fb2aa0549b67fd8ebb2bff0a357e7b9df193c08b5a482d4cbbdaae77fae3867"
351
+ },
352
+ {
353
+ "path": "lib/ibex/generation_transaction_recovery.rb",
354
+ "sha256": "f8a110e9a7996a17cf9a02d46f6c9b66c5321274da6f9b00c0090d8d71c7efae"
355
+ },
356
+ {
357
+ "path": "lib/ibex/generation_transaction_validation.rb",
358
+ "sha256": "3d96fbbe2e40f88a063361623e680f62464b3876e01b930067ea87630b9fe9d6"
359
+ },
360
+ {
361
+ "path": "lib/ibex/grammar_tests.rb",
362
+ "sha256": "9b14fcf8b027ce005d270976679da3af223a0ed3f555aaa53593a6f3761ab29a"
363
+ },
364
+ {
365
+ "path": "lib/ibex/impact.rb",
366
+ "sha256": "dfb95aa512bb4ea481b67576f1e7630feaca79ab4985d8cd3be458bd947fb8c6"
367
+ },
368
+ {
369
+ "path": "lib/ibex/impact/action_impact.rb",
370
+ "sha256": "c701e9f097540f71d7a6ea68b8aff6982496f279db517032c4cae049a057058f"
371
+ },
372
+ {
373
+ "path": "lib/ibex/impact/automaton_impact.rb",
374
+ "sha256": "cfe404f6b7130ffd2b276b2a7f63c59ae23e601a828c4c68e352206753785705"
375
+ },
376
+ {
377
+ "path": "lib/ibex/impact/coverage_impact.rb",
378
+ "sha256": "3b971a44b77cc82aa19d07f4da2105c54d500f66126cf68e77bf94cae3b5ba5e"
379
+ },
380
+ {
381
+ "path": "lib/ibex/impact/graph.rb",
382
+ "sha256": "604a9638472e96bab9797287259c88ceaf12630c346b00de04357ba9510a6465"
383
+ },
384
+ {
385
+ "path": "lib/ibex/impact/propagation.rb",
386
+ "sha256": "e8f304a62160a235007ab3b985c677299f43f1010ca7fbc60380e19044ed68a3"
387
+ },
388
+ {
389
+ "path": "lib/ibex/impact/report.rb",
390
+ "sha256": "68f5e40fb39ed9ff7262623214ad1854728cfcb12865e61a08254588deb9d3de"
391
+ },
392
+ {
393
+ "path": "lib/ibex/impact/seeds.rb",
394
+ "sha256": "34ca25eefc11b538ae5e5a7ccf0422eaa68ba057a17f656a003a8510b4cee8b1"
395
+ },
396
+ {
397
+ "path": "lib/ibex/impact/severity.rb",
398
+ "sha256": "35e950839d0300136f754958992f34eeff641d772cf60468a8d5546432cd224b"
399
+ },
400
+ {
401
+ "path": "lib/ibex/ir.rb",
402
+ "sha256": "897997bd1459f1024d06002ddd210c917ec6dc12e9b87855a2c9ba3929fedddb"
403
+ },
404
+ {
405
+ "path": "lib/ibex/ir/automaton_ir.rb",
406
+ "sha256": "eb36c3e9f4dd2c28072f899894515054dedea4510b6b436953fa364587205dbe"
407
+ },
408
+ {
409
+ "path": "lib/ibex/ir/grammar_ir.rb",
410
+ "sha256": "cb48ee7c493b6db6bf7c33c08057c5ebf8ab615a917863ce0384bea0119d65a0"
411
+ },
412
+ {
413
+ "path": "lib/ibex/ir/lexer_ir.rb",
414
+ "sha256": "17b4239b55f8e5b4c5e6edac7e75b7af746340a257c727a8c37d4671330b69bc"
415
+ },
416
+ {
417
+ "path": "lib/ibex/ir/parser_contract.rb",
418
+ "sha256": "b7a09c8f2d801e91eeacaf70e510d924e5d13999166587b3b420ec71fed7b1d6"
419
+ },
420
+ {
421
+ "path": "lib/ibex/ir/serialize.rb",
422
+ "sha256": "95fa5a97e57640c7aec935b02e87b00da269871060ad7023e3b83a9ca4a52a1a"
423
+ },
424
+ {
425
+ "path": "lib/ibex/ir/validator.rb",
426
+ "sha256": "7d92701a65114efb03ecafe2bf7ad6482f8a4144e5cadccde4e9215c6689563b"
427
+ },
428
+ {
429
+ "path": "lib/ibex/ir/validator/automaton.rb",
430
+ "sha256": "c60a3fc165bbed63160a805649c63f9d56bbb6ed21a6e2c1348ed416a4594f3a"
431
+ },
432
+ {
433
+ "path": "lib/ibex/ir/validator/base.rb",
434
+ "sha256": "4e90584f0ddce8b775d30329520307540cafe02eb556e70cb4c600cba97479ad"
435
+ },
436
+ {
437
+ "path": "lib/ibex/ir/validator/grammar.rb",
438
+ "sha256": "d966e322757d09b0de439119b2894dd96859b01ee2d4e15d7015a27fbc404579"
439
+ },
440
+ {
441
+ "path": "lib/ibex/ir/validator/lexer.rb",
442
+ "sha256": "ffcc66abdfc770fffca59ac22cbf67eff9003274168810c66c63ad4a71c6bc79"
443
+ },
444
+ {
445
+ "path": "lib/ibex/lalr.rb",
446
+ "sha256": "d34c440528243db95343666e66c66f8af5bfb509b8676b7216d5db40b7804a4f"
447
+ },
448
+ {
449
+ "path": "lib/ibex/lalr/build_metrics.rb",
450
+ "sha256": "eadf2b10f366c110a4110592b6cfe3e221b69577cb1b7993c6ebc5d4d8c31717"
451
+ },
452
+ {
453
+ "path": "lib/ibex/lalr/builder.rb",
454
+ "sha256": "69a4b832abf5c1d6332049fc584b9c46f8b43609fad65dc0682e618e84ea52ad"
455
+ },
456
+ {
457
+ "path": "lib/ibex/lalr/conflict.rb",
458
+ "sha256": "eb3660e187447a5da5e52f12281054159d0c39d541dab1f7e11582529a545d60"
459
+ },
460
+ {
461
+ "path": "lib/ibex/lalr/conflict_search.rb",
462
+ "sha256": "e1856b7c08fbbadd0297c1c5477a32d1aa5fe1c871bb119c8be89433cf8732f2"
463
+ },
464
+ {
465
+ "path": "lib/ibex/lalr/conflict_search_limits.rb",
466
+ "sha256": "5be7e568f532c8c2305e2dd581258e041aba670c4f84279c6e7c1e41be4b6b0c"
467
+ },
468
+ {
469
+ "path": "lib/ibex/lalr/counterexample.rb",
470
+ "sha256": "6977f5181ad3728d7a6237dc7868e2805018ec7f0d0aa5b2f7ec2d51e4497a73"
471
+ },
472
+ {
473
+ "path": "lib/ibex/lalr/default_reductions.rb",
474
+ "sha256": "9a25433955895039ee34400e182f3c6603a2893575f91517e4bc14e42d3889d2"
475
+ },
476
+ {
477
+ "path": "lib/ibex/lalr/direct_lookaheads.rb",
478
+ "sha256": "b3fe129a688994c14105653ecf74c3e4ed37d3a3bd3ba9fbd7410dc06684f254"
479
+ },
480
+ {
481
+ "path": "lib/ibex/lalr/goto_follows.rb",
482
+ "sha256": "45afbbbc0242b5129e832c3078e77542e42cb7707792d653f582bf8fe4d6f22f"
483
+ },
484
+ {
485
+ "path": "lib/ibex/lalr/ielr/annotator.rb",
486
+ "sha256": "0215d424e69e43127a3da025b4618ccdb5148ea84deaa2fb65a45bf7e9fa0246"
487
+ },
488
+ {
489
+ "path": "lib/ibex/lalr/ielr/bits.rb",
490
+ "sha256": "dc04aa752f6eae4f88bbbaabe0435f8367b8866c88fda89785065d2578d3544e"
491
+ },
492
+ {
493
+ "path": "lib/ibex/lalr/ielr/inadequacy.rb",
494
+ "sha256": "d2a36a3a3e430fc4566d87f7957df05a7a37aed0844617f0159bb6a09542481b"
495
+ },
496
+ {
497
+ "path": "lib/ibex/lalr/ielr/item_lookaheads.rb",
498
+ "sha256": "359d3448117447909143c815ef0c53b081893100982aa608ae50f32aa48cdd80"
499
+ },
500
+ {
501
+ "path": "lib/ibex/lalr/ielr/pipeline.rb",
502
+ "sha256": "c5dd215e3ab13482d11fb4ef7b5aa49d170dbb5456e396b57b74fe8baa1aea0b"
503
+ },
504
+ {
505
+ "path": "lib/ibex/lalr/ielr/split_stability.rb",
506
+ "sha256": "08402d91c0fe4e39d449cbf55617cee04fc73dd3aae2be8207e62b4590ccbcd3"
507
+ },
508
+ {
509
+ "path": "lib/ibex/lalr/ielr/split_state.rb",
510
+ "sha256": "a930eb4a1f0bd3ec62cc4474225f63803c5f7085bcc4a397296a81ac15ac8b36"
511
+ },
512
+ {
513
+ "path": "lib/ibex/lalr/ielr/state_splitter.rb",
514
+ "sha256": "75c3cef68be399e893a1a160027fb9abc6410e0f12adaed8acbad09c8093568c"
515
+ },
516
+ {
517
+ "path": "lib/ibex/lalr/ielr_partition.rb",
518
+ "sha256": "842610d6ce3e2ae0850807e340a38864c85c27f513e42c26a6759cd865d9a506"
519
+ },
520
+ {
521
+ "path": "lib/ibex/lalr/lookahead_propagation.rb",
522
+ "sha256": "08ebf8de10e734242f719d6d0dcd7ce658d2d222c74049d33f580b124eb0c189"
523
+ },
524
+ {
525
+ "path": "lib/ibex/lalr/lr0_collection.rb",
526
+ "sha256": "abfcca1bd7da9006be889a092af35083a8211cce4655a7c893bee91109ddd1d8"
527
+ },
528
+ {
529
+ "path": "lib/ibex/lalr/on_error_reductions.rb",
530
+ "sha256": "a906e648908960f83d0a6ba52fd26607b0b87dcd5ecf9e0d448d15ef1cb92df7"
531
+ },
532
+ {
533
+ "path": "lib/ibex/lalr/unreachable_states.rb",
534
+ "sha256": "d2abb577b11337a36ab729e705bbfc145ebc3405a6ab07a12f969a6622d5cf75"
535
+ },
536
+ {
537
+ "path": "lib/ibex/location.rb",
538
+ "sha256": "1803a2746028b22108e213bb4421751f658e068adb622217958568c81d97a9af"
539
+ },
540
+ {
541
+ "path": "lib/ibex/messages.rb",
542
+ "sha256": "c2fb8e72ce1d0a24f0aae3a418b164bc65ce394e31dddb0995d723b1dc92453e"
543
+ },
544
+ {
545
+ "path": "lib/ibex/metrics.rb",
546
+ "sha256": "4734fa25fe8a733f8828a31cb9f975b8147ea283e48bab506f7c6d4adc296003"
547
+ },
548
+ {
549
+ "path": "lib/ibex/normalize.rb",
550
+ "sha256": "f21abb211db32700c2df4f7bee8830c0541dab3b2993beb8d618e48e0b560319"
551
+ },
552
+ {
553
+ "path": "lib/ibex/normalize/declarations.rb",
554
+ "sha256": "879fe8f37e3b02252f1f166d96615dcd1023ac237de5371fe7f925d46659d9c0"
555
+ },
556
+ {
557
+ "path": "lib/ibex/normalize/diagnostics.rb",
558
+ "sha256": "7d99bd4a15dd3170863d90005d1bd1308e9730534297ecc5ca3c8c5ec4fbbcfa"
559
+ },
560
+ {
561
+ "path": "lib/ibex/normalize/expander.rb",
562
+ "sha256": "980501cbc4e119d69d9d9a7d68fe9557346f06a65d70b5595d003e24f21009ad"
563
+ },
564
+ {
565
+ "path": "lib/ibex/normalize/expression.rb",
566
+ "sha256": "665a2cf8764439cd9c3b5c87a8dc002f4e65a1049f6df003f781ac27dfa66f2a"
567
+ },
568
+ {
569
+ "path": "lib/ibex/normalize/grammar_builder.rb",
570
+ "sha256": "15f955c7807f20987d9d998e136d16675a8f8686842695e6e6c1107c33b2c022"
571
+ },
572
+ {
573
+ "path": "lib/ibex/normalize/inline_expansion.rb",
574
+ "sha256": "a4cac4b0b875e37554edea5f7570ee68b466958344bed455c98bc20487223cb9"
575
+ },
576
+ {
577
+ "path": "lib/ibex/normalize/inline_validation.rb",
578
+ "sha256": "f686c817256770c6d707ff2bc82cc06004b2068fa5fec4d4df0fde16e640091d"
579
+ },
580
+ {
581
+ "path": "lib/ibex/normalize/lexer.rb",
582
+ "sha256": "bc98cf4ae5a4a0c7ffd8d08423c2207486d8c553e369c4360a55db023119fe32"
583
+ },
584
+ {
585
+ "path": "lib/ibex/normalize/named_references.rb",
586
+ "sha256": "0dd6625a8e5c4e3137561f3c8516677bd20297956352510391b60ef74982686e"
587
+ },
588
+ {
589
+ "path": "lib/ibex/normalize/nodes.rb",
590
+ "sha256": "098e52fba16dabf57666dcc8719adec72921fbc4bdc4ccfe1a5d5ced5e22b640"
591
+ },
592
+ {
593
+ "path": "lib/ibex/normalize/parameter_ebnf_lowering.rb",
594
+ "sha256": "9bf94cf4ebdba927b0043c7e844b390a58b60157d7e7e2aa42db53896ee53e6a"
595
+ },
596
+ {
597
+ "path": "lib/ibex/normalize/parameter_lowering.rb",
598
+ "sha256": "a69b822214311b9f5ae50efdc70418afa5cf236f1e4ee892b06d0b29ff2ba789"
599
+ },
600
+ {
601
+ "path": "lib/ibex/normalize/parameter_substitution.rb",
602
+ "sha256": "9f990c5760a26d4315b414e92a04b66cf002b9029d0021c17e470054d677b714"
603
+ },
604
+ {
605
+ "path": "lib/ibex/normalize/parameter_validation.rb",
606
+ "sha256": "379cd0f7b781d69e77e711b2f80a7d4b7fcdebbd5b358239e6594c29b872c06c"
607
+ },
608
+ {
609
+ "path": "lib/ibex/normalize/parameters.rb",
610
+ "sha256": "62f01879b1d945b65a8434fd2704d08318af17add6263fb76fd72fd61b421bb9"
611
+ },
612
+ {
613
+ "path": "lib/ibex/normalize/parser_configuration.rb",
614
+ "sha256": "79424dc443d89fc6bb00102d37627fdde11a1d53e06df7ed254968a5d466b589"
615
+ },
616
+ {
617
+ "path": "lib/ibex/normalize/recovery_declarations.rb",
618
+ "sha256": "0d31899c592f9b69ad0e92193698add61c7eaad414bf84e3a778c01c39db19dd"
619
+ },
620
+ {
621
+ "path": "lib/ibex/racc_migration.rb",
622
+ "sha256": "078c3b3ac774531ca152f694c63ca6221d133cd80e29585f163584a5842013c0"
623
+ },
624
+ {
625
+ "path": "lib/ibex/racc_migration/checker.rb",
626
+ "sha256": "316865179c49de72a25e94f23b85b6a6741f6511b17f9198ff706cb024447016"
627
+ },
628
+ {
629
+ "path": "lib/ibex/racc_migration/harness.rb",
630
+ "sha256": "6aa57c8419805f4955e964d4588e4e016321c596987af44d74d31874e4b4e99f"
631
+ },
632
+ {
633
+ "path": "lib/ibex/racc_migration/report.rb",
634
+ "sha256": "ab2aacf6d0a4b34795950fb350d94a578377d7827fdf2820836d9339e88d996f"
635
+ },
636
+ {
637
+ "path": "lib/ibex/runtime.rb",
638
+ "sha256": "ff3acecc17a199bafc92c2bf7c9c8adda7bac9949b2a449920f92b88c7cc5f68"
639
+ },
640
+ {
641
+ "path": "lib/ibex/runtime/ast_data.rb",
642
+ "sha256": "1789723c3100218de1025886e90d3e465df8fc95d243f0f3f31c85dff0c83044"
643
+ },
644
+ {
645
+ "path": "lib/ibex/runtime/cst.rb",
646
+ "sha256": "451f752b9823fb78513d453270fb4562ff4438ba43122a5b99614d6fb364e734"
647
+ },
648
+ {
649
+ "path": "lib/ibex/runtime/cst/annotation.rb",
650
+ "sha256": "61891907ef3524b709fb1b00a31c9aad498804e0d35cc074c8dbc122e538df02"
651
+ },
652
+ {
653
+ "path": "lib/ibex/runtime/cst/cursor.rb",
654
+ "sha256": "3b5ed23c7db29afada8f7292b41169d92c7d016b8ab7c984e1521d8713175649"
655
+ },
656
+ {
657
+ "path": "lib/ibex/runtime/cst/diff.rb",
658
+ "sha256": "a69e9f9eab058f0bd44776aa915d7e5c4a0b09dc57cd51e7776f60650d4bb4ff"
659
+ },
660
+ {
661
+ "path": "lib/ibex/runtime/cst/editing.rb",
662
+ "sha256": "66bc38c8684b223f30a19190aed701af1468fec86d6c9ef9ce6827d5274d9d50"
663
+ },
664
+ {
665
+ "path": "lib/ibex/runtime/cst/editor.rb",
666
+ "sha256": "6b19310409cfd1a3d561b9a22f4f0e76f80b956c799be56d44b5faec180d3f45"
667
+ },
668
+ {
669
+ "path": "lib/ibex/runtime/cst/green/builder.rb",
670
+ "sha256": "d56fcd613d654ebf57908565111877b64d2b5df141fdadbe090e341094a2e042"
671
+ },
672
+ {
673
+ "path": "lib/ibex/runtime/cst/green/cache.rb",
674
+ "sha256": "26223513301890764dc7653d7421a9f6d7eecfdec1316a3710ac4ad8bd943139"
675
+ },
676
+ {
677
+ "path": "lib/ibex/runtime/cst/green/node.rb",
678
+ "sha256": "261d88683b8d7d2e1e674c57afa2f9b114c511b0c0d61b21c00680d22fa68c11"
679
+ },
680
+ {
681
+ "path": "lib/ibex/runtime/cst/green/token.rb",
682
+ "sha256": "442b1c197c6c890b3cf5b8106692effa4b9e01ab977dde5d513b42207f369530"
683
+ },
684
+ {
685
+ "path": "lib/ibex/runtime/cst/green/trivia.rb",
686
+ "sha256": "1d7f33933403b92af3c8c806b0fa3a1f8e9798f14c0d67fd2d675a74049f1b7e"
687
+ },
688
+ {
689
+ "path": "lib/ibex/runtime/cst/incremental/blender.rb",
690
+ "sha256": "1d8ce24e72860c8f6f65b2f60601752db4d206cb38b7d4e753a10309c4b302c9"
691
+ },
692
+ {
693
+ "path": "lib/ibex/runtime/cst/incremental/lexed_syntax.rb",
694
+ "sha256": "c2304108def950fdbfb5ba78c23c05bdc0720587ed66fa43c5b38eb666c5f2d0"
695
+ },
696
+ {
697
+ "path": "lib/ibex/runtime/cst/incremental/parse_memo.rb",
698
+ "sha256": "3c2c2493a7d89901dc60589ce42388e4cb3bd36b5c155a38af4a633cc1796d82"
699
+ },
700
+ {
701
+ "path": "lib/ibex/runtime/cst/incremental/relexer.rb",
702
+ "sha256": "14157088f33f4517cfe91af7de5fc428bd0f114222b31d3c3ea7ff7ce257dfb3"
703
+ },
704
+ {
705
+ "path": "lib/ibex/runtime/cst/incremental/session.rb",
706
+ "sha256": "8092f39b1a57d29d89188ec0189923a78063ec9d05cceff300b7158b87afe806"
707
+ },
708
+ {
709
+ "path": "lib/ibex/runtime/cst/incremental/token_memo.rb",
710
+ "sha256": "ee8d8ece9a2b20261680bdf1d7cefdb2472a28f8ad8d37fab356f869b3e5d933"
711
+ },
712
+ {
713
+ "path": "lib/ibex/runtime/cst/kind.rb",
714
+ "sha256": "8f38c35cb46d829282abe229f06a46837c567dc871bd0e331f5bcb832cb5e5cb"
715
+ },
716
+ {
717
+ "path": "lib/ibex/runtime/cst/parse_result.rb",
718
+ "sha256": "1343782fc10b6597b21f22aebd1abfdf08c77d79c234e3947dd4df6d156e767f"
719
+ },
720
+ {
721
+ "path": "lib/ibex/runtime/cst/rewriter.rb",
722
+ "sha256": "3948178830fc91ab9c1bb54784103dc7bda5c7875882ec83b1c4a3c0c6eac141"
723
+ },
724
+ {
725
+ "path": "lib/ibex/runtime/cst/serialize.rb",
726
+ "sha256": "82d6bf47730641ea0dd896f9af3238a31631f45faf741e92dfa445533c030c3c"
727
+ },
728
+ {
729
+ "path": "lib/ibex/runtime/cst/serialized_tree.rb",
730
+ "sha256": "39031ae83edc03934202a38c7f827dd2b70f3c32d0d7d3ca8042c952a01a1646"
731
+ },
732
+ {
733
+ "path": "lib/ibex/runtime/cst/source_text.rb",
734
+ "sha256": "c20b8800b4ca1ff23412e92bee16ad4b5bbfe8d20f557ceede4bf2a18b5cd909"
735
+ },
736
+ {
737
+ "path": "lib/ibex/runtime/cst/syntax_node.rb",
738
+ "sha256": "5587f00adeb99378beb3f698b09ba1ff4e64fcdc6512822fb6f2fdefd3151649"
739
+ },
740
+ {
741
+ "path": "lib/ibex/runtime/cst/syntax_token.rb",
742
+ "sha256": "b04044b301a451e24cd505efa531dd334a6d018fe6227920f698644f6e4313f6"
743
+ },
744
+ {
745
+ "path": "lib/ibex/runtime/cst/text_edit.rb",
746
+ "sha256": "3628f7061f0d65f4234c08b0e9779b0f41735ff7b51559553844a9b23175bde1"
747
+ },
748
+ {
749
+ "path": "lib/ibex/runtime/cst/typed_node.rb",
750
+ "sha256": "b61beeaef352c66a656c6553d89878bdd40cf9f06d38ddf73c6ce881fda2e474"
751
+ },
752
+ {
753
+ "path": "lib/ibex/runtime/cst/validator.rb",
754
+ "sha256": "236ab49d36d7d32bb425aa21564f958d342929c811a9a0ea286a47590ef00795"
755
+ },
756
+ {
757
+ "path": "lib/ibex/runtime/embedded_source.rb",
758
+ "sha256": "76b933beec10a8202e93cf92eb825226fcb1d085f281645399c83734e06b5fc3"
759
+ },
760
+ {
761
+ "path": "lib/ibex/runtime/event.rb",
762
+ "sha256": "9c6d15fe7a8635c704caaf217b61532d13c9bbcf39eb7f04689d65cc6e2b0bc8"
763
+ },
764
+ {
765
+ "path": "lib/ibex/runtime/event_jsonl_tracer.rb",
766
+ "sha256": "21ca6f0909b1298cad21aad190f229e61c07a199431249d662761c5e2885ba5b"
767
+ },
768
+ {
769
+ "path": "lib/ibex/runtime/event_sanitizer.rb",
770
+ "sha256": "fe24d2075e108c776be52c956b1490ae23c82b57bfb451b3af88b2eb60db692f"
771
+ },
772
+ {
773
+ "path": "lib/ibex/runtime/generated_lexer.rb",
774
+ "sha256": "f2a798d9f45ced3a6dba12a9473b40fb0b904e2f8f3e0875ee88b49a4daf0f55"
775
+ },
776
+ {
777
+ "path": "lib/ibex/runtime/lexer_input.rb",
778
+ "sha256": "ce01d07b9d1ddf0bad6aff025ebf56805762a2124ddee854e54750f9711dd890"
779
+ },
780
+ {
781
+ "path": "lib/ibex/runtime/location_span.rb",
782
+ "sha256": "b3d899acd6b224b33611c545e782ff25f399ca6c65df2ff6102281bd27ee0357"
783
+ },
784
+ {
785
+ "path": "lib/ibex/runtime/observation.rb",
786
+ "sha256": "b521e6e5702a7ae90480febd5ca5b3ab91e2f3cfbf3e0a4ea59e2aa094d3c93d"
787
+ },
788
+ {
789
+ "path": "lib/ibex/runtime/parser.rb",
790
+ "sha256": "61a0b1fedc16cacf6386e2a3eb1d0381e72698c7562f920c9b763b476f5f23dd"
791
+ },
792
+ {
793
+ "path": "lib/ibex/runtime/parser_sync_recovery.rb",
794
+ "sha256": "f8dfce48fc13f49dd90959f04c01d372c02c9046ab73565e050bba3bb3b10363"
795
+ },
796
+ {
797
+ "path": "lib/ibex/runtime/repair.rb",
798
+ "sha256": "ebc613ae0a6e5a11723097c8141748edeeeb5ae9e9051937690cb0823eda9e43"
799
+ },
800
+ {
801
+ "path": "lib/ibex/runtime/repair_priority_queue.rb",
802
+ "sha256": "e3240a816f3877790988455745521883aa50907ea802094fd5b79b69998c400f"
803
+ },
804
+ {
805
+ "path": "lib/ibex/runtime/repair_search.rb",
806
+ "sha256": "c3d4fe2446676f5d43787732dc029835316c1125e28e7f2d87bf8d91b06d381a"
807
+ },
808
+ {
809
+ "path": "lib/ibex/runtime/resource_limits.rb",
810
+ "sha256": "476cc7d6dedbeb9a14bcc612277f38c9ac839148cee593f3a8df445f3175f329"
811
+ },
812
+ {
813
+ "path": "lib/ibex/runtime/syntax_repair.rb",
814
+ "sha256": "70c84b2b76a59f9427638d53af1f3bb5e4e1679f985678edb4add461687af9f7"
815
+ },
816
+ {
817
+ "path": "lib/ibex/runtime/syntax_session.rb",
818
+ "sha256": "75c35d1cfcc68258b1981e7543942597348936e25427c7b4615be89d18cea12e"
819
+ },
820
+ {
821
+ "path": "lib/ibex/runtime/table_format.rb",
822
+ "sha256": "7a792b78f825759d6ff11dbce5a33be679445bdfbb24875cea801c9df70951dd"
823
+ },
824
+ {
825
+ "path": "lib/ibex/samples.rb",
826
+ "sha256": "d65c379dc456aea2facf0e482a7e90aa663f6668412063ea05992780b889cc25"
827
+ },
828
+ {
829
+ "path": "lib/ibex/table_simulation.rb",
830
+ "sha256": "dcf21feb35440673e7eff60d910a158696563c6569a912b213c1ddb27c0bbcf9"
831
+ },
832
+ {
833
+ "path": "lib/ibex/table_simulation/result.rb",
834
+ "sha256": "4df57806b245e76732d9de08f0e2ef9478b511674456bbbe1136a5d853dc7d2b"
835
+ },
836
+ {
837
+ "path": "lib/ibex/table_simulation/simulator.rb",
838
+ "sha256": "7437bbd174569db33e310e7df1af3ba30c74303ba65b1e23554f929104a90f7c"
839
+ },
840
+ {
841
+ "path": "lib/ibex/table_simulation/step.rb",
842
+ "sha256": "1438f959bed880a0f644ffb1d8809590919162ac23d2da90af6d44cd35376837"
843
+ },
844
+ {
845
+ "path": "lib/ibex/table_simulation/text.rb",
846
+ "sha256": "7e8fc3cd122f36a758de28aef001e17f9d2f95b85ebde5e3c547e8e648077d8e"
847
+ },
848
+ {
849
+ "path": "lib/ibex/tables.rb",
850
+ "sha256": "c11c96de7eaa3f996360bd2386c2be66092f8600110d0327d861fc73c1de1a60"
851
+ },
852
+ {
853
+ "path": "lib/ibex/tables/compact.rb",
854
+ "sha256": "92005ede6302ce7d9054774f6c25fa2fdb77fe95b30cc044c63de34104fc3561"
855
+ },
856
+ {
857
+ "path": "lib/ibex/tables/compact_actions.rb",
858
+ "sha256": "6f341f467827ac0976734be03219df903834397cf667015a30b097f9bb5a83bc"
859
+ },
860
+ {
861
+ "path": "lib/ibex/tables/compact_productions.rb",
862
+ "sha256": "69dacb2962b30c11c3cdd53a5391307a3e41712f1dc93b07d4dd3af8dcaca92c"
863
+ },
864
+ {
865
+ "path": "lib/ibex/verify.rb",
866
+ "sha256": "8ded291c2e33e6e763b894f92b66230610763331801c35569c0420581c5f00de"
867
+ },
868
+ {
869
+ "path": "lib/ibex/verify/action_correspondence.rb",
870
+ "sha256": "881a726059f0ce3dd2451111b3bf4a7c82dee5b796d4976af4f7bb2630f17c49"
871
+ },
872
+ {
873
+ "path": "lib/ibex/verify/language_witness.rb",
874
+ "sha256": "0ca62fd96bd0e9976b542fd41bcf9270c4dffd7964db31c8ec6a15a9c6cf10d1"
875
+ },
876
+ {
877
+ "path": "lib/ibex/verify/reference_collection.rb",
878
+ "sha256": "d07e900652c61ddd942380d49edce0a3c811605cd82490c1e0e6db54010746fb"
879
+ },
880
+ {
881
+ "path": "lib/ibex/verify/result.rb",
882
+ "sha256": "bafe8474cfa9a60f810461593833b75c1e840007d8ee83d31c1b3272256e6719"
883
+ },
884
+ {
885
+ "path": "lib/ibex/verify/verifier.rb",
886
+ "sha256": "934ae84111581d2edd4230b06733f259bbf72839042a67c62d20558973af2e2e"
887
+ },
888
+ {
889
+ "path": "lib/ibex/watch.rb",
890
+ "sha256": "818710c2fc444ae7910bf98d3b3c0a2cedd425115936b4f10a659a52cc09ac33"
891
+ },
892
+ {
893
+ "path": "lib/ibex/watch/runner.rb",
894
+ "sha256": "0011eab3c3d059e4f89048e12b934984ecbe031aa1c9d023821cf8807af418e9"
895
+ },
896
+ {
897
+ "path": "lib/ibex/watch/source_snapshot.rb",
898
+ "sha256": "cd4b7f425b4fc7346897644942a43711e23613b07787f9b10deb776912d6e1ef"
899
+ },
900
+ {
901
+ "path": "tool/error_ux_round2.rb",
902
+ "sha256": "5dd51f74c5f356b1fce9081eb7408331c36d5b64ad075fac69962d715b28ffc7"
903
+ },
904
+ {
905
+ "path": "tool/error_ux_round2/capture.rb",
906
+ "sha256": "d3b8daf79d7364b728bec8dc3356643b235b9f5e0b6c0716e6f346a3e524d795"
907
+ },
908
+ {
909
+ "path": "tool/error_ux_round2/case_runner.rb",
910
+ "sha256": "c4f083c00a85cc15ab52ef860d83de760a150c2d5bd4eeecc2ed8d961a214f23"
911
+ },
912
+ {
913
+ "path": "tool/error_ux_round2/implementation_closure.rb",
914
+ "sha256": "60f1fac3f41ea5246809bb6050fb7bf74e442079df6c45d5b2d14fa88b14a1b2"
915
+ },
916
+ {
917
+ "path": "tool/error_ux_round2/policy.rb",
918
+ "sha256": "16f078d4b329c2fedf079eb262e5429c3bb8753b2353d190909ce5f4ce79d94e"
919
+ },
920
+ {
921
+ "path": "tool/error_ux_round2/source_edit.rb",
922
+ "sha256": "3da949a34e99b537688dd41691de8726f1674925587378730ddf0f7eb88c1409"
923
+ }
924
+ ],
925
+ "case_count": 7,
926
+ "deterministic_regeneration": true,
927
+ "r001_normative_snapshot": {
928
+ "path": "test/fixtures/error_ux/json-errors-v1.json",
929
+ "sha256": "bf49b2f8ba5329f1984d6e90e4b170b5811f4c800536fca56eba1f2725189dbf",
930
+ "expected_sha256": "bf49b2f8ba5329f1984d6e90e4b170b5811f4c800536fca56eba1f2725189dbf",
931
+ "status": "unchanged"
932
+ }
933
+ },
934
+ "problem": {
935
+ "statement": "Repository evidence must test diagnostic and repair behavior beyond the ten R001 JSON cases.",
936
+ "required_dimensions": [
937
+ "delimiter-heavy",
938
+ "statement-language",
939
+ "stateful-string-lexer",
940
+ "eof-error",
941
+ "multi-error-continuation",
942
+ "unknown-token",
943
+ "lexer-failure"
944
+ ],
945
+ "excluded_dimensions": [
946
+ {
947
+ "dimension": "indentation-sensitive-language",
948
+ "status": "excluded-unimplemented",
949
+ "reason": "ibex-has-no-indentation-tokenization-contract"
950
+ }
951
+ ]
952
+ },
953
+ "semantics": {
954
+ "expected_tokens": "Parser diagnostics report the exact runtime expected-token set; lexer failures have no parser state.",
955
+ "proposed_edit": "A repository-authored source edit is evaluated separately from the bounded runtime repair plan.",
956
+ "fresh_reparse": "Edits are applied by byte range and parsed by a newly allocated generated parser.",
957
+ "semantic_value_risk": "Syntactic acceptance does not establish that inserted, deleted, or replaced semantic values match user intent."
958
+ },
959
+ "trust_boundary": {
960
+ "execution_trust_label": "executes-application-code",
961
+ "fixture_code": "repository-owned-trusted",
962
+ "generated_code_execution": "enabled-for-listed-fixtures-only",
963
+ "external_code_execution": "forbidden",
964
+ "statement": "The capture executes generated lexer and action code only from the four allowlisted repository fixtures."
965
+ },
966
+ "external_subjective_gate": {
967
+ "status": "HOLD",
968
+ "reason": "no-external-review-records",
969
+ "allowed_labels": [
970
+ "useful",
971
+ "misleading",
972
+ "unsafe",
973
+ "unclear"
974
+ ],
975
+ "records": []
976
+ },
977
+ "limitations": [
978
+ {
979
+ "code": "repository-only",
980
+ "statement": "No external workload or reviewer is represented."
981
+ },
982
+ {
983
+ "code": "single-selected-repair",
984
+ "statement": "Bounded repair reports one selected plan, not every equal-cost edit."
985
+ },
986
+ {
987
+ "code": "acceptance-not-intent",
988
+ "statement": "A successful fresh parse does not prove intended program semantics."
989
+ },
990
+ {
991
+ "code": "no-indentation",
992
+ "statement": "Indentation diagnostics are excluded because no indentation contract exists."
993
+ }
994
+ ],
995
+ "kill_conditions": [
996
+ {
997
+ "code": "fixture-drift",
998
+ "statement": "Fail when a fixture or corpus digest changes without regenerated evidence."
999
+ },
1000
+ {
1001
+ "code": "coverage-loss",
1002
+ "statement": "Fail when a required H003 dimension has no case."
1003
+ },
1004
+ {
1005
+ "code": "r001-mutation",
1006
+ "statement": "Fail when the normative R001 snapshot digest changes."
1007
+ },
1008
+ {
1009
+ "code": "review-overclaim",
1010
+ "statement": "Fail when HOLD has a review record or a pending case has labels."
1011
+ },
1012
+ {
1013
+ "code": "fresh-reparse-regression",
1014
+ "statement": "Fail when a proposed edit no longer produces its committed fresh outcome."
1015
+ }
1016
+ ],
1017
+ "cases": [
1018
+ {
1019
+ "id": "H003-DELIMITER-01",
1020
+ "dimensions": [
1021
+ "delimiter-heavy"
1022
+ ],
1023
+ "grammar": "test/fixtures/error_ux_round2/delimiters.y",
1024
+ "input": "outer(inner(a,b),c]",
1025
+ "input_sha256": "f2039b19d0256dada39bdc4861df60f81c176348dfbe66d57db9bf06ea204926",
1026
+ "observation": {
1027
+ "mode": "single-rejection",
1028
+ "parse_status": "rejected",
1029
+ "diagnostics": [
1030
+ {
1031
+ "phase": "parser",
1032
+ "message": "(h003-delimiters):1:19: unexpected \"]\"; expected '(', ')', ',' (nil)\nouter(inner(a,b),c]\n ^",
1033
+ "token": "\"]\"",
1034
+ "expected_tokens": {
1035
+ "availability": "available",
1036
+ "tokens": [
1037
+ "'('",
1038
+ "')'",
1039
+ "','"
1040
+ ],
1041
+ "reason": null
1042
+ },
1043
+ "state": 5,
1044
+ "location": {
1045
+ "line": 1,
1046
+ "column": 19,
1047
+ "start_byte": 18,
1048
+ "source_line": "outer(inner(a,b),c]",
1049
+ "caret": " ^"
1050
+ }
1051
+ }
1052
+ ]
1053
+ },
1054
+ "bounded_repair": {
1055
+ "status": "selected",
1056
+ "parse_status": "accepted",
1057
+ "plan": {
1058
+ "cost": 2,
1059
+ "configurations": 73,
1060
+ "edits": [
1061
+ {
1062
+ "kind": "delete",
1063
+ "position": 0,
1064
+ "token_id": null,
1065
+ "token_name": "\"]\"",
1066
+ "cost": 1,
1067
+ "token_id_scope": "temporary-external"
1068
+ },
1069
+ {
1070
+ "kind": "insert",
1071
+ "position": 1,
1072
+ "token_id": 8,
1073
+ "token_name": "')'",
1074
+ "cost": 1,
1075
+ "token_id_scope": "grammar"
1076
+ }
1077
+ ]
1078
+ }
1079
+ },
1080
+ "proposed_edit": {
1081
+ "summary": "replace the mismatched closing bracket with a parenthesis",
1082
+ "operations": [
1083
+ {
1084
+ "start_byte": 18,
1085
+ "end_byte": 19,
1086
+ "replacement": ")"
1087
+ }
1088
+ ],
1089
+ "applied_source_sha256": "66a840098bcc1fc9ae297a6d420f064c4b8d131fff6d4007fd2f0887780239af"
1090
+ },
1091
+ "fresh_reparse": {
1092
+ "status": "accepted",
1093
+ "diagnostic_count": 0,
1094
+ "value_class": "Array"
1095
+ },
1096
+ "semantic_value_risk": {
1097
+ "level": "low",
1098
+ "category": "structural-delimiter",
1099
+ "statement": "The edit changes only a nil-valued delimiter token."
1100
+ },
1101
+ "external_review": {
1102
+ "status": "pending",
1103
+ "labels": []
1104
+ },
1105
+ "grammar_sha256": "dba52fd7b54466caab8c7dc29534e1df1ef2673c7c13816e4c15fe33750b5045"
1106
+ },
1107
+ {
1108
+ "id": "H003-STATEMENT-01",
1109
+ "dimensions": [
1110
+ "statement-language"
1111
+ ],
1112
+ "grammar": "test/fixtures/error_ux_round2/statements.y",
1113
+ "input": "answer = ;",
1114
+ "input_sha256": "0eb15eaab4e30f29b570c3a33f6592e23048d802a6062a95208bb03930837174",
1115
+ "observation": {
1116
+ "mode": "single-rejection",
1117
+ "parse_status": "rejected",
1118
+ "diagnostics": [
1119
+ {
1120
+ "phase": "parser",
1121
+ "message": "(h003-statements):1:10: unexpected ';'; expected NUMBER (nil)\nanswer = ;\n ^",
1122
+ "token": "';'",
1123
+ "expected_tokens": {
1124
+ "availability": "available",
1125
+ "tokens": [
1126
+ "NUMBER"
1127
+ ],
1128
+ "reason": null
1129
+ },
1130
+ "state": 8,
1131
+ "location": {
1132
+ "line": 1,
1133
+ "column": 10,
1134
+ "start_byte": 9,
1135
+ "source_line": "answer = ;",
1136
+ "caret": " ^"
1137
+ }
1138
+ }
1139
+ ]
1140
+ },
1141
+ "bounded_repair": {
1142
+ "status": "selected",
1143
+ "parse_status": "accepted",
1144
+ "plan": {
1145
+ "cost": 1,
1146
+ "configurations": 37,
1147
+ "edits": [
1148
+ {
1149
+ "kind": "insert",
1150
+ "position": 0,
1151
+ "token_id": 3,
1152
+ "token_name": "NUMBER",
1153
+ "cost": 1,
1154
+ "token_id_scope": "grammar"
1155
+ }
1156
+ ]
1157
+ }
1158
+ },
1159
+ "proposed_edit": {
1160
+ "summary": "insert an explicit numeric value before the terminator",
1161
+ "operations": [
1162
+ {
1163
+ "start_byte": 9,
1164
+ "end_byte": 9,
1165
+ "replacement": "0"
1166
+ }
1167
+ ],
1168
+ "applied_source_sha256": "11f279e93ac4b68690d617af80227eb97f850aaa143cbb43060064f4b7342183"
1169
+ },
1170
+ "fresh_reparse": {
1171
+ "status": "accepted",
1172
+ "diagnostic_count": 0,
1173
+ "value_class": "Array"
1174
+ },
1175
+ "semantic_value_risk": {
1176
+ "level": "high",
1177
+ "category": "invented-literal",
1178
+ "statement": "The repair invents the numeric semantic value zero and may change program meaning."
1179
+ },
1180
+ "external_review": {
1181
+ "status": "pending",
1182
+ "labels": []
1183
+ },
1184
+ "grammar_sha256": "7dee0cf9174a4fc59746a215b50aedc21643a3f213d056f819ca7eafee1f27f5"
1185
+ },
1186
+ {
1187
+ "id": "H003-STATEFUL-01",
1188
+ "dimensions": [
1189
+ "stateful-string-lexer"
1190
+ ],
1191
+ "grammar": "test/fixtures/error_ux_round2/stateful_strings.y",
1192
+ "input": "\"hello",
1193
+ "input_sha256": "196d3d58bf5c0427d2b094fb9b2c70b277ac1b4b96de1d191de8f1abe90ce149",
1194
+ "observation": {
1195
+ "mode": "single-rejection",
1196
+ "parse_status": "rejected",
1197
+ "diagnostics": [
1198
+ {
1199
+ "phase": "parser",
1200
+ "message": "(h003-stateful-string):1:7: unexpected $eof; expected STRING_END (nil)",
1201
+ "token": "$eof",
1202
+ "expected_tokens": {
1203
+ "availability": "available",
1204
+ "tokens": [
1205
+ "STRING_END"
1206
+ ],
1207
+ "reason": null
1208
+ },
1209
+ "state": 3,
1210
+ "location": {
1211
+ "line": 1,
1212
+ "column": 7,
1213
+ "start_byte": 6,
1214
+ "source_line": "\"hello",
1215
+ "caret": " ^"
1216
+ }
1217
+ }
1218
+ ]
1219
+ },
1220
+ "bounded_repair": {
1221
+ "status": "selected",
1222
+ "parse_status": "accepted",
1223
+ "plan": {
1224
+ "cost": 1,
1225
+ "configurations": 9,
1226
+ "edits": [
1227
+ {
1228
+ "kind": "insert",
1229
+ "position": 0,
1230
+ "token_id": 4,
1231
+ "token_name": "STRING_END",
1232
+ "cost": 1,
1233
+ "token_id_scope": "grammar"
1234
+ }
1235
+ ]
1236
+ }
1237
+ },
1238
+ "proposed_edit": {
1239
+ "summary": "close the string at end of input",
1240
+ "operations": [
1241
+ {
1242
+ "start_byte": 6,
1243
+ "end_byte": 6,
1244
+ "replacement": "\""
1245
+ }
1246
+ ],
1247
+ "applied_source_sha256": "5aa762ae383fbb727af3c7a36d4940a5b8c40a989452d2304fc958ff3f354e7a"
1248
+ },
1249
+ "fresh_reparse": {
1250
+ "status": "accepted",
1251
+ "diagnostic_count": 0,
1252
+ "value_class": "String"
1253
+ },
1254
+ "semantic_value_risk": {
1255
+ "level": "low",
1256
+ "category": "lexer-state-closure",
1257
+ "statement": "The edit closes the active lexer state without inventing string content."
1258
+ },
1259
+ "external_review": {
1260
+ "status": "pending",
1261
+ "labels": []
1262
+ },
1263
+ "grammar_sha256": "65a2f83c108ad5aa10c7d31eeafae9bd8241beac91d6dea40f81256cac5f9438"
1264
+ },
1265
+ {
1266
+ "id": "H003-EOF-01",
1267
+ "dimensions": [
1268
+ "eof-error",
1269
+ "delimiter-heavy"
1270
+ ],
1271
+ "grammar": "test/fixtures/error_ux_round2/delimiters.y",
1272
+ "input": "outer(inner(a,b),c",
1273
+ "input_sha256": "402db8f3f0246976daa0ceabd406ef527179a49b51eccca85c6a3387cde76883",
1274
+ "observation": {
1275
+ "mode": "single-rejection",
1276
+ "parse_status": "rejected",
1277
+ "diagnostics": [
1278
+ {
1279
+ "phase": "parser",
1280
+ "message": "(h003-delimiters):1:19: unexpected $eof; expected '(', ')', ',' (nil)",
1281
+ "token": "$eof",
1282
+ "expected_tokens": {
1283
+ "availability": "available",
1284
+ "tokens": [
1285
+ "'('",
1286
+ "')'",
1287
+ "','"
1288
+ ],
1289
+ "reason": null
1290
+ },
1291
+ "state": 5,
1292
+ "location": {
1293
+ "line": 1,
1294
+ "column": 19,
1295
+ "start_byte": 18,
1296
+ "source_line": "outer(inner(a,b),c",
1297
+ "caret": " ^"
1298
+ }
1299
+ }
1300
+ ]
1301
+ },
1302
+ "bounded_repair": {
1303
+ "status": "selected",
1304
+ "parse_status": "accepted",
1305
+ "plan": {
1306
+ "cost": 1,
1307
+ "configurations": 21,
1308
+ "edits": [
1309
+ {
1310
+ "kind": "insert",
1311
+ "position": 0,
1312
+ "token_id": 8,
1313
+ "token_name": "')'",
1314
+ "cost": 1,
1315
+ "token_id_scope": "grammar"
1316
+ }
1317
+ ]
1318
+ }
1319
+ },
1320
+ "proposed_edit": {
1321
+ "summary": "insert two candidate closing parentheses and let a fresh parse expose over-closure",
1322
+ "operations": [
1323
+ {
1324
+ "start_byte": 18,
1325
+ "end_byte": 18,
1326
+ "replacement": "))"
1327
+ }
1328
+ ],
1329
+ "applied_source_sha256": "251c7dfb6f215074b56a3a638b1c7986debc833228f676015b43db200205261a"
1330
+ },
1331
+ "fresh_reparse": {
1332
+ "status": "progress",
1333
+ "diagnostic_count": 1,
1334
+ "value_class": null,
1335
+ "diagnostic": {
1336
+ "phase": "parser",
1337
+ "message": "(h003-delimiters):1:20: unexpected ')'; expected $eof (nil)\nouter(inner(a,b),c))\n ^",
1338
+ "token": "')'",
1339
+ "expected_tokens": {
1340
+ "availability": "available",
1341
+ "tokens": [
1342
+ "$eof"
1343
+ ],
1344
+ "reason": null
1345
+ },
1346
+ "state": 3,
1347
+ "location": {
1348
+ "line": 1,
1349
+ "column": 20,
1350
+ "start_byte": 19,
1351
+ "source_line": "outer(inner(a,b),c))",
1352
+ "caret": " ^"
1353
+ }
1354
+ }
1355
+ },
1356
+ "semantic_value_risk": {
1357
+ "level": "low",
1358
+ "category": "structural-delimiter",
1359
+ "statement": "The edit adds only nil-valued closing delimiters."
1360
+ },
1361
+ "external_review": {
1362
+ "status": "pending",
1363
+ "labels": []
1364
+ },
1365
+ "grammar_sha256": "dba52fd7b54466caab8c7dc29534e1df1ef2673c7c13816e4c15fe33750b5045"
1366
+ },
1367
+ {
1368
+ "id": "H003-MULTI-01",
1369
+ "dimensions": [
1370
+ "multi-error-continuation",
1371
+ "statement-language"
1372
+ ],
1373
+ "grammar": "test/fixtures/error_ux_round2/statements.y",
1374
+ "input": "first = ; good = 1; second = = 2; third = 3;",
1375
+ "input_sha256": "7a6b365f7aa15f0c579d63197b78908d2ba27be901a263b8029c4f23c12478e5",
1376
+ "observation": {
1377
+ "mode": "synchronized-continuation",
1378
+ "parse_status": "accepted-after-recovery",
1379
+ "diagnostics": [
1380
+ {
1381
+ "phase": "parser",
1382
+ "message": "(h003-statements):1:9: unexpected ';'; expected NUMBER (nil)\nfirst = ; good = 1; second = = 2; third = 3;\n ^",
1383
+ "token": "';'",
1384
+ "expected_tokens": {
1385
+ "availability": "available",
1386
+ "tokens": [
1387
+ "NUMBER"
1388
+ ],
1389
+ "reason": null
1390
+ },
1391
+ "state": 8,
1392
+ "location": {
1393
+ "line": 1,
1394
+ "column": 9,
1395
+ "start_byte": 8,
1396
+ "source_line": "first = ; good = 1; second = = 2; third = 3;",
1397
+ "caret": " ^"
1398
+ }
1399
+ },
1400
+ {
1401
+ "phase": "parser",
1402
+ "message": "(h003-statements):1:30: unexpected '='; expected NUMBER (nil)\nfirst = ; good = 1; second = = 2; third = 3;\n ^",
1403
+ "token": "'='",
1404
+ "expected_tokens": {
1405
+ "availability": "available",
1406
+ "tokens": [
1407
+ "NUMBER"
1408
+ ],
1409
+ "reason": null
1410
+ },
1411
+ "state": 8,
1412
+ "location": {
1413
+ "line": 1,
1414
+ "column": 30,
1415
+ "start_byte": 29,
1416
+ "source_line": "first = ; good = 1; second = = 2; third = 3;",
1417
+ "caret": " ^"
1418
+ }
1419
+ }
1420
+ ]
1421
+ },
1422
+ "bounded_repair": {
1423
+ "status": "selected",
1424
+ "parse_status": "accepted",
1425
+ "plan": {
1426
+ "cost": 1,
1427
+ "configurations": 61,
1428
+ "edits": [
1429
+ {
1430
+ "kind": "insert",
1431
+ "position": 0,
1432
+ "token_id": 3,
1433
+ "token_name": "NUMBER",
1434
+ "cost": 1,
1435
+ "token_id_scope": "grammar"
1436
+ }
1437
+ ]
1438
+ }
1439
+ },
1440
+ "proposed_edit": {
1441
+ "summary": "supply the first value and remove the second extra equals sign",
1442
+ "operations": [
1443
+ {
1444
+ "start_byte": 8,
1445
+ "end_byte": 8,
1446
+ "replacement": "0"
1447
+ },
1448
+ {
1449
+ "start_byte": 29,
1450
+ "end_byte": 31,
1451
+ "replacement": ""
1452
+ }
1453
+ ],
1454
+ "applied_source_sha256": "c94f3324600f050b42f7ea9a1573be95f37d1723a0bbf0aaaf6c3b603ff8946d"
1455
+ },
1456
+ "fresh_reparse": {
1457
+ "status": "accepted",
1458
+ "diagnostic_count": 0,
1459
+ "value_class": "Array"
1460
+ },
1461
+ "semantic_value_risk": {
1462
+ "level": "high",
1463
+ "category": "invented-literal",
1464
+ "statement": "The first edit invents zero while the second deletes syntax; accepting input does not prove intended semantics."
1465
+ },
1466
+ "external_review": {
1467
+ "status": "pending",
1468
+ "labels": []
1469
+ },
1470
+ "grammar_sha256": "7dee0cf9174a4fc59746a215b50aedc21643a3f213d056f819ca7eafee1f27f5"
1471
+ },
1472
+ {
1473
+ "id": "H003-UNKNOWN-01",
1474
+ "dimensions": [
1475
+ "unknown-token"
1476
+ ],
1477
+ "grammar": "test/fixtures/error_ux_round2/unknown_token.y",
1478
+ "input": "ok @",
1479
+ "input_sha256": "f90789301474fba9a4cbfc7ba17120391ca3cb1ba10a61f7e2035922246073ce",
1480
+ "observation": {
1481
+ "mode": "single-rejection",
1482
+ "parse_status": "rejected",
1483
+ "diagnostics": [
1484
+ {
1485
+ "phase": "parser",
1486
+ "message": "(h003-unknown-token):1:4: unexpected :H003_UNKNOWN; expected $eof (\"@\")\nok @\n ^",
1487
+ "token": ":H003_UNKNOWN",
1488
+ "expected_tokens": {
1489
+ "availability": "available",
1490
+ "tokens": [
1491
+ "$eof"
1492
+ ],
1493
+ "reason": null
1494
+ },
1495
+ "state": 1,
1496
+ "location": {
1497
+ "line": 1,
1498
+ "column": 4,
1499
+ "start_byte": 3,
1500
+ "source_line": "ok @",
1501
+ "caret": " ^"
1502
+ }
1503
+ }
1504
+ ]
1505
+ },
1506
+ "bounded_repair": {
1507
+ "status": "selected",
1508
+ "parse_status": "accepted",
1509
+ "plan": {
1510
+ "cost": 1,
1511
+ "configurations": 8,
1512
+ "edits": [
1513
+ {
1514
+ "kind": "delete",
1515
+ "position": 0,
1516
+ "token_id": null,
1517
+ "token_name": ":H003_UNKNOWN",
1518
+ "cost": 1,
1519
+ "token_id_scope": "temporary-external"
1520
+ }
1521
+ ]
1522
+ }
1523
+ },
1524
+ "proposed_edit": {
1525
+ "summary": "delete the unknown external token",
1526
+ "operations": [
1527
+ {
1528
+ "start_byte": 3,
1529
+ "end_byte": 4,
1530
+ "replacement": ""
1531
+ }
1532
+ ],
1533
+ "applied_source_sha256": "bf2a63ad5d209b2be8586a0f249aac31e432115a64d4fb93433d702564be2469"
1534
+ },
1535
+ "fresh_reparse": {
1536
+ "status": "accepted",
1537
+ "diagnostic_count": 0,
1538
+ "value_class": "String"
1539
+ },
1540
+ "semantic_value_risk": {
1541
+ "level": "medium",
1542
+ "category": "deleted-input",
1543
+ "statement": "Deleting an unknown token can discard user intent even when the remaining parse succeeds."
1544
+ },
1545
+ "external_review": {
1546
+ "status": "pending",
1547
+ "labels": []
1548
+ },
1549
+ "grammar_sha256": "aca5bdcba455fab8c924737bb901ea5dd1a247c1325000a3c8979bd29aed83cc"
1550
+ },
1551
+ {
1552
+ "id": "H003-LEXER-01",
1553
+ "dimensions": [
1554
+ "lexer-failure"
1555
+ ],
1556
+ "grammar": "test/fixtures/error_ux_round2/delimiters.y",
1557
+ "input": "outer($)",
1558
+ "input_sha256": "314a7b267053917af6ec13c39c8624c674384991fc20c09a2331528026f4ce4e",
1559
+ "observation": {
1560
+ "mode": "single-rejection",
1561
+ "parse_status": "lexer-failure",
1562
+ "diagnostics": [
1563
+ {
1564
+ "phase": "lexer",
1565
+ "message": "(h003-delimiters):1:7: no lexer rule matches \"$)\" in state INITIAL",
1566
+ "token": "lexer input",
1567
+ "expected_tokens": {
1568
+ "availability": "not-available",
1569
+ "tokens": [],
1570
+ "reason": "lexer-failure-precedes-parser-state"
1571
+ },
1572
+ "state": null,
1573
+ "location": {
1574
+ "line": 1,
1575
+ "column": 7,
1576
+ "start_byte": 6,
1577
+ "source_line": "outer($)",
1578
+ "caret": " ^"
1579
+ }
1580
+ }
1581
+ ]
1582
+ },
1583
+ "bounded_repair": {
1584
+ "status": "not-applicable",
1585
+ "parse_status": "lexer-failure",
1586
+ "plan": null,
1587
+ "reason": "lexer-failure-precedes-parser-repair"
1588
+ },
1589
+ "proposed_edit": {
1590
+ "summary": "replace unmatched lexer input with a valid name",
1591
+ "operations": [
1592
+ {
1593
+ "start_byte": 6,
1594
+ "end_byte": 7,
1595
+ "replacement": "item"
1596
+ }
1597
+ ],
1598
+ "applied_source_sha256": "17675879754586465963dc4ee6dde8631d1ead4252f6d6ca2c0a4d4c60291a74"
1599
+ },
1600
+ "fresh_reparse": {
1601
+ "status": "accepted",
1602
+ "diagnostic_count": 0,
1603
+ "value_class": "Array"
1604
+ },
1605
+ "semantic_value_risk": {
1606
+ "level": "high",
1607
+ "category": "invented-lexeme",
1608
+ "statement": "The edit invents a semantic name and only demonstrates a syntactically accepted alternative."
1609
+ },
1610
+ "external_review": {
1611
+ "status": "pending",
1612
+ "labels": []
1613
+ },
1614
+ "grammar_sha256": "dba52fd7b54466caab8c7dc29534e1df1ef2673c7c13816e4c15fe33750b5045"
1615
+ }
1616
+ ]
1617
+ }