Use when you need to promote ui-inspect proposal artifacts into runtime POM code with project naming, locator policy, and a publish-time approval gate.
core_version=ui-inspect-core-v1locator_policy, naming_policy, promotion_policy, runtime_patterns).sourcetargetapproval-ref$ui-inspect-promote source:<proposal-root-dir> target:<page-key> approval-ref:<chat-or-ticket-id>
$ui-inspect-promote source:output/ui-inspection/<yyyy.MM.dd>/<timestamp>-<label>-proposal target:<page-key> approval-ref:<chat-or-ticket-id>
ui-inspect; any flow artifact creation requires explicit user approval.sections, contracts) are generator outputs; promotion into runtime code must follow project governance and explicit publish/runtime approval.runtime_patterns.login_page_path as the canonical login runtime path and avoid duplicate login scaffolds.runtime_patterns.base_page_path as the canonical shared page helper reference.runtime_patterns.login_page_path as the reference example for new or refactored page objects:
BasePage helper-first interactionsset...click...verify...navigateTo...runCommand(...) names aligned with public method namesid-anchored locators for navigation when available; when id is on container nodes (for example li[id='...']), anchor selectors to the structural node and target its actionable child.Checks); prefer structural id anchoring.runtime_patterns.base_page_path, not duplicated in each page/section class.runtime_patterns.messages_root and follow the profile strategy (current standard: flat messages folder).error, success, warning, info (as const) plus <Page>MessageKind.ui-project-profile (locator_policy, naming_policy, promotion_policy) instead of hardcoded project-specific behavior.locator_policy.test_attribute_priority is configured, promotion must preserve the approved locator choice derived from that ordered policy instead of hardcoding a single test attribute convention.locator_policy.test_attribute_priority is omitted or empty, promotion should not introduce custom test-attribute-specific behavior.runtime_patterns.base_page_path.runtime_patterns.base_page_path by default; POM classes should only keep interaction logic when it is page-specific and not safely generalizable.runtime_patterns.base_page_path requires an explicit exception note with rationale and scope.runtime_patterns.base_page_path already provides the same behavior.new shared helper needed checkpoint before any implementation.runtime_patterns.base_page_path or another approved shared helper file), exact page-specific gap it solves, and why a local wrapper is not acceptable.EFIN vs Efin).EditPolicyUtils) must not host UI locator resolution by default.<PageName>HeaderSection.index.ts barrel files unless explicitly approved or the folder is an intentional public boundary.messages/<PageName>Messages.proposal.ts in proposal output; runtime message modules live under runtime_patterns.messages_root using the profile folder strategy).runtime_patterns.login_page_path remains the source of truth.runtime_patterns.base_page_path and preserve the consumer repo's profile/env conventions.runtime_patterns.base_page_path is insufficient.typecheck, playwright --list, and profile contract where applicable).npm run ui:inspect:profile:contractnpm run typechecknpx playwright test --listmapped*, first*).BasePage/shared helpers and explicit exceptions list.BasePage or shared-helper reuse was sufficient.