Rename matcher APIs and prepare breaking releases - #138
Conversation
Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: #9
- Renamed ICriterionMatcher<TArgument> to IMatcher<TArgument> in both C# and C++ implementations - Updated CCriterionMatcher concept to CMatcher in C++ - Updated all references in test files and header includes - Simplified documentation comments to reflect the more generic naming - Maintains the same interface contract with IsMatched(TArgument) method This change improves API clarity by using a simpler, more intuitive name while preserving all existing functionality. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
|
That is breaking change, so we should make sure all versions are updated as required. And everything is done perfectly. Also TArgument is the TCriterion (or what is correct spelling). Or maybe I'm wrong and it is about what is matched, select better working, based on how it actually used in all places in linksplatform repositories. So it is important to work with every detail nicely. May be it is a matching context, meaning it goes to TContext. |
|
🤖 AI Work Session Started Starting automated work session at 2026-09-26T01:57:44.746Z The PR has been converted to draft mode while work is in progress. This comment marks the beginning of an AI work session. Please wait for the session to finish, and provide your feedback. Runtime: solve |
Working session summaryPR #138 is ready for review and mergeable. I resolved the merge conflict, renamed the C# and C++ matcher APIs, chose All PR checks pass, including the check triggered when the PR became ready. Local C# tests (3), C++ tests (8), and Node policy tests (41) also passed. The working tree is clean. This summary was automatically extracted from the AI working session output. |
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost estimation:
📊 Context and tokens usage:
Total: (113.2K + 4.7M cached) input tokens, 18.3K output tokens, $2.616746 cost 🤖 Models used:
📎 Log file uploaded as Gist (2678KB)Now working session is ended, feel free to review and add any feedback on the solution draft. |
🎉 Auto-mergedThis pull request has been automatically merged by hive-mind.
Auto-merged by hive-mind with --auto-merge flag |
Summary
Resolve #9 by renaming the public matcher APIs in both languages:
ICriterionMatcher<TArgument>IMatcher<TCandidate>ICriterionMatcher<TArgument>IMatcher<TCandidate>CCriterionMatcher<TSelf, TArgument>CMatcher<TSelf, TCandidate>IsMatchedkeeps its boolean contract.TCandidatenames the value being tested. Existing consumers pass link addresses or sequence elements as this argument; the matching rule belongs to the matcher. C++ umbrella headers and Visual Studio project entries now reference the renamed headers, and C# package tags reflect the new name.Breaking release and migration
The old public names and header paths are removed. Consumers must update interface/concept names and C++ includes. This is a source-breaking API change, so the C# package moves from
0.5.3to0.6.0and the C++ NuGet package from0.3.43to0.4.0. Both packages have migration notes in their release metadata.Reproduction and verification
On
main, a consumer usingIMatcher<int>orCMatcher<Model, int>cannot compile because those APIs are absent. The updated C# and C++ tests compile against the new names and check that a candidate below a minimum does not match while one at the minimum does.Platform.Interfaces.0.6.0.nupkgvalidated with embedded symbols.git diff origin/main...HEAD --check: passed.The merged package validator also exposed an intermittent
unzip | grep -qfailure underpipefail(reproduced withunzipexit 141 while the requested DLL was present). It now reads the package listing once before checking entries, and the strict validation passes.Fixes #9.
Pull request CI