[Lean Squad] feat(fv): Task 2 — informal spec for TreeNodeFilter.MatchFilterPattern#7934
Conversation
Extract precise informal specification for MatchFilterPattern, the core Boolean evaluator of the TreeNodeFilter subsystem. The spec covers: - FilterExpression taxonomy (leaf/nop/and/or/not/withProps) - Boolean algebra invariants (12 properties: double negation, De Morgan, commutativity, vacuous cases, Nop identity/absorption) - Regex semantics for value tokens (* → .*, ** sentinel, escaping) - MatchesFilter public entry point postcondition - Edge cases (empty bag, URL-encoded slashes, case-insensitive matching) - 6 open questions for maintainer review Advances Target 7 from phase 1 to phase 2. 🔬 Lean Squad — automated FV agent Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
@copilot resolve the merge conflicts in this pull request |
…nodefilter-2026-04-27-937a4dc0191e83e2 # Conflicts: # formal-verification/TARGETS.md Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds a formal-verification (FV) Phase 2 informal specification for TreeNodeFilter.MatchFilterPattern, and updates the FV target tracker to reflect the new phase for Target 7.
Changes:
- Added an informal spec document describing
MatchFilterPattern/MatchesFiltersemantics, boolean-algebra invariants, and token/regex behavior. - Updated
formal-verification/TARGETS.mdto advance Target 7 from phase 1 → phase 2.
Show a summary per file
| File | Description |
|---|---|
| formal-verification/specs/treenodefilter_matchfilterpattern_informal.md | New Phase 2 informal specification for the TreeNodeFilter evaluator and related semantics. |
| formal-verification/TARGETS.md | Updates Target 7 status to “Informal spec extracted” (phase 2). |
Copilot's findings
Comments suppressed due to low confidence (1)
formal-verification/specs/treenodefilter_matchfilterpattern_informal.md:168
- This claims
NopExpressionis "used internally" as a match-anything sentinel, but there are currently no call sites constructingNopExpressionin the TreeNodeFilter parser (and a repo-wide search doesn't findnew NopExpression(...)). Consider rephrasing this as an observed evaluator case / legacy hook, or explicitly noting that it is currently not constructed byParseFilter.
3. **NopExpression as always-true sentinel**: Used internally to represent a "match anything" node in the filter tree. Its `evalFilter(nop, ·) = true` property makes it the identity element for `And` and the absorbing element for `Or`.
- Files reviewed: 1/1 changed files
- Comments generated: 2
|
@copilot address review comments |
…ter postcondition Agent-Logs-Url: https://github.com/microsoft/testfx/sessions/00b2d656-9287-4083-8237-bd8df9f9099c Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>
Addressed in cd3b027:
|
…er postcondition The MatchesFilter implementation unwraps ValueAndPropertyExpression to inspect the inner Value when checking for the multi-level wildcard (.*.*). Update §10 behaviour step 4 and the formal postcondition to reflect this with an explicit unwrapValue helper.
Extract precise informal specification for MatchFilterPattern, the core Boolean evaluator of the TreeNodeFilter subsystem.
The spec covers:
Advances Target 7 from phase 1 to phase 2.
🔬 Lean Squad — automated FV agent
Fixes #7875