Files
cleveragents-core/features/scaling_performance.feature
brent.edwards b88bc0ec1b
CI / build (push) Successful in 19s
CI / lint (push) Successful in 3m19s
CI / quality (push) Successful in 3m43s
CI / typecheck (push) Successful in 3m55s
CI / security (push) Successful in 4m2s
CI / unit_tests (push) Successful in 6m39s
CI / integration_tests (push) Successful in 6m48s
CI / docker (push) Successful in 1m7s
CI / e2e_tests (push) Successful in 9m7s
CI / benchmark-regression (push) Has been skipped
CI / coverage (push) Failing after 16m36s
CI / benchmark-publish (push) Successful in 25m51s
CI / status-check (push) Failing after 4s
feat(perf): large project scaling tests (#984)
## Summary

Add large project scaling benchmarks and tests at production scale (10K–100K files).

### New ASV Benchmarks

**IndexingScalingSuite** (`large_project_scaling_bench.py`):
- `time_walk_and_index` at 1K/10K/50K/100K files
- `time_incremental_refresh` (1% modified files)
- `track_indexed_file_count`, `track_tokens_per_second`

**ContextAssemblyScalingSuite** (`context_assembly_scaling_bench.py`):
- `time_full_pipeline` at 100/1K/5K/10K fragments
- `time_tiered_strategy`, `time_recency_strategy`
- `track_assembled_tokens`, `track_fragments_per_second`

**ExecutionThroughputSuite** (`execution_throughput_bench.py`):
- `time_sequential_plans` at 10/50/100 plans
- `time_executor_construction`, `time_decision_tree_scaling`

### Scale Fixture Updates

- Added `xlarge` (50K files) and `xxlarge` (100K files) profiles to `scale_metadata.json`
- Added 50K/100K thresholds to `baseline_thresholds.json`
- Added `context_assembly` and `execution_throughput` threshold sections

### Tests & Documentation

- 15 Behave scenarios validating profiles, thresholds, monotonicity, memory budgets
- 6 Robot integration tests including live 1K-file indexing throughput check
- `docs/reference/scaling_baselines.md` documenting all baseline metrics

### Quality Gates

| Session | Result |
|---|---|
| `nox -s lint` | PASS |
| `nox -s typecheck` | PASS (0 errors) |
| `nox -s unit_tests` | PASS (10,910 scenarios) |
| `nox -s integration_tests` | PASS (1,526 tests) |
| `nox -s coverage_report` | 97% (>= 97%) |

Closes #859

Reviewed-on: #984
Co-authored-by: Brent E. Edwards <brent.edwards@cleverthis.com>
Co-committed-by: Brent E. Edwards <brent.edwards@cleverthis.com>
2026-03-21 04:46:45 +00:00

101 lines
5.8 KiB
Gherkin

Feature: Large project scaling performance baselines
Validates that benchmark fixtures, threshold definitions, and scaling
expectations are present and self-consistent for 50K and 100K file
scales, and that context assembly and execution throughput thresholds
are defined.
Background:
Given a scaling performance test environment is ready
# ──────────────────────────────────────────────────
# Section 1: Extended scale profile validation
# ──────────────────────────────────────────────────
Scenario: Scale metadata includes xlarge and xxlarge profiles
When I scaling perf load the scale metadata fixture
Then the scaling perf metadata should contain profile "xlarge"
And the scaling perf metadata should contain profile "xxlarge"
Scenario: XLarge profile has correct file count
When I scaling perf load the scale metadata fixture
Then the scaling perf profile "xlarge" should have file count 50000
Scenario: XXLarge profile has correct file count
When I scaling perf load the scale metadata fixture
Then the scaling perf profile "xxlarge" should have file count 100000
Scenario: New profiles have valid language mixes
When I scaling perf load the scale metadata fixture
Then the scaling perf language mix should sum to 1.0 for profile "xlarge"
And the scaling perf language mix should sum to 1.0 for profile "xxlarge"
# ──────────────────────────────────────────────────
# Section 2: Extended threshold validation
# ──────────────────────────────────────────────────
Scenario: Indexing thresholds cover 50K and 100K files
When I scaling perf load the baseline thresholds fixture
Then the scaling perf indexing thresholds should cover "50000_files"
And the scaling perf indexing thresholds should cover "100000_files"
Scenario: Decomposition thresholds cover 50K and 100K files
When I scaling perf load the baseline thresholds fixture
Then the scaling perf decomposition thresholds should cover "50000_files"
And the scaling perf decomposition thresholds should cover "100000_files"
Scenario: Extended thresholds are monotonically increasing
When I scaling perf load the baseline thresholds fixture
Then scaling perf p50 should be less than p95 for "50000_files" indexing
And scaling perf p95 should be less than p99 for "50000_files" indexing
And scaling perf p50 should be less than p95 for "100000_files" indexing
And scaling perf p95 should be less than p99 for "100000_files" indexing
Scenario: 50K indexing threshold scales sub-linearly from 10K
When I scaling perf load the baseline thresholds fixture
Then scaling perf 50K indexing p50 should be less than 5x the 10K p50
Scenario: 100K indexing threshold scales sub-linearly from 50K
When I scaling perf load the baseline thresholds fixture
Then scaling perf 100K indexing p50 should be less than 2.5x the 50K p50
# ──────────────────────────────────────────────────
# Section 3: Context assembly thresholds
# ──────────────────────────────────────────────────
Scenario: Context assembly thresholds section exists
When I scaling perf load the baseline thresholds fixture
Then the scaling perf thresholds should have context assembly section
Scenario: Context assembly covers 5K and 10K fragments
When I scaling perf load the baseline thresholds fixture
Then the scaling perf context assembly thresholds should cover "5000_fragments"
And the scaling perf context assembly thresholds should cover "10000_fragments"
# ──────────────────────────────────────────────────
# Section 4: Execution throughput thresholds
# ──────────────────────────────────────────────────
Scenario: Execution throughput thresholds section exists
When I scaling perf load the baseline thresholds fixture
Then the scaling perf thresholds should have execution throughput section
Scenario: Execution throughput covers all plan counts
When I scaling perf load the baseline thresholds fixture
Then the scaling perf execution thresholds should cover "10_plans"
And the scaling perf execution thresholds should cover "50_plans"
And the scaling perf execution thresholds should cover "100_plans"
# ──────────────────────────────────────────────────
# Section 5: Memory thresholds at production scale
# ──────────────────────────────────────────────────
Scenario: Memory thresholds cover 50K and 100K files
When I scaling perf load the baseline thresholds fixture
Then the scaling perf memory thresholds should cover "50000_files"
And the scaling perf memory thresholds should cover "100000_files"
Scenario: Memory peak exceeds steady state for extended profiles
When I scaling perf load the baseline thresholds fixture
Then scaling perf memory peak should exceed steady state for "50000_files"
And scaling perf memory peak should exceed steady state for "100000_files"