Skip to content

Generalize indexing schema versions#1284

Draft
jwils wants to merge 3 commits into
joshuaw/indexer-ingestion-adaptersfrom
joshuaw/generalize-indexing-schema-version
Draft

Generalize indexing schema versions#1284
jwils wants to merge 3 commits into
joshuaw/indexer-ingestion-adaptersfrom
joshuaw/generalize-indexing-schema-version

Conversation

@jwils

@jwils jwils commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

Why

The indexing event decoder contract should not force non-JSON transports to expose JSON-specific schema versioning. Proto/Kafka decoders can omit schema_version, while JSON ingestion owns the json_schema_version mapping when needed.

What

  • Replace indexer event/output usage of json_schema_version with generic schema_version
  • Add a JSON ingestion JSON Lines decoder that maps json_schema_version to schema_version
  • Add schema artifact wrappers for generic version selection and envelope validation adaptation
  • Update warehouse partition/log naming, docs, RBS, and tests for the generic event contract

Risk Assessment

Medium: this changes core indexing event normalization and warehouse log keys, but JSON ingestion compatibility is preserved through the new decoder and the affected unit suites pass.

References

@jwils jwils force-pushed the joshuaw/generalize-indexing-schema-version branch from 690e775 to ec0cb6b Compare July 1, 2026 01:25
@jwils jwils changed the title Generalize indexing schema version Allow omitted JSON schema versions Jul 1, 2026
@jwils jwils force-pushed the joshuaw/generalize-indexing-schema-version branch from ec0cb6b to ab31afa Compare July 1, 2026 01:51
@jwils jwils changed the title Allow omitted JSON schema versions Generalize indexing schema versions Jul 1, 2026
jwils added 2 commits July 1, 2026 13:17
- Make `indexing_event_decoder` a required `SqsProcessor` kwarg instead of a
  nilable one with a second, duplicate default-construction path. The warehouse
  lambda now passes its indexer's configured decoder, so there is a single
  source of truth for the default and decoders can rely on receiving non-nil
  `schema_artifacts`.
- Make `JSONLines` inherit from `Interface` so its RBS superclass declaration
  matches the runtime class.
- Validate the decoder's `name` config with the same class-name pattern used
  for query interceptors, and regenerate the config schema artifact.
- Match the established extension-interface style (explanatory comments,
  `:nocov:` only around the body that must return a value) and document the
  interface publicly since it is the contract decoder authors implement.
- Replace the `_ =` cast with an inline type annotation, alphabetize requires,
  and simplify the SQS processor spec helper.
@jwils jwils force-pushed the joshuaw/indexer-ingestion-adapters branch from 198a1cb to 2a2ae34 Compare July 1, 2026 18:17
@jwils jwils force-pushed the joshuaw/generalize-indexing-schema-version branch from ab31afa to 609617b Compare July 1, 2026 18:17
@jwils jwils force-pushed the joshuaw/indexer-ingestion-adapters branch 2 times, most recently from 5eca661 to 4416d09 Compare July 7, 2026 18:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant