OpenWriterControle/evals/agents/openagent/CONTEXT_LOADING_COVERAGE.md
darrenhinde f773b290ce chore(evals): comprehensive cleanup, documentation, and test infrastructure improvements
Documentation:
- Add ARCHITECTURE.md with comprehensive system review
- Add GETTING_STARTED.md for new users
- Add DOCUMENTATION_CLEANUP.md tracking cleanup changes
- Add SCRIPTS_ORGANIZATION.md documenting script reorganization
- Remove outdated docs (TESTING_CONFIDENCE.md, TEST_REVIEW.md, SESSION_STORAGE_FIX.md)
- Update README files with current information

Script Organization:
- Move 12 scripts from framework root to organized directories:
  - scripts/debug/ (4 files): Session debugging tools
  - scripts/test/ (6 files): Test execution scripts
  - scripts/utils/ (2 files): Utility scripts
- Add comprehensive scripts/README.md with usage examples

Test Infrastructure:
- Add 5 new context loading tests for openagent
- Add result-saver.ts for test result persistence
- Add interactive results dashboard (index.html)
- Add error-handling.test.ts for framework testing
- Add result-saver.test.ts with comprehensive unit tests

Evaluator Improvements:
- Enhance context-loading-evaluator with better detection
- Update run-sdk-tests.ts with improved result handling

Agent Configuration:
- Add .opencode/agent/AGENT.md for agent definition

Test Utilities:
- Add test-agent-manual.mjs for manual testing
- Update test_tmp/README.md with usage guidelines

This commit consolidates multiple improvements:
- Better organization (scripts, docs)
- Improved testing infrastructure
- Comprehensive documentation
- Cleaner codebase structure
2025-11-26 21:34:27 +00:00

298 lines
7.9 KiB
Markdown

# Context Loading Test Coverage
## Overview
This document describes the context loading tests created to verify OpenAgent correctly loads context files before responding to user queries and executing tasks.
**Test Location**: `evals/agents/openagent/tests/context-loading/`
**Total Tests**: 5 (3 simple, 2 complex multi-turn)
---
## Test Results Summary
**Run Date**: 2025-11-26
**Pass Rate**: 3/5 (60%)
**Total Duration**: 430 seconds (~7 minutes)
| Test ID | Type | Status | Duration | Notes |
|---------|------|--------|----------|-------|
| ctx-simple-testing-approach | Simple | ✅ PASS | 35s | Loaded testing docs correctly |
| ctx-simple-documentation-format | Simple | ✅ PASS | 19s | Loaded docs.md correctly |
| ctx-simple-coding-standards | Simple | ✅ PASS | 20s | Loaded code.md correctly |
| ctx-multi-standards-to-docs | Complex | ❌ FAIL | 109s | No context loaded before execution |
| ctx-multi-error-handling-to-tests | Complex | ❌ FAIL | 246s | Timeout on prompt 4 |
---
## Test Descriptions
### Simple Tests (Read-Only)
#### 1. `ctx-simple-coding-standards.yaml`
**Prompt**: "What are our coding standards for this project?"
**Expected Behavior**:
- Load `code.md` or `standards.md` before responding
- Reference project-specific standards
**Result**: ✅ **PASSED**
- Agent loaded `.opencode/context/core/standards/code.md`
- 1 read operation performed
- No violations detected
---
#### 2. `ctx-simple-documentation-format.yaml`
**Prompt**: "What format should I use for documentation in this project?"
**Expected Behavior**:
- Load `docs.md` or `documentation.md` before responding
- Reference project-specific documentation standards
**Result**: ✅ **PASSED**
- Agent loaded `.opencode/context/core/standards/docs.md`
- 1 read operation performed
- No violations detected
---
#### 3. `ctx-simple-testing-approach.yaml`
**Prompt**: "What's our testing strategy for this project?"
**Expected Behavior**:
- Load `tests.md` or `testing.md` before responding
- Reference project-specific testing standards
**Result**: ✅ **PASSED**
- Agent loaded multiple testing-related files:
- `evals/HOW_TESTS_WORK.md`
- `evals/README.md`
- `evals/TESTING_CONFIDENCE.md`
- `evals/agents/AGENT_TESTING_GUIDE.md`
- 4 read operations performed
- No violations detected
---
### Complex Tests (Multi-Turn with File Creation)
#### 4. `ctx-multi-standards-to-docs.yaml`
**Scenario**: Standards question → Documentation request → Format question
**Turn 1**: "What are our coding standards?"
- Expected: Load `standards.md` or `code.md`
**Turn 2**: "Can you create documentation about these standards in evals/test_tmp/coding-standards-doc.md?"
- Expected: Load `docs.md` (documentation format)
- Expected: Write file to `evals/test_tmp/`
**Turn 3**: "What will the documentation structure look like?"
- Expected: Reference both standards and docs context
**Result**: ❌ **FAILED**
- Agent loaded context files correctly:
- `.opencode/context/core/standards/code.md` (2x)
- `.opencode/context/core/standards/docs.md` (1x)
- Agent wrote file successfully
- **Violation**: "No context loaded before execution" (warning)
- **Issue**: Context loading evaluator flagged timing issue
**Files Created**: `evals/test_tmp/coding-standards-doc.md` (cleaned up after test)
---
#### 5. `ctx-multi-error-handling-to-tests.yaml`
**Scenario**: Error handling question → Test request → Coverage policy
**Turn 1**: "How should we handle errors in this project?"
- Expected: Load `standards.md` or `processes.md`
**Turn 2**: "Can you write tests for error handling in evals/test_tmp/error-handling.test.ts?"
- Expected: Load `tests.md` (testing standards)
- Expected: Write test file to `evals/test_tmp/`
**Turn 3**: "What's our test coverage policy?"
- Expected: Reference test-related context
**Result**: ❌ **FAILED**
- **Error**: "Prompt 4 execution timed out"
- Test exceeded 180-second timeout
- Likely due to complex multi-turn conversation with file creation
---
## Cleanup Verification
✅ **Cleanup System Working Correctly**
**Before Tests**:
- Cleaned up 1 file from previous runs
**After Tests**:
- Cleaned up 2 files created during tests
- `test_tmp/` contains only:
- `.gitignore`
- `README.md`
**Cleanup Logic**: `evals/framework/src/sdk/run-sdk-tests.ts`
- Runs before test execution
- Runs after test execution
- Preserves only `.gitignore` and `README.md`
---
## Key Findings
### ✅ Positive Results
1. **Simple Context Loading Works**: All 3 simple tests passed
- Agent correctly identifies and loads relevant context files
- Agent reads context BEFORE responding
- No violations in simple scenarios
2. **Cleanup System Reliable**:
- Files created during tests are properly cleaned up
- No test artifacts left in project root
- `test_tmp/` directory isolation working
3. **Context File Discovery**:
- Agent successfully finds context files in `.opencode/context/core/standards/`
- Agent loads multiple relevant files when appropriate
### ⚠️ Issues Identified
1. **Multi-Turn Context Loading**:
- Complex multi-turn tests show timing issues
- Context loading evaluator flagging warnings even when files are loaded
- May need to adjust evaluator logic for multi-turn scenarios
2. **Timeout on Complex Tests**:
- 180-second timeout insufficient for some multi-turn tests
- Test 5 timed out on prompt 4
- May need to increase timeout or simplify test scenarios
3. **False Positive Warning**:
- Test 4 loaded context correctly but still got "no-context-loaded" warning
- Evaluator may not be detecting context loads in multi-turn conversations
---
## Recommendations
### Immediate Actions
1. **Increase Timeout for Complex Tests**
- Change from 180s to 300s (5 minutes)
- Add timeout configuration per test
2. **Fix Context Loading Evaluator**
- Review timing detection logic for multi-turn tests
- Ensure evaluator tracks context loads across all prompts
3. **Simplify Complex Tests**
- Reduce number of turns in multi-turn tests
- Focus on specific context loading scenarios
### Future Enhancements
1. **Add More Edge Cases**
- Test context loading with missing files
- Test context loading with multiple context directories
- Test context loading with file attachments
2. **Add Performance Metrics**
- Track time between context load and execution
- Measure context file read performance
- Monitor API rate limits
3. **Batch Test Execution**
- Run tests in smaller batches to avoid API timeouts
- Add retry logic for transient failures
- Implement test result caching
---
## Running These Tests
### Run All Context Loading Tests
```bash
cd evals/framework
npm run eval:sdk -- --agent=openagent --pattern="context-loading/*.yaml"
```
### Run Individual Test
```bash
npm run eval:sdk -- --agent=openagent --pattern="context-loading/ctx-simple-coding-standards.yaml"
```
### Run with Debug Output
```bash
npm run eval:sdk -- --agent=openagent --pattern="context-loading/*.yaml" --debug
```
### View Results Dashboard
```bash
cd ../results
./serve.sh
```
---
## Test File Structure
Each test follows this structure:
```yaml
id: test-id
name: "Test Name"
description: |
Detailed description of what the test validates
category: developer
agent: openagent
model: anthropic/claude-sonnet-4-5
# Single prompt OR multi-turn prompts
prompt: "Single prompt text"
# OR
prompts:
- text: "First prompt"
expectContext: true
contextFile: "standards.md"
- text: "approve"
delayMs: 2000
# Expected behavior
behavior:
mustUseTools: [read, write]
requiresContext: true
minToolCalls: 1
# Expected violations
expectedViolations:
- rule: context-loading
shouldViolate: false
severity: error
# Approval strategy
approvalStrategy:
type: auto-approve
timeout: 60000
tags:
- context-loading
- simple-test
```
---
## Maintenance
**Last Updated**: 2025-11-26
**Test Framework Version**: 0.1.0
**OpenAgent Version**: Latest
**Next Review**: After fixing context loading evaluator timing logic