Add topic Bubble Up operations - #70
Open
code-monger-givenall wants to merge 1 commit into
Open
Conversation
code-monger-givenall
force-pushed
the
codex/hey-bubble-up-sdk-pr
branch
from
August 19, 2026 17:36
65d5ef7 to
50def4b
Compare
code-monger-givenall
marked this pull request as ready for review
August 19, 2026 17:36
There was a problem hiding this comment.
Pull request overview
Adds topic-level Bubble Up scheduling, cancellation, and immediate execution across the Smithy model, Go SDK, and conformance suite.
Changes:
- Adds three topic Bubble Up operations and Go service wrappers.
- Implements validation and form/query encoding.
- Updates generated artifacts, route coverage, behavior metadata, and tests.
Tip
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.
Reviewed changes
Copilot reviewed 11 out of 12 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
spec/route-coverage.json |
Registers the new routes. |
spec/hey.smithy |
Models the three operations. |
spec/excluded-routes.json |
Removes implemented route exclusions. |
openapi.json |
Adds generated OpenAPI definitions. |
go/pkg/hey/url-routes.json |
Adds generated route mappings. |
go/pkg/hey/topics.go |
Implements public service wrappers. |
go/pkg/hey/topic_bubble_up_test.go |
Tests requests and validation. |
go/pkg/hey/client.go |
Supports non-JSON generated routes. |
go/pkg/generated/client.gen.go |
Adds generated clients and response types. |
conformance/tests/paths.json |
Adds route conformance cases. |
conformance/runner/go/main.go |
Executes the new conformance operations. |
behavior-model.json |
Records operation behavior metadata. |
Suppressed comments (1)
spec/hey.smithy:2591
BubbleUpTopicNowis also declared non-idempotent, so the generated Go method bypassesdoWithRetryand never retries a 429/503 despite this trait and the PR summary saying all three operations retry. Decide whether repeating “bubble up now” is safe; if it is, mark it idempotent and add a retry conformance case, otherwise remove/correct the advertised retry policy.
@heyRetry(maxAttempts: 2, baseDelayMs: 1000, backoff: "exponential", retryOn: [429, 503])
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
code-monger-givenall
force-pushed
the
codex/hey-bubble-up-sdk-pr
branch
from
August 19, 2026 18:51
50def4b to
d382685
Compare
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.
HEY has topic-level Bubble Up routes, but the SDK only covered the bulk posting versions. This adds the missing topic operations for scheduling a custom date, canceling a scheduled Bubble Up, and bubbling a topic up now.
The schedule request matches the form HEY expects:
slot=customin the querydate=YYYY-MM-DDin the form bodywaiting_on=trueonly when requestedThe service wrapper rejects invalid topic IDs and dates before making a request. The Smithy model, generated client, route coverage, behavior model, service tests, and conformance suite are updated together.
Tested against live HEY behavior for schedule, cancel, and Bubble Up now.
make checkpasses with 130 conformance cases.Summary by cubic
Adds topic-level Bubble Up operations to
TopicsServiceso callers can schedule, cancel, or run Bubble Up immediately. Previously only bulk routes were supported; this adds topic routes with validation and correct form wire format.ScheduleBubbleUp(ctx, topicID, date, waitingOn),CancelBubbleUp(ctx, topicID), andBubbleUpNow(ctx, topicID). Schedule usesslot=custom, optionalwaiting_on, and anapplication/x-www-form-urlencodedbodydate=YYYY-MM-DD.topicID > 0and date format; returns a usage error without sending a request on invalid input..jsonand set JSON headers whenAcceptisapplication/json; these endpoints setAccept: */*and send form bodies to avoid.json.openapi.jsonwith/topics/{topicId}/bubble_upand/topics/{topicId}/bubble_up_now, regenerates the client, adds conformance tests (including form-body assertions). No breaking changes to existing bulk Bubble Up APIs.Written for commit d382685. Summary will update on new commits.