-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuf.yaml
More file actions
68 lines (64 loc) · 2.76 KB
/
Copy pathbuf.yaml
File metadata and controls
68 lines (64 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# Buf module configuration for Aegis Core's proto contracts.
#
# This file lives at the REPO ROOT so that `buf lint` / `buf format` /
# `buf breaking` work correctly when invoked from the repo root (both
# in pre-commit hooks and in CI). The `proto/` directory is declared
# as the module root via `modules[0].path`.
#
# Used by:
# - `.pre-commit-config.yaml` (`buf-lint`, `buf-format`, `buf-breaking`
# hooks) for local pre-commit enforcement.
# - `.github/workflows/ci-baseline.yml` (`buf-lint` job) for CI
# enforcement.
# - Future `buf generate` invocations that produce language bindings
# alongside or in place of the Bazel proto rules.
version: v2
modules:
- path: proto
# Vendored third-party protos are lint-excluded. We own neither
# the style nor the backward-compatibility contract of upstream
# projects' .proto files; linting them with our STANDARD config
# produces noise on unrelated (upstream) choices. `buf breaking`
# also does not apply — API breakage is upstream's choice, we
# track it by bumping the pinned version.
#
# Upgrade procedure for any vendored proto directory is the
# version-dir's PROVENANCE.md (e.g. proto/qdrant/v1.17.1/
# PROVENANCE.md).
excludes:
- proto/qdrant
lint:
use:
- STANDARD
except:
# Our service names (`Gateway`, `Engine`) are short and intentional.
# The STANDARD rule wants `GatewayService` / `EngineService`.
- SERVICE_SUFFIX
# Our RPC request/response types are named for domain clarity, not
# the `<RpcName>Request` / `<RpcName>Response` convention:
# - `IngestMessage` (not `StreamTranscribeRequest`)
# - `EgressMessage` (not `StreamTranscribeResponse`)
# - `ViewerEvent` (not `JoinAsViewerResponse`)
- RPC_REQUEST_STANDARD_NAME
- RPC_RESPONSE_STANDARD_NAME
enum_zero_value_suffix: _UNSPECIFIED
rpc_allow_same_request_response: false
rpc_allow_google_protobuf_empty_requests: true
rpc_allow_google_protobuf_empty_responses: true
breaking:
use:
- FILE
# FILE enforcement catches all semantic breaking changes (field
# deletion, tag renumbering, type changes) without requiring
# wire-format compatibility rules that are too loose.
except:
# The go_package option only affects the import path that Go
# consumers use; it is not on the wire. Aegis owns the single
# consumer (gateway_go/) and updates it atomically with any
# go_package change, so this is not a breakage for us. The lint
# rule exists for libraries shipping protos to external Go
# consumers — not our situation. (See ADR-0013 for the codegen
# distribution model that makes us the only Go consumer of
# aegis.v1.) If we ever publish .proto for external Go consumers,
# remove this exception.
- FILE_SAME_GO_PACKAGE