Skip to content

docs: an Error may learn, in a minor version, a form only that version's new API writes - #156

Merged
CaffeinatedCoder merged 4 commits into
release/2.3.0from
docs/cmtk0003-new-api-forms
Oct 29, 2026
Merged

CaffeinatedCoder merged 4 commits into
release/2.3.0from
docs/cmtk0003-new-api-forms

Conversation

@CaffeinatedCoder

@CaffeinatedCoder CaffeinatedCoder commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

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.Testing on a Task or ValueTask left without await (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.md and 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's ConfigureAwait, WaitAsync and 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.
  • 2.3.0's one exception, taken by the maintainer: CMTK0003 misses a Task.WhenAny of Result tasks dropped without await #159, a dropped Task.WhenAny of tasks of results, which 2.2.0 code can contain. Decision 118, its index row, design/analyzers.md and 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-forms quotes the README sentence, held by IgnoredOutcomeAnalyzerTests (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_verbatim failed 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.0 at 1d2c547 merged in, with the index rows in order. DesignRecordTests: 121 passed.

🤖 Generated with Claude Code

…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>
CaffeinatedCoder and others added 3 commits October 29, 2026 16:25
#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>
@CaffeinatedCoder
CaffeinatedCoder merged commit 5ee8068 into release/2.3.0 Oct 29, 2026
11 checks passed
@CaffeinatedCoder
CaffeinatedCoder deleted the docs/cmtk0003-new-api-forms branch October 29, 2026 17:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation package/analyzers Affects CodoMetis.TypeKit.Analyzers package/testing Affects CodoMetis.TypeKit.Testing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant