Skip to content

Promote Mode + IsListener to typed EndpointDescriptor fields; drop redundant Http Sets.Routes (#3009)#3010

Merged
jeremydmiller merged 1 commit into
mainfrom
feat-3009-typed-endpoint-fields
Jun 2, 2026
Merged

Promote Mode + IsListener to typed EndpointDescriptor fields; drop redundant Http Sets.Routes (#3009)#3010
jeremydmiller merged 1 commit into
mainfrom
feat-3009-typed-endpoint-fields

Conversation

@jeremydmiller
Copy link
Copy Markdown
Member

Closes #3009.

Two payload-shrink changes on the ServiceCapabilities snapshot, building on the HTTP descriptor cleanup in #411 / #3008.

1. Mode + IsListener → typed fields on EndpointDescriptor

Today these ride along as generic OptionsDescription rows under EndpointDescriptor.Properties. CritterWatch consumes both at the service-overview level, so they can't simply ride along once Properties becomes lazy-fetchable downstream.

  • Added Mode (EndpointMode) and IsListener (bool) as first-class typed properties, lifted from the underlying Endpoint — same shape as the existing BrokerRole / EndpointRole / TransportType / SerializerType fields.
  • Drop the duplicate Mode / IsListener rows from the Properties enumeration (the base OptionsDescription ctor reflects them off the Endpoint) so we don't double-ship.

2. Drop Sets.Routes from the Wolverine.Http capability

HttpCapabilityDescriptor no longer emits the per-route Routes child set (~96 KB on a Topicus-scale graph). It was fully redundant with HttpGraphs[*].Chains, which the SPA already reads; the Sets collection on this capability has no other consumer. The remaining Properties / Tags on the entry are tiny and unaffected.

Tests

  • CoreTests endpoint_descriptor_mode_tests — typed fields populated from the endpoint (Durable/listener and BufferedInMemory/non-listener), and no duplicate Mode/IsListener rows left in Properties.
  • Http http_capability_descriptor_tests — against the real WolverineWebApi host (which has routes, so the old Routes set would have been populated): asserts no Routes set, with the core capability content (http tag, WarmUpRoutes) intact.

Full wolverine.slnx Release build clean (0 warnings / 0 errors); adjacent descriptor/capability suite (61 tests) green.

Payload impact

  • Sets.Routes drop: ~96 KB raw.
  • Typed Mode/IsListener unblocks the CritterWatch follow-up that makes MessagingEndpoints[].Properties/Children lazy-fetchable: ~570 KB raw.

🤖 Generated with Claude Code

…dundant Http Sets.Routes (GH-3009)

Two payload-shrink changes for the ServiceCapabilities snapshot:

1. EndpointDescriptor now exposes Mode and IsListener as first-class typed fields
   (alongside BrokerRole/EndpointRole/etc.), lifted from the underlying Endpoint.
   The duplicate generic OptionsDescription rows the base ctor reflects off the
   Endpoint are removed so they aren't shipped twice — CritterWatch reads these at
   the service-overview level, and Properties is becoming lazy-fetchable downstream.

2. HttpCapabilityDescriptor no longer emits the per-route "Routes" child set
   (~96 KB on a Topicus-scale graph). It was fully redundant with
   HttpGraphs[*].Chains, which the SPA already reads; the Sets collection on this
   capability had no other consumer.

Regression tests: CoreTests endpoint_descriptor_mode_tests (typed fields populated
+ no duplicate Properties rows) and Http http_capability_descriptor_tests (no
"Routes" set, core capability content intact).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jeremydmiller jeremydmiller merged commit b38b355 into main Jun 2, 2026
24 checks passed
This was referenced Jun 3, 2026
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.

Promote Mode + IsListener to typed fields on EndpointDescriptor; drop Wolverine.Http capability's redundant Sets.Routes

1 participant