# Test Plan — Orto Skills Suite **Date:** 2026-03-06 **Objective:** Validate all 9 skills before packaging --- ## Test Strategy ### Level 1: Unit Tests (Individual Skills) - Input validation - Output schema correctness - Edge cases + fallbacks - References loading ### Level 2: Integration Test (Full Pipeline) - End-to-end: init → onboarding → {7 skills} → orchestratore - Conflict detection + resolution - Data merge coherence - Audit trail logging ### Level 3: Smoke Test (Real Garden) - Instantiate 1 test garden (Roma) - Run full pipeline - Verify all markdown outputs readable - Check no blocking errors --- ## Test Case: Roma Garden (Centro Zone) **Input Profile:** ``` Orto ID: orto_roma_test_001 Name: Orto Test Roma Province: Roma Region: Lazio Latitude: 41.8782 Longitude: 12.4922 Area: 50 m² Diet: Misto (vegetariano friendly) People: 4 Experience: Dilettante Time: 5h/week ``` **Expected Outputs:** - ✓ GardenConfig (zone=centro, frost dates, etc.) - ✓ CommunityProfile (4 people, misto diet, 5h/week) - ✓ Piano Colture (12 crop varieties) - ✓ Calendario Operativo (52 weeks × 3-5 tasks/week) - ✓ Layout (aiuole A1-A4 + zones) - ✓ Irrigazione (3 zones + baseline schedule) - ✓ Meteo Brief (weekly forecast + decisions) - ✓ PlanBundle (merged, conflicts resolved) --- ## Test Checklist ### Unit: orto-init - [ ] Dir created: `/Orti/orto_roma_test_001/` - [ ] Files exist: config/, dati/, log/, media/, report/ - [ ] Registry updated: `orti_registry.json` - [ ] Audit entry logged ### Unit: orto-onboarding - [ ] 5 blocchi created (template) - [ ] GardenConfig updated - [ ] CommunityProfile created - [ ] Validation passes (all mandatory fields) ### Unit: orto-agronomo - [ ] Piano colture has 12+ crops - [ ] Crops match diet (misto) - [ ] Rotation rules applied - [ ] Rese estimate coherent ### Unit: orto-calendario - [ ] Calendar has 52 weeks - [ ] Tasks seasonal (semina, trapianto, raccolta) - [ ] Meteo-sensitive tags present (~40) - [ ] No task overlap (same bed same time) ### Unit: orto-irrigazione - [ ] 3 zones defined (ALTA, MEDIA, BASSA) - [ ] Emitters specified per zone - [ ] Baseline schedule ≤ water available - [ ] Automation rules coherent ### Unit: orto-meteo-decisioni - [ ] Forecast fetched (wttr.in or fallback) - [ ] Water balance calculated - [ ] Decisions generated (skip/irrigate/increase) - [ ] Alerts triggered (if frost/heat/wind) ### Unit: orto-fitopatologo - [ ] Malattie_trattamenti reference loaded - [ ] Example diagnosi scored (confidence > 0.70) - [ ] Treatment DPI documented - [ ] Preventive schedule defined ### Unit: orto-layout - [ ] Aiuole A1-A4 assigned - [ ] Consociazioni positive > antagonismi - [ ] Accessibility paths ≥ 0.5m - [ ] Water zones match irrigazione ### Unit: orto-orchestratore - [ ] All skill outputs loaded - [ ] Conflicts detected (expected 2-3) - [ ] Conflicts resolved (policies applied) - [ ] QA score ≥ 0.80 - [ ] PlanBundle merged + coherent ### Integration: Full Pipeline - [ ] Init → Onboarding → Agronomo: OK - [ ] Calendario + Layout + Irrigazione: OK - [ ] Meteo + Fitopatologo: OK - [ ] Orchestratore merge: OK - [ ] Weekly briefing generated: OK - [ ] No data loss between steps ### Smoke: Real Output - [ ] All markdown files readable - [ ] No JSON errors (markdown-only) - [ ] Audit trail complete - [ ] Dates coherent (frost dates match zone) - [ ] Water balance realistic (10k L/season ~correct) --- ## Pass/Fail Criteria | Test | Pass | Fail | |------|------|------| | Unit tests (8 skills) | 8/8 pass | Any fail → fix + retest | | Integration | All outputs present, no data loss | Missing output OR conflict unresolved | | Smoke | Roma garden complete, no errors | Blocking error OR incoherent output | **Overall:** Pass if all 3 levels pass. Return here if any fail. --- ## Timeline - Step 1: Unit tests (30 min) - Step 2: Integration test (30 min) - Step 3: Smoke test (20 min) - Total: ~80 min