docs: 013 phase 1 — repair an API surface the corpus never had - #152
Merged
Conversation
P0-2 and P0-4. Eleven pages, ten code blocks, and every gate where design §9 said it would be: link 160 unmoved, pagelint pages 158 unmoved, shape, redirects, versioncheck and optioncheck all unmoved, and the using-directive warning count 779 -> 773. Fifteen dead call sites, three further defects, ten dead type names. What is now zero across contents/: .ResiliencePipelines(, .ConfigureResiliencePipelines(, InputChannelFactory, DispatchBuilder.With(, .Subscribers(, and all eight dead relational type names. .Resilience(, DefaultResilience and AddBrighterDefault were on 0 pages and are now on 5 — the tell that opened this phase, inverted. Every repaired block was compiled before it was written to a page: one project per block, <ImplicitUsings>disable</ImplicitUsings>, optioncheck's pinned packages, 0 errors and 0 warnings each. Seven findings the approved task list did not predict — full ledger in spec/013-howto_guides/tasks.md § Phase 1 as executed: A. TWO OF THE SEVENTEEN SITES ARE CORRECT AND DESIGN §5 WOULD HAVE FALSIFIED THEM. MigratingToPollyV8.md:99 and :101 sit inside a block the page labels V9. At tag 9.33 git grep -c declares With() 1 and Policies( 2; both are 0 at 10.7.0. They are genuine V9 API shown as history on a migration page, and rewriting them would have told readers V9 had a method it never had — a repair inventing a history. The block now carries CLAUDE.md's ❌/✅ markers so the next sweep meets a label rather than a bare .With(). B. EVERY FLUENT EXAMPLE WAS MISSING THREE MANDATORY CHAIN STEPS. The builder's interfaces force ExternalBus|NoExternalBus, ConfigureInstrumentation| NoInstrumentation and RequestSchedulerFactory between Resilience and Build. Repairing only the names design §5 lists would have produced blocks that still do not compile. No grep could see it; the compiler reads a chain, a sweep reads a token. C. AddBrighterDefault lives in Paramore.Brighter.Extensions — a namespace on 0 of 158 pages. The method the spec set out to add is one the corpus cannot import. D. UseResiliencePipelineAsync is in Paramore.Brighter.Policies.Attributes, and the two pages already using it carry no using lines at all. E. TWO OF P0-4's TEN SITES ARE INSIDE FENCES, NOT PROSE, so ten blocks turned strict where eight were budgeted. --changed said so immediately, which is the argument for reading the scope line rather than the verdict. F. Renaming a type inside a block is not finished until its namespace is imported: BrighterBasicConfiguration.md had Paramore.Brighter.MySql but not ...MySql.EntityFrameworkCore. It passed rule 6 either way — directives, but not the right ones. G. BrighterOptions.PolicyRegistry raises CS0618 and is NOT a defect: under AC10's three states it is live, merely deprecated. Recorded, not swept. Checked and left alone: five Darker calls on CQRSWithBrighterAndDarker.md, verified real in ../Darker against a control of 0 — only the Brighter half of that block was touched. DynamoDbUnitOfWork and MongoDbUnitOfWork survive on five pages and are the control proving the P0-4 sweep discriminated rather than pattern-matching on UnitOfWork. 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.
P0-2 and P0-4. Eleven pages, ten code blocks, and every gate where design §9 said it would be.
linkcheck.pypagelint.pypagespagelint.pywarnings--changedscopeWhat is now zero across
contents/:.ResiliencePipelines(,.ConfigureResiliencePipelines(,InputChannelFactory,DispatchBuilder.With(,.Subscribers(, and all eight dead relational type names..Resilience(,DefaultResilienceandAddBrighterDefaultwere on 0 pages and are now on 5 — the tell that opened this phase, inverted.Every repaired block was compiled before it was written to a page: one project per block,
<ImplicitUsings>disable</ImplicitUsings>,optioncheck's pinned packages, 0 errors and 0 warnings each.Seven findings the approved task list did not predict
A. Two of the seventeen sites are correct, and design §5's table would have falsified them.
MigratingToPollyV8.md:99and:101sit inside a block the page labels V9. At tag 9.33,git grep -cdeclaresWith()1 andPolicies(2; both are 0 at10.7.0. They are genuine V9 API, correctly shown as history on a migration page — rewriting them would have told readers V9 had a method it never had. A repair inventing a history, the same shape as design §11 Q6's invented type name. The block now carriesCLAUDE.md's ❌/✅ markers, so the next dead-API sweep meets an explicit label rather than a bare.With().B. Every fluent example was missing three mandatory chain steps.
CommandProcessorBuilder's interfaces forceExternalBus|NoExternalBus,ConfigureInstrumentation|NoInstrumentationandRequestSchedulerFactorybetweenResilienceandBuild. Four of five builder blocks skipped two or three. Repairing only the names design §5 lists would have produced blocks that still do not compile. No grep could see it — the compiler reads a chain, a sweep reads a token.C.
AddBrighterDefaultlives inParamore.Brighter.Extensions— a namespace on 0 of 158 pages. The method the spec set out to add is one the corpus cannot import.D.
UseResiliencePipelineAsyncis inParamore.Brighter.Policies.Attributes, and the two pages already using it carry nousinglines at all.E. Two of P0-4's ten sites are inside fences, not prose — so ten blocks turned strict where eight were budgeted.
--changedsaid so immediately, which is the argument for reading the scope line rather than the verdict.F. Renaming a type inside a block is not finished until its namespace is imported.
BrighterBasicConfiguration.mdhadParamore.Brighter.MySqlbut not...MySql.EntityFrameworkCore. It passed rule 6 either way — directives, but not the right ones.G.
BrighterOptions.PolicyRegistryraisesCS0618and is NOT a defect — under AC10's three states it is live, merely deprecated. Recorded, not swept.Checked and deliberately left alone
CQRSWithBrighterAndDarker.md, verified real in../Darkeragainst a control of 0. Only the Brighter half of that block was touched — obligation 10.DynamoDbUnitOfWorkandMongoDbUnitOfWorksurvive on five pages — the NoSQL stores genuinely have a unit of work, and they are the control proving the P0-4 sweep discriminated rather than pattern-matching onUnitOfWork.Full ledger:
spec/013-howto_guides/tasks.md§ Phase 1 as executed.🤖 Generated with Claude Code
https://claude.ai/code/session_0146UueHL6H3zGBGTYwz7GtL