fix(spec): resolve AmbiguousStep conflict in milestone navigation BDD tests
CI / benchmark-publish (pull_request) Has been skipped
CI / helm (pull_request) Successful in 34s
CI / build (pull_request) Successful in 44s
CI / push-validation (pull_request) Successful in 29s
CI / quality (pull_request) Successful in 1m6s
CI / lint (pull_request) Failing after 1m8s
CI / typecheck (pull_request) Successful in 1m18s
CI / security (pull_request) Successful in 1m27s
CI / coverage (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Has been skipped
CI / e2e_tests (pull_request) Successful in 3m29s
CI / integration_tests (pull_request) Failing after 4m7s
CI / unit_tests (pull_request) Failing after 6m35s
CI / docker (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 3s

Rename generic step 'the content should contain' to 'the spec should
contain' in the milestone plan navigation feature file and add the
corresponding step definition in milestone_plan_navigation_steps.py.

The previous fix removed the duplicate step definition from
milestone_plan_navigation_steps.py, but left the feature file using
the step from uko_ontology_registry_steps.py which reads from
context.ontology_ttl_content instead of context.spec_content. This
caused all milestone navigation scenarios to fail with an
AttributeError at runtime.

The new 'the spec should contain' step reads from context.spec_content
and is unique to the milestone navigation step file, eliminating the
AmbiguousStep conflict entirely.

ISSUES CLOSED: #7564
This commit is contained in:
2026-05-05 16:10:21 +00:00
parent a3d410618a
commit bd4072c6cf
2 changed files with 34 additions and 25 deletions
@@ -8,8 +8,8 @@ Feature: Milestone Plan Navigation Section
Scenario: Milestone Plan Navigation section exists
When I read the specification file
Then the content should contain "### Milestone Plan Navigation"
And the content should contain "This navigation section provides a quick reference"
Then the spec should contain "### Milestone Plan Navigation"
And the spec should contain "This navigation section provides a quick reference"
Scenario: Navigation table includes all milestones v3.2.0 through v3.8.0
When I read the specification file
@@ -23,43 +23,43 @@ Feature: Milestone Plan Navigation Section
Scenario: v3.2.0 milestone has explicit acceptance criteria
When I read the specification file
Then the content should contain "### v3.2.0 Decisions + Validations + Invariants"
And the content should contain "#### Deliverables"
And the content should contain "#### Key Architectural Constraints"
And the content should contain "#### Definition of Done"
Then the spec should contain "### v3.2.0 Decisions + Validations + Invariants"
And the spec should contain "#### Deliverables"
And the spec should contain "#### Key Architectural Constraints"
And the spec should contain "#### Definition of Done"
Scenario: v3.6.0 milestone lists explicit acceptance criteria
When I read the specification file
Then the content should contain "### v3.6.0 Advanced Concepts & Deferred Features"
And the content should contain "#### Deliverables"
And the content should contain "#### Key Architectural Constraints"
And the content should contain "#### Definition of Done"
Then the spec should contain "### v3.6.0 Advanced Concepts & Deferred Features"
And the spec should contain "#### Deliverables"
And the spec should contain "#### Key Architectural Constraints"
And the spec should contain "#### Definition of Done"
Scenario: v3.8.0 milestone is documented
When I read the specification file
Then the content should contain "### v3.8.0 Server Mode + Cloud Integration"
Then the spec should contain "### v3.8.0 Server Mode + Cloud Integration"
And the content should contain "Server Mode + Cloud Integration" in the milestone status
Scenario: Navigation by Feature index exists
When I read the specification file
Then the content should contain "**Navigation by Feature**:"
And the content should contain "Plan Lifecycle"
And the content should contain "Context Management"
And the content should contain "User Interface"
And the content should contain "Execution Environment"
And the content should contain "Quality & Testing"
Then the spec should contain "**Navigation by Feature**:"
And the spec should contain "Plan Lifecycle"
And the spec should contain "Context Management"
And the spec should contain "User Interface"
And the spec should contain "Execution Environment"
And the spec should contain "Quality & Testing"
Scenario: Milestone Plan section covers v3.2.0 through v3.8.0
When I read the specification file
Then the content should contain "This plan covers v3.2.0 through v3.8.0"
Then the spec should contain "This plan covers v3.2.0 through v3.8.0"
And the content should NOT contain "This plan covers v3.2.0 through v3.7.0"
Scenario: Each milestone has spec coverage links
When I read the specification file
Then the content should contain "[Decision Tree](#decision-tree-and-correction)"
And the content should contain "[Subplan Architecture](#subplan-architecture)"
And the content should contain "[ACMS Architecture](#acms-advanced-context-management-system)"
And the content should contain "[Automation Profiles](#automation-profiles)"
And the content should contain "[LSP Integration](#lsp-integration)"
And the content should contain "[TUI Architecture](#tui)"
And the content should contain "[Server Architecture](#server-and-client-architecture)"
Then the spec should contain "[Decision Tree](#decision-tree-and-correction)"
And the spec should contain "[Subplan Architecture](#subplan-architecture)"
And the spec should contain "[ACMS Architecture](#acms-advanced-context-management-system)"
And the spec should contain "[Automation Profiles](#automation-profiles)"
And the spec should contain "[LSP Integration](#lsp-integration)"
And the spec should contain "[TUI Architecture](#tui)"
And the spec should contain "[Server Architecture](#server-and-client-architecture)"
@@ -22,6 +22,15 @@ def step_read_specification_file(context: Any) -> None:
context.spec_content = f.read()
@then('the spec should contain "{text}"')
def step_spec_should_contain(context: Any, text: str) -> None:
"""Verify the specification contains the given text."""
assert hasattr(context, "spec_content"), "Specification content not loaded"
assert text in context.spec_content, (
f"Text not found in specification: {text}"
)
@then('the content should contain a table with milestone "{milestone}"')
def step_content_contains_milestone_in_table(context: Any, milestone: str) -> None:
"""Verify the specification contains a milestone in a table."""