docs: 013 phase 4 — the claim check, and MSSQL for all three roles - #155
Merged
Conversation
Two new nested pages, and repairs to four they lean on. contents/HandlingLargeMessages.md (P1-1) — the wiring ClaimCheck.md does not cover: which luggage store, how to register it, where the threshold is measured, and how to tell whether the payload really left. Step 3 is why the page exists. UseExternalLuggageStore<T> was on 0 of 157 pages, and AddBrighter ends by registering a NullLuggageStore whose every method throws "you must register a real store after Brighter". Measured rather than read, in a 10.7.0 PackageReference harness: - AddBrighter() alone -> resolving IAmAStorageProvider throws that message - the same registration after AddBrighter displaces it (AddSingleton, last wins) - the throw lands on RESOLUTION, because RegisterLuggageStore calls EnsureStoreExists() eagerly in its factory — not at the first over-threshold message, which is what a first draft of this page claimed - thresholdInKb: 0 checks every message; a body under the threshold is untouched contents/MSSQLTransportInboxAndOutbox.md (P1-2) — the same composition as P0-1 with an Inbox added, establishing that it generalises. It mostly does, and the page names the place it does not: the MSSQL gateway has no provisioning path at all, so OnMissingChannel.Create is inert and the queue table is yours to create. MsSqlQueueBuilder has no production call site, which is why it is public. Defects found in pages this phase links: - ClaimCheck.md printed an IAmAStorageProviderAsync with three members that do not exist — UploadAsync/DownloadAsync for StoreAsync/RetrieveAsync, and no EnsureStoreExistsAsync or Tracer — plus a V9 one-argument MapToMessage and a store list that stopped after one of seven, mid-bold - MSSQLOutbox.md (6 sites) and MSSQLInbox.md (1) named MsSqlOutboxBuilder and MsSqlInboxBuilder, which have never existed. Nine of ten providers prefix the builder; MSSQL alone does not, and the docs wrote the pattern. The types are SqlOutboxBuilder and SqlInboxBuilder - PostgreSQLTransportAndOutbox.md step 8 was missing the DI using for AddBrighter Every block on both new pages compiles against 10.7.0 with ImplicitUsings disabled and no NoWarn: 4 blocks and 9 blocks, 0 errors, and no CS0618. Gates: link 162 -> 164, pagelint 160 -> 162 pages with warnings 772 -> 768, shape 159 -> 161 widest unmoved at 12 of 20; redirects, versioncheck and optioncheck unmoved. --changed reads 6 documentation page(s), 25 code block(s) strict, 0 errors. Note for spec 014: rule 3a and design 4.4 conflict here. "Mirror P0-1's shape" and "## headings are unique across pages" cannot both hold literally once two how-tos share a step sequence, which is the first time that has happened. The four colliding headings are qualified on the NEW page only, so no published PostgreSQL anchor moves. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0146UueHL6H3zGBGTYwz7GtL
Ticks tasks 4.1-4.8 and records what running the pages found, including the two things the phase got wrong before it got them right: the null luggage store throws on resolution rather than on threshold, and nine of ten providers prefix their DDL builder while MSSQL does not. Finding G is for spec 014: CLAUDE.md justifies the "## Step N:" convention partly on step headings being unique across pages, and that precondition fails the first time two how-tos deliberately share a shape — which design 4.4 required. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0146UueHL6H3zGBGTYwz7GtL
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.
Spec 013 phase 4: P1-1 and P1-2, two new nested pages, plus repairs to four pages they lean on.
contents/HandlingLargeMessages.md(P1-1)The wiring
ClaimCheck.mddoes not cover: which luggage store, how to register it, where the threshold is measured, and how to tell whether the payload really left.Step 3 is why the page exists.
UseExternalLuggageStore<T>was on 0 of 157 pages, andAddBrighterfinishes by registering aNullLuggageStorewhose every method throws "you must register a real store after Brighter".Four claims measured in a
PackageReference10.7.0 harness rather than read:AddBrighter()alone → resolvingIAmAStorageProviderthrows that messageAddBrighterdisplaces it —AddSingleton, last wins, the opposite ofAddBrighterDefault'sTryAddruleRegisterLuggageStorecallsEnsureStoreExists()eagerly in its factory — not at the first over-threshold message, which is what my first draft of this page claimedthresholdInKb: 0checks every message; a body under the threshold is untouchedcontents/MSSQLTransportInboxAndOutbox.md(P1-2)The same composition as P0-1 with an Inbox added, establishing that it generalises. It mostly does — and the page names the place it does not: the MSSQL gateway has no provisioning path at all, so
OnMissingChannel.Createis inert and the queue table is yours to create.MsSqlQueueBuilderhas no production call site, which is why it is public.The
ChannelFactorydowncast was run with a control:Companion sample: BrighterCommand/Brighter#4331, which fixes two receivers in
samples/TaskQueue/MsSqlMessagingGateway/that carried exactly that defect and could never have started.Defects found in pages this phase links
ClaimCheck.mdprinted anIAmAStorageProviderAsyncwith three members that do not exist —UploadAsync/DownloadAsyncforStoreAsync/RetrieveAsync, and noEnsureStoreExistsAsyncorTracer— plus a V9 one-argumentMapToMessage, and a store list that stopped after one of seven, mid-boldMSSQLOutbox.md(6 sites) andMSSQLInbox.md(1) namedMsSqlOutboxBuilderandMsSqlInboxBuilder, which have never existed. Nine of ten providers prefix the builder; MSSQL alone does not, and the docs wrote the pattern. The types areSqlOutboxBuilderandSqlInboxBuilderPostgreSQLTransportAndOutbox.mdstep 8 was missing the DIusingforAddBrighterGates
linkcheckpagelintpagespagelintwarnings--check-shape--check-redirectsversioncheckoptioncheck--changed origin/masterreads6 documentation page(s), 25 code block(s) strict, 0 errors — the scope line, not just the verdict.Every block on both new pages compiles against 10.7.0 with
ImplicitUsingsdisabled and noNoWarn: 4 blocks and 9 blocks, 0 errors, and noCS0618.One convention conflict, recorded rather than worked around
Design §4.4 says P1-2 must mirror P0-1's shape; rule 3a says
##headings are unique across pages. Both cannot hold literally once two how-tos share a step sequence, which is the first time that has happened. The four colliding headings are qualified on the new page only, so no published PostgreSQL anchor moves. Evidence for spec 014.🤖 Generated with Claude Code
https://claude.ai/code/session_0146UueHL6H3zGBGTYwz7GtL