77 lines
4.4 KiB
Gherkin
77 lines
4.4 KiB
Gherkin
Feature: Predictive Error Prevention — Layer 4 Error Pattern Database
|
|
As a plan executor
|
|
I want historical failure patterns to be consulted before execution
|
|
So that preventive guidance prevents recurring errors
|
|
|
|
Scenario: pep-record Recording a new failure pattern creates an entry
|
|
Given a fresh error pattern service
|
|
When I record a failure with pattern "Race condition in payment module" and failure "Payment confirmation timeout"
|
|
Then the error pattern database should contain 1 pattern
|
|
And the pattern should have frequency 1
|
|
|
|
Scenario: pep-record Recording the same pattern again increments frequency
|
|
Given a fresh error pattern service
|
|
When I record a failure with pattern "Race condition in payment module" and failure "Payment confirmation timeout"
|
|
And I record a failure with pattern "Race condition in payment module" and failure "Idempotency key collision"
|
|
Then the error pattern database should contain 1 pattern
|
|
And the pattern should have frequency 2
|
|
And the pattern should have 2 historical failures
|
|
|
|
Scenario: pep-match Matching context text against known patterns returns guidance
|
|
Given a fresh error pattern service
|
|
And a recorded pattern "Async conversion" with preventive check "Add explicit transaction boundaries"
|
|
When I match context "We need to perform async conversion in the payment module"
|
|
Then preventive guidance should contain "Add explicit transaction boundaries"
|
|
|
|
Scenario: pep-match No matching patterns returns empty guidance
|
|
Given a fresh error pattern service
|
|
And a recorded pattern "Async conversion" with preventive check "Add transaction boundaries"
|
|
When I match context "Simple refactoring of the UI component"
|
|
Then preventive guidance should be empty
|
|
|
|
Scenario: pep-format Preventive guidance formats for actor context
|
|
Given a fresh error pattern service
|
|
And a recorded pattern "Memory leak" with preventive check "Check resource cleanup"
|
|
And a recorded pattern "Memory leak" with preventive check "Verify dispose patterns"
|
|
When I match context "Fix the memory leak in the cache service"
|
|
Then the formatted guidance should contain "PREVENTIVE GUIDANCE"
|
|
And the formatted guidance should contain "Check resource cleanup"
|
|
|
|
Scenario: pep-stats Statistics report pattern counts
|
|
Given a fresh error pattern service
|
|
And a recorded pattern "Race condition" with preventive check "Add locks"
|
|
And a recorded pattern "Memory leak" with preventive check "Check cleanup"
|
|
When I request error pattern statistics
|
|
Then the statistics should show 2 total patterns
|
|
|
|
Scenario: pep-extract Keywords are automatically extracted from pattern text
|
|
Given a fresh error pattern service
|
|
When I record a failure with pattern "Race condition in payment processing module" and failure "Timeout"
|
|
Then the recorded pattern should have keywords including "race"
|
|
And the recorded pattern should have keywords including "payment"
|
|
|
|
Scenario: pep-multi Multiple patterns match and checks are deduplicated
|
|
Given a fresh error pattern service
|
|
And a recorded pattern "async conversion" with preventive check "Add transaction boundaries" and keywords "async,conversion"
|
|
And a recorded pattern "async timeout" with preventive check "Add retry logic" and keywords "async,timeout"
|
|
When I match context "Handle async conversion with proper timeout handling"
|
|
Then preventive guidance should contain "Add transaction boundaries"
|
|
And preventive guidance should contain "Add retry logic"
|
|
|
|
Scenario: pep-repo-get Repository get returns pattern by ID
|
|
Given a fresh error pattern service
|
|
When I record a failure with pattern "Test pattern" and failure "Test failure"
|
|
Then the recorded pattern can be retrieved by its ID
|
|
|
|
Scenario: pep-repo-delete Repository delete removes a pattern
|
|
Given a fresh error pattern service
|
|
When I record a failure with pattern "Deletable pattern" and failure "Will be deleted"
|
|
And I delete the last recorded pattern
|
|
Then the error pattern database should contain 0 patterns
|
|
|
|
Scenario: pep-fallback-match Pattern without keywords matches by description
|
|
Given a fresh error pattern service
|
|
And a recorded pattern with no keywords for "timeout error" with check "Add timeout handling"
|
|
When I match context "We encountered a timeout error in production"
|
|
Then preventive guidance should contain "Add timeout handling"
|