# MVP Acceptance Test Checklist ## Pre-requisites - [ ] Docker and Docker Compose installed - [ ] LLM API key configured in `.env` - [ ] All containers running (`docker-compose up -d`) ## Test Scenarios ### Scenario 1: Basic Query Flow 1. [ ] Open http://localhost:3000 2. [ ] Type: "Show all customers" 3. [ ] Verify workflow created message appears 4. [ ] Verify graph visualization updates 5. [ ] Wait for results (may take 5+ minutes due to pauses) 6. [ ] Verify table with customer data appears 7. [ ] Verify SQL query is displayed ### Scenario 2: Human Intervention 1. [ ] Start new query: "Count all orders" 2. [ ] During the 5-minute pause (watch agent logs) 3. [ ] Open Neo4j Browser: http://localhost:7474 4. [ ] Run query: `MATCH (i:Instruction {status: 'pending', type: 'generate_sql'}) RETURN i` 5. [ ] Edit instruction: `SET i.parameters = '{"question": "Count orders with status completed"}'` 6. [ ] Verify agent uses modified query after pause 7. [ ] Verify results reflect the change ### Scenario 3: Stop Workflow 1. [ ] Start query: "Find expensive orders" 2. [ ] Click STOP button during execution 3. [ ] Verify workflow stops 4. [ ] Check Neo4j: `MATCH (w:Workflow) RETURN w.status` shows 'stopped' ### Scenario 4: Graph Visualization 1. [ ] Start any query 2. [ ] Verify workflow node appears (blue/gray) 3. [ ] Verify instruction nodes appear 4. [ ] Verify colors change: - Gray = pending - Yellow = executing - Green = complete 5. [ ] Click on node shows properties ### Scenario 5: Audit Trail 1. [ ] After running queries, open Neo4j Browser 2. [ ] Run: `MATCH (l:Log) RETURN l ORDER BY l.timestamp DESC LIMIT 10` 3. [ ] Verify all MCP operations are logged 4. [ ] Run: `MATCH (e:Execution) RETURN e` 5. [ ] Verify all executions have results ## Performance Checks - [ ] Agent processes instructions within 30 seconds of becoming available - [ ] Frontend responds within 1 second - [ ] Graph updates within 10 seconds - [ ] No memory leaks after 10+ queries ## Data Validation Run these queries in Neo4j Browser: ```cypher // Check schema discovered MATCH (t:Table) RETURN t.name // Check instructions executed MATCH (i:Instruction)-[:EXECUTED_AS]->(e:Execution) RETURN i.type, i.status, e.completed_at // Check successful SQL generation MATCH (qt:QueryTemplate) RETURN qt.query, qt.created_at ORDER BY qt.created_at DESC LIMIT 5 // Check workflow completion rate MATCH (w:Workflow) RETURN w.status, count(w) as count ``` ## Sign-off - [ ] All test scenarios pass - [ ] No errors in container logs - [ ] System recovers from agent restart - [ ] Clean startup from `docker-compose down && docker-compose up -d` **Tester:** _________________ **Date:** _________________ **Version:** MVP 1.0 --- ## Final validation commands: ```bash # Complete test sequence docker-compose down docker-compose up -d sleep 10 # Check health curl -s http://localhost:8000/health && echo "MCP: OK" curl -s http://localhost:3000 > /dev/null && echo "Frontend: OK" # Seed data docker-compose exec mcp python /app/ops/scripts/seed.py # Run automated validation docker-compose exec mcp python /app/ops/scripts/validate.py # Run demo bash ops/scripts/demo.sh # In another terminal, watch all logs docker-compose logs -f # Manual test in another terminal curl -X POST http://localhost:8000/mcp \ -H "Content-Type: application/json" \ -H "X-API-Key: dev-key-123" \ -d '{ "tool": "write_graph", "params": { "action": "create_node", "label": "Instruction", "properties": { "id": "final-test", "type": "generate_sql", "status": "pending", "sequence": 999, "pause_duration": 30, "parameters": "{\"question\": \"What is the total revenue from all orders?\"}" } } }' # Check execution after ~30 seconds curl -X POST http://localhost:8000/mcp \ -H "Content-Type: application/json" \ -H "X-API-Key: dev-key-123" \ -d '{ "tool": "query_graph", "params": { "query": "MATCH (i:Instruction {id: \"final-test\"})-[:EXECUTED_AS]->(e:Execution) RETURN e.result" } }' ```