mirror of
https://github.com/hanzoai/insights.git
synced 2026-10-30 16:15:31 +00:00
PersonHog was the last of it, and it was not only a name. The package is personinsights and the types in it are already Person* -- the shipped descriptor under personinsights_client/proto/generated says PersonService and the tests say TestFakePersonClient -- but the .proto still declared PersonHogService. A client dialling one service name and a server built from a .proto declaring another is not a naming problem, it is a wire that does not connect; the only reason nobody hit it is that none of these services runs here yet. Five service declarations now say what the generated client has said all along. StreamHog was a second fictional company, invented so a Stripe mock had someone to bill. This fork already has Hedgebox, in five hundred fixtures, so the mock bills Hedgebox and there is one made-up company again instead of two. REVIEW_HOG was an enum member in three enums that had to agree, whose value has been `review` since the app was renamed. Only the member said otherwise. Every rule is in bin/debrand and every spelling is refused there, so a fresh upstream import lands on these names and none of them can come back. Two are named as outstanding rather than refused, with the reason each is still sayable: hogdesk survives inside applied migrations' choices lists, where Django compares it in Python and never writes it -- the member is Desk = "desk" and all three tables that store it hold no rows; sherlockhog keys a service in another repository that still calls itself that, and renaming our half would classify its traffic as a product that does not exist. Co-authored-by: Hanzo Dev <[email protected]>
Proto Definitions
Language-agnostic protobuf definitions for Insights services.
Structure
proto/
├── buf.yaml
├── cymbal/ # Cymbal internal services
│ └── resolution/v1/ # Exception-level symbol resolution
├── kafka_assigner/ # Kafka partition assignment
└── personinsights/ # Person data service
├── types/v1/
├── replica/v1/
└── service/v1/
Consumers
| Proto | Rust | Python |
|---|---|---|
cymbal/ |
rust/cymbal-proto (auto via tonic) |
— |
personinsights/ |
rust/personinsights-proto (auto via tonic) |
insights/personinsights_client/proto/generated/ (checked in) |
kafka_assigner/ |
rust/kafka-assigner-proto (auto via tonic) |
— |
Updating protos
- Edit
.protofiles in the relevant directory - Regenerate language bindings for affected consumers (see table above)
- Commit generated files — CI rejects stale stubs
Python stubs (personinsights only)
bin/generate_personinsights_proto.sh
Only needed when personinsights/ protos change. Requires grpcio-tools and protoletariat (uv sync).
If you added or removed message types, update the re-exports in insights/personinsights_client/proto/__init__.py.
If you added or removed RPCs, update the wrapper methods in insights/personinsights_client/client.py.
Rust
No action needed — Rust bindings regenerate on cargo build.
CI
.github/workflows/ci-proto.yml runs on proto changes:
buf lint— style and namingbuf breaking— backwards compatibility againstmaster- Python codegen staleness check