{"version":1,"pages":[{"id":"kzTlst3tKo255yz4YpDi","title":"Welcome","pathname":"/","siteSpaceId":"sitesp_ZXexw","icon":"hand-wave","description":"Keep exceptions exceptional","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Start here"}]},{"id":"CyH2xJQs9yWJ1S8BYNav","title":"Quickstart","pathname":"/start-here/quickstart","siteSpaceId":"sitesp_ZXexw","icon":"bullseye-arrow","description":"Install the package and get both types working, without leaving this page.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Start here"}]},{"id":"nfwH4ZIyqz7VG6QSFCNy","title":"Why monads","pathname":"/start-here/why-monads","siteSpaceId":"sitesp_ZXexw","icon":"diamond-half-stroke","description":"Why return an Option or a Result instead of using null and exceptions.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Start here"}]},{"id":"GT4Cu5ixBvGmw3OUzSg5","title":"Agent skills","pathname":"/start-here/agent-skills","siteSpaceId":"sitesp_ZXexw","icon":"robot","description":"Teach your coding agent to write Waystone.Monads the way it is meant to be written.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Start here"}]},{"id":"IecjaC3911L8ZQU3P57B","title":"Option<T>","pathname":"/guides/option","siteSpaceId":"sitesp_ZXexw","icon":"option","description":"Model a value that might not be there, and work with it without null checks.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Guides"}]},{"id":"I6H8YbXfQFb9SaOSN0IX","title":"Result<T, E>","pathname":"/guides/result","siteSpaceId":"sitesp_ZXexw","icon":"binary","description":"Return failure as a value instead of throwing it, and chain fallible work.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Guides"}]},{"id":"89kjVMJhfOO7Bb9A5mh7","title":"Errors","pathname":"/guides/errors","siteSpaceId":"sitesp_ZXexw","icon":"triangle-exclamation","description":"Build the failure value you put inside an Err.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Guides"}]},{"id":"oLtVUkKwG09HPawoymG9","title":"Exceptions","pathname":"/guides/exceptions","siteSpaceId":"sitesp_ZXexw","icon":"bomb","description":"What the library throws, when it throws it, and what to write instead.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Guides"}]},{"id":"dZZQQsRNbS9yOAmuGF0i","title":"Schemas","pathname":"/guides/schemas","siteSpaceId":"sitesp_ZXexw","icon":"shield-check","description":"Stop validating an object you already built. Parse the input instead, and let the type system carry the proof.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Guides"}]},{"id":"7KrgdI3lxSUdhM0EYtQx","title":"Async","pathname":"/guides/async","siteSpaceId":"sitesp_ZXexw","icon":"hourglass-half","description":"Chain asynchronous work through Option and Result without awaiting every step.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Guides"}]},{"id":"HmmXexAVJIS4JU7HBJvB","title":"Configuration","pathname":"/guides/configuration","siteSpaceId":"sitesp_ZXexw","icon":"gear","description":"","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Guides"}]},{"id":"H27Ol1TfoExOJV0y10cf","title":"Observability","pathname":"/guides/observability","siteSpaceId":"sitesp_ZXexw","icon":"chart-line","description":"See the exceptions the library swallows, with nothing extra installed.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Guides"}]},{"id":"qNnpIX8Rg96Rdw7Ksfxl","title":"Coming from Rust","pathname":"/guides/coming-from-rust","siteSpaceId":"sitesp_ZXexw","icon":"signs-post","description":"","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Guides"}]},{"id":"jZ5hnRKSQ8sxVlugt4G4","title":"Option<T> API","pathname":"/reference/option","siteSpaceId":"sitesp_ZXexw","icon":"option","description":"Every method on Option<T>, grouped by what it does.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"}]},{"id":"Uiu9HYUWVSA936HZeymn","title":"Creation","pathname":"/reference/option/creation","siteSpaceId":"sitesp_ZXexw","icon":"plus","description":"The factory methods that build an Option<T>.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Option<T> API","icon":"option"}]},{"id":"8qY1aKpOQBhjRnEtycoV","title":"Transform","pathname":"/reference/option/transform","siteSpaceId":"sitesp_ZXexw","icon":"shuffle","description":"Methods that take an Option<T> and give you back an Option.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Option<T> API","icon":"option"}]},{"id":"ZZixpkuypTcMJ5ASxHQ8","title":"Consume","pathname":"/reference/option/consume","siteSpaceId":"sitesp_ZXexw","icon":"box-open","description":"Methods that end the chain and hand you a plain value.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Option<T> API","icon":"option"}]},{"id":"sMcLxs7LxOy2QuH9QJAL","title":"Side effects","pathname":"/reference/option/side-effects","siteSpaceId":"sitesp_ZXexw","icon":"bolt","description":"Run something against the value without changing it.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Option<T> API","icon":"option"}]},{"id":"2IT8lejoFj4zSAhbqeOa","title":"Nesting and conversion","pathname":"/reference/option/nesting","siteSpaceId":"sitesp_ZXexw","icon":"code-branch","description":"Remove a level of nesting, or convert to a Result.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Option<T> API","icon":"option"}]},{"id":"L2IC6wHPyVAo7AZ1XEzg","title":"Collections","pathname":"/reference/option/collections","siteSpaceId":"sitesp_ZXexw","icon":"list","description":"Methods for working with a sequence of Option<T>.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Option<T> API","icon":"option"}]},{"id":"Daf5A1R4o0AIK8lHs8HK","title":"Result<T, E> API","pathname":"/reference/result","siteSpaceId":"sitesp_ZXexw","icon":"binary","description":"Every method on Result<TOk, TErr>, grouped by what it does.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"}]},{"id":"YVdr3wGXwC5PpO9VupK9","title":"Creation","pathname":"/reference/result/creation","siteSpaceId":"sitesp_ZXexw","icon":"plus","description":"The factory methods that build a Result<TOk, TErr>.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Result<T, E> API","icon":"binary"}]},{"id":"v47JMU2XoRLJV5vrmA5N","title":"Transform","pathname":"/reference/result/transform","siteSpaceId":"sitesp_ZXexw","icon":"shuffle","description":"Methods that take a Result and give you back a Result.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Result<T, E> API","icon":"binary"}]},{"id":"VBiN4mMwaCX2r8BRbRyD","title":"Consume","pathname":"/reference/result/consume","siteSpaceId":"sitesp_ZXexw","icon":"box-open","description":"Methods that end the chain and hand you a plain value.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Result<T, E> API","icon":"binary"}]},{"id":"mNnLXqFqsHV3Rr9OCs6W","title":"Side effects","pathname":"/reference/result/side-effects","siteSpaceId":"sitesp_ZXexw","icon":"bolt","description":"Run something against either side without changing it.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Result<T, E> API","icon":"binary"}]},{"id":"gQ1JVWKNcpUlIxeeeb4p","title":"Nesting and conversion","pathname":"/reference/result/nesting","siteSpaceId":"sitesp_ZXexw","icon":"code-branch","description":"Remove a level of nesting, or convert to an Option.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Result<T, E> API","icon":"binary"}]},{"id":"t59Kh4jwT6TxRLvTW6MF","title":"Collections","pathname":"/reference/result/collections","siteSpaceId":"sitesp_ZXexw","icon":"list","description":"Methods for working with a sequence of Result<TOk, TErr>.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Result<T, E> API","icon":"binary"}]},{"id":"z1l8dOL2jXv7xRJE5L01","title":"State overloads","pathname":"/reference/state-overloads","siteSpaceId":"sitesp_ZXexw","icon":"layer-group","description":"Pass your data to a delegate instead of capturing it, and stop allocating a closure on every call.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"}]},{"id":"04zFTUMdXgO4CxUHBG5w","title":"Add-ons","pathname":"/reference/packages","siteSpaceId":"sitesp_ZXexw","icon":"puzzle-piece","description":"Packages that add to Waystone.Monads itself. None is required, and none changes how the library behaves.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"}]},{"id":"8QKG1uQ6J9ukT484v1Vm","title":"Schemas","pathname":"/reference/packages/schemas","siteSpaceId":"sitesp_ZXexw","icon":"shield-check","description":"Parse untrusted input into a type you could not have built without passing, and get every failure back at once.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Add-ons","icon":"puzzle-piece"}]},{"id":"AZnTybyWW3qnnUk06bLj","title":"Primitives","pathname":"/reference/packages/schemas/primitives","siteSpaceId":"sitesp_ZXexw","icon":"shapes","description":"The schemas you start a chain from — text, numbers, identifiers, dates, booleans, enums — and the rules that hang off each.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Add-ons","icon":"puzzle-piece"},{"label":"Schemas","icon":"shield-check"}]},{"id":"O6YDs161u2xXTYmhlLVn","title":"Composition","pathname":"/reference/packages/schemas/composition","siteSpaceId":"sitesp_ZXexw","icon":"layer-group","description":"Add a rule, change the type, combine two schemas, and control the message and the code a failure carries.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Add-ons","icon":"puzzle-piece"},{"label":"Schemas","icon":"shield-check"}]},{"id":"x9ZSCdbhvBTwTbDLVOfd","title":"Structures","pathname":"/reference/packages/schemas/structures","siteSpaceId":"sitesp_ZXexw","icon":"list-tree","description":"Parse lists and dictionaries, read the path a violation was found at, and cap what a hostile payload can cost you.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Add-ons","icon":"puzzle-piece"},{"label":"Schemas","icon":"shield-check"}]},{"id":"aDjXymJHRziAhJb9nWjg","title":"Field sets","pathname":"/reference/packages/schemas/field-sets","siteSpaceId":"sitesp_ZXexw","icon":"table-columns","description":"Turn several fields into one object, gate a parse without producing a value, and write a rule that spans two fields.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Add-ons","icon":"puzzle-piece"},{"label":"Schemas","icon":"shield-check"}]},{"id":"f26u4ZOOcv1sGX7bgvM8","title":"Asynchrony","pathname":"/reference/packages/schemas/asynchrony","siteSpaceId":"sitesp_ZXexw","icon":"clock-rotate-left","description":"Rules that have to ask something — a database, a service — and the one place they may not go.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Add-ons","icon":"puzzle-piece"},{"label":"Schemas","icon":"shield-check"}]},{"id":"Tsf37Yan6WBgdPU1a4TQ","title":"LINQ","pathname":"/reference/packages/linq","siteSpaceId":"sitesp_ZXexw","icon":"filter","description":"C# query syntax over Option and Result, with no change in behaviour.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Add-ons","icon":"puzzle-piece"}]},{"id":"Q3FcAr1s5z6b9FuRpS1G","title":"Logging","pathname":"/reference/packages/logging","siteSpaceId":"sitesp_ZXexw","icon":"file-lines","description":"See every exception the library swallows, as a log entry with the call site attached.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Add-ons","icon":"puzzle-piece"}]},{"id":"6NDwwJIDwkIjzWY7Qg3v","title":"Integrations","pathname":"/reference/integrations","siteSpaceId":"sitesp_ZXexw","icon":"plug","description":"Packages that connect Waystone.Monads to a library you already use. None is required, and none changes how Waystone.Monads behaves.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"}]},{"id":"gQue3LopX1mfHXteXFkd","title":"Shouldly","pathname":"/reference/integrations/shouldly","siteSpaceId":"sitesp_ZXexw","icon":"flask","description":"Shouldly assertions that take an Option or a Result, so a failing test names the state it found.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Integrations","icon":"plug"}]},{"id":"25LuaK660zWpIfiM4F28","title":"Dependency injection","pathname":"/reference/integrations/dependency-injection","siteSpaceId":"sitesp_ZXexw","icon":"syringe","description":"Lets a container write the library's configuration, so start-up code no longer calls MonadOptions.Configure by hand.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Integrations","icon":"plug"}]},{"id":"k7rrnmEM2R0AkeHCV5wc","title":"Hosting","pathname":"/reference/integrations/hosting","siteSpaceId":"sitesp_ZXexw","icon":"server","description":"Installs the container-registered configuration from the host's own start-up sequence, so there is no second call to forget.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Integrations","icon":"plug"}]},{"id":"ioxQVjE6IO7ssSDcHC9J","title":"FluentValidation","pathname":"/reference/integrations/fluent-validation","siteSpaceId":"sitesp_ZXexw","icon":"clipboard-check","description":"Run a FluentValidation validator and get a Result back, with the failures attached to the error.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Integrations","icon":"plug"}]},{"id":"FIAsl9KwiY86vXhzKnJu","title":"System.Text.Json","pathname":"/reference/integrations/system-text-json","siteSpaceId":"sitesp_ZXexw","icon":"file-code","description":"Serialize Option and Result with System.Text.Json, in a format a consumer already agreed to.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Integrations","icon":"plug"}]},{"id":"cI4AUJuLcf1F7LaxsdRJ","title":"Newtonsoft.Json","pathname":"/reference/integrations/newtonsoft-json","siteSpaceId":"sitesp_ZXexw","icon":"code","description":"Serialize Option and Result with Newtonsoft.Json, in the same format the System.Text.Json package writes.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Integrations","icon":"plug"}]},{"id":"AhC1QWDNvDTcStejnr2c","title":"Source generation","pathname":"/reference/source-generation","siteSpaceId":"sitesp_ZXexw","icon":"gears","description":"Mark an enum with [ErrorCodeCatalog] and get its error codes as compile-time constants, generated at build time.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"}]},{"id":"B0K4jx7lynZMt02OZMmg","title":"Error code catalogs","pathname":"/reference/source-generation/error-code-catalogs","siteSpaceId":"sitesp_ZXexw","icon":"table-list","description":"What [ErrorCodeCatalog] emits: three nested classes, three extensions, and the fallback for a value that is not a declared member.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Source generation","icon":"gears"}]},{"id":"Wluc920tCn0hfivkwHtC","title":"Code format language","pathname":"/reference/source-generation/code-format","siteSpaceId":"sitesp_ZXexw","icon":"pen-ruler","description":"Shape the generated strings with {enum} and {member}, an optional casing, and one default for the whole assembly.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Source generation","icon":"gears"}]},{"id":"9yTtV8Rfp4X7YfqqeCPO","title":"Reviewing generated codes","pathname":"/reference/source-generation/reviewing-codes","siteSpaceId":"sitesp_ZXexw","icon":"list-check","description":"Commit your error codes as a list, and make a divergence fail the build rather than a rename change a wire contract silently.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Source generation","icon":"gears"}]},{"id":"DiRiMkVkrNJ9fmcxVsBR","title":"Generator diagnostics","pathname":"/reference/source-generation/diagnostics","siteSpaceId":"sitesp_ZXexw","icon":"triangle-exclamation","description":"The WMGxxxx and WMSCxxxx codes. Each one marks something a generator cannot emit, or emitted differently from how you meant it.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Source generation","icon":"gears"}]},{"id":"20eUbRl7laTKVbggqaSS","title":"Analyzers","pathname":"/reference/analyzers","siteSpaceId":"sitesp_ZXexw","icon":"shield-check","description":"The Roslyn rules that ship inside Waystone.Monads, what each tier means, and how to turn a rule up or off.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"}]},{"id":"30cUyvAtw2OJXDm4vKvl","title":"Runtime bugs","pathname":"/reference/analyzers/runtime-bugs","siteSpaceId":"sitesp_ZXexw","icon":"bug","description":"The WM1xxx rules. Each one marks code that compiles and then throws or quietly does the wrong thing at run time.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Analyzers","icon":"shield-check"}]},{"id":"fh9kLIfJdptAxzz4FcqC","title":"Idioms","pathname":"/reference/analyzers/idioms","siteSpaceId":"sitesp_ZXexw","icon":"wand-magic-sparkles","description":"The WM2xxx rules. Your code works; each rule points at a clearer way to write it.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Analyzers","icon":"shield-check"}]},{"id":"bXAcDWq5O2eMWG4vfQCS","title":"Migration aids","pathname":"/reference/analyzers/migration-aids","siteSpaceId":"sitesp_ZXexw","icon":"arrow-right-arrow-left","description":"The WM3xxx rules. They ship off, and you turn them on while you convert a codebase to the library.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Analyzers","icon":"shield-check"}]},{"id":"hqWb28EMfib7pKi44v3G","title":"Assertion rules","pathname":"/reference/analyzers/assertion-rules","siteSpaceId":"sitesp_ZXexw","icon":"vial","description":"The WMSxxxx rules. They ship in Waystone.Monads.Shouldly and fire on test assertions only.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Analyzers","icon":"shield-check"}]},{"id":"r5Ebdmk9yTYRrBb4RaXh","title":"Severity presets","pathname":"/reference/analyzers/severity-presets","siteSpaceId":"sitesp_ZXexw","icon":"sliders","description":"Turn the analyzer up in one line, without listing thirty rules in your .editorconfig.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Reference"},{"label":"Analyzers","icon":"shield-check"}]},{"id":"icjsTgbAZPzWvl8ydxKz","title":"Overview","pathname":"/upgrading/upgrading","siteSpaceId":"sitesp_ZXexw","icon":"arrow-up-right-dots","description":"What changes between major versions, what you have to do about it, and what is on its way out.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Upgrading"}]},{"id":"p2BUjH1pfRgB2feD7w9I","title":"Upgrade to v7","pathname":"/upgrading/v7","siteSpaceId":"sitesp_ZXexw","description":"The current major. Three changes keep compiling and change what your code does; the rest break the build.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Upgrading"}]},{"id":"XifU6UYTlYeZGiSmpItC","title":"Breaking changes","pathname":"/upgrading/v7/breaking-changes","siteSpaceId":"sitesp_ZXexw","icon":"circle-exclamation","description":"Every break in 7.0.0, the compiler diagnostic it produces, and whether a code fix handles it.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Upgrading"},{"label":"Upgrade to v7"}]},{"id":"5Lam3Mz1BNpKUPsgfu3T","title":"From v6.x","pathname":"/upgrading/v7/from-v6","siteSpaceId":"sitesp_ZXexw","description":"Three changes that keep compiling and change what your code does, and eight that break the build.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Upgrading"},{"label":"Upgrade to v7"}]},{"id":"kC223B9aZrFxRREQVtHb","title":"From v5.x","pathname":"/upgrading/v7/from-v5","siteSpaceId":"sitesp_ZXexw","description":"Skipping v6 means every v6 change and every v7 change land together. This is the order to do them in.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Upgrading"},{"label":"Upgrade to v7"}]},{"id":"25nFVHfTZDnTlwvhmIML","title":"Deprecations","pathname":"/upgrading/deprecations","siteSpaceId":"sitesp_ZXexw","icon":"ban","description":"API that has been removed, the version that removed it, and what to use instead.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Upgrading"}]},{"id":"CukCF1dFdHhw1zFEUzFt","title":"Older upgrades","pathname":"/upgrading/older","siteSpaceId":"sitesp_ZXexw","icon":"box-archive","description":"Every major version hop before v7, newest first.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Upgrading"}]},{"id":"6fN0tCZwfbEUVsdxtUiT","title":"v5.x to v6.x","pathname":"/upgrading/older/v5-to-v6","siteSpaceId":"sitesp_ZXexw","description":"Three changes in v6 keep compiling and change what your code does. Read this page before you upgrade, and start with the two silent ones.","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Upgrading"},{"label":"Older upgrades","icon":"box-archive"}]},{"id":"VSxwjZNhMfKxkWbhzpAm","title":"v4.x to v5.x","pathname":"/upgrading/older/v4-to-v5","siteSpaceId":"sitesp_ZXexw","description":"","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Upgrading"},{"label":"Older upgrades","icon":"box-archive"}]},{"id":"0YzOVFGNgf9nc182bPPL","title":"v3.x to v4.x","pathname":"/upgrading/older/v3-to-v4","siteSpaceId":"sitesp_ZXexw","description":"","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Upgrading"},{"label":"Older upgrades","icon":"box-archive"}]},{"id":"FJJOfk0hDM4RivRRj5oK","title":"v2.x to v3.x","pathname":"/upgrading/older/v2-to-v3","siteSpaceId":"sitesp_ZXexw","description":"","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Upgrading"},{"label":"Older upgrades","icon":"box-archive"}]},{"id":"NXYIc0zrpBGRYYRua62R","title":"v1.x to v2.x","pathname":"/upgrading/older/v1-to-v2","siteSpaceId":"sitesp_ZXexw","description":"","breadcrumbs":[{"label":"Waystone.Monads","icon":"light-switch"},{"label":"Upgrading"},{"label":"Older upgrades","icon":"box-archive"}]},{"id":"CIdTc4XY91xtbIlRHDPy","title":"Welcome","pathname":"/waystone.widelogevents","siteSpaceId":"sitesp_ljzrt","description":"","breadcrumbs":[{"label":"Waystone.WideLogEvents","icon":"list-timeline"}]},{"id":"4gRRbu0GCnUhuuli4xVM","title":"Serilog","pathname":"/waystone.widelogevents/quickstart/serilog","siteSpaceId":"sitesp_ljzrt","breadcrumbs":[{"label":"Waystone.WideLogEvents","icon":"list-timeline"},{"label":"Quickstart"}]},{"id":"GKULuFzGAJrqjYKLlBcs","title":"Serilog + AspNetCore","pathname":"/waystone.widelogevents/quickstart/serilog-+-aspnetcore","siteSpaceId":"sitesp_ljzrt","breadcrumbs":[{"label":"Waystone.WideLogEvents","icon":"list-timeline"},{"label":"Quickstart"}]}]}