From cb59ec5cef040b600eba010ff32ab107af75850f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Gro=C3=9F?= Date: Sun, 18 Oct 2026 13:53:58 +0200 Subject: [PATCH] docs: close 2.2.0: the changelog dated, the gate's pass recorded, a declared response kept as declared The 2.2.0 section of CHANGELOG.md is dated 2026-10-18, which the release workflow reads as the release notes, and AnalyzerReleases.Shipped.md gets its empty "Release 2.2.0" section, since the consolidation release ships no rule. Record 0108 and its index row say the gate passed on release/2.2.0 on 2026-10-18, by #62 (declarations, exclusions and rows for the 17 refusals) and #63 (the fix for F4, which C21's regenerated rows raised and the code-analyst confirmed). The AspNetCore README says what the code-analyst's A4 found undocumented and the maintainer decided on 2026-10-18 to keep: a response an endpoint declares itself at a fault status, with Produces(404) or [ProducesResponseType(404)], is kept as declared, and the document adds no problem schema there, though the wire still answers a problem (FaultResponsesOperationTransformer: "A response the operation already has is kept"). Co-Authored-By: Claude Fable 5.1 --- CHANGELOG.md | 2 +- ...e-check-earns-credit-against-a-baseline-and-ws2-closes.md | 2 ++ design/adr/README.md | 2 +- src/CodoMetis.TypeKit.Analyzers/AnalyzerReleases.Shipped.md | 2 ++ src/CodoMetis.TypeKit.AspNetCore/README.md | 5 ++++- 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f935471a..9a9278d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ A version's heading reads `## — Unreleased` until the release is pre the release date. The release workflow refuses a tag whose section still says `Unreleased`, and the section is the GitHub release's notes. -## 2.2.0 — Unreleased +## 2.2.0 — 2026-10-18 ### Fixed diff --git a/design/adr/0108-a-probe-check-earns-credit-against-a-baseline-and-ws2-closes.md b/design/adr/0108-a-probe-check-earns-credit-against-a-baseline-and-ws2-closes.md index 24002634..4f8495b4 100644 --- a/design/adr/0108-a-probe-check-earns-credit-against-a-baseline-and-ws2-closes.md +++ b/design/adr/0108-a-probe-check-earns-credit-against-a-baseline-and-ws2-closes.md @@ -3,6 +3,8 @@ Date: 2026-10-17 Status: accepted +The gate passed on release/2.2.0 on 2026-10-18 (#62: declarations citing this record and KB-042, exclusions with reasons and rows for the 17 refusals; #63: the fix for F4, a nullable value object as a component losing its null, which C21's regenerated rows raised and the code-analyst confirmed). + Context: 2026-10-16 and 2026-10-17, the second workstream (WS2, the harness) of the concept for finding issues with agents, which set out to make the probe corpus (`tools/probe/corpus`) and the prober (`tools/Prober`) find defects mechanically. The gate round of 2026-10-16 that preceded it had written 18 probes and found two product defects and about diff --git a/design/adr/README.md b/design/adr/README.md index 27de2b5a..b4692bc5 100644 --- a/design/adr/README.md +++ b/design/adr/README.md @@ -114,4 +114,4 @@ per area ([design](../plan.md)) link to the records they rest on. | [0105](0105-every-tool-is-built-in-the-session-s-checkout.md) | SessionStart builds the guard in `$CLAUDE_PROJECT_DIR` and every other tool, through `tools/AgentTools.slnf`, in the session's own checkout; a hook, the prober, the smoke test and the verdict fall back to the SDK installer's `dotnet` when the one on PATH lacks the pinned SDK, and a session start that builds nothing tells the agent; the guard lets `dotnet msbuild -getProperty/-getItem` without a target through | 2026-10-17 | accepted | | [0106](0106-a-parameter-of-a-value-object-over-a-described-type-is-inlined.md) | A value object over a type the JSON options describe is written inline as a route, query, header or form parameter and as an element of a query or header array, where value objects are components: the component is its JSON positions'; every other value object keeps its reference; the schema below a parameter is asked for with the parameter's source and type alone | 2026-10-17 | accepted | | [0107](0107-a-cited-fact-is-executable-and-seeds-run-by-footprint.md) | A fact that prunes or excuses a row is executable: `docs-query check` fails `fact-not-executable-cited` where a refused entry, a not-promised entry, an obligation's declaration or the harness cites a fact without its test; a fact's measured answer is `KBNNN.fixture.json` beside its test, named by `fixture:`, read by a BCL-only reader the harness will use; `prober seeds` runs only the probes whose seeds identity or product footprint changed since every seed was caught, and a release runs `--all` | 2026-10-17 | accepted | -| [0108](0108-a-probe-check-earns-credit-against-a-baseline-and-ws2-closes.md) | A probe row runs a check per obligation, each against a baseline, and the ledger credits checks; an excuse is a closed citation, applicability is declared on the obligation, the http, json and text harness compares three sides by exception type and stage, decision 99's refused document among them, and the twins and the context are generated with the shapes; `NoteKeys` keeps its pass keys and `framework-refuses`; `prober fix`, a covering array that places no blocked pair, and `gaps` listing the pairs no passing check read both axes of; WS2 closes, and WS3 to WS6 are dropped | 2026-10-17 | accepted | +| [0108](0108-a-probe-check-earns-credit-against-a-baseline-and-ws2-closes.md) | A probe row runs a check per obligation, each against a baseline, and the ledger credits checks; an excuse is a closed citation, applicability is declared on the obligation, the http, json and text harness compares three sides by exception type and stage, decision 99's refused document among them, and the twins and the context are generated with the shapes; `NoteKeys` keeps its pass keys and `framework-refuses`; `prober fix`, a covering array that places no blocked pair, and `gaps` listing the pairs no passing check read both axes of; WS2 closes, and WS3 to WS6 are dropped | 2026-10-17 | accepted; the gate passed on release/2.2.0 on 2026-10-18 (#62, with the fix #63 for the finding F4 the regenerated C21 rows raised) | diff --git a/src/CodoMetis.TypeKit.Analyzers/AnalyzerReleases.Shipped.md b/src/CodoMetis.TypeKit.Analyzers/AnalyzerReleases.Shipped.md index 270412c6..7721d6b8 100644 --- a/src/CodoMetis.TypeKit.Analyzers/AnalyzerReleases.Shipped.md +++ b/src/CodoMetis.TypeKit.Analyzers/AnalyzerReleases.Shipped.md @@ -61,3 +61,5 @@ CMTK0003 | Usage | Error | Usage | Warning | IgnoredOutcomeAnalyzer, raised in a Rule ID | Category | Severity | Notes --------|----------|----------|------------------------------------------------------------- CMTK0014 | Usage | Warning | UndefinedEnumValueAnalyzer, a FaultKind or ConstructorAccessibility that names no member + +## Release 2.2.0 diff --git a/src/CodoMetis.TypeKit.AspNetCore/README.md b/src/CodoMetis.TypeKit.AspNetCore/README.md index 213386c2..0428cc4a 100644 --- a/src/CodoMetis.TypeKit.AspNetCore/README.md +++ b/src/CodoMetis.TypeKit.AspNetCore/README.md @@ -250,7 +250,10 @@ app.MapDelete("/orders/{id}", (OrderId id) => orders.Cancel(id).ToHttpResult()); - **The document shows it too.** The endpoint's return type is ASP.NET's own `Results, FaultProblem>`, so the operation describes the value. `AddTypeKit()` adds a problem response for every status the error type is mapped to, as - `ProducesProblem` would. An MVC action returning the same type is described the same way. + `ProducesProblem` would. An MVC action returning the same type is described the same way. A + response you declare yourself at one of those statuses, with `Produces(404)` or + `[ProducesResponseType(404)]`, is kept as you declared it: the document doesn't add the problem + schema there, though the wire still answers a problem. - **It's not a wire format.** The `Result` is matched to a response, not serialized. Returning the `Result` itself from a handler is still rejected, and the document would promise a `Result`. - **It changes every error response of the host, not only these.** `AddFaultResponses` calls