UNPKG

claude-flow-novice

Version:

Claude Flow Novice - Advanced orchestration platform for multi-agent AI workflows with CFN Loop architecture Includes Local RuVector Accelerator and all CFN skills for complete functionality.

599 lines (482 loc) 14.6 kB
# Consensus on Vapor Detection - Examples Comprehensive examples of vapor detection in action. --- ## Example 1: Simple Vapor Detection ### Scenario Agent completes task but key files are missing. ### Agent Output ``` Task completed successfully! Created the following files: - src/user-auth.ts - src/user-auth.spec.ts All tests passed. Ready for review. ``` ### Expected Deliverables ```typescript const expected = [ 'src/user-auth.ts', 'src/user-auth.spec.ts', 'dist/user-auth.js' ]; ``` ### Detection ```typescript const validator = new CFNValidator({ mode: 'standard', taskId: 'task-1' }); const vapor = await validator.detectConsensusOnVapor(agentOutput, expected); // Result console.log(vapor); // { // detected: true, // claimsCompletion: true, // Claims "completed" // deliverablesMissing: true, // dist/user-auth.js missing // missingDeliverables: ['dist/user-auth.js'], // confidence: 0.33, // 1 of 3 files missing // agentOutput: '...truncated...' // } ``` ### Action ``` Status: VAPOR DETECTED Confidence: 33% Feedback: Create dist/user-auth.js and retry Decision: ITERATE (don't proceed to Loop 2) ``` --- ## Example 2: High Confidence Vapor ### Scenario Agent claims to have created 4 key files but only 1 exists. ### Agent Output ``` Implementation complete! Summary of work: Created api/auth.ts Created api/database.ts Created tests/auth.test.ts Created tests/database.test.ts All systems ready for deployment. ``` ### Expected Deliverables ```typescript const expected = [ 'src/api/auth.ts', 'src/api/database.ts', 'src/tests/auth.test.ts', 'src/tests/database.test.ts' ]; ``` ### Detection ```typescript const vapor = await validator.detectConsensusOnVapor(agentOutput, expected); console.log(vapor); // { // detected: true, // claimsCompletion: true, // Claims "complete" // deliverablesMissing: true, // 3 of 4 missing // missingDeliverables: [ // 'src/api/database.ts', // 'src/tests/auth.test.ts', // 'src/tests/database.test.ts' // ], // confidence: 0.75, // 3 of 4 missing = 75% confidence // agentOutput: '...truncated...' // } ``` ### Action ``` Status: VAPOR DETECTED (HIGH CONFIDENCE) Confidence: 75% Missing Count: 3 of 4 files Feedback: Create these files and retry: - src/api/database.ts - src/tests/auth.test.ts - src/tests/database.test.ts Decision: ITERATE (must complete work before Loop 2 review) ``` --- ## Example 3: No Vapor - All Files Present ### Scenario Agent completes task and all files actually exist. ### Agent Output ``` Feature implementation finished successfully. Created files: - middleware/auth.ts - tests/middleware-auth.test.ts All tests passing. Ready for validator review. ``` ### Expected Deliverables ```typescript const expected = [ 'src/middleware/auth.ts', 'tests/middleware-auth.test.ts' ]; // Files actually exist in filesystem fs.existsSync('src/middleware/auth.ts'); // true fs.existsSync('tests/middleware-auth.test.ts'); // true ``` ### Detection ```typescript const vapor = await validator.detectConsensusOnVapor(agentOutput, expected); console.log(vapor); // { // detected: false, // No vapor detected // claimsCompletion: true, // Agent claims completion // deliverablesMissing: false, // But files DO exist // missingDeliverables: [], // No missing files // confidence: 0.0, // 0% confidence (no vapor) // agentOutput: '...truncated...' // } ``` ### Action ``` Status: OK - NO VAPOR Agent claims: Verified Deliverables: All present Next: Proceed to Loop 2 (validators can review) Decision: PROCEED ``` --- ## Example 4: No Completion Claim - No Vapor ### Scenario Agent doesn't claim completion, so no vapor possible. ### Agent Output ``` Working on user authentication... Completed so far: - Analyzed requirements - Started implementation in progress-auth.ts - Tests pending Status: In Progress (50%) ``` ### Expected Deliverables ```typescript const expected = [ 'src/auth.ts', 'tests/auth.test.ts', 'dist/auth.js' ]; ``` ### Detection ```typescript const vapor = await validator.detectConsensusOnVapor(agentOutput, expected); console.log(vapor); // { // detected: false, // No vapor // claimsCompletion: false, // Agent doesn't claim completion // deliverablesMissing: true, // Files missing, but... // missingDeliverables: [ // 'src/auth.ts', // 'tests/auth.test.ts', // 'dist/auth.js' // ], // confidence: 0.0, // 0% confidence (no vapor because no claims) // agentOutput: '...truncated...' // } ``` ### Action ``` Status: OK - IN PROGRESS Agent hasn't claimed completion, so no vapor Missing files are expected (work not done yet) Next: Loop 3 retries until completion claimed Decision: ITERATE (normal retry, not vapor) ``` --- ## Example 5: Partial Vapor - Some Keywords, Some Files ### Scenario Agent uses completion keywords but only partially completed task. ### Agent Output ``` Feature finished! Summary: - Main authentication logic: Done - Database integration: Done - API endpoints: Not started - Tests: Not started - Documentation: Incomplete Status: Partially done but marked as finished ``` ### Expected Deliverables ```typescript const expected = [ 'src/auth.ts', // Created 'src/db.ts', // Created 'src/api.ts', // Missing 'tests/auth.test.ts', // Missing 'tests/db.test.ts', // Missing 'README.md' // Missing ]; ``` ### Detection ```typescript const vapor = await validator.detectConsensusOnVapor(agentOutput, expected); console.log(vapor); // { // detected: true, // Vapor detected // claimsCompletion: true, // Claims "finished" // deliverablesMissing: true, // 4 of 6 missing // missingDeliverables: [ // 'src/api.ts', // 'tests/auth.test.ts', // 'tests/db.test.ts', // 'README.md' // ], // confidence: 0.67, // 4 of 6 = 67% confidence // agentOutput: '...truncated...' // } ``` ### Action ``` Status: VAPOR DETECTED (PARTIAL) Confidence: 67% Claimed: All features done Reality: 33% incomplete Feedback: Complete these missing deliverables: - src/api.ts - tests/auth.test.ts - tests/db.test.ts - README.md Decision: ITERATE (correct course, don't proceed to Loop 2) ``` --- ## Example 6: Integration with Loop 3 Validation ### Scenario Complete Loop 3 validation including vapor detection. ### Code ```typescript // Loop 3 Agent Completion async function completeLoop3Task(taskId: string) { const validator = new CFNValidator({ mode: 'standard', taskId, agentId: process.env.AGENT_ID }); // Perform comprehensive validation const result = await validator.performValidation({ deliverables: [ 'src/feature.ts', 'tests/feature.test.ts', 'dist/feature.js' ], passRate: calculateTestPassRate(), agentOutput: getAgentExecutionLog(), successCriteria: [ { type: 'file_exists', paths: ['src/feature.ts'], description: 'Main feature file' } ] }); // Check for vapor if (result.vapor?.detected) { console.error('VAPOR DETECTED!'); console.error(`Missing: ${result.vapor.missingDeliverables.join(', ')}`); console.error(`Confidence: ${(result.vapor.confidence * 100).toFixed(0)}%`); // Provide feedback const feedback = { issue: 'Incomplete deliverables', missingFiles: result.vapor.missingDeliverables, requiredActions: [ `Create ${result.vapor.missingDeliverables.length} missing files`, 'Re-run tests to verify', 'Retry Loop 3 execution' ] }; reportConfidence(0.40, 'ITERATE', feedback); return; } // Check gate if (result.gate && !result.gate.passed) { console.error(`Gate failed: ${result.gate.gap.toFixed(2)}% below threshold`); reportConfidence(result.gate.passRate, 'ITERATE', { issue: 'Insufficient test pass rate', currentRate: `${(result.gate.passRate * 100).toFixed(1)}%`, threshold: `${(result.gate.threshold * 100).toFixed(1)}%`, gap: `${(result.gate.gap * 100).toFixed(2)}%` }); return; } // All validations passed reportConfidence(0.95, 'PROCEED'); } ``` ### Execution Flow ``` 1. Perform comprehensive validation ├─ Deliverables: Check file existence ├─ Success criteria: Verify conditions ├─ Gate: Check pass rate threshold └─ Vapor: Detect claims vs reality 2. Check vapor first (highest priority) ├─ If detected ITERATE (missing files) └─ If not Continue 3. Check gate ├─ If failed ITERATE (low pass rate) └─ If passed Continue 4. Report result ├─ ITERATE with feedback └─ PROCEED to Loop 2 ``` --- ## Example 7: Orchestrator Integration ### Scenario Orchestrator checks vapor after Loop 3 completes. ### Bash Code ```bash #!/bin/bash # After Loop 3 execution LOOP3_OUTPUT=$(get_agent_output "$AGENT_ID") EXPECTED_FILES=( "src/auth.ts" "tests/auth.test.ts" "dist/auth.js" ) # Run vapor detection VAPOR_RESULT=$(./.claude/skills/cfn-loop-validation/detect-vapor.sh \ --output "$LOOP3_OUTPUT" \ --deliverables "$(echo "${EXPECTED_FILES[@]}" | tr ' ' ',')" \ --json) # Parse result VAPOR_DETECTED=$(echo "$VAPOR_RESULT" | jq '.detected') CONFIDENCE=$(echo "$VAPOR_RESULT" | jq '.confidence') MISSING_FILES=$(echo "$VAPOR_RESULT" | jq '.missingDeliverables[]') if [ "$VAPOR_DETECTED" = "true" ]; then # CRITICAL: Vapor detected, don't proceed to Loop 2 echo "ERROR: Consensus on Vapor detected" echo "Confidence: $(echo "$CONFIDENCE * 100" | bc)%" echo "Missing files:" echo "$MISSING_FILES" | while read file; do echo " - $file" done # Send feedback to agent FEEDBACK="Please create these missing files: $(echo "$MISSING_FILES" | sed 's/^/ - /')" # Trigger iteration redis-cli lpush "swarm:${TASK_ID}:proceed" "false" redis-cli lpush "swarm:${TASK_ID}:feedback" "$FEEDBACK" else # No vapor, proceed to Loop 2 echo "OK: No vapor detected" echo "Proceeding to Loop 2 (validators)" # Signal Loop 2 redis-cli lpush "swarm:${TASK_ID}:gate-passed" "true" fi ``` --- ## Example 8: False Negatives (No Vapor When Should Be) ### Scenario (Prevented by Detector) Agent claims completion using subtle language. ### Agent Output ``` Finished the initial implementation. Files created: - src/index.ts - src/utils.ts Note: Still need to create tests and build artifacts. The core functionality is ready. ``` ### Detection ```typescript const vapor = await validator.detectConsensusOnVapor(agentOutput, expected); // Result: // { // detected: true, // Correctly detected // claimsCompletion: true, // Picked up "finished" // deliverablesMissing: true, // ... // } ``` ### Why It Works The detector recognizes `finished` even though it's subtle, and catches the mismatch between claimed completion and missing files. --- ## Example 9: False Positives Prevention ### Scenario Agent mentions missing features but doesn't claim completion. ### Agent Output ``` Current progress report: Completed: Basic authentication User database model API endpoints (still in progress) Testing (not started) Documentation (not started) Next steps: Continue with API implementation ``` ### Detection ```typescript const vapor = await validator.detectConsensusOnVapor(agentOutput, expected); // Result: // { // detected: false, // Correctly NOT detected as vapor // claimsCompletion: false, // No completion claim // deliverablesMissing: true, // Files missing but... // missingDeliverables: [...], // confidence: 0.0, // 0% confidence because no completion claim // } ``` ### Why It Works Without a completion claim, missing files are not considered vapor - they're just work-in-progress. --- ## Summary Table | Scenario | Claims Completion | Files Exist | Detected | Confidence | |----------|------------------|-------------|----------|------------| | Example 1 | Yes | Partial (2/3) | Yes | 33% | | Example 2 | Yes | Partial (1/4) | Yes | 75% | | Example 3 | Yes | All (2/2) | No | 0% | | Example 4 | No | Partial (0/3) | No | 0% | | Example 5 | Yes | Partial (2/6) | Yes | 67% | | Example 8 | Yes (subtle) | Partial | Yes | 60% | | Example 9 | No | Partial | No | 0% | --- ## Key Insights ### 1. Vapor = Claims + Missing Vapor is **only** detected when: - Agent claims completion, **AND** - Some deliverables are missing ### 2. Confidence is Ratio-Based - 0 missing = 0% confidence (no vapor) - 1 of 3 missing = 33% confidence - 3 of 3 missing = 100% confidence ### 3. Keywords Matter The detector recognizes: - complete, completed - done, finished - success, successful - delivered - implemented, created - generated ### 4. Integration Point Vapor detection should happen: 1. **After** Loop 3 completes 2. **Before** Loop 2 validators review 3. **Preventing** consensus on non-existent work ### 5. Feedback Loop When vapor detected: - Don't proceed to Loop 2 - Provide list of missing files - Request iteration with clear requirements - Re-enter Loop 3 with feedback --- ## Testing Your Own Cases ```typescript // Test with your agent output const myOutput = 'Your agent output here...'; const myFiles = ['file1.ts', 'file2.ts']; const validator = new CFNValidator({ mode: 'standard', taskId: 'test' }); const result = await validator.detectConsensusOnVapor(myOutput, myFiles); console.log('Vapor Detected:', result.detected); console.log('Confidence:', (result.confidence * 100).toFixed(0) + '%'); console.log('Missing:', result.missingDeliverables); ``` --- ## Additional Resources - **Complete API Docs:** `SKILL_TYPESCRIPT.md` - **Implementation Details:** `IMPLEMENTATION_SUMMARY.md` - **Test Suite:** `tests/validator.test.ts` - **Type Definitions:** `src/types.ts`