6531440431
CI / build (push) Successful in 24s
CI / lint (push) Successful in 3m16s
CI / quality (push) Successful in 3m45s
CI / typecheck (push) Successful in 3m52s
CI / benchmark-regression (push) Has been skipped
CI / security (push) Successful in 4m1s
CI / unit_tests (push) Successful in 7m8s
CI / integration_tests (push) Successful in 7m1s
CI / docker (push) Successful in 1m6s
CI / e2e_tests (push) Successful in 9m49s
CI / coverage (push) Successful in 12m22s
CI / status-check (push) Successful in 1s
CI / benchmark-publish (push) Successful in 19m34s
## Summary Implement the estimation actor as a functional actor type. The estimation actor provides cost, time, and resource estimates for plan operations, running after Strategize completes (before Execute). Estimation is informational only and optional — plans work without an estimation actor configured. ### Changes **New files:** - `src/cleveragents/domain/models/core/estimation.py` — `EstimationResult` frozen Pydantic model with fields for cost (USD), tokens, steps, child plans, time, risk level/factors, summary - `features/estimation_actor.feature` — 12 Behave test scenarios (model validation, serialization, stub actor, plan integration, optional behavior) - `features/steps/estimation_actor_steps.py` — Step definitions - `robot/estimation_actor.robot` — 6 Robot integration tests - `robot/helper_estimation_actor.py` — Robot test helper **Modified files:** - `domain/models/acms/tiers.py` — Added `ESTIMATOR` to `ActorRole` enum - `domain/models/core/plan.py` — Added `estimation_result: EstimationResult | None` field, estimation data in `as_cli_dict()` - `application/services/plan_executor.py` — Added `EstimationStubActor` class - `application/services/plan_lifecycle_service.py` — Added `_run_estimation()` method, invoked in `execute_plan()` - `cli/commands/plan.py` — Display estimation results in plan status - `vulture_whitelist.py` — Added 12 new public symbols ### Quality Gates | Session | Result | |---|---| | `nox -s lint` | PASS | | `nox -s typecheck` | PASS (0 errors) | | `nox -s unit_tests` | PASS (10,818 scenarios) | | `nox -s integration_tests` | PASS (1,512 tests) | | `nox -s coverage_report` | 98% (>= 97%) | Closes #890 Reviewed-on: #962 Co-authored-by: Brent Edwards <brent.edwards@cleverthis.com> Co-committed-by: Brent Edwards <brent.edwards@cleverthis.com>
56 lines
3.1 KiB
Plaintext
56 lines
3.1 KiB
Plaintext
*** Settings ***
|
|
Documentation Integration tests for the estimation actor type.
|
|
... Covers EstimationResult model, EstimationStubActor,
|
|
... Plan estimation_result field, ActorRole.ESTIMATOR,
|
|
... and estimation invocation during plan lifecycle.
|
|
... Issue #890.
|
|
Resource ${CURDIR}/common.resource
|
|
Suite Setup Setup Test Environment
|
|
Suite Teardown Cleanup Test Environment
|
|
|
|
*** Variables ***
|
|
${HELPER_SCRIPT} robot/helper_estimation_actor.py
|
|
|
|
*** Test Cases ***
|
|
EstimationResult Domain Model
|
|
[Documentation] Verify EstimationResult creation, defaults, serialization, and immutability
|
|
[Tags] estimation model critical
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} estimation-result-model cwd=${WORKSPACE} on_timeout=kill timeout=30s
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} estimation-result-model-ok
|
|
|
|
EstimationStubActor Placeholder Output
|
|
[Documentation] Verify stub actor returns placeholder estimation with correct summary
|
|
[Tags] estimation stub critical
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} estimation-stub-actor cwd=${WORKSPACE} on_timeout=kill timeout=30s
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} estimation-stub-actor-ok
|
|
|
|
ActorRole ESTIMATOR Enum Value
|
|
[Documentation] Verify ActorRole enum includes ESTIMATOR with value "estimator"
|
|
[Tags] estimation enum
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} actor-role-estimator cwd=${WORKSPACE} on_timeout=kill timeout=30s
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} actor-role-estimator-ok
|
|
|
|
Plan Model Estimation Result Field
|
|
[Documentation] Verify Plan model accepts estimation_result and includes it in CLI dict
|
|
[Tags] estimation plan model
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} plan-estimation-field cwd=${WORKSPACE} on_timeout=kill timeout=30s
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} plan-estimation-field-ok
|
|
|
|
Estimation Runs During Strategize To Execute Transition
|
|
[Documentation] Verify estimation actor is invoked when transitioning from Strategize to Execute
|
|
[Tags] estimation lifecycle critical
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} estimation-lifecycle-integration cwd=${WORKSPACE} on_timeout=kill timeout=30s
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} estimation-lifecycle-integration-ok
|
|
|
|
Estimation Skipped When No Actor Configured
|
|
[Documentation] Verify estimation is skipped when no estimation_actor is set on the plan
|
|
[Tags] estimation lifecycle
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} no-estimation-lifecycle cwd=${WORKSPACE} on_timeout=kill timeout=30s
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} no-estimation-lifecycle-ok
|