Add schema definition extension plumbing#1200
Merged
Merged
Conversation
edb2d90 to
ef7b7e5
Compare
3643e2f to
63b3c9f
Compare
ef7b7e5 to
d841965
Compare
d841965 to
ccd29a4
Compare
63b3c9f to
a099965
Compare
6a5b3a8 to
052d30a
Compare
0431d7d to
1a605d6
Compare
a099965 to
b8671d4
Compare
c06e080 to
e69ae75
Compare
myronmarston
approved these changes
May 26, 2026
e69ae75 to
ac34ddb
Compare
b8671d4 to
3daa25c
Compare
myronmarston
approved these changes
May 27, 2026
3daa25c to
86c274f
Compare
bb5ee96 to
4336719
Compare
myronmarston
approved these changes
May 29, 2026
This was referenced Jun 1, 2026
This was referenced Jun 11, 2026
4336719 to
ef183ea
Compare
86c274f to
dff43f8
Compare
myronmarston
approved these changes
Jun 16, 2026
jwils
added a commit
that referenced
this pull request
Jun 16, 2026
## Why Split the JSON ingestion extraction into reviewable steps so the gem packaging can be checked independently before code moves. ## What - Add the `elasticgraph-json_ingestion` gem shell - Wire the new path gem into the bundle without changing runtime behavior - Update generated dependency diagrams and gem READMEs for the new empty gem ## Risk Assessment Low — this only adds an empty extension gem package, lockfile wiring, and generated dependency docs. ## References - First PR in the JSON ingestion extraction stack. - Local spellcheck, lint, type-check, schema artifact, and dependency diagram checks passed. ## Stack Current PR is marked with `->`. - -> [#1199 Add JSON ingestion gem shell](#1199) - [#1200 Add schema definition extension plumbing](#1200) - [#1201 Move JSON schema helpers to json ingestion gem](#1201) - [#1203 Namespace JSON schema helpers under JSON ingestion](#1203) - [#1204 Add JSON ingestion indexing extensions](#1204) - [#1215 Wire JSON ingestion schema extension modules](#1215) - [#1205 Use JSON ingestion as schema definition extension](#1205) - [#1202 Document JSON ingestion schema APIs](#1202) - [#1224 Migrate JSON ingestion specs into gem](#1224) - [#1220 Add configurable indexing event decoder](#1220)
ef183ea to
abe4889
Compare
jwils
added a commit
that referenced
this pull request
Jun 16, 2026
## Why Keep the first extraction layer reviewable by moving the JSON Schema helper files without changing their contents, so GitHub can render them as renames instead of delete/add rewrites. ## What - Move JSON Schema helper Ruby and RBS files into `elasticgraph-json_ingestion` - Update core requires/type references to load the helpers from the new gem - Keep `elasticgraph-json_ingestion` optional at runtime by using a schema_definition development dependency instead of a runtime dependency - Add the Docker/Apollo build-context wiring needed for bundles that include the new path gem explicitly ## Risk Assessment Low to medium - mostly file moves plus require/dependency wiring. ## References - Stacked on #1200. - `git diff -M --summary` reports the moved helper files as 100% renames, including `json_schema_with_metadata.rb`. - Local bundle install, lint, type check, spellcheck, dependency diagram verification, schema artifact check, and targeted unit specs passed on the restacked branch. ## Stack Current PR is marked with `->`. - [#1199 Add JSON ingestion gem shell](#1199) - [#1200 Add schema definition extension plumbing](#1200) - -> [#1201 Move JSON schema helpers to json ingestion gem](#1201) - [#1203 Namespace JSON schema helpers under JSON ingestion](#1203) - [#1204 Add JSON ingestion indexing extensions](#1204) - [#1215 Wire JSON ingestion schema extension modules](#1215) - [#1205 Use JSON ingestion as schema definition extension](#1205) - [#1202 Document JSON ingestion schema APIs](#1202) - [#1224 Migrate JSON ingestion specs into gem](#1224) - [#1220 Add configurable indexing event decoder](#1220)
jwils
added a commit
that referenced
this pull request
Jun 16, 2026
## Why After the move-only PR preserves rename detection, put the moved helper constants under the `ElasticGraph::JSONIngestion` namespace. ## What - Namespace the moved JSON Schema helper classes and RBS signatures - Update schema_definition references and tests to use the new qualified constants ## Risk Assessment Medium - namespace-only behavior should be unchanged, but it updates call sites across schema_definition. ## References - Stacked on #1201. - Local lint, type check, schema artifact checks, and documentation coverage passed while building this split. ## Stack Current PR is marked with `->`. - [#1199 Add JSON ingestion gem shell](#1199) - [#1200 Add schema definition extension plumbing](#1200) - [#1201 Move JSON schema helpers to json ingestion gem](#1201) - -> [#1203 Namespace JSON schema helpers under JSON ingestion](#1203) - [#1204 Add JSON ingestion indexing extensions](#1204) - [#1215 Wire JSON ingestion schema extension modules](#1215) - [#1205 Use JSON ingestion as schema definition extension](#1205) - [#1202 Document JSON ingestion schema APIs](#1202) - [#1224 Migrate JSON ingestion specs into gem](#1224) - [#1220 Add configurable indexing event decoder](#1220)
jwils
added a commit
that referenced
this pull request
Jun 16, 2026
## Why Keep the JSON ingestion indexing extensions separate from the schema-extension wiring so the indexing behavior is easier to review. ## What - Add JSON ingestion extension modules for indexing field references and field types - Make core indexing field references and enum/scalar/union field types extendable via the existing MemoizableData helper, matching the object field type - Keep JSON ingestion behavior in extension modules; no wrapper classes ## Risk Assessment Low to medium - this changes internal indexing value objects to use the existing MemoizableData wrapper so JSON ingestion can attach extension modules, without changing core mapping behavior. ## References - Stacked on #1203. - `bundle exec rspec elasticgraph-schema_definition/spec/unit/elastic_graph/schema_definition/json_schema_spec.rb elasticgraph-schema_definition/spec/unit/elastic_graph/schema_definition/json_schema_field_metadata_spec.rb elasticgraph-schema_definition/spec/unit/elastic_graph/schema_definition/indexing/json_schema_with_metadata_spec.rb elasticgraph-schema_definition/spec/unit/elastic_graph/schema_definition/factory_spec.rb` passed. - `script/type_check` passed. - `script/lint` passed. ## Stack Current PR is marked with `->`. - [#1199 Add JSON ingestion gem shell](#1199) - [#1200 Add schema definition extension plumbing](#1200) - [#1201 Move JSON schema helpers to json ingestion gem](#1201) - [#1203 Namespace JSON schema helpers under JSON ingestion](#1203) - -> [#1204 Add JSON ingestion indexing extensions](#1204) - [#1215 Wire JSON ingestion schema extension modules](#1215) - [#1205 Use JSON ingestion as schema definition extension](#1205) - [#1202 Document JSON ingestion schema APIs](#1202) - [#1224 Migrate JSON ingestion specs into gem](#1224) - [#1220 Add configurable indexing event decoder](#1220)
jwils
added a commit
that referenced
this pull request
Jun 16, 2026
## Why Introduce the JSON ingestion schema-definition extension modules after the indexing extension points exist, but before making JSON ingestion the default implementation. ## What - Add `ElasticGraph::JSONIngestion::SchemaDefinition::APIExtension` and supporting factory/results/artifact/state/schema-element extension modules - Wire JSON ingestion through the factory so core indexing field references and field types are extended in place - Keep the existing core JSON Schema behavior active in this intermediate layer - Add doctest support for JSON ingestion schema-definition examples without making the extension the default yet ## Risk Assessment Medium - this adds new extension code, but the default behavior remains the existing core JSON Schema implementation in this PR. ## References - Stacked on #1204. - `bundle exec rspec elasticgraph-schema_definition/spec/unit/elastic_graph/schema_definition/json_schema_spec.rb elasticgraph-schema_definition/spec/unit/elastic_graph/schema_definition/json_schema_field_metadata_spec.rb elasticgraph-schema_definition/spec/unit/elastic_graph/schema_definition/indexing/json_schema_with_metadata_spec.rb elasticgraph-schema_definition/spec/unit/elastic_graph/schema_definition/factory_spec.rb` passed. - `script/type_check` passed. - `script/lint` passed. ## Stack Current PR is marked with `->`. - [#1199 Add JSON ingestion gem shell](#1199) - [#1200 Add schema definition extension plumbing](#1200) - [#1201 Move JSON schema helpers to json ingestion gem](#1201) - [#1203 Namespace JSON schema helpers under JSON ingestion](#1203) - [#1204 Add JSON ingestion indexing extensions](#1204) - -> [#1215 Wire JSON ingestion schema extension modules](#1215) - [#1205 Use JSON ingestion as schema definition extension](#1205) - [#1202 Document JSON ingestion schema APIs](#1202) - [#1224 Migrate JSON ingestion specs into gem](#1224) - [#1220 Add configurable indexing event decoder](#1220)
jwils
added a commit
that referenced
this pull request
Jun 16, 2026
## Why Complete the extraction by loading JSON ingestion through the schema-definition extension API and removing the duplicated core JSON Schema implementation. ## What - Wire `ElasticGraph::JSONIngestion::SchemaDefinition::APIExtension` into app, template, doctest, and spec-helper schema definition setup - Move JSON Schema artifact/results behavior out of core schema_definition - Remove JSON Schema field/type/index logic from core classes now provided by the extension - Keep JSON schema version enforcement configurable through the JSON ingestion extension - Update the generated JSON ingestion dependency diagram ## Risk Assessment Medium to high - this is the behavior-transfer layer, but it sits after the move/namespace/wrapper/wiring PRs so the remaining diff is mostly deletion and wiring. ## References - Stacked on #1215. - Local `script/quick_build` passed before the generated diagram update; `script/update_dependency_diagrams --verify` and README spellcheck passed after it. ## Stack Current PR is marked with `->`. - [#1199 Add JSON ingestion gem shell](#1199) - [#1200 Add schema definition extension plumbing](#1200) - [#1201 Move JSON schema helpers to json ingestion gem](#1201) - [#1203 Namespace JSON schema helpers under JSON ingestion](#1203) - [#1204 Add JSON ingestion indexing extensions](#1204) - [#1215 Wire JSON ingestion schema extension modules](#1215) - -> [#1205 Use JSON ingestion as schema definition extension](#1205) - [#1202 Document JSON ingestion schema APIs](#1202) - [#1224 Migrate JSON ingestion specs into gem](#1224) - [#1220 Add configurable indexing event decoder](#1220)
jwils
added a commit
that referenced
this pull request
Jun 16, 2026
## Why Document the JSON ingestion schema-definition APIs after extracting JSON ingestion into its own extension and making it part of generated projects by default. ## What - Document the default JSON ingestion setup and explicit extension-module wiring - Document `json_schema_version`, `json_schema_strictness`, scalar JSON Schema metadata, field/type validations, and field-level `nullable: false` ## Risk Assessment Low - README-only documentation change. Snippets are validated. ## References - Stacked on #1205. - Local `script/quick_build` passed before the generated diagram restack; `script/update_dependency_diagrams --verify` and README spellcheck passed after it. ## Stack Current PR is marked with `->`. - [#1199 Add JSON ingestion gem shell](#1199) - [#1200 Add schema definition extension plumbing](#1200) - [#1201 Move JSON schema helpers to json ingestion gem](#1201) - [#1203 Namespace JSON schema helpers under JSON ingestion](#1203) - [#1204 Add JSON ingestion indexing extensions](#1204) - [#1215 Wire JSON ingestion schema extension modules](#1215) - [#1205 Use JSON ingestion as schema definition extension](#1205) - -> [#1202 Document JSON ingestion schema APIs](#1202) - [#1224 Migrate JSON ingestion specs into gem](#1224) - [#1220 Add configurable indexing event decoder](#1220)
jwils
added a commit
that referenced
this pull request
Jun 16, 2026
## Why The JSON ingestion gem should own the JSON-schema tests that cover its extracted implementation so the gem can enforce full coverage without a SimpleCov skip. ## What - Move JSON schema generation, metadata merge, pruner, and matcher specs into `elasticgraph-json_ingestion`. - Add JSON-ingestion artifact-manager integration coverage for versioned schema artifacts, version-bump enforcement, metadata refresh, and schema evolution diagnostics. - Add focused wrapper/scalar specs for the remaining extracted JSON-ingestion paths. - Remove the temporary SimpleCov filter for `elasticgraph-json_ingestion`. ## Verification - `script/run_gem_specs elasticgraph-json_ingestion` - `script/type_check elasticgraph-json_ingestion` - `BUNDLE_GEMFILE=Gemfile bundle exec rspec --format progress spec/integration/elastic_graph/schema_definition/rake_tasks_spec.rb spec/unit/elastic_graph/schema_definition/runtime_metadata/scalar_types_by_name_spec.rb` from `elasticgraph-schema_definition/` - `bundle exec standardrb ...` on touched specs/support `script/run_gem_specs elasticgraph-schema_definition` and `script/run_gem_specs elasticgraph-json_ingestion` both pass with 100% coverage (with the test datastore booted). ## Follow-ups - The migrated spec files keep the compact `module JSONIngestion::SchemaDefinition` form so that git/GitHub detects them as file moves. A follow-up PR (after this stack merges) will convert them to the standard nested module style and re-indent. - The JSON-schema-versioning scenarios that the new `schema_artifact_manager_extension_spec.rb` covers have been removed from the core `rake_tasks_spec.rb`; the core lines they exercised are now covered by focused unit specs instead. ## Stack Current PR is marked with `->`. - [#1199 Add JSON ingestion gem shell](#1199) - [#1200 Add schema definition extension plumbing](#1200) - [#1201 Move JSON schema helpers to json ingestion gem](#1201) - [#1203 Namespace JSON schema helpers under JSON ingestion](#1203) - [#1204 Add JSON ingestion indexing extensions](#1204) - [#1215 Wire JSON ingestion schema extension modules](#1215) - [#1205 Use JSON ingestion as schema definition extension](#1205) - [#1202 Document JSON ingestion schema APIs](#1202) - -> [#1224 Migrate JSON ingestion specs into gem](#1224) - [#1220 Add configurable indexing event decoder](#1220)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Prepare schema definition for ingestion serializer extensions before moving JSON Schema code into its own gem.
What
extension_modulesplumbing for APIs, factories, and rake tasksschema.enforce_json_schema_version falseRisk Assessment
Medium — this touches schema definition setup, but JSON Schema behavior remains in
elasticgraph-schema_definitionin this PR.References
Stack
Current PR is marked with
->.