Skip to content

Add issue templates, community docs, and OSS-ready documentation#123

Merged
behinddwalls merged 5 commits into
mainfrom
preetam/issue-template
Mar 6, 2026
Merged

Add issue templates, community docs, and OSS-ready documentation#123
behinddwalls merged 5 commits into
mainfrom
preetam/issue-template

Conversation

@behinddwalls

@behinddwalls behinddwalls commented Mar 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add GitHub issue templates (bug report, feature request) with structured fields
  • Add CODE_OF_CONDUCT.md (Contributor Covenant) and CONTRIBUTING.md (workflow, PR guidelines)
  • Rewrite README.md with badges, expanded description, quick start, and documentation table
  • Expand doc/howto/DEVELOPMENT.md with "Try It Locally" section, IDE setup, make targets reference, and troubleshooting
  • Remove SECURITY.md, CLA section, and redundant setup verification steps

Test plan

  • Verify all internal doc links resolve correctly on the PR preview
  • Confirm badge URLs render on GitHub
  • Read through each file as a first-time visitor for clarity

…ine README

Add community contribution infrastructure: bug report and feature request
issue templates, CONTRIBUTING.md, and CODE_OF_CONDUCT.md (Contributor
Covenant v1.4). Streamline README from 463 lines to a concise entry point
that links to CLAUDE.md, CONTRIBUTING.md, and TESTING.md, fixing broken
links and inaccuracies.
Remove redundant Proto Changes and Adding Extensions sections from
CONTRIBUTING.md (covered by CLAUDE.md). Move shell config to
doc/howto/SHELL.md. Reorder sections so developer setup comes before
Code of Conduct/License. Remove Code of Conduct and License from
README since they live in CONTRIBUTING.md.
Add high-level SubmitQueue overview to README synthesized from the
EuroSys '19 paper. Move development setup and troubleshooting from
CONTRIBUTING.md to doc/howto/DEVELOPMENT.md. Slim down CONTRIBUTING.md
to focus on contribution guidelines only.
Simplify README overview to a single paragraph, use 'speculative merge
queue' instead of 'change management system', remove paper reference
and specific build step assumptions. Rename Architecture to Developer
Guide. Move shell config from CONTRIBUTING.md to DEVELOPMENT.md, add
links to TESTING.md and SHELL.md from DEVELOPMENT.md, fix issues link
in CONTRIBUTING.md.
@behinddwalls behinddwalls requested review from a team and sbalabanov as code owners March 6, 2026 04:44
Comment thread doc/howto/DEVELOPMENT.md Outdated
@behinddwalls behinddwalls force-pushed the preetam/issue-template branch from 1126021 to b10e5f1 Compare March 6, 2026 18:15
@behinddwalls behinddwalls added this pull request to the merge queue Mar 6, 2026
Merged via the queue into main with commit da4a807 Mar 6, 2026
8 checks passed
albertywu added a commit that referenced this pull request May 29, 2026
Adds a read-only Status RPC to the gateway that returns the current
customer-friendly status of a previously submitted request, reconciled
from the append-only request log via
core/request.GetCurrentStateFromRequestLog. Status is a free-form string
(statuses can be added without breaking clients); unknown sqids map to a
typed RequestNotFoundError (user error) and empty sqids to ErrInvalidRequest.

Named "Status" to match the gateway's short RPC naming (Ping, Land, Status).

Changes:
- gateway/proto/gateway.proto: Status RPC, StatusRequest/StatusResponse, and
  RequestNotFoundError messages (regenerated protopb)
- gateway/controller/status.go: StatusController + tests
- example/server/gateway/main.go: wire controller (reuses existing RequestLogStore)

Validation:
- Unit tests: bazel test //gateway/controller:controller_test  (PASS)
- Integration (local stack): make local-gateway-start
  PORT=$(docker port submitqueue-gateway-service-1 8080 | head -1 | cut -d: -f2)

  # method is registered
  grpcurl -plaintext localhost:$PORT list uber.submitqueue.gateway.SubmitQueueGateway
    -> Land, Ping, Status

  # seed a request
  grpcurl -plaintext -d '{"queue":"test-queue","change":{"uris":["github:///pull/123/c3a4d5e6f7890123456789abcdef0123456789ab"]}}' \
    localhost:$PORT uber.submitqueue.gateway.SubmitQueueGateway/Land
    -> { "sqid": "test-queue/1" }

  # happy path
  grpcurl -plaintext -d '{"sqid":"test-queue/1"}' \
    localhost:$PORT uber.submitqueue.gateway.SubmitQueueGateway/Status
    -> { "status": "accepted" }

  # unknown sqid
  grpcurl -plaintext -d '{"sqid":"test-queue/999"}' \
    localhost:$PORT uber.submitqueue.gateway.SubmitQueueGateway/Status
    -> ERROR: request not found for sqid "test-queue/999"

  # empty sqid
  grpcurl -plaintext -d '{"sqid":""}' \
    localhost:$PORT uber.submitqueue.gateway.SubmitQueueGateway/Status
    -> ERROR: StatusController requires the request to have a sqid specified: invalid request

Co-authored-by: Cursor <cursoragent@cursor.com>
@behinddwalls behinddwalls deleted the preetam/issue-template branch June 12, 2026 15:37
roychying added a commit to roychying/submitqueue that referenced this pull request Jul 2, 2026
…for go-code compatibility (uber#293)

<!-- Provide a summary in the Title above. Example: "Feature: add user
authentication" -->

## Why?
We want the smoothest DX for consuming the OSS submitqueue repo in
go-code. Today go-code's `go_repository` uses `build_file_generation =
"on"`, so its Gazelle regenerates BUILD files for the vendored repo.
This causes conflicts and mismatches, and every version bump risks new
patching.

The root issue is that OSS carries proto types twice: as checked-in
`.pb.go` in `protopb/`, and as Bazel-generated code via
`go_proto_library` in `proto/`. Removing the Bazel proto rules in favor
of the checked-in `.pb.go` fixes several things at once:

- Eliminates duplicate proto definitions. The two generation paths share
the same importpath, which caused the duplicate-importpath ambiguity and
forced the `gazelle:resolve` workarounds. Collapsing to a single source
removes that whole class of conflict.
- Serves non-Bazel consumers. The Bazel-generated code only exists
inside a Bazel build graph. Anyone consuming submitqueue via plain `go
build/go get` (including OSS users) can only use the checked-in .pb.go,
so that path must work regardless. The Bazel proto rules are a redundant
second path that serves no one the checked-in files don't already serve.

## What?
Disable Gazelle proto rule generation and remove all proto compilation
rules, relying solely on checked-in `.pb.go` files.

- Add `# gazelle:proto disable_global` to prevent Gazelle from
regenerating proto rules on future make gazelle runs
- Remove the `gazelle:resolve directives` that are no longer needed
- Remove `proto_library`, `go_proto_library`, and alias `go_library`
rules
- Keep `exports_files` for `make proto` codegen
(`tool/proto/BUILD.bazel`)

## Test Plan
- `make build` - pass
- `make test` - 65/65 unit tests pass (integration/e2e tests fail due to
Docker dependency, pre-existing)
- `bazel build //tool/proto:generated` - proto codegen still works
- `make gazelle` - zero warnings, no duplicate-importpath ambiguity
- Validated in go-code with `--override_repository` pointing at this
branch: all 71 targets build, all 20 tests pass across stovepipe,
submitqueue/gateway, and submitqueue/orchestrator

## Issue
<!-- 
Link the issue here. 
- Use 'Closes uber#123' if this is the final fix. 
- Use 'Part of uber#123' or just 'uber#123' if the feature is still in progress.
-->

---------

Co-authored-by: chenghan.ying <chenghan.ying@uber.com>
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