Skip to content

feat(submitqueue): cut over internal queues to protojson - #703

Merged
behinddwalls merged 1 commit into
mainfrom
preetam/request-history
Sep 14, 2026
Merged

behinddwalls merged 1 commit into
mainfrom
preetam/request-history

Conversation

@behinddwalls

@behinddwalls behinddwalls commented Sep 11, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Why?

SubmitQueue's pipeline still serialized Go structs with encoding/json, while Stovepipe and the queue-contract RFC use proto3 + protojson with one message per topic key. That left the internal contract without a language-neutral schema and made additive field growth a shared-struct change.

What?

Add submitqueue/core/messagequeue (proto payloads, protojson glue, TopicKey constants, and entity mapping). Gateway and orchestrator publish and consume the message bound to each topic. MarshalID/UnmarshalID take the topic key so a later field is not discarded onto the wrong type. Proto filenames that collide in the protobuf registry are prefixed (submitqueuemerge, submitqueuebuild, submitqueuebuildsignal). Queue-only ToBytes/FromBytes helpers are removed from entities. Hard cutover: drain or drop in-flight start and log messages; id-only topics stay {id,queue}.

Test Plan

✅ bazel test of //submitqueue/core/messagequeue:go_default_test plus gateway and orchestrator/DLQ controller tests
✅ bazel test //test/e2e/submitqueue:go_default_test --test_filter=TestE2EIntegration
✅ bazel test //test/e2e/submitqueue:go_default_test --test_filter=TestGitMergeE2E

@behinddwalls
behinddwalls marked this pull request as ready for review September 11, 2026 21:56
@behinddwalls
behinddwalls requested review from a team and sbalabanov as code owners September 11, 2026 21:56
## Summary

### Why?

SubmitQueue's pipeline still serialized Go structs with encoding/json, while Stovepipe and the queue-contract RFC use proto3 + protojson with one message per topic key. That left the internal contract without a language-neutral schema and made additive field growth a shared-struct change.

### What?

Add submitqueue/core/messagequeue (proto payloads, protojson glue, TopicKey constants, and entity mapping). Gateway and orchestrator publish and consume the message bound to each topic. MarshalID/UnmarshalID take the topic key so a later field is not discarded onto the wrong type. Proto filenames that collide in the protobuf registry are prefixed (submitqueuemerge, submitqueuebuild, submitqueuebuildsignal). Queue-only ToBytes/FromBytes helpers are removed from entities. Hard cutover: drain or drop in-flight start and log messages; id-only topics stay {id,queue}.

## Test Plan

✅ `bazel test` of `//submitqueue/core/messagequeue:go_default_test` plus gateway and orchestrator/DLQ controller tests
✅ `bazel test //test/e2e/submitqueue:go_default_test --test_filter=TestE2EIntegration`
✅ `bazel test //test/e2e/submitqueue:go_default_test --test_filter=TestGitMergeE2E`
@behinddwalls
behinddwalls force-pushed the preetam/request-history branch from 51c79e5 to b64a0f2 Compare September 14, 2026 19:19
@behinddwalls
behinddwalls merged commit 91ddcce into main Sep 14, 2026
3 checks passed
@behinddwalls
behinddwalls deleted the preetam/request-history branch September 14, 2026 19:20

This branch was successfully deployed

1 active deployment
stack-rebase — b64a0f21 Deployed Sep 14, 2026 by behinddwalls via Rebase Stack #498
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.

2 participants