Repository navigation
docs: an Error may learn, in a minor version, a form only that version's new API writes - #156
Merged
Merged
Conversation
…n's new API writes Decision 117 refines decision 34: within a major an Error still reports nothing more of the code a consumer could already write, but a minor version may teach it a form that only its own new API can write, since no build that worked before contains one. 2.3.0's CMTK0003 on a dropped assertion of CodoMetis.TypeKit.Testing over a Task or ValueTask is such a form, and so are #152's ConfigureAwait, WaitAsync and branch forms; the forms freeze at the tag. The Analyzers README's "What a new version may change" states the rule, claim T01-an-error-learns-only-new-api-forms quotes it (seeded: reworded, and OracleCatalogueTests failed), and the CMTK0003 row of design/analyzers.md lists the pending-assertion forms. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#151 merges first and takes 0117, and the records are numbered in merge order, so this record becomes 0118: its file, heading, index rows and the links from design/analyzers.md and the roadmap. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…3-new-api-forms # Conflicts: # design/adr/README.md
…Any of results The maintainer took #159 into 2.3.0: CMTK0003 reports a Task.WhenAny of tasks of results dropped without await, which code built on 2.2.0 can contain. Such a statement loses every result, so the report finds a defect. Decision 118, its index row, design/analyzers.md and the Analyzers README's "What a new version may change" name the exception beside the rule, so the README's promise stays true. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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 #153
Problem
The Analyzers README promised that within a major version an Error never reports more than it did (decision 34). 2.3.0's CMTK0003, an Error since 2.0.0, also reports an assertion of
CodoMetis.TypeKit.Testingon aTaskorValueTaskleft withoutawait(IgnoredOutcomeAnalyzer.IsPendingAssertion). No record allowed that, so the 2.3.0 README contradicted the 2.3.0 analyzer.Change
design/adr/0118-an-error-may-learn-a-form-only-new-api-can-write.mdand its index row: in a minor version an Error may report a form that only an API new in that same version can write, since no build that worked before contains one. It refines decision 34 (its index row now says so), names 2.3.0's dropped pending assertion as the case, covers CMTK0003 misses dropped async assertions through Task wrappers and branches #152'sConfigureAwait,WaitAsyncand branch forms, and freezes the forms at the tag. nuget.org lists 2.2.0 as the latest Testing and Analyzers package, so no preview build exists on these assertions.src/CodoMetis.TypeKit.Analyzers/README.md, "What a new version may change": states the refined rule in the plain-docs voice, with the 2.3.0 example.Task.WhenAnyof tasks of results, which 2.2.0 code can contain. Decision 118, its index row,design/analyzers.mdand the README name it beside the rule, so the README's promise stays true. Its fix ships with CMTK0003 misses dropped async assertions through Task wrappers and branches #152 and CMTK0003 misses unawaited assertions dropped together through Task.WhenAll #157.design/analyzers.md: the CMTK0003 row lists the pending-assertion forms and their silent controls; the release-discipline paragraph names decision 118.design/roadmap.md: the opening rule names decision 118 beside decision 34.test/oracles/claims.json:T01-an-error-learns-only-new-api-formsquotes the README sentence, held byIgnoredOutcomeAnalyzerTests(which pins CMTK0003's Error severity, the pending-assertion reports and a consumer's same-named extension staying silent).Tests
CodoMetis.TypeKit.Oracles.Tests: 51 passed after the merge (27 before). Seeded by rewording the README sentence:OracleCatalogueTests.Every_claim_quotes_its_source_verbatimfailed naming T01; reverted.docs-query check: 0 problems in 843 links.CodoMetis.TypeKit.Conventions.Tests: 1984 passed; the 5 failures read the woven Samples and Probes output, which this run had not built (unrelated to this change; CI builds them).Numbered 0118, after Oracle seeds report CAUGHT and pass when SQL Server fixture initialization fails #151's 0117;
release/2.3.0at1d2c547merged in, with the index rows in order.DesignRecordTests: 121 passed.🤖 Generated with Claude Code