ibex 0.3.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.
- checksums.yaml +4 -4
- data/README.md +7 -2
- data/docs/declarative-configuration.md +58 -46
- data/docs/development.md +17 -0
- data/docs/direct-ielr-decision.md +4 -4
- data/docs/error-ux-round2-review-status-v1.json +1 -1
- data/docs/error-ux-round2-v1.json +39 -3
- data/docs/impact.md +101 -0
- data/docs/maturity.md +3 -2
- data/docs/runtime-abi-evolution.md +11 -8
- data/docs/stability.md +2 -1
- data/lib/ibex/analysis/sets.rb +14 -0
- data/lib/ibex/cli/impact.rb +393 -0
- data/lib/ibex/cli.rb +5 -0
- data/lib/ibex/diff.rb +2 -1
- data/lib/ibex/impact/action_impact.rb +148 -0
- data/lib/ibex/impact/automaton_impact.rb +57 -0
- data/lib/ibex/impact/coverage_impact.rb +53 -0
- data/lib/ibex/impact/graph.rb +132 -0
- data/lib/ibex/impact/propagation.rb +147 -0
- data/lib/ibex/impact/report.rb +273 -0
- data/lib/ibex/impact/seeds.rb +69 -0
- data/lib/ibex/impact/severity.rb +139 -0
- data/lib/ibex/impact.rb +16 -0
- data/lib/ibex/version.rb +1 -1
- data/lib/ibex.rb +1 -0
- data/schema/impact-v1.schema.json +208 -0
- data/sig/ibex/analysis/sets.rbs +10 -0
- data/sig/ibex/cli/impact.rbs +95 -0
- data/sig/ibex/impact/action_impact.rbs +58 -0
- data/sig/ibex/impact/automaton_impact.rbs +37 -0
- data/sig/ibex/impact/coverage_impact.rbs +28 -0
- data/sig/ibex/impact/graph.rbs +67 -0
- data/sig/ibex/impact/propagation.rbs +56 -0
- data/sig/ibex/impact/report.rbs +107 -0
- data/sig/ibex/impact/seeds.rbs +36 -0
- data/sig/ibex/impact/severity.rbs +55 -0
- data/sig/ibex/impact.rbs +6 -0
- metadata +25 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b7e04c66bb38bd6ad7f25a185d7ed3ff8a031f24f07cd55f4e5391949e85fabf
|
|
4
|
+
data.tar.gz: 16fea4aaa75463b88dd2a1ca533b150544f6995c866d93a43b4af989b520ca8a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3897a831f514e3e16cc66651d62e343a524c1539bee893cd741cec360993ea415637a21bac322c92f353bb1652e0652cead1af18fb98d55d469d3ef28cd9d872
|
|
7
|
+
data.tar.gz: 0f5fe9ddb658bc7eea7ea0205d873e5d624a89318150ce974b75f34e79a55caa10d54647775778f003f8027c099c1f148ebf043671939a409c197ce281425780
|
data/README.md
CHANGED
|
@@ -27,8 +27,8 @@ R001: `HOLD` — [`awaiting_independent_review`](docs/error-ux-review-status-v1.
|
|
|
27
27
|
<!-- r001-review-status:end -->
|
|
28
28
|
|
|
29
29
|
<!-- type-stats:start -->
|
|
30
|
-
The current whole-library `steep stats` result is
|
|
31
|
-
The generated signature tree contains
|
|
30
|
+
The current whole-library `steep stats` result is 29,778 typed calls and 2,906 untyped calls out of 32,724 (91.0% typed).
|
|
31
|
+
The generated signature tree contains 506 explicit `untyped` occurrences across 41 files.
|
|
32
32
|
<!-- type-stats:end -->
|
|
33
33
|
|
|
34
34
|
## Install
|
|
@@ -99,6 +99,7 @@ convenient. Use `--check` in CI to detect stale generated output.
|
|
|
99
99
|
| --- | --- | --- |
|
|
100
100
|
| Compatible mode | Existing racc grammars and conservative migrations | Stable baseline |
|
|
101
101
|
| Extended mode | EBNF, imports, generated lexers, trees, types, and tooling | Preview; explicit opt-in |
|
|
102
|
+
| `ibex impact` | Grammar propagation, automaton, action metadata, and coverage review | Preview; read-only |
|
|
102
103
|
| Browser playground and incremental CST sessions | Local analysis and evaluation | Preview/Experimental; bounded |
|
|
103
104
|
|
|
104
105
|
The default frontend remains unchanged unless a grammar opts into
|
|
@@ -108,6 +109,10 @@ The default frontend remains unchanged unless a grammar opts into
|
|
|
108
109
|
[maturity audit](https://ydah.github.io/ibex/docs/maturity/) before adopting a
|
|
109
110
|
Preview or Experimental surface.
|
|
110
111
|
|
|
112
|
+
Use [`ibex impact`](docs/impact.md) to review where a changed nonterminal can
|
|
113
|
+
propagate. Its reports are deterministic and read-only; nullable boundaries and
|
|
114
|
+
source-only action references remain explicit limitations.
|
|
115
|
+
|
|
111
116
|
IELR is also explicit: `--algorithm=ielr` uses the conservative partition
|
|
112
117
|
strategy by default, while `--ielr-strategy=direct` enables the experimental
|
|
113
118
|
LR(0)-based construction. Direct IELR is profiled and reviewable, but it is not
|
|
@@ -14,9 +14,9 @@ this enforced conservative restriction has no scope-bound exclusion registry.
|
|
|
14
14
|
The admission decision follows `.idea/ibex-declarative-configuration-policy.md`: grammar-owned settings
|
|
15
15
|
must pass A1-A8 and every X1-X7 exclusion remains outside grammar syntax.
|
|
16
16
|
|
|
17
|
-
The static baseline is
|
|
18
|
-
|
|
19
|
-
Those registrations expose
|
|
17
|
+
The static baseline is 199 source call sites and 208 runtime registrations:
|
|
18
|
+
197 ordinary call sites plus 7 `fix` budget variants and 4 `import-bison` budget variants.
|
|
19
|
+
Those registrations expose 226 effective spelling records after aliases and
|
|
20
20
|
`--[no-]save-regression` are expanded; optional-argument notation remains one option pattern.
|
|
21
21
|
|
|
22
22
|
Verification: `bundle exec rake quality:configuration_inventory`.
|
|
@@ -58,54 +58,54 @@ existing `pragma cst` compatibility declaration; declaration-free grammars retai
|
|
|
58
58
|
| `grammar_contract` | 34 |
|
|
59
59
|
| `grammar_minimum` | 0 |
|
|
60
60
|
| `project_build_policy` | 11 |
|
|
61
|
-
| `invocation_request` |
|
|
61
|
+
| `invocation_request` | 163 |
|
|
62
62
|
|
|
63
63
|
## Decisions
|
|
64
64
|
|
|
65
65
|
| Surface | CLI spelling / aliases | Canonical concept | Source / semantic type | Domain / default | Stages | Public-contract effect | Owner | Admission | Override | IR / manifest | Trust | Compatibility | Source |
|
|
66
66
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
67
|
-
| generate | --check | `invocation.generate.check` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
68
|
-
| generate | --line-convert-all | `source.line_mapping` | boolean / boolean | true \| false / action sections only | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
69
|
-
| generate | --superclass=CLASS | `parser.superclass` | string / string | string constrained by command validation / grammar superclass or runtime parser base | frontend, normalization, parser_generation | Changes parser construction, grammar/action ABI, tree ownership, or parser public contract (parser.superclass). | `grammar_contract` | `admitted_a1_a8` | `staged_fixed_compatibility` | `grammar_ir_current` / `current` | Validate statically; do not execute grammar actions or user sections. | `staged_compatibility` | `lib/ibex/cli.rb:
|
|
70
|
-
| generate | -C, --check-only | `invocation.generate.check_only` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
71
|
-
| generate | -D FLAGS | `compatibility.debug_flags` | string / string | string constrained by command validation / unset | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `internal_compatibility` | `lib/ibex/cli.rb:
|
|
72
|
-
| generate | -F, --frozen | `build.frozen_strings` | boolean / boolean | true \| false / false | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
73
|
-
| generate | -P | `compatibility.profiling` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `internal_compatibility` | `lib/ibex/cli.rb:
|
|
74
|
-
| generate | -S, --output-status | `report.output_status` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
75
|
-
| generate | -a, --no-omit-actions | `actions.omit_calls` | boolean / boolean | true \| false / nil; grammar/code-generator action ABI default | frontend, normalization, parser_generation | Changes parser construction, grammar/action ABI, tree ownership, or parser public contract (actions.omit_calls). | `grammar_contract` | `admitted_a1_a8` | `staged_fixed_compatibility` | `grammar_ir_current` / `current` | Validate statically; do not execute grammar actions or user sections. | `staged_compatibility` | `lib/ibex/cli.rb:
|
|
76
|
-
| generate | -l, --no-line-convert | `source.line_mapping` | boolean / boolean | true \| false / action sections only | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
77
|
-
| generate | --copyright | `presentation.copyright` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
78
|
-
| generate | --help | `presentation.help` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
79
|
-
| global | --lang=LANG | `presentation.language` | string / enum | en \| ja / normalized IBEX_LANG (en/ja), falling back to en; environment-dependent presentation only | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | Normalize untrusted CLI/environment text to en or ja; environment-dependent presentation is non-reproducible and never grammar state. | `current` | `lib/ibex/cli.rb:
|
|
80
|
-
| generate | --runtime-version | `presentation.runtime_version` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
81
|
-
| generate | --version | `presentation.version` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
82
|
-
| generate | --dot=FILE | `path.generate.dot` | string / path | caller-supplied filesystem or logical source path / unset | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x2_path_or_destination` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
83
|
-
| generate | --html=FILE | `path.generate.html` | string / path | caller-supplied filesystem or logical source path / unset | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x2_path_or_destination` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
84
|
-
| generate | --manifest[=FILE] | `companion.manifest` | optional string or boolean / optional_path_or_boolean | false \| true (derived path) \| caller-supplied path / false; derived .ibex.json path when requested without a value | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
85
|
-
| generate | --mermaid=FILE | `path.generate.mermaid` | string / path | caller-supplied filesystem or logical source path / unset | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x2_path_or_destination` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
86
|
-
| generate | --railroad=FILE | `path.generate.railroad` | string / path | caller-supplied filesystem or logical source path / unset | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x2_path_or_destination` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
87
|
-
| generate | -E, --embedded | `runtime.embedded` | boolean / boolean | true \| false / false | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
88
|
-
| generate | -O, --log-file=FILE | `path.generate.log_file` | string / path | caller-supplied filesystem or logical source path / derived .output path when reporting is requested | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x2_path_or_destination` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
89
|
-
| generate | -e, --executable [RUBY] | `build.executable` | optional string or boolean / optional_string_or_boolean | false \| true (command default) \| caller-supplied string / false; /usr/bin/env ruby when requested without a value | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
90
|
-
| generate | -g | `build.debug` | boolean / boolean | true \| false / false | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `obsolete_alias` | `lib/ibex/cli.rb:
|
|
91
|
-
| generate | -o, --output-file=FILE | `path.generate.output_file` | string / path | caller-supplied filesystem or logical source path / derived .rb path beside the grammar | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x2_path_or_destination` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
92
|
-
| generate | -t, --debug | `build.debug` | boolean / boolean | true \| false / false | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
93
|
-
| generate | -v, --verbose | `invocation.generate.verbose` | boolean / boolean | true \| false / false; no automaton report | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
94
|
-
| generate | --algorithm=NAME | `parser.algorithm` | enum / enum | slr \| lalr \| ielr \| lr1 / lalr | frontend, normalization, parser_generation | Changes parser construction, grammar/action ABI, tree ownership, or parser public contract (parser.algorithm). | `grammar_contract` | `admitted_a1_a8` | `fixed` | `grammar_ir_current` / `current` | Validate statically; do not execute grammar actions or user sections. | `current` | `lib/ibex/cli.rb:
|
|
95
|
-
| generate | --cst-trivia=POLICY | `cst.trivia` | enum / enum | leading \| balanced \| drop; source alias attach normalizes to leading / leading | frontend, normalization, parser_generation | Changes parser construction, grammar/action ABI, tree ownership, or parser public contract (cst.trivia). | `grammar_contract` | `admitted_a1_a8` | `fixed` | `grammar_ir_current` / `current` | Validate statically; do not execute grammar actions or user sections. | `current` | `lib/ibex/cli.rb:
|
|
96
|
-
| generate | --emit=FORMAT | `invocation.generate.emit` | string / enum | ast \| sets \| lexer-ir \| grammar-ir \| automaton-ir \| ruby / ruby | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
97
|
-
| generate | --entry-isolation | `parser.entries` | boolean / boolean | true \| false / shared | frontend, normalization, parser_generation | Changes parser construction, grammar/action ABI, tree ownership, or parser public contract (parser.entries). | `grammar_contract` | `admitted_a1_a8` | `fixed` | `grammar_ir_current` / `current` | Validate statically; do not execute grammar actions or user sections. | `current` | `lib/ibex/cli.rb:
|
|
98
|
-
| generate | --from=FORMAT | `invocation.generate.from` | enum / enum | grammar-ir \| automaton-ir / unset | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | Validate the selected IR as untrusted data; never execute embedded user sections while loading or inventorying it. | `current` | `lib/ibex/cli.rb:
|
|
99
|
-
| generate | --ielr-report | `invocation.generate.ielr_report` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
100
|
-
| generate | --ielr-strategy=NAME | `invocation.generate.ielr_strategy` | enum / enum | direct \| partition / partition | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
101
|
-
| generate | --mode=MODE | `grammar.mode` | enum / enum | default \| extended / default | frontend, normalization, parser_generation | Changes parser construction, grammar/action ABI, tree ownership, or parser public contract (grammar.mode). | `grammar_contract` | `admitted_a1_a8` | `staged_fixed_compatibility` | `grammar_ir_current` / `current` | Validate statically; do not execute grammar actions or user sections. | `staged_compatibility` | `lib/ibex/cli.rb:
|
|
102
|
-
| generate | --remove-unreachable | `invocation.generate.remove_unreachable` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
103
|
-
| generate | --suggest-ielr | `invocation.generate.suggest_ielr` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
104
|
-
| generate | --table=FORMAT | `table.representation` | enum / enum | plain \| compact / compact | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
105
|
-
| generate | --warnings=CATEGORIES | `invocation.warning_policy` | string / set_of_enums | all \| error \| all,error \| none / unset; warnings are neither displayed nor promoted to errors | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x7_diagnostic_suppression` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
106
|
-
| generate | --watch | `invocation.generate.watch` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
107
|
-
| generate | --action-source[=FILE] | `companion.action_source` | optional string or boolean / optional_path_or_boolean | false \| true (derived path) \| caller-supplied path / false; derived .actions.rb path when requested without a value | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
108
|
-
| generate | --rbs[=FILE] | `companion.rbs` | optional string or boolean / optional_path_or_boolean | false \| true (derived path) \| caller-supplied path / false; derived .rbs path when requested without a value | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:
|
|
67
|
+
| generate | --check | `invocation.generate.check` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:509` |
|
|
68
|
+
| generate | --line-convert-all | `source.line_mapping` | boolean / boolean | true \| false / action sections only | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:495` |
|
|
69
|
+
| generate | --superclass=CLASS | `parser.superclass` | string / string | string constrained by command validation / grammar superclass or runtime parser base | frontend, normalization, parser_generation | Changes parser construction, grammar/action ABI, tree ownership, or parser public contract (parser.superclass). | `grammar_contract` | `admitted_a1_a8` | `staged_fixed_compatibility` | `grammar_ir_current` / `current` | Validate statically; do not execute grammar actions or user sections. | `staged_compatibility` | `lib/ibex/cli.rb:506` |
|
|
70
|
+
| generate | -C, --check-only | `invocation.generate.check_only` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:510` |
|
|
71
|
+
| generate | -D FLAGS | `compatibility.debug_flags` | string / string | string constrained by command validation / unset | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `internal_compatibility` | `lib/ibex/cli.rb:513` |
|
|
72
|
+
| generate | -F, --frozen | `build.frozen_strings` | boolean / boolean | true \| false / false | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:492` |
|
|
73
|
+
| generate | -P | `compatibility.profiling` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `internal_compatibility` | `lib/ibex/cli.rb:512` |
|
|
74
|
+
| generate | -S, --output-status | `report.output_status` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:511` |
|
|
75
|
+
| generate | -a, --no-omit-actions | `actions.omit_calls` | boolean / boolean | true \| false / nil; grammar/code-generator action ABI default | frontend, normalization, parser_generation | Changes parser construction, grammar/action ABI, tree ownership, or parser public contract (actions.omit_calls). | `grammar_contract` | `admitted_a1_a8` | `staged_fixed_compatibility` | `grammar_ir_current` / `current` | Validate statically; do not execute grammar actions or user sections. | `staged_compatibility` | `lib/ibex/cli.rb:503` |
|
|
76
|
+
| generate | -l, --no-line-convert | `source.line_mapping` | boolean / boolean | true \| false / action sections only | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:499` |
|
|
77
|
+
| generate | --copyright | `presentation.copyright` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:523` |
|
|
78
|
+
| generate | --help | `presentation.help` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:524` |
|
|
79
|
+
| global | --lang=LANG | `presentation.language` | string / enum | en \| ja / normalized IBEX_LANG (en/ja), falling back to en; environment-dependent presentation only | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | Normalize untrusted CLI/environment text to en or ja; environment-dependent presentation is non-reproducible and never grammar state. | `current` | `lib/ibex/cli.rb:518` |
|
|
80
|
+
| generate | --runtime-version | `presentation.runtime_version` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:522` |
|
|
81
|
+
| generate | --version | `presentation.version` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:521` |
|
|
82
|
+
| generate | --dot=FILE | `path.generate.dot` | string / path | caller-supplied filesystem or logical source path / unset | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x2_path_or_destination` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:465` |
|
|
83
|
+
| generate | --html=FILE | `path.generate.html` | string / path | caller-supplied filesystem or logical source path / unset | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x2_path_or_destination` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:467` |
|
|
84
|
+
| generate | --manifest[=FILE] | `companion.manifest` | optional string or boolean / optional_path_or_boolean | false \| true (derived path) \| caller-supplied path / false; derived .ibex.json path when requested without a value | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:462` |
|
|
85
|
+
| generate | --mermaid=FILE | `path.generate.mermaid` | string / path | caller-supplied filesystem or logical source path / unset | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x2_path_or_destination` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:466` |
|
|
86
|
+
| generate | --railroad=FILE | `path.generate.railroad` | string / path | caller-supplied filesystem or logical source path / unset | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x2_path_or_destination` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:468` |
|
|
87
|
+
| generate | -E, --embedded | `runtime.embedded` | boolean / boolean | true \| false / false | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:450` |
|
|
88
|
+
| generate | -O, --log-file=FILE | `path.generate.log_file` | string / path | caller-supplied filesystem or logical source path / derived .output path when reporting is requested | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x2_path_or_destination` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:471` |
|
|
89
|
+
| generate | -e, --executable [RUBY] | `build.executable` | optional string or boolean / optional_string_or_boolean | false \| true (command default) \| caller-supplied string / false; /usr/bin/env ruby when requested without a value | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:475` |
|
|
90
|
+
| generate | -g | `build.debug` | boolean / boolean | true \| false / false | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `obsolete_alias` | `lib/ibex/cli.rb:456` |
|
|
91
|
+
| generate | -o, --output-file=FILE | `path.generate.output_file` | string / path | caller-supplied filesystem or logical source path / derived .rb path beside the grammar | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x2_path_or_destination` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:449` |
|
|
92
|
+
| generate | -t, --debug | `build.debug` | boolean / boolean | true \| false / false | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:453` |
|
|
93
|
+
| generate | -v, --verbose | `invocation.generate.verbose` | boolean / boolean | true \| false / false; no automaton report | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:459` |
|
|
94
|
+
| generate | --algorithm=NAME | `parser.algorithm` | enum / enum | slr \| lalr \| ielr \| lr1 / lalr | frontend, normalization, parser_generation | Changes parser construction, grammar/action ABI, tree ownership, or parser public contract (parser.algorithm). | `grammar_contract` | `admitted_a1_a8` | `fixed` | `grammar_ir_current` / `current` | Validate statically; do not execute grammar actions or user sections. | `current` | `lib/ibex/cli.rb:422` |
|
|
95
|
+
| generate | --cst-trivia=POLICY | `cst.trivia` | enum / enum | leading \| balanced \| drop; source alias attach normalizes to leading / leading | frontend, normalization, parser_generation | Changes parser construction, grammar/action ABI, tree ownership, or parser public contract (cst.trivia). | `grammar_contract` | `admitted_a1_a8` | `fixed` | `grammar_ir_current` / `current` | Validate statically; do not execute grammar actions or user sections. | `current` | `lib/ibex/cli.rb:415` |
|
|
96
|
+
| generate | --emit=FORMAT | `invocation.generate.emit` | string / enum | ast \| sets \| lexer-ir \| grammar-ir \| automaton-ir \| ruby / ruby | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:405` |
|
|
97
|
+
| generate | --entry-isolation | `parser.entries` | boolean / boolean | true \| false / shared | frontend, normalization, parser_generation | Changes parser construction, grammar/action ABI, tree ownership, or parser public contract (parser.entries). | `grammar_contract` | `admitted_a1_a8` | `fixed` | `grammar_ir_current` / `current` | Validate statically; do not execute grammar actions or user sections. | `current` | `lib/ibex/cli.rb:437` |
|
|
98
|
+
| generate | --from=FORMAT | `invocation.generate.from` | enum / enum | grammar-ir \| automaton-ir / unset | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | Validate the selected IR as untrusted data; never execute embedded user sections while loading or inventorying it. | `current` | `lib/ibex/cli.rb:408` |
|
|
99
|
+
| generate | --ielr-report | `invocation.generate.ielr_report` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:428` |
|
|
100
|
+
| generate | --ielr-strategy=NAME | `invocation.generate.ielr_strategy` | enum / enum | direct \| partition / partition | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:425` |
|
|
101
|
+
| generate | --mode=MODE | `grammar.mode` | enum / enum | default \| extended / default | frontend, normalization, parser_generation | Changes parser construction, grammar/action ABI, tree ownership, or parser public contract (grammar.mode). | `grammar_contract` | `admitted_a1_a8` | `staged_fixed_compatibility` | `grammar_ir_current` / `current` | Validate statically; do not execute grammar actions or user sections. | `staged_compatibility` | `lib/ibex/cli.rb:411` |
|
|
102
|
+
| generate | --remove-unreachable | `invocation.generate.remove_unreachable` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:431` |
|
|
103
|
+
| generate | --suggest-ielr | `invocation.generate.suggest_ielr` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:434` |
|
|
104
|
+
| generate | --table=FORMAT | `table.representation` | enum / enum | plain \| compact / compact | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:412` |
|
|
105
|
+
| generate | --warnings=CATEGORIES | `invocation.warning_policy` | string / set_of_enums | all \| error \| all,error \| none / unset; warnings are neither displayed nor promoted to errors | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x7_diagnostic_suppression` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:440` |
|
|
106
|
+
| generate | --watch | `invocation.generate.watch` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:443` |
|
|
107
|
+
| generate | --action-source[=FILE] | `companion.action_source` | optional string or boolean / optional_path_or_boolean | false \| true (derived path) \| caller-supplied path / false; derived .actions.rb path when requested without a value | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:485` |
|
|
108
|
+
| generate | --rbs[=FILE] | `companion.rbs` | optional string or boolean / optional_path_or_boolean | false \| true (derived path) \| caller-supplied path / false; derived .rbs path when requested without a value | code_generation, artifact_publication | Changes artifact representation, packaging, source mapping, or companion output; parser language semantics stay unchanged. | `project_build_policy` | `excluded_x5_packaging_or_deployment` | `project_selection` | `not_persisted` / `current` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli.rb:482` |
|
|
109
109
|
| check-ambiguity | --algorithm=NAME | `parser.algorithm` | enum / enum | slr \| lalr \| ielr \| lr1 / lalr | frontend, normalization, parser_generation | Changes parser construction, grammar/action ABI, tree ownership, or parser public contract (parser.algorithm). | `grammar_contract` | `admitted_a1_a8` | `analysis_override` | `grammar_ir_current` / `current` | Validate statically; do not execute grammar actions or user sections. | `current` | `lib/ibex/cli/ambiguity.rb:58` |
|
|
110
110
|
| check-ambiguity | --ambiguity | `invocation.check_ambiguity.ambiguity` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/ambiguity.rb:46` |
|
|
111
111
|
| check-ambiguity | --entry-isolation | `parser.entries` | boolean / boolean | true \| false / shared | frontend, normalization, parser_generation | Changes parser construction, grammar/action ABI, tree ownership, or parser public contract (parser.entries). | `grammar_contract` | `admitted_a1_a8` | `analysis_override` | `grammar_ir_current` / `current` | Validate statically; do not execute grammar actions or user sections. | `current` | `lib/ibex/cli/ambiguity.rb:61` |
|
|
@@ -229,6 +229,18 @@ existing `pragma cst` compatibility declaration; declaration-free grammars retai
|
|
|
229
229
|
| test | --mode=MODE | `grammar.mode` | enum / enum | default \| extended / default | frontend, normalization, parser_generation | Changes parser construction, grammar/action ABI, tree ownership, or parser public contract (grammar.mode). | `grammar_contract` | `admitted_a1_a8` | `analysis_override` | `grammar_ir_current` / `current` | Validate statically; do not execute grammar actions or user sections. | `current` | `lib/ibex/cli/grammar_tests.rb:61` |
|
|
230
230
|
| test | --timeout=SECONDS | `invocation.test.timeout` | integer / integer | integer constrained by command validation / 10 | analysis, report | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x4_caller_budget` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/grammar_tests.rb:73` |
|
|
231
231
|
| test | -h, --help | `presentation.help` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/grammar_tests.rb:81` |
|
|
232
|
+
| impact | --algorithm=NAME | `invocation.impact.algorithm` | enum / enum | validated command value / parser.algorithm registry default | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/impact.rb:72` |
|
|
233
|
+
| impact | --baseline=PATH | `invocation.impact.baseline` | string / string | string constrained by command validation / unset | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/impact.rb:67` |
|
|
234
|
+
| impact | --coverage=PATH | `invocation.impact.coverage` | string / string | string constrained by command validation / unset | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/impact.rb:66` |
|
|
235
|
+
| impact | --depth=N | `invocation.impact.depth` | integer / integer | non-negative integer / unset | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/impact.rb:57` |
|
|
236
|
+
| impact | --fail-on=LIST | `invocation.impact.fail_on` | string / string | string constrained by command validation / empty | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/impact.rb:69` |
|
|
237
|
+
| impact | --format=FORMAT | `invocation.impact.format` | enum / enum | validated command value / json | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/impact.rb:79` |
|
|
238
|
+
| impact | --help | `invocation.impact.help` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/impact.rb:80` |
|
|
239
|
+
| impact | --kind=LIST | `invocation.impact.kind` | string / string | string constrained by command validation / all | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/impact.rb:62` |
|
|
240
|
+
| impact | --mode=MODE | `invocation.impact.mode` | enum / enum | validated command value / grammar.mode registry default | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/impact.rb:75` |
|
|
241
|
+
| impact | --severity=LEVEL | `invocation.impact.severity` | enum / enum | validated command value / medium | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/impact.rb:63` |
|
|
242
|
+
| impact | --symbol=NAME[,NAME] | `invocation.impact.symbol` | string / string | string constrained by command validation / empty | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/impact.rb:54` |
|
|
243
|
+
| impact | --update-baseline | `invocation.impact.update_baseline` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/impact.rb:68` |
|
|
232
244
|
| lsp | --help | `presentation.help` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/lsp.rb:29` |
|
|
233
245
|
| lsp | --stdio | `invocation.lsp.stdio` | boolean / boolean | true \| false / false | invocation | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x1_operation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/lsp.rb:28` |
|
|
234
246
|
| migrate-check | --format=FORMAT | `report.migrate_check.format` | enum / enum | text \| json / text | analysis, report | Changes only the selected operation, bounded evidence, destination, or presentation for this invocation. | `invocation_request` | `excluded_x3_presentation` | `invocation_only` | `not_persisted` / `not_applicable` | CLI input only; it must not become trusted grammar or execute while inventorying. | `current` | `lib/ibex/cli/racc_migration.rb:73` |
|
data/docs/development.md
CHANGED
|
@@ -209,6 +209,23 @@ The release remains blocked until the outcome gates in
|
|
|
209
209
|
release environment must provide a protected external signing identity and
|
|
210
210
|
bind its signature or provenance attestation to the printed artifact digest.
|
|
211
211
|
|
|
212
|
+
## GitHub release workflow
|
|
213
|
+
|
|
214
|
+
The tag-triggered [`Release` workflow](../.github/workflows/release.yml)
|
|
215
|
+
validates that the generator and runtime versions match the tag, runs the full
|
|
216
|
+
quality suite, checks reproducible package builds, and attaches both gems plus
|
|
217
|
+
`SHA256SUMS` to the GitHub Release. It does not publish to RubyGems.
|
|
218
|
+
|
|
219
|
+
After committing the intended release version, create and push its tag:
|
|
220
|
+
|
|
221
|
+
```sh
|
|
222
|
+
git tag -a v0.4.0 -m "Release v0.4.0"
|
|
223
|
+
git push origin v0.4.0
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
The same workflow can be started manually for an existing tag through
|
|
227
|
+
`workflow_dispatch`.
|
|
228
|
+
|
|
212
229
|
## Browser site and API documentation
|
|
213
230
|
|
|
214
231
|
Install the locked browser dependencies and build the same self-hosted site
|
|
@@ -7,7 +7,7 @@ blocked. This decision is a feature gate, not a claim that direct IELR has no
|
|
|
7
7
|
future value.
|
|
8
8
|
|
|
9
9
|
The final decision date is 2026-08-11. Revision
|
|
10
|
-
`
|
|
10
|
+
`05bf8c357cdb58a5f95ca4939a96be16e3d43c30` is the repository evidence snapshot
|
|
11
11
|
reviewed immediately before this dossier was published; it is not a claim that
|
|
12
12
|
the dossier itself existed in that revision. The machine record marks the
|
|
13
13
|
decision `final_no_go`, its basis `repository_evidence`, and its review state
|
|
@@ -99,11 +99,11 @@ and verifier implementations by path and SHA-256 at the reviewed revision. It
|
|
|
99
99
|
also binds:
|
|
100
100
|
|
|
101
101
|
- H005 capture base revision
|
|
102
|
-
`
|
|
102
|
+
`acb08c2848843dce52f6c806a5800cd3d3f83fe0`;
|
|
103
103
|
- H005 bound-path digest
|
|
104
|
-
`
|
|
104
|
+
`d6325f16b00c6215cd610cacd2d5c1151dc95159d38b35e60f102e279dc49210`;
|
|
105
105
|
- H005 implementation digest
|
|
106
|
-
`
|
|
106
|
+
`b8501d92797e3009bee79fa66ad01ddf56655e337af95d2a630c3f9c66138b3e`;
|
|
107
107
|
- V001 revision `c7e5cad89ccd00591f3127fdb76a789bbeb202ab`.
|
|
108
108
|
|
|
109
109
|
The quality gate verifies the schema, exact GO/NO-GO inventory, follow-on
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"reason": "awaiting-at-least-two-independent-reviews",
|
|
6
6
|
"evidence": {
|
|
7
7
|
"path": "docs/error-ux-round2-v1.json",
|
|
8
|
-
"sha256": "
|
|
8
|
+
"sha256": "3bcdb4aefa63b888c2cbb81a4861e10d67680cee486ef300af13206ec5a42941"
|
|
9
9
|
},
|
|
10
10
|
"allowed_labels": [
|
|
11
11
|
"useful",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"implementation_sources": [
|
|
12
12
|
{
|
|
13
13
|
"path": "lib/ibex.rb",
|
|
14
|
-
"sha256": "
|
|
14
|
+
"sha256": "d55ef0e0d5a3e4647eee23093055574078e26a99338a64162aa8cdabaa05b129"
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
17
|
"path": "lib/ibex/analysis.rb",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"path": "lib/ibex/analysis/sets.rb",
|
|
26
|
-
"sha256": "
|
|
26
|
+
"sha256": "23356c106d47467f1d52f4d2bad4e8e29caf8a55b74fb245e6307b8275fc5027"
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
"path": "lib/ibex/artifact_set.rb",
|
|
@@ -175,7 +175,7 @@
|
|
|
175
175
|
},
|
|
176
176
|
{
|
|
177
177
|
"path": "lib/ibex/diff.rb",
|
|
178
|
-
"sha256": "
|
|
178
|
+
"sha256": "05d5a262f7760eef66392f7392a98912b565c5363555de1bddfd69be353ac0fe"
|
|
179
179
|
},
|
|
180
180
|
{
|
|
181
181
|
"path": "lib/ibex/equiv.rb",
|
|
@@ -361,6 +361,42 @@
|
|
|
361
361
|
"path": "lib/ibex/grammar_tests.rb",
|
|
362
362
|
"sha256": "9b14fcf8b027ce005d270976679da3af223a0ed3f555aaa53593a6f3761ab29a"
|
|
363
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
|
+
},
|
|
364
400
|
{
|
|
365
401
|
"path": "lib/ibex/ir.rb",
|
|
366
402
|
"sha256": "897997bd1459f1024d06002ddd210c917ec6dc12e9b87855a2c9ba3929fedddb"
|
data/docs/impact.md
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Grammar impact analysis
|
|
3
|
+
description: Review grammar propagation with ibex impact.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Grammar impact analysis
|
|
7
|
+
|
|
8
|
+
`ibex impact` is a Preview analysis surface for finding where a grammar change
|
|
9
|
+
can propagate. It works on Ibex's normalized Grammar and Automaton IR and does
|
|
10
|
+
not change parser generation or execute semantic actions.
|
|
11
|
+
|
|
12
|
+
## Two analysis modes
|
|
13
|
+
|
|
14
|
+
Use a symbol seed before editing a grammar:
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
ibex impact --symbol=expression parser.y
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
This is the potential-impact mode. It follows reference, FIRST, and FOLLOW
|
|
21
|
+
dependencies, reports shortest witnesses, and groups recursive symbols into
|
|
22
|
+
strongly connected components. It is intentionally conservative. A nullable
|
|
23
|
+
boundary is called out because a later nullable change can change the edge set
|
|
24
|
+
itself.
|
|
25
|
+
|
|
26
|
+
Use two inputs after editing:
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
ibex impact old-parser.y new-parser.y
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
This is the confirmed-impact mode. It compares nullable, FIRST, and FOLLOW
|
|
33
|
+
sets, grammar rules, actions' structured metadata, and symbol metadata such as
|
|
34
|
+
display labels, semantic types, and documentation, plus automaton states and
|
|
35
|
+
conflicts. Metadata-only changes are reported at Low severity. This mode is
|
|
36
|
+
the canonical input for CI review and `--fail-on`.
|
|
37
|
+
|
|
38
|
+
Reports are JSON by default and conform to
|
|
39
|
+
[`impact-v1.schema.json`](../schema/impact-v1.schema.json). `--format=text`
|
|
40
|
+
prints a compact summary. Symbols are sorted by name, states by ID, and
|
|
41
|
+
witnesses are deterministic for identical inputs.
|
|
42
|
+
|
|
43
|
+
## Useful gates
|
|
44
|
+
|
|
45
|
+
`--kind=reference,first,follow` limits potential propagation, while
|
|
46
|
+
`--depth=N` bounds it. `--severity=medium` is the default display threshold.
|
|
47
|
+
The accepted `--fail-on` values are `new_conflict`, `nullable_change`,
|
|
48
|
+
`first_change`, `follow_change`, `action_arity`, and `unreachable`.
|
|
49
|
+
The report separates unreachable parser states from newly unreachable nonterminals;
|
|
50
|
+
either kind activates `--fail-on=unreachable`.
|
|
51
|
+
|
|
52
|
+
`--baseline=PATH` records known conflict identities independently of numeric
|
|
53
|
+
state IDs. `--update-baseline` writes the current identities. A missing
|
|
54
|
+
baseline is treated as empty, so it is safe to introduce the option before a
|
|
55
|
+
baseline file exists.
|
|
56
|
+
|
|
57
|
+
## Coverage narrowing
|
|
58
|
+
|
|
59
|
+
Pass one coverage report per test when test-level selection is needed:
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
ibex impact --coverage=tmp/test-expression.json old-parser.y new-parser.y
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Reports whose `grammar_digest` does not match the analyzed Automaton IR are
|
|
66
|
+
ignored and produce a warning. A merged report contains aggregate sessions and
|
|
67
|
+
cannot be decomposed back into individual tests; pass separate reports for
|
|
68
|
+
that use case.
|
|
69
|
+
|
|
70
|
+
## Performance evidence
|
|
71
|
+
|
|
72
|
+
Measure the three gallery grammars in an isolated process when reviewing
|
|
73
|
+
performance changes:
|
|
74
|
+
|
|
75
|
+
```sh
|
|
76
|
+
for grammar in gallery/*/grammar.y; do
|
|
77
|
+
bundle exec ruby benchmark/impact.rb --grammar "$grammar" --iterations 3 --json
|
|
78
|
+
done
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
The benchmark reports `Sets` and graph construction time, allocated objects,
|
|
82
|
+
dependency-edge count, and the shallow storage size of the retained dependency
|
|
83
|
+
arrays. Ruby allocator and RSS measurements are process-level observations;
|
|
84
|
+
the dependency-edge count and storage size explain the intentional memory cost
|
|
85
|
+
of retaining impact dependencies.
|
|
86
|
+
|
|
87
|
+
## Limits and trust boundary
|
|
88
|
+
|
|
89
|
+
The analyzer treats action bodies and user code as opaque source. It uses only
|
|
90
|
+
`Action#named_refs` and `Action#context_length`, so position references such as
|
|
91
|
+
`$1` and `val[0]` are not inspected. A changed RHS with structured references
|
|
92
|
+
can produce a High finding, but source-only references remain a known blind
|
|
93
|
+
spot.
|
|
94
|
+
|
|
95
|
+
Potential mode cannot completely predict changes that cross a nullable
|
|
96
|
+
boundary; use two-version mode when the report warns about one. Impact is a
|
|
97
|
+
syntactic dependency analysis, not a semantic-equivalence proof and not a
|
|
98
|
+
replacement for `ibex equiv` or `ibex check`.
|
|
99
|
+
|
|
100
|
+
The feature is Preview. It is read-only, does not alter the default generation
|
|
101
|
+
path, and does not execute grammar actions or user-code sections.
|
data/docs/maturity.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[`maturity.yml`](maturity.yml) and the validator-owned commit authorities in
|
|
4
4
|
[`maturity_authority.rb`](../tool/quality/maturity_authority.rb) form the joint
|
|
5
|
-
human-reviewed trust boundary for H001. The registry binds the current
|
|
5
|
+
human-reviewed trust boundary for H001. The registry binds the current 19
|
|
6
6
|
Preview and two Experimental features to the reviewed repository revision,
|
|
7
7
|
source digests, activation, external-use status, specification-history
|
|
8
8
|
confidence, issue audit, documentation and tooling gaps, performance and safety
|
|
@@ -12,7 +12,7 @@ the other; changing a classification requires reviewing and updating both.
|
|
|
12
12
|
## Result
|
|
13
13
|
|
|
14
14
|
<!-- maturity-summary:start -->
|
|
15
|
-
Inventory: **
|
|
15
|
+
Inventory: **19 Preview, 2 Experimental**. Active new Preview tracks: **2/3** (grammar syntax: **1/1**). Experimental product features: **2/5**.
|
|
16
16
|
Release dependency state: R001 **hold_external**; R002 **pending_exact_revision**; no feature is promoted by this audit.
|
|
17
17
|
|
|
18
18
|
| Stable ID | Feature | Current maturity | Decision | External use | Release gate |
|
|
@@ -28,6 +28,7 @@ Release dependency state: R001 **hold_external**; R002 **pending_exact_revision*
|
|
|
28
28
|
| `ast-generation` | AST generation | Preview | Keep Preview | not demonstrated | Blocked: R001, R002 |
|
|
29
29
|
| `grammar-tests` | grammar tests | Preview | Keep Preview | not demonstrated | Blocked: R001, R002 |
|
|
30
30
|
| `documentation-tooling` | documentation tooling | Preview | Keep Preview | not demonstrated | Blocked: R001, R002 |
|
|
31
|
+
| `impact` | Grammar impact analysis | Preview | Keep Preview | not demonstrated | Blocked: R001, R002 |
|
|
31
32
|
| `ielr` | IELR | Preview | Keep Preview | not demonstrated | Blocked: R001, R002 |
|
|
32
33
|
| `lsp` | LSP | Preview | Keep Preview | not demonstrated | Blocked: R001, R002 |
|
|
33
34
|
| `watch` | watch | Preview | Keep Preview | not demonstrated | Blocked: R001, R002 |
|
|
@@ -31,9 +31,9 @@ parser_tables:
|
|
|
31
31
|
cst_readable: [6]
|
|
32
32
|
fail_before_input: true
|
|
33
33
|
versions:
|
|
34
|
-
generator: "0.
|
|
35
|
-
runtime: "0.
|
|
36
|
-
runtime_dependency: "~> 0.
|
|
34
|
+
generator: "0.4.0"
|
|
35
|
+
runtime: "0.4.0"
|
|
36
|
+
runtime_dependency: "~> 0.4.0"
|
|
37
37
|
runtime_paths:
|
|
38
38
|
- .github/pull_request_template.md
|
|
39
39
|
- .github/workflows/main.yml
|
|
@@ -180,18 +180,21 @@ current reader retain every historical table branch.
|
|
|
180
180
|
|
|
181
181
|
| Generated artifact | Runtime used | Status |
|
|
182
182
|
| --- | --- | --- |
|
|
183
|
+
| Ibex 0.4.0 non-embedded output (table v6) | `ibex-runtime` 0.4.0 | supported and covered by packaging/runtime tests |
|
|
184
|
+
| Ibex 0.4.0 non-embedded output | a future version admitted by `~> 0.4.0` | dependency resolution permits it; compatibility is an obligation of that future release, not current execution evidence |
|
|
185
|
+
| Ibex 0.4.0 embedded output | runtime sources copied by Ibex 0.4.0 | self-contained and covered by packaging/runtime tests |
|
|
183
186
|
| Ibex 0.3.0 non-embedded output (table v6) | `ibex-runtime` 0.3.0 | supported and covered by packaging/runtime tests |
|
|
184
187
|
| Ibex 0.3.0 non-embedded output | a future version admitted by `~> 0.3.0` | dependency resolution permits it; compatibility is an obligation of that future release, not current execution evidence |
|
|
185
188
|
| Ibex 0.3.0 embedded output | runtime sources copied by Ibex 0.3.0 | self-contained and covered by packaging/runtime tests |
|
|
186
189
|
| Ibex 0.2.0 non-embedded output (table v6) | `ibex-runtime` 0.2.0 | supported and covered by packaging/runtime tests |
|
|
187
190
|
| Ibex 0.2.0 non-embedded output | a future version admitted by `~> 0.2.0` | dependency resolution permits it; compatibility is an obligation of that future release, not current execution evidence |
|
|
188
191
|
| Ibex 0.2.0 embedded output | runtime sources copied by Ibex 0.2.0 | self-contained and covered by packaging/runtime tests |
|
|
189
|
-
| old non-CST or CST table v1-v5 | `ibex-runtime` 0.
|
|
190
|
-
| table v7 or later | `ibex-runtime` 0.
|
|
192
|
+
| old non-CST or CST table v1-v5 | `ibex-runtime` 0.4.0 | rejected before input; regenerate or pin the matching pre-v1 runtime |
|
|
193
|
+
| table v7 or later | `ibex-runtime` 0.4.0 | rejected before input; upgrade the runtime or regenerate to a supported format |
|
|
191
194
|
|
|
192
|
-
`ibex` 0.
|
|
193
|
-
runtime releases from 0.
|
|
194
|
-
0.2.0
|
|
195
|
+
`ibex` 0.4.0 declares `ibex-runtime ~> 0.4.0`; in RubyGems terms that admits
|
|
196
|
+
runtime releases from 0.4.0 up to, but not including, 0.5.0. The previous
|
|
197
|
+
0.3.0 and 0.2.0 lines remain historical compatibility boundaries. The table format is
|
|
195
198
|
still the executable compatibility check. A package requirement alone does not
|
|
196
199
|
prove that an unpublished runtime can execute a generated parser.
|
|
197
200
|
|
data/docs/stability.md
CHANGED
|
@@ -101,7 +101,7 @@ current maturity. The canonical summary below is generated from that registry
|
|
|
101
101
|
and checked against both public documents.
|
|
102
102
|
|
|
103
103
|
<!-- maturity-summary:start -->
|
|
104
|
-
Inventory: **
|
|
104
|
+
Inventory: **19 Preview, 2 Experimental**. Active new Preview tracks: **2/3** (grammar syntax: **1/1**). Experimental product features: **2/5**.
|
|
105
105
|
Release dependency state: R001 **hold_external**; R002 **pending_exact_revision**; no feature is promoted by this audit.
|
|
106
106
|
|
|
107
107
|
| Stable ID | Feature | Current maturity | Decision | External use | Release gate |
|
|
@@ -117,6 +117,7 @@ Release dependency state: R001 **hold_external**; R002 **pending_exact_revision*
|
|
|
117
117
|
| `ast-generation` | AST generation | Preview | Keep Preview | not demonstrated | Blocked: R001, R002 |
|
|
118
118
|
| `grammar-tests` | grammar tests | Preview | Keep Preview | not demonstrated | Blocked: R001, R002 |
|
|
119
119
|
| `documentation-tooling` | documentation tooling | Preview | Keep Preview | not demonstrated | Blocked: R001, R002 |
|
|
120
|
+
| `impact` | Grammar impact analysis | Preview | Keep Preview | not demonstrated | Blocked: R001, R002 |
|
|
120
121
|
| `ielr` | IELR | Preview | Keep Preview | not demonstrated | Blocked: R001, R002 |
|
|
121
122
|
| `lsp` | LSP | Preview | Keep Preview | not demonstrated | Blocked: R001, R002 |
|
|
122
123
|
| `watch` | watch | Preview | Keep Preview | not demonstrated | Blocked: R001, R002 |
|