Skip to content

Make standalone_nexus_operation capability optional for field presence#831

Closed
stephanos wants to merge 1 commit into
mainfrom
stephanos/standalone-nexus-operation-optional
Closed

Make standalone_nexus_operation capability optional for field presence#831
stephanos wants to merge 1 commit into
mainfrom
stephanos/standalone-nexus-operation-optional

Conversation

@stephanos

Copy link
Copy Markdown
Contributor

What

Change NamespaceInfo.Capabilities.standalone_nexus_operation from an implicit-presence bool to optional bool.

Why

With a plain proto3 bool, a false value is indistinguishable from an unset field on the wire (both are omitted). This means a DescribeNamespace client cannot tell apart:

  1. field absent — server too old to know the capability → not supported
  2. field present, false — server supports it, but the dynamic config is disabled
  3. field present, true — supported and enabled

Cases 1 and 2 currently collapse into "field omitted". Marking the field optional adds explicit field presence, so a server that knows the capability always emits it (true or false), and only an older server omits it — giving the UI a reliable three-state signal.

Compatibility

  • Wire format: compatible — optional bool encodes identically to bool on the same field number.
  • Generated Go: source-breaking — the field regenerates as *bool (with a Has...() accessor). Downstream (temporal server) Capabilities{...} literal must wrap the value in proto.Bool(...); getter reads are unaffected.
  • buf breaking check: this changes field cardinality (implicit → explicit presence) and will likely trip the breaking-change detector, needing a waiver.

Draft pending discussion on whether to apply the same treatment to the other capability bools.

Change NamespaceInfo.Capabilities.standalone_nexus_operation from an
implicit-presence bool to `optional bool` so clients can distinguish
"server does not know this capability" (field absent) from "server
supports it but it is disabled" (field present, false).

Wire-compatible; regenerated Go bindings change the field to *bool.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@stephanos stephanos closed this Jul 16, 2026
@stephanos stephanos deleted the stephanos/standalone-nexus-operation-optional branch July 16, 2026 18:07
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.

1 participant