Files
temp/robot/large_project_decompose.robot
freemo 4232907ab9 feat(plan): add large-project decomposition and dependency closure
Add hierarchical decomposition with 4+ levels and bounded context per
subplan. Implement decomposition heuristics (max_files_per_subplan,
max_tokens_per_subplan, language/dir clustering). Add dependency closure
computation for large graphs and DAG execution ordering. Add bounded
dependency closure with cutoff thresholds and memoization for 10K+
files. Record decomposition decisions in DecisionService
(strategy_choice + subplan_spawn entries).

New modules:
- decomposition_models.py: DecompositionConfig, DecompositionNode,
  DecompositionResult, DependencyEdge, DependencyGraph
- decomposition_clustering.py: ClusteringStrategy with directory,
  language, and size clustering plus deterministic sort
- decomposition_graph.py: DependencyClosureComputer with bounded
  closure, topological sort, cycle detection, and memoization
- decomposition_service.py: DecompositionService orchestrating
  hierarchy building and decision recording

Settings: planner_max_depth, planner_max_files_per_subplan,
planner_max_tokens_per_subplan, planner_min_files_per_subplan

Closes #205
2026-03-03 21:44:20 +00:00

48 lines
2.2 KiB
Plaintext

*** Settings ***
Documentation Smoke tests for large-project decomposition service
Resource ${CURDIR}/common.resource
Suite Setup Setup Test Environment
Suite Teardown Cleanup Test Environment
*** Variables ***
${HELPER} ${CURDIR}/helper_large_project_decompose.py
*** Test Cases ***
Decompose Small Project Below Threshold
[Documentation] Projects below min_files threshold get a single node
${result}= Run Process ${PYTHON} ${HELPER} below-threshold cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} decompose-below-threshold-ok
Decompose Multi-Level Project
[Documentation] Projects with many files produce multi-level decomposition
${result}= Run Process ${PYTHON} ${HELPER} multi-level cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} decompose-multi-level-ok
Dependency Closure Computation
[Documentation] Transitive closure should collect reachable nodes
${result}= Run Process ${PYTHON} ${HELPER} closure cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} decompose-closure-ok
Topological Sort
[Documentation] Topo sort should produce valid execution order
${result}= Run Process ${PYTHON} ${HELPER} topo-sort cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} decompose-topo-sort-ok
Cycle Detection
[Documentation] Cycles in dependency graph should be detected
${result}= Run Process ${PYTHON} ${HELPER} cycle-detect cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} decompose-cycle-detect-ok
Config Validation
[Documentation] Invalid config should raise ValueError
${result}= Run Process ${PYTHON} ${HELPER} config-validation cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} decompose-config-ok