Skip to content

Develop#229

Merged
mrdailey99 merged 11 commits into
mainfrom
develop
Jun 24, 2026
Merged

Develop#229
mrdailey99 merged 11 commits into
mainfrom
develop

Conversation

@mrdailey99

Copy link
Copy Markdown
Collaborator

No description provided.

mrdailey99 and others added 11 commits June 24, 2026 10:05
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
@mrdailey99 mrdailey99 merged commit 754e537 into main Jun 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant