-
-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Summary
Critical: The test harness has extensive implemented functionality that is not accessible through YAML configuration due to missing struct fields. This issue addresses the 12 ready-to-use features that just need YAML exposure.
Background
Investigation revealed that 67% of "missing" features are already fully implemented in the codebase but not exposed through YAML parsing structs. See analysis: cursor_workspace/implemented-vs-missing-analysis.md
Features Ready for YAML Exposure
🟢 Field Validation (FULLY IMPLEMENTED)
Implementation: crates/mandrel-mcp-th/src/validation/jsonpath.rs
contains→ PathConstraint::Containsmin_length→ ArrayLength constraintmax_length→ ArrayLength constraintarray_length→ ArrayLength constraint
🟢 Performance Testing (FULLY IMPLEMENTED)
Implementation: crates/mandrel-mcp-th/src/runner/metrics.rs
performance_tests→ MetricsCollector systemmax_execution_time_ms→ Duration trackingmemory_limit_mb→ Memory monitoring
🟢 Test Dependencies (TRIVIAL FIX)
Implementation: crates/mandrel-mcp-th/src/spec/mod.rs
depends_on→ Already exists asdependencies, needs serde alias
�� Advanced Validation (FULLY IMPLEMENTED)
Implementation: crates/mandrel-mcp-th/src/validation/custom.rs
security_constraints→ Custom validators- Error injection → ValidationError types
Required Changes
File: crates/mandrel-mcp-th/src/spec/mod.rs
1. Update FieldValidation struct
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FieldValidation {
pub field: String,
pub field_type: Option<String>,
pub value: Option<serde_json::Value>,
pub pattern: Option<String>,
pub min: Option<f64>,
pub max: Option<f64>,
// ✅ ADD THESE - Already implemented in validation engine
pub contains: Option<String>, // Maps to PathConstraint::Contains
pub min_length: Option<usize>, // Maps to ArrayLength constraint
pub max_length: Option<usize>, // Maps to ArrayLength constraint
pub array_length: Option<usize>, // Maps to ArrayLength constraint
}2. Update ExpectedOutput struct
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExpectedOutput {
pub fields: Vec<FieldValidation>,
// ✅ ADD THESE - Already implemented in metrics system
pub performance_tests: Option<bool>,
pub max_execution_time_ms: Option<u64>,
pub memory_limit_mb: Option<u64>,
// ✅ ADD THESE - Already implemented in validation engine
pub security_constraints: Option<Vec<SecurityConstraint>>,
}3. Fix TestCase dependencies
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TestCase {
pub name: String,
pub description: Option<String>,
// ✅ ADD ALIAS for YAML compatibility
#[serde(alias = "depends_on")]
pub dependencies: Option<Vec<String>>,
// ... other fields
}4. Add SecurityConstraint type
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SecurityConstraint {
pub constraint_type: String,
pub enabled: bool,
pub parameters: Option<serde_json::Value>,
}Wire-up Required
Update validation logic to use new fields:
crates/mandrel-mcp-th/src/validation/mod.rs- Map new validation fields to PathConstraintcrates/mandrel-mcp-th/src/executor.rs- Apply performance limitscrates/mandrel-mcp-th/src/validation/custom.rs- Enable security constraints
Testing
Update existing YAML examples to use new fields:
crates/mandrel-mcp-th/examples/everything-server.yamlcrates/mandrel-mcp-th/examples/filesystem-server-mcp-compliant.yaml
Validation:
- Run:
cargo run -- validate examples/everything-server.yaml - Ensure all previously "missing" features now work
Success Criteria
- All 12 struct fields added to parsing structs
- YAML examples validate without errors
- Field validation features work (
contains,min_length, etc.) - Performance testing features work (
max_execution_time_ms, etc.) - Dependencies work with
depends_onfield name - Security constraints can be configured
- Updated schema documentation reflects new capabilities
Impact
Unlocks 70% more functionality with minimal implementation effort. Transform test harness from 30% to 90% accessible capability.
References
- Analysis:
cursor_workspace/implemented-vs-missing-analysis.md - Schema:
cursor_workspace/yaml-test-spec.schema.json - Missing features:
cursor_workspace/missing-features-list.md