Repository navigation
docs: a walkthrough of one orders service, run by CI from the packages - #141
Merged
Merged
Conversation
docs/walkthrough.md follows one minimal-API orders service from request to response and says what changes at each boundary. The service is the smoke test's fifth consumer, walkthrough: built outside the repository against the packed Generators, EF Core, ASP.NET Core and Serilog packages, on SQLite in memory. Its answers, its log line, the SQL EF Core logs and the OpenAPI document are checked against the page's comments, read by WalkthroughPage. WalkthroughTests compiles the same sources and runs the service in memory, so it runs on every pull request's test leg and holds the page's claims (W01-W12). ReadmeSampleTests and docs-query find walkthrough/ regions in the consumer's sources, and a region must live in its page's sources. Seeded: an excerpt edited in the page alone fails ReadmeSampleTests; the mask changed in the code but not in the comment fails WalkthroughTests and the smoke test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…odoMetis.TypeKit into docs/walkthrough # Conflicts: # test/oracles/claims.json
…odoMetis.TypeKit into docs/walkthrough
… sample site/toc.yml lists the walkthrough first among the guides, as the README's Documentation table does (DocsSiteTests). The sample's sources join the site's resources, so DocFX checks the page's links to them and the template rewrites them to GitHub: without them the build reported five InvalidFileLink warnings, with them none. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…odoMetis.TypeKit into docs/walkthrough # Conflicts: # test/oracles/claims.json # test/oracles/surface-waivers.json
…odoMetis.TypeKit into docs/walkthrough # Conflicts: # CHANGELOG.md
This was referenced Oct 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #116
Problem
Each guide covers one boundary, and none shows one value object crossing all of them in a single application, or says where it changes on the way through. The smoke test's
hostconsumer puts EF Core and OpenAPI together, but it is a check, not something a reader can follow, and a walkthrough written as prose alone would go stale.Change
docs/walkthrough.md, in the plain-docs voice: one orders service from request to response (value objects declared, stored, bound from route, query and body, rejected as problem details, anOptionas a 404, a query on.Value, aPatch<T>, the e-mail address masked in the log, the OpenAPI document), each step saying what changes there or that nothing does. Linked from the root README's Documentation table and fromdocs/value-objects.md. Since docs: publish the guides, the READMEs and the API to GitHub Pages with DocFX #138 merged,site/toc.ymllists it first among the guides, as the README table does, andsite/docfx.jsontakes the sample's sources as resources, so DocFX checks the page's links to them and rewrites them to GitHub (dotnet docfx site/docfx.json --warningsAsErrorsreports 0 warnings; without the resources, 5InvalidFileLink).tools/ConsumerSmokeTest/Consumers/walkthrough/:Orders.cs(domain, entity, patch),OrderEndpoints.cs(the minimal API),Tour.cs(the requests),Program.cs(the host: Generators, EF Core on SQLite in memory, ASP.NET Core, Serilog with the console sink). Every C# block of the page is one of its regions.Walkthrough()intools/ConsumerSmokeTest/Program.cs) builds it as a web project outside the repository against the packed packages, runs it, and asserts on every answer it prints, the log line, the SQL EF Core logs and the OpenAPI document, each read from the page's comments bytools/ConsumerSmokeTest/WalkthroughPage.cs.…in a comment stands for an id or a trace id.--only <consumer>runs one consumer locally; CI runs all five.WalkthroughTests(test/CodoMetis.TypeKit.Samples) compiles the same sources and the same page reader, runs the service in memory on the test server, and checks the same statements, so the walkthrough runs on every PR's Linux leg (it is in the prose suite too) and the page's claims have a test class to name. The packed run is in the pack lane, which every change to the consumer's sources selects; a stated answer is a comment in a compiled block, so changing one changes a source too.ReadmeSampleTests: a page can name its own sources (ReadmeSamples.RegionSources);walkthrough/{name}regions are found in the walkthrough consumer, under the same exactly-one-region rule, and a region must live in its page's sources (A_sample_lives_in_the_sources_of_its_page).Corpus.PageSources), or its claims read "no region".W01–W12intest/oracles/claims.json, held byWalkthroughTests;docs/walkthrough.mdjoins the promise documents, and theTypeKitSerilogExtensions.WithTypeKitwaiver goes, since W01 and W05 now claim it.design/native-aot.mdno longer says no smoke consumer callsAsText().Tests
WalkthroughTests,ReadmeSampleTests, the oracle catalogue tests and the full suite pass locally;consumer-smoke-test.dll --only walkthroughpasses against a freshly packed feed.value > 0tovalue >= 0in theQuantityblock ofdocs/walkthrough.md):ReadmeSampleTestsfails twice, the block is compiled by no region andwalkthrough/valuesis shown nowhere.***to**inEmail.ToString(), inOrders.csand in the page's code, so the excerpts still match):ReadmeSampleTestspasses,WalkthroughTestsfails on the log line, andconsumer-smoke-test.dll --only walkthroughexits 1 withFAIL: the log line is what the page states.🤖 Generated with Claude Code