Develop#229
Merged
Merged
Conversation
RCA: provar_org_describe resolved only <workspace>/.metadata/<connection>/ and parsed native JSON or CustomObject XML, but the Provar IDE writes one <sfObject>/<fields>/<sfField> XML file per object under .metadata/.plugins/com.provar.eclipse.ui/<connection>/<env>/SfObject/, so the dir never existed (silent cache-miss) and the format could not be parsed, yielding field_count:0. Fix: prefer the IDE SfObject layout (new optional environment param, default 'default', with env fallback preferring default), add readSfObjectXml that maps sfField n/type/required attributes with container children excluded and stubs handled, keep legacy JSON/CustomObject parsing, enforce assertPathAllowed on every resolved path, and document the layout, param and cache schema in docs/mcp.md.
RCA: Create-and-verify tests that leave the UiAssert nested under the action=New create screen scored a clean 100 with no warning, because no validator checked whether a verification step sits in the correct post-save screen context. Fix: Added UI-SCREEN-CONTEXT-001 (check.type uiAssertScreenContext, MULTI_VALIDATOR_REGISTRY) with two heuristics over existing XML: UiAssert/UiRead nested under a UiWithScreen whose target URI carries action=New, and any UI action following a Save (locator binding action%3Dsave) within the same substeps block. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
RCA: SfObject parser used @_t (the display label, e.g. "Person (a0D)") as the object name, diverging from the API-name contract the native-JSON cache path and describeSObjectResult follow. Fix: Prefer @_n (the API name) over @_t in readSfObjectXml and update the (k.1) test to assert the API name "provar__Person__c".
…de-cache-layout PDX-515: fix(mcp): read Provar IDE SfObject org-describe cache layout
RCA: The first cut of UI-SCREEN-CONTEXT-001 matched Save via raw substring (action%3dsave) so Save & New false-matched, ran heuristic 2 on every UiWithScreen so post-save steps under Edit/View false-fired, and emitted two violations for one step (assert after Save under New) double-penalising the local score (92.5 not 96.25). Fix: isSaveAction now parses the locator binding and compares the decoded action token exactly to save; heuristic 2 is scoped to action=New only; validateUiAssertScreenContext de-dups to at most one violation per offending testItemId. Added Edit and Save & New false-positive guard tests, locked the bad fixture to one violation and score 96.25, refreshed docs/notes, and bumped version 1.6.2 to 1.6.3. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…creen-context-rule PDX-516: feat(mcp): validate UiAssert screen context (action=New vs View)
RCA: UI-SCREEN-TARGET-001 read the screen target only from element #text, but real Provar IDE test cases store it in the uri= attribute of <value class="uiTarget" uri="..."/>, so the rule never fired on IDE-authored test cases. Fix: validateUiWithScreenTarget now reads via the attribute-aware getUiWithScreenTargetUri reader (uri= first, #text fallback) and the dead #text-only getUiWithScreenTarget helper is deleted. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…item_id RCA: UI-SCREEN-CONTEXT-001 de-duped its two heuristics by parsing the testItemId out of the human-readable violation message, so steps lacking a testItemId all rendered testItemId=N/A and two genuinely-distinct offending steps collided on the shared N/A key and silently merged into one (under-count); any message rewording also broke the dedup. Fix: Added an optional BPViolation.test_item_id field populated by flagAssertsOnNewScreen/flagStepsAfterSave from the offending step's tid, and changed validateUiAssertScreenContext to de-dup on that structured key, treating absent/N/A/empty ids as always-unique so distinct id-less steps no longer merge while same-step double-flags still collapse to one (96.25 parity).
…-dedup-key PDX-517: refactor(mcp): dedup screen-context rule on structured test_item_id
RCA: Activating the attribute reader exposed VALID_SF_UI_PARAMS as incomplete — real CPQ/Billing IDE targets like sf:ui:target?page=SBQQ__sb&pageObject=pageobjects.EditQuote carry no whitelisted key, so UI-SCREEN-TARGET-001 false-fired on 6/133 (4.5%) corpus files once it could see uri= targets. Fix: Corpus-surveyed the real sf:ui:target param keys and added every legitimate one (page, pageObject, flexiPage, flexiPath, recordType, listView, quickAction, relatedList, noOverride); re-scan now reports 0/133 false positives while foo=bar still fires. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…uri-attr PDX-518: fix(mcp): read UiWithScreen target from uri attribute
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.
No description provided.