Audited every message in nuncio.proto against the id-naming law: an entity's own identifier field is id; a reference to another entity is <noun>_id. Fixed the outliers:
RemoveAccountRequest.id -> account_id
TestAccountConnectionRequest.id -> account_id
DeleteRuleRequest.id -> rule_id
UpdateRuleRequest.id -> rule_id
MessageSearchHit.id -> message_id
Documented Message.id (and AccountConfig.id/FilterRule.id/CalendarEvent.id/Contact.id) as OPAQUE, server-assigned tokens clients must never parse or construct, reflecting the surrogate id WS-B1 introduced.
AddAccountResponse now returns the full persisted AccountConfig (never the password) instead of a bare id, mirroring how CreateRule/CreateContact return their created object. Updated nunciod's add_account impl and nuncio-cli's handle_add_account to use the richer response.
Regenerated the nuncio.v1 descriptor golden (contract_stability test) for all field renames/changes above. All renames are pre-freeze and additive-where-possible; no field number was reused.
## Summary
- Audited every message in `nuncio.proto` against the id-naming law: an entity's own identifier field is `id`; a reference to another entity is `<noun>_id`. Fixed the outliers:
- `RemoveAccountRequest.id` -> `account_id`
- `TestAccountConnectionRequest.id` -> `account_id`
- `DeleteRuleRequest.id` -> `rule_id`
- `UpdateRuleRequest.id` -> `rule_id`
- `MessageSearchHit.id` -> `message_id`
- Documented `Message.id` (and `AccountConfig.id`/`FilterRule.id`/`CalendarEvent.id`/`Contact.id`) as OPAQUE, server-assigned tokens clients must never parse or construct, reflecting the surrogate id WS-B1 introduced.
- `AddAccountResponse` now returns the full persisted `AccountConfig` (never the password) instead of a bare `id`, mirroring how `CreateRule`/`CreateContact` return their created object. Updated `nunciod`'s `add_account` impl and `nuncio-cli`'s `handle_add_account` to use the richer response.
- Regenerated the `nuncio.v1` descriptor golden (`contract_stability` test) for all field renames/changes above. All renames are pre-freeze and additive-where-possible; no field number was reused.
## Test plan
- [x] `cargo fmt --all -- --check`
- [x] `cargo check-all` (clippy --all-targets --workspace -D warnings) -- 0 warnings
- [x] `cargo test-all` -- 527 passed, 0 failed, 0 ignored
- [x] `cargo test -p nuncio-proto contract_stability` -- golden matches regenerated descriptor
- [x] Pre-commit hook ran the full gate on commit and passed
Refs #276
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
nuncio.protoagainst the id-naming law: an entity's own identifier field isid; a reference to another entity is<noun>_id. Fixed the outliers:RemoveAccountRequest.id->account_idTestAccountConnectionRequest.id->account_idDeleteRuleRequest.id->rule_idUpdateRuleRequest.id->rule_idMessageSearchHit.id->message_idMessage.id(andAccountConfig.id/FilterRule.id/CalendarEvent.id/Contact.id) as OPAQUE, server-assigned tokens clients must never parse or construct, reflecting the surrogate id WS-B1 introduced.AddAccountResponsenow returns the full persistedAccountConfig(never the password) instead of a bareid, mirroring howCreateRule/CreateContactreturn their created object. Updatednunciod'sadd_accountimpl andnuncio-cli'shandle_add_accountto use the richer response.nuncio.v1descriptor golden (contract_stabilitytest) for all field renames/changes above. All renames are pre-freeze and additive-where-possible; no field number was reused.Test plan
cargo fmt --all -- --checkcargo check-all(clippy --all-targets --workspace -D warnings) -- 0 warningscargo test-all-- 527 passed, 0 failed, 0 ignoredcargo test -p nuncio-proto contract_stability-- golden matches regenerated descriptorRefs #276