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

7.9 KiB

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

cd evals/framework
npm run eval:sdk -- --agent=openagent --pattern="context-loading/*.yaml"

Run Individual Test

npm run eval:sdk -- --agent=openagent --pattern="context-loading/ctx-simple-coding-standards.yaml"

Run with Debug Output

npm run eval:sdk -- --agent=openagent --pattern="context-loading/*.yaml" --debug

View Results Dashboard

cd ../results
./serve.sh

Test File Structure

Each test follows this structure:

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