Skip to content

docs: fix code/API contradictions, stale references, and broken links#3089

Merged
jeremydmiller merged 3 commits into
mainfrom
docs-review-inconsistencies
Jun 15, 2026
Merged

docs: fix code/API contradictions, stale references, and broken links#3089
jeremydmiller merged 3 commits into
mainfrom
docs-review-inconsistencies

Conversation

@jeremydmiller

Copy link
Copy Markdown
Member

Full documentation review across all 220 guide/, tutorials/, and introduction/ pages, looking for inconsistencies and anything contradicted by the current code (6.8.0). The 750 snippet-embedded code references were verified in sync (0 broken), so every fix here targets prose, inline (non-snippet) code, links, and stale content.

🔴 Code/API contradictions (would not compile / wrong API)

  • nats.mdUseJetStream() requires a config arg on the transport expression; TenantedIdBehavior.RequireTenantIdTenantIdRequired; ITenantSubjectMapper.MapSubjectForTenantMapSubject
  • grpc/handlers.mdIdempotencyStyle.GetOrPost (doesn't exist) → Eager
  • runtime/heartbeats.mdRunOasisAsync() (doesn't exist) → RunJasperFxCommands(args)
  • sqs/fifo-queues.mddlq.Attributes[...]dlq.Configuration.Attributes[...]
  • from-mediatr.md — handler example referenced undefined _writer/request
  • runtime/encryption.mdEncrypt<T>()Encrypt()

🔴 Wrong package / wrong described behavior

  • http/validation.md — removed reference to nonexistent WolverineFx.Http.DataAnnotationsValidation package (the middleware ships in core Wolverine.Http)
  • marten/index.mdWolverine.Persistence.MartenWolverineFx.Marten
  • oracle.md — advisory locks use row-level FOR UPDATE NOWAIT, not DBMS_LOCK/schema-hash
  • marten/event-sourcing.md — "Validation on Stream Existence" said the aggregate is not required by default; current default is required (WriteAggregateAttribute.Required = true, Simple404) — which also matches the page's own info box

🟡 Stale references

  • cqrs-with-marten/polecat.mdRunOaktonCommandsRunJasperFxCommands
  • durability/index.md — InboxStaleTime/OutboxStaleTime "will be defaults in 6.0" → still opt-in at 6.8
  • durability/managing.md — added db-list to the help output; Oakton → JasperFx

🟡 Internal inconsistencies / copy-paste leftovers

  • azureservicebus/multi-tenancy.md — RabbitMQ "virtual hosts"/"outgoing" leftovers
  • sqlserver.md — "saga support for PostgreSQL" → Sql Server
  • dataannotations-validation.md — "Fluent Validation middleware" → Data Annotations
  • efcore/operations.md — link pointed at marten/transactional-middleware → efcore/
  • diagnostics.md — the "at startup" env check is run --check, not a duplicate check-env
  • tutorials/index.md — ping-pong tutorial is TCP, not Rabbit MQ
  • durability/sagas.md — added the omitted SagaId step to the id-resolution list
  • http/integration.md — added [WolverinePatch] to the verb list

🟡 Broken links

  • basics.md azure-service-busazureservicebus
  • rabbitmq/interoperability.md ./transports/rabbitmq.md./index.md
  • partitioning.md #sharded-publishing#partitioned-publishing-to-external-transports
  • vertical-slice-architecture.md /tutorials/from-mediatr/introduction/from-mediatr
  • durability/index.md dead DurabilityAgent.cs GitHub link → Wolverine.RDBMS path
  • serverless.md empty pre-generated-types link → codegen anchor

⚪ Typos

IMesageContextIMessageContext (x3); Starts/StartAsyncStarts/StartsAsync; stray ~~~~ artifacts; dotnet adddotnet add package for Kafka/MQTT/Redis/Pulsar.


Deliberately left out (need a human decision, not a mechanical fix)

  • introduction/support-policy.md — version table lists Wolverine 4 as "Current" (repo is 6.8.0). Needs real EoL/release dates for the 6.x/5.x lines, which aren't in the code.
  • Empty/stub pages & TODO placeholdersmessaging/policies.md, sqs/queues.md, tutorials/dead-letter-queues.md (title-only); empty section headers in messaging/introduction.md; the truncated "Spy" section in efcore/domain-events.md; TODO/snippet-todo placeholders in message-bus.md, handlers/multi-tenancy.md, handlers/error-handling.md, and azureservicebus/deadletterqueues.md. These need real content.
  • Borderline staleness left as-is: the messages.md .NET 8 NotSupportedException caveat, the ".NET 6/7 Program file" framing in managing.md, and the "Wolverine 4.0 will embrace IHealthCheck" aside in diagnostics.md.

🤖 Generated with Claude Code

Documentation review across all 220 guide/tutorial pages. Snippet-embedded
code (750 references) verified in sync; these fixes target prose, inline
(non-snippet) code, links, and stale content.

Code/API contradictions (would not compile / wrong API):
- nats: UseJetStream() needs a config arg on the transport expression;
  TenantedIdBehavior.RequireTenantId -> TenantIdRequired;
  ITenantSubjectMapper.MapSubjectForTenant -> MapSubject
- grpc/handlers: IdempotencyStyle.GetOrPost (nonexistent) -> Eager
- runtime/heartbeats: RunOasisAsync() (nonexistent) -> RunJasperFxCommands(args)
- sqs/fifo-queues: dlq.Attributes -> dlq.Configuration.Attributes
- from-mediatr: handler example referenced undefined _writer/request
- runtime/encryption: Encrypt<T>() -> Encrypt()

Wrong package / wrong behavior:
- http/validation: drop nonexistent WolverineFx.Http.DataAnnotationsValidation
  package; middleware ships in core Wolverine.Http
- marten/index: Wolverine.Persistence.Marten -> WolverineFx.Marten
- oracle: advisory locks use row-level FOR UPDATE NOWAIT, not DBMS_LOCK
- marten/event-sourcing: aggregate is required-by-default (matches the page's
  own info box and WriteAggregateAttribute.Required = true)

Stale references:
- cqrs-with-marten/polecat: RunOaktonCommands -> RunJasperFxCommands
- durability/index: InboxStaleTime/OutboxStaleTime remain opt-in (not 6.0 defaults)
- durability/managing: add db-list to help output; Oakton -> JasperFx

Internal inconsistencies / copy-paste leftovers:
- azureservicebus/multi-tenancy: RabbitMQ "virtual hosts"/"outgoing" leftovers
- sqlserver: "saga support for PostgreSQL" -> Sql Server
- dataannotations-validation: "Fluent Validation middleware" -> Data Annotations
- efcore/operations: link marten -> efcore transactional-middleware
- diagnostics: startup env-check is `run --check`, not a duplicate check-env
- tutorials/index: ping-pong is TCP, not Rabbit MQ
- durability/sagas: add omitted SagaId fallback to id-resolution list
- http/integration: add [WolverinePatch] to verb list

Broken links:
- basics: azure-service-bus -> azureservicebus
- rabbitmq/interoperability: ./transports/rabbitmq.md -> ./index.md
- partitioning: #sharded-publishing -> #partitioned-publishing-to-external-transports
- vertical-slice-architecture: /tutorials/from-mediatr -> /introduction/from-mediatr
- durability/index: DurabilityAgent.cs moved to Wolverine.RDBMS
- serverless: empty pre-generated-types link -> codegen anchor

Typos: IMesageContext -> IMessageContext (x3); Starts/StartAsync ->
Starts/StartsAsync; stray ~~~~ artifacts; `dotnet add` -> `dotnet add package`
for Kafka/MQTT/Redis/Pulsar.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Table listed v4 as Current; repo ships 6.8.0. Now 6 = Current (no EOL),
5 = P1 fixes, 4 and earlier = EoL. The v5 EOL date is left as TBD pending
the confirmed 6.0 GA + 6-month window.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jeremydmiller

Copy link
Copy Markdown
Member Author

Update: the support-policy.md table is now fixed in this PR too (it was originally listed under "left for a human decision"). It now shows 6 = Current (no EOL), 5 = P1 fixes, 4 and earlier = EoL. The v5 End-of-Life date is left as TBD — it needs the real value once the 6.0 GA date + 6-month window is confirmed.

Follow-up issues filed for the empty/stub/TODO pages: #3090, #3091, #3092, #3093, #3094, #3095, #3096, #3097, #3098.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This was referenced Jun 23, 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.

1 participant