Files
temp/features/tdd_exec_env_resolution_precedence.feature
freemo 56f424714c fix(tdd): replace non-standard @tdd_bug tags with @tdd_issue per CONTRIBUTING.md
Audit all feature files for non-compliant @tdd_bug tag usage and replace
with the CONTRIBUTING.md-specified @tdd_issue / @tdd_issue_<N> tags.

Three files were affected:

- features/tdd_actor_list_no_db_update.feature:
  @tdd_bug @tdd_bug_797 → @tdd_issue @tdd_issue_797
  (bug #797 is fixed; permanent regression guard, no @tdd_expected_fail)

- features/tdd_exec_env_resolution_precedence.feature:
  Removed duplicate @tdd_bug @tdd_bug_1080 tags; file already had the
  correct @tdd_issue @tdd_issue_1080 tags.

- features/tdd_use_action_automation_profile.feature:
  @tdd_bug @tdd_bug_1076 → @tdd_issue @tdd_issue_1076
  (bug #1076 is fixed in upstream; @tdd_expected_fail not needed)

Zero occurrences of @tdd_bug or @tdd_bug_<N> remain in features/.
All nox quality gates pass: lint   unit_tests  (14426 scenarios passed).

ISSUES CLOSED: #2779
2026-04-05 09:09:06 +00:00

48 lines
2.6 KiB
Gherkin

@tdd_issue @tdd_issue_1080 @mock_only
Feature: TDD Bug #1080 — execution environment resolution ignores project-level override
As a developer
I want execution environment resolution to honour the 6-level precedence chain
So that project-level overrides (precedence level 2) take effect correctly
# Bug #1080: The ExecutionEnvironmentResolver uses a flat priority chain
# (tool > plan > project > default) that does not distinguish between
# "override" and "fallback" priority semantics. Per the spec (§Execution
# Environment Routing), the correct 6-level precedence is:
#
# 1. Plan-level with priority: override
# 2. Project-level with priority: override
# 3. Nearest-ancestor devcontainer (auto-detected)
# 4. Plan-level with priority: fallback
# 5. Project-level with priority: fallback
# 6. Host (default)
#
# The critical failure: when a project has execution_environment set with
# priority "override" and a plan has execution_environment set with
# priority "fallback", the plan incorrectly wins because the resolver
# treats all plan-level settings as higher priority than project-level.
#
# This test captures the bug by asserting the CORRECT precedence behavior.
# The @tdd_expected_fail tag on the bug-capturing scenario inverts the
# result: the assertion fails (proving the bug exists) but CI reports it
# as passed. When bug #1080 is fixed, the @tdd_expected_fail tag must
# be removed.
#
# The @mock_only tag restricts this feature to in-process mock execution;
# it does not require any external services or container infrastructure.
@tdd_expected_fail
Scenario: Bug #1080 - Project-level override beats plan-level fallback (precedence level 2 vs 4)
Given a precedence-aware execution environment resolver
When I resolve precedence with plan env "host" at priority "fallback" and project env "container" at priority "override"
Then the precedence-resolved environment should be "container"
Scenario: Regression guard - Plan-level override still beats project-level override (precedence level 1 vs 2)
Given a precedence-aware execution environment resolver
When I resolve precedence with plan env "host" at priority "override" and project env "container" at priority "override"
Then the precedence-resolved environment should be "host"
Scenario: Regression guard - Project-level override beats host default (precedence level 2 vs 6)
Given a precedence-aware execution environment resolver
When I resolve precedence with no plan env and project env "container" at priority "override"
Then the precedence-resolved environment should be "container"