fix(invariant): restore ACTION scope in merge_invariants and InvariantSet.merge precedence chain #11173

Closed
HAL9000 wants to merge 1 commits from fix/action-scope-inmerge into master

1 Commits

Author SHA1 Message Date
HAL9000 e2a8d1a53d fix(invariant): restore ACTION scope in merge_invariants and InvariantSet.merge precedence chain (#9126)
CI / push-validation (pull_request) Successful in 1m1s
CI / helm (pull_request) Successful in 1m12s
CI / lint (pull_request) Failing after 1m31s
CI / integration_tests (pull_request) Failing after 1m31s
CI / unit_tests (pull_request) Failing after 1m31s
CI / build (pull_request) Failing after 1m31s
CI / typecheck (pull_request) Failing after 1m31s
CI / quality (pull_request) Failing after 1m31s
CI / security (pull_request) Failing after 1m31s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 3s
Updated merge_invariants() and InvariantSet.merge() to accept
action_invariants as a second parameter, restoring the correct
4-tier precedence chain (plan > action > project > global).

Updated InvariantScope docstring, invariant_service.py
get_effective_invariants() with action_name wildcard support.

Added BDD test scenarios for:
- 4-tier merge preserving correct order
- Action invariant overrides project invariant with same text
- Action-level deduplication removes duplicates within tier
- InvariantSet.merge with 4 tiers producing correct result

Updated existing scenarios to include empty action_invariants
tables for backward compatibility.

ISSUES CLOSED: #9126
2026-05-15 01:23:29 +00:00