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
298 lines
7.9 KiB
Markdown
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
|