docs/developer-setup-guide
1928 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
58d593322c |
refactor(cli): promote get_container to module-level import
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 14s
CI / quality (pull_request) Successful in 18s
CI / build (pull_request) Successful in 23s
CI / security (pull_request) Successful in 38s
CI / typecheck (pull_request) Successful in 39s
CI / docker (pull_request) Has been cancelled
CI / unit_tests (pull_request) Has been cancelled
CI / coverage (pull_request) Has been cancelled
CI / integration_tests (pull_request) Has been cancelled
CI / benchmark-regression (pull_request) Has been cancelled
Move get_container from lazy per-function imports to module-level in context.py (10 sites) and project_context.py (3 sites). This makes the symbol a patchable module attribute so BDD step files can mock the DI container with unittest.mock.patch. Closes #200 |
||
|
|
0ca1303927 |
feat(sandbox): add checkpoint and rollback hooks
CI / lint (pull_request) Successful in 23s
CI / quality (pull_request) Successful in 29s
CI / security (pull_request) Successful in 54s
CI / typecheck (pull_request) Successful in 59s
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 25s
CI / integration_tests (pull_request) Successful in 4m33s
CI / benchmark-regression (pull_request) Successful in 22m32s
CI / unit_tests (pull_request) Successful in 30m28s
CI / docker (pull_request) Successful in 39s
CI / coverage (pull_request) Successful in 1h39m42s
CI / lint (push) Successful in 12s
CI / quality (push) Successful in 20s
CI / build (push) Successful in 24s
CI / security (push) Successful in 28s
CI / typecheck (push) Successful in 1m0s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 4m35s
CI / benchmark-publish (push) Successful in 13m36s
CI / coverage (push) Has been cancelled
CI / unit_tests (push) Has been cancelled
CI / docker (push) Has been cancelled
Introduce a lightweight checkpoint/rollback system for sandbox state during plan execute and apply flows. CheckpointManager snapshots the sandbox working directory before each phase and can restore it on failure, giving the execution engine a reliable undo mechanism. Key changes: - SandboxCheckpoint model, Checkpointable protocol, and CheckpointManager in infrastructure/sandbox/checkpoint.py - PlanExecutor gains optional checkpoint_manager with pre/post execute hooks and automatic rollback on failure - PlanApplyService gains optional checkpoint_manager with pre-apply checkpoint and rollback helper - 12 BDD scenarios (features/sandbox_checkpoints.feature) - 5 Robot Framework smoke tests (robot/sandbox_checkpoint_smoke.robot) - ASV benchmarks for creation, rollback, and listing operations - Reference documentation in docs/reference/sandbox.md ISSUES CLOSED: #183 |
||
|
|
332eb142b3 |
Merge pull request 'test(e2e): verify M6 success criteria — Firefox-scale autonomous porting' (#457) from test/m6-e2e-verification into master
CI / lint (push) Successful in 21s
CI / security (push) Successful in 30s
CI / typecheck (push) Successful in 37s
CI / quality (push) Successful in 55s
CI / build (push) Successful in 23s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 5m24s
CI / unit_tests (push) Successful in 11m37s
CI / docker (push) Successful in 12s
CI / benchmark-publish (push) Successful in 13m50s
CI / coverage (push) Successful in 1h45m28s
Reviewed-on: #457 Reviewed-by: Luis Mendes <luis.mendes@cleverthis.com> |
||
|
|
c9782637d9 |
Merge branch 'master' into feature/m5-acms-smoke
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 22s
CI / build (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 31s
CI / security (pull_request) Successful in 35s
CI / typecheck (pull_request) Successful in 55s
CI / integration_tests (pull_request) Successful in 2m58s
CI / benchmark-regression (pull_request) Successful in 27m24s
CI / unit_tests (pull_request) Failing after 33m24s
CI / docker (pull_request) Has been skipped
CI / coverage (pull_request) Has been cancelled
|
||
|
|
c129f4c3f0 |
fix(test): address PR #470 review feedback
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 14s
CI / quality (pull_request) Successful in 28s
CI / security (pull_request) Successful in 31s
CI / build (pull_request) Successful in 26s
CI / typecheck (pull_request) Successful in 45s
CI / integration_tests (pull_request) Successful in 5m26s
CI / unit_tests (pull_request) Successful in 18m48s
CI / docker (pull_request) Successful in 14s
CI / benchmark-regression (pull_request) Successful in 28m19s
CI / coverage (pull_request) Successful in 1h26m48s
- Add CHANGELOG.md entry for M6 autonomy acceptance suite - Split m6_autonomy_acceptance_steps.py (774 lines) into m6_facade_steps.py (398 lines) and m6_guardrails_steps.py (399 lines) to comply with the project's 500-line guideline Closes #211 |
||
|
|
75c628793b |
fix(test): correct M5 smoke patch targets and pattern matching
CI / lint (pull_request) Successful in 14s
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 28s
CI / security (pull_request) Successful in 33s
CI / typecheck (pull_request) Successful in 33s
CI / build (pull_request) Successful in 50s
CI / integration_tests (pull_request) Successful in 2m56s
CI / unit_tests (pull_request) Has been cancelled
CI / coverage (pull_request) Has been cancelled
CI / benchmark-regression (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
Fix 4 errored scenarios: patch get_container instead of the lazily-
imported ContextService (which is not a module-level attribute of
cleveragents.cli.commands.context).
Fix project context show (line 112): mock _get_namespaced_project_repo
to return a repo (not a tuple), mock get_container for session_factory,
and mock _read_policy to bypass DB access.
Fix context exclusion pattern (line 152): replace fnmatch.fnmatch with
PurePosixPath.match for proper ** glob handling and use a path with a
leading directory segment.
Also fix context list empty assertion to match actual CLI output
('No files in context' rather than 'No context'), and patch
Path.exists for the add command so the mock service is reached.
|
||
|
|
ea060ec7a9 |
Merge branch 'master' into test/m6-e2e-verification
CI / lint (pull_request) Successful in 14s
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 19s
CI / security (pull_request) Successful in 32s
CI / typecheck (pull_request) Successful in 33s
CI / build (pull_request) Successful in 26s
CI / integration_tests (pull_request) Successful in 5m24s
CI / benchmark-regression (pull_request) Successful in 25m29s
CI / unit_tests (pull_request) Successful in 33m25s
CI / docker (pull_request) Successful in 14s
CI / coverage (pull_request) Successful in 42m43s
|
||
|
|
f90cf24617 |
Merge branch 'master' into feature/m6-autonomy-smoke
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 13s
CI / build (pull_request) Successful in 15s
CI / quality (pull_request) Successful in 18s
CI / typecheck (pull_request) Successful in 36s
CI / security (pull_request) Successful in 39s
CI / integration_tests (pull_request) Successful in 3m7s
CI / coverage (pull_request) Has been cancelled
CI / benchmark-regression (pull_request) Has been cancelled
CI / unit_tests (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
|
||
|
|
192fdd7705 |
Merge branch 'master' into test/m5-e2e-verification
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 15s
CI / build (pull_request) Successful in 15s
CI / quality (pull_request) Successful in 19s
CI / security (pull_request) Successful in 30s
CI / typecheck (pull_request) Successful in 32s
CI / integration_tests (pull_request) Successful in 2m43s
CI / unit_tests (pull_request) Successful in 11m12s
CI / docker (pull_request) Successful in 39s
CI / benchmark-regression (pull_request) Successful in 25m8s
CI / coverage (pull_request) Successful in 1h23m51s
|
||
|
|
348c230bc5 |
test(e2e): add M6 autonomy acceptance suite
CI / lint (pull_request) Successful in 21s
CI / quality (pull_request) Successful in 28s
CI / security (pull_request) Successful in 31s
CI / benchmark-publish (pull_request) Has been skipped
CI / typecheck (pull_request) Successful in 53s
CI / build (pull_request) Successful in 24s
CI / integration_tests (pull_request) Successful in 4m25s
CI / unit_tests (pull_request) Successful in 23m33s
CI / docker (pull_request) Successful in 11s
CI / benchmark-regression (pull_request) Successful in 28m0s
CI / coverage (pull_request) Successful in 48m3s
Add comprehensive M6 autonomy acceptance test suites covering the ACP local-mode facade, autonomy guardrails, automation profile resolution, event queue pub/sub, HTTP transport stub, and version negotiation. Behave suite (52 scenarios): - ACP facade dispatch for all 11 operations - Guard enforcement (denylist, allowlist, budget, call limit, write/apply) - Automation profile built-in validation and custom creation - Profile resolution precedence (plan > action > project > global) - Event queue lifecycle (publish, subscribe, unsubscribe, close) - HTTP transport stub rejection in local mode - ACP version negotiation (accept/reject) - Model validation (AcpRequest, AcpResponse, AcpEvent, AcpErrorDetail) Robot integration suite (11 tests): - Facade session/plan lifecycle, unknown operation error - Event queue publish/subscribe, transport stub, version negotiation - Guard denylist/budget enforcement, profile resolution - Fixture loading, full end-to-end flow ASV benchmarks (5 suites): - Facade dispatch, guard evaluation, profile resolution - Event queue operations, fixture loading Fixtures: acp_facade_flows.json, autonomy_guardrails.json, automation_profiles.json Closes #211 |
||
|
|
ece5e61725 |
test(e2e): add M5 ACMS + context suites
CI / lint (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 21s
CI / security (pull_request) Successful in 40s
CI / typecheck (pull_request) Successful in 41s
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 16s
CI / integration_tests (pull_request) Successful in 2m47s
CI / benchmark-regression (pull_request) Successful in 28m30s
CI / unit_tests (pull_request) Failing after 33m23s
CI / docker (pull_request) Has been skipped
CI / coverage (pull_request) Failing after 53m42s
|
||
|
|
7235d46ade |
feat(skill): persist flattened tool sets
CI / quality (pull_request) Successful in 19s
CI / lint (pull_request) Successful in 21s
CI / benchmark-publish (pull_request) Has been skipped
CI / security (pull_request) Successful in 50s
CI / typecheck (pull_request) Successful in 58s
CI / build (pull_request) Successful in 29s
CI / integration_tests (pull_request) Successful in 4m16s
CI / unit_tests (pull_request) Successful in 12m18s
CI / docker (pull_request) Successful in 1m30s
CI / benchmark-regression (pull_request) Successful in 25m15s
CI / coverage (pull_request) Successful in 1h21m51s
CI / build (push) Successful in 15s
CI / quality (push) Successful in 17s
CI / lint (push) Successful in 21s
CI / security (push) Successful in 28s
CI / typecheck (push) Successful in 31s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 2m47s
CI / unit_tests (push) Successful in 11m0s
CI / docker (push) Successful in 40s
CI / benchmark-publish (push) Successful in 12m22s
CI / coverage (push) Successful in 44m42s
Add Alembic migration m4_002_skill_flattened_tools to extend the skills table with five new columns: flattened_tools_json, includes_json, capability_summary_json, yaml_text, and flattening_hash (SHA-256). A defence-in-depth uniqueness constraint (uq_skills_name) is also added. Update SkillModel with the new column definitions and extend SkillRepository with update_flattened_tools(), get_flattened_tools(), needs_refresh(), recompute_flattening_hash(), and invalidate_cached_summaries() methods. The existing update() method now nulls all cached fields on mutation (hash-based invalidation). All new repository methods follow the session-factory pattern with @database_retry and flush-but-don-t-commit semantics. Structured logging via structlog records cache updates and invalidations. Database schema docs updated with the new skills table columns and a persistence-field-to-domain-model mapping table. Tests: - 6 Behave scenarios covering create, invalidation, hash staleness, refresh recomputation, uniqueness constraint, and namespace filtering - 2 Robot Framework smoke tests (round-trip and invalidation) - 3 ASV benchmarks (persist, refresh check, namespace list) ISSUES CLOSED: #166 |
||
|
|
78bd3584e0 |
Merge branch 'master' into test/m6-e2e-verification
CI / lint (pull_request) Successful in 20s
CI / benchmark-publish (pull_request) Has been skipped
CI / typecheck (pull_request) Successful in 38s
CI / quality (pull_request) Successful in 37s
CI / security (pull_request) Successful in 52s
CI / build (pull_request) Successful in 35s
CI / integration_tests (pull_request) Successful in 5m16s
CI / benchmark-regression (pull_request) Successful in 27m54s
CI / unit_tests (pull_request) Successful in 33m2s
CI / docker (pull_request) Successful in 55s
CI / coverage (pull_request) Successful in 53m19s
|
||
|
|
742a8c8560 |
Merge branch 'master' into test/m5-e2e-verification
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 16s
CI / lint (pull_request) Successful in 21s
CI / quality (pull_request) Successful in 28s
CI / security (pull_request) Successful in 37s
CI / typecheck (pull_request) Successful in 59s
CI / integration_tests (pull_request) Successful in 2m47s
CI / unit_tests (pull_request) Successful in 23m15s
CI / docker (pull_request) Successful in 1m0s
CI / benchmark-regression (pull_request) Successful in 24m40s
CI / coverage (pull_request) Successful in 1h3m40s
|
||
|
|
c9abb45adf
|
test(coverage): add Behave BDD scenarios for 9 under-covered modules
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 15s
CI / build (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 18s
CI / security (pull_request) Successful in 31s
CI / typecheck (pull_request) Successful in 55s
CI / integration_tests (pull_request) Successful in 3m28s
CI / unit_tests (pull_request) Successful in 10m38s
CI / docker (pull_request) Successful in 16s
CI / benchmark-regression (pull_request) Successful in 20m39s
CI / coverage (pull_request) Successful in 41m22s
CI / lint (push) Successful in 13s
CI / quality (push) Successful in 17s
CI / build (push) Successful in 22s
CI / typecheck (push) Successful in 29s
CI / security (push) Successful in 29s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 2m40s
CI / unit_tests (push) Successful in 11m4s
CI / docker (push) Successful in 1m5s
CI / benchmark-publish (push) Successful in 12m10s
CI / coverage (push) Successful in 1h7m46s
Added 246 new BDD scenarios across 9 feature files to improve unit test coverage for modules that were either entirely untested or had significant coverage gaps: - lock_service_coverage.feature (27 scenarios): validation branches, TTL boundaries, re-entrant acquisition, rollback on exceptions - plan_apply_service_coverage.feature (54 scenarios): operation labels, diff rendering (plain/rich/json), artifact building, validation gate, changeset resolution and cleanup - plan_executor_coverage.feature (51 scenarios): step parsing, execute actor integration, strategize/execute guards, stub retry/recovery, decision tree construction - skill_cli_coverage_r3.feature (22 scenarios): tools refresh, list/show JSON fallback, capability summary errors, remove confirmation - changeset_repository_coverage.feature (39 scenarios): entry/tool repos validation, database error wrapping, domain conversion, SQLite store CRUD operations - repositories_coverage.feature (20 scenarios): get_by_name/namespace errors, list_available filters, delete with ActionInUseError, plan update with invariants/processing_state/error_details - sandbox_copy_on_write_coverage.feature (12 scenarios): create OSError wrapping, get_path state transitions, commit edge cases, rollback errors, cleanup with missing paths - bridge_coverage.feature (8 scenarios): __del__ suppression, async task cancellation, execute_graph message type handling, stream config, state checkpointer - plan_cli_coverage.feature (13 scenarios): legacy apply/list/cd paths, use-action with estimation/invariant actors, lifecycle-apply guards, status errors, error recovery display All 246 scenarios (1105 steps) pass. Step definitions use unique prefixes to prevent ambiguous step conflicts with existing tests. ISSUES CLOSED: #467 |
||
|
|
a074b4846f
|
fix(provider): remove FakeListLLM defaults
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 15s
CI / build (pull_request) Successful in 19s
CI / quality (pull_request) Successful in 28s
CI / security (pull_request) Successful in 50s
CI / typecheck (pull_request) Successful in 56s
CI / integration_tests (pull_request) Successful in 4m51s
CI / unit_tests (pull_request) Successful in 19m29s
CI / docker (pull_request) Successful in 39s
CI / benchmark-regression (pull_request) Successful in 26m10s
CI / coverage (pull_request) Successful in 47m42s
CI / lint (push) Successful in 13s
CI / quality (push) Successful in 17s
CI / build (push) Successful in 23s
CI / typecheck (push) Successful in 30s
CI / security (push) Successful in 30s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 2m52s
CI / unit_tests (push) Successful in 10m8s
CI / docker (push) Successful in 1m19s
CI / benchmark-publish (push) Successful in 11m54s
CI / coverage (push) Failing after 39m51s
Remove FakeListLLM as a silent fallback in agent graph constructors (plan_generation.py, context_analysis.py, auto_debug.py). All three now raise ValueError when llm=None, making missing-provider errors explicit. Add Settings.mock_providers flag and validate_provider_availability() method. Update container.get_ai_provider() to check Settings.mock_providers first, with env-var fallback for backward compatibility. Add resolve_provider_by_name() helper to the provider registry and export it from cleveragents.providers. Add structlog trace logging to ProviderRegistry.get_default_provider_type() to record selection reasoning. Update all existing behave step files, robot tests, and benchmarks that relied on the implicit FakeListLLM default to pass an explicit LLM instance instead. Add new BDD tests (features/provider_fixes.feature with 17 scenarios), Robot Framework integration tests (robot/provider_detection_smoke.robot), and ASV benchmarks (benchmarks/provider_selection_bench.py). ISSUES CLOSED: #323 |
||
|
|
fa1794dba9 |
Merge pull request 'feat(skill): add MCP refresh hooks' (#455) from feature/m4-skill-registry-refresh into master
CI / lint (push) Successful in 13s
CI / build (push) Successful in 16s
CI / quality (push) Successful in 19s
CI / typecheck (push) Successful in 47s
CI / benchmark-regression (push) Has been skipped
CI / security (push) Successful in 50s
CI / integration_tests (push) Successful in 5m21s
CI / unit_tests (push) Successful in 15m1s
CI / benchmark-publish (push) Successful in 15m10s
CI / docker (push) Successful in 41s
CI / coverage (push) Successful in 54m46s
Reviewed-on: #455 Reviewed-by: Luis Mendes <luis.mendes@cleverthis.com> |
||
|
|
9af9ff8d95
|
Merge branch 'master' into feature/m4-skill-registry-refresh
CI / lint (pull_request) Successful in 21s
CI / typecheck (pull_request) Successful in 32s
CI / quality (pull_request) Successful in 14s
CI / security (pull_request) Successful in 50s
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 24s
CI / integration_tests (pull_request) Successful in 2m44s
CI / unit_tests (pull_request) Successful in 21m48s
CI / docker (pull_request) Successful in 1m2s
CI / benchmark-regression (pull_request) Successful in 26m41s
CI / coverage (pull_request) Successful in 43m59s
|
||
|
|
ddebcad872 |
Merge pull request 'feat(cli): add skill tools and refresh commands' (#454) from feature/m4-skill-registry-cli into master
CI / lint (push) Successful in 27s
CI / quality (push) Successful in 34s
CI / security (push) Successful in 57s
CI / typecheck (push) Successful in 1m2s
CI / build (push) Successful in 22s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 5m22s
CI / benchmark-publish (push) Successful in 15m28s
CI / unit_tests (push) Successful in 28m19s
CI / docker (push) Successful in 1m6s
CI / coverage (push) Successful in 50m57s
Reviewed-on: #454 Reviewed-by: Luis Mendes <luis.mendes@cleverthis.com> |
||
|
|
174d1dc334
|
Merge branch 'master' into feature/m4-skill-registry-cli
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 15s
CI / build (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 29s
CI / typecheck (pull_request) Successful in 32s
CI / security (pull_request) Successful in 54s
CI / integration_tests (pull_request) Successful in 3m33s
CI / unit_tests (pull_request) Successful in 10m4s
CI / docker (pull_request) Successful in 1m0s
CI / benchmark-regression (pull_request) Successful in 27m22s
CI / coverage (pull_request) Successful in 39m27s
|
||
|
|
9fd29b2748 |
Merge pull request 'feat(skill): add agent skills loader' (#453) from feature/m3-agent-skills-loader into master
CI / build (push) Successful in 16s
CI / quality (push) Successful in 18s
CI / lint (push) Successful in 21s
CI / security (push) Successful in 30s
CI / typecheck (push) Successful in 36s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 3m27s
CI / unit_tests (push) Successful in 10m2s
CI / docker (push) Successful in 38s
CI / benchmark-publish (push) Successful in 11m50s
CI / coverage (push) Successful in 39m24s
Reviewed-on: #453 Reviewed-by: Hamza Khyari <hamza.khyari@cleverthis.com> |
||
|
|
4c4bd74d94
|
Merge branch 'master' into feature/m3-agent-skills-loader
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 12s
CI / build (pull_request) Successful in 15s
CI / quality (pull_request) Successful in 17s
CI / security (pull_request) Successful in 29s
CI / typecheck (pull_request) Successful in 31s
CI / integration_tests (pull_request) Successful in 3m31s
CI / unit_tests (pull_request) Successful in 10m8s
CI / docker (pull_request) Successful in 38s
CI / benchmark-regression (pull_request) Successful in 19m52s
CI / coverage (pull_request) Successful in 38m39s
|
||
|
|
131be21e80
|
fix(tests): update actor_examples count to 7 after subplan example
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 13s
CI / build (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 17s
CI / typecheck (pull_request) Successful in 31s
CI / security (pull_request) Successful in 35s
CI / integration_tests (pull_request) Successful in 2m50s
CI / unit_tests (pull_request) Successful in 20m54s
CI / docker (pull_request) Successful in 39s
CI / benchmark-regression (pull_request) Successful in 26m10s
CI / coverage (pull_request) Successful in 48m2s
Refs: #198 |
||
|
|
2b5b73c689
|
Merge branch 'master' into feature/m5-subplan-actor
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 16s
CI / build (pull_request) Successful in 18s
CI / quality (pull_request) Successful in 18s
CI / typecheck (pull_request) Successful in 33s
CI / security (pull_request) Successful in 42s
CI / integration_tests (pull_request) Successful in 2m40s
CI / unit_tests (pull_request) Failing after 19m35s
CI / docker (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Successful in 19m36s
CI / coverage (pull_request) Has been cancelled
|
||
|
|
b888afab71
|
feat(actor): add plan_subplan tool and decision emission
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 16s
CI / build (pull_request) Successful in 19s
CI / quality (pull_request) Successful in 19s
CI / security (pull_request) Successful in 32s
CI / typecheck (pull_request) Successful in 44s
CI / integration_tests (pull_request) Successful in 2m46s
CI / unit_tests (pull_request) Failing after 19m21s
CI / docker (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Successful in 21m3s
CI / coverage (pull_request) Has been cancelled
Add builtin/plan-subplan tool for strategy actors to emit SUBPLAN_SPAWN or SUBPLAN_PARALLEL_SPAWN decisions when decomposing a plan into child plans. Implements all acceptance criteria from issue #198: - SubplanPayload (Pydantic) validates goal, resource_scopes/project_ref (at least one required), merge_strategy, max_parallel (1-50), parallel flag, dependencies, and context_view override. - Defaults: merge_strategy=git_three_way, max_parallel=5, parallel=False, dependencies=[]. Omitted fields inherit sensible values automatically. - make_plan_subplan_spec(decision_service=None) factory supports optional DecisionService injection for persistent decision recording. - _build_rationale() generates human-readable rationale text (goal, scope, execution mode, dependencies, context_view) surfaced in plan explain. - register_subplan_tool() added to tool/builtins/__init__.py for bulk registration. PLAN_SUBPLAN_SPEC exported as the default ready-to-use spec. - Actor YAML example (examples/actors/strategy_with_subplan.yaml) with annotated serial and parallel spawn payload examples. - Behave BDD: 20 scenarios, 70 steps covering validation, defaults, decision type, rationale, service injection, registry, and ToolRunner. - Robot Framework: 9 smoke tests via robot/plan_subplan_tool.robot. - ASV benchmarks: benchmarks/subplan_actor_tool_bench.py (5 suites). - Coverage: 100% on subplan_tool.py. Lint, typecheck, and security clean. ISSUES CLOSED: #198 |
||
|
|
ab9732c2a1 |
Merge pull request 'feat(skill): add MCP adapter for external tools' (#434) from feature/m3-mcp-adapter into master
CI / lint (push) Successful in 14s
CI / build (push) Successful in 16s
CI / quality (push) Successful in 18s
CI / security (push) Successful in 31s
CI / typecheck (push) Successful in 32s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 3m35s
CI / unit_tests (push) Successful in 9m46s
CI / docker (push) Successful in 39s
CI / benchmark-publish (push) Successful in 15m22s
CI / coverage (push) Successful in 39m4s
Reviewed-on: #434 Reviewed-by: Luis Mendes <luis.mendes@cleverthis.com> |
||
|
|
a0f56228e2
|
Merge branch 'master' into feature/m3-mcp-adapter
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 15s
CI / build (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 18s
CI / security (pull_request) Successful in 29s
CI / typecheck (pull_request) Successful in 33s
CI / integration_tests (pull_request) Successful in 3m10s
CI / unit_tests (pull_request) Successful in 9m49s
CI / docker (pull_request) Successful in 40s
CI / benchmark-regression (pull_request) Successful in 27m20s
CI / coverage (pull_request) Successful in 38m36s
|
||
|
|
120274da99 |
feat(di): wire decision services
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 14s
CI / build (pull_request) Successful in 20s
CI / quality (pull_request) Successful in 22s
CI / typecheck (pull_request) Successful in 33s
CI / security (pull_request) Successful in 35s
CI / integration_tests (pull_request) Successful in 4m26s
CI / unit_tests (pull_request) Successful in 20m49s
CI / benchmark-regression (pull_request) Successful in 20m19s
CI / docker (pull_request) Successful in 1m2s
CI / coverage (pull_request) Successful in 48m2s
CI / lint (push) Successful in 12s
CI / quality (push) Successful in 16s
CI / build (push) Successful in 24s
CI / typecheck (push) Successful in 29s
CI / security (push) Successful in 30s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 2m44s
CI / unit_tests (push) Successful in 11m56s
CI / benchmark-publish (push) Successful in 12m13s
CI / docker (push) Successful in 39s
CI / coverage (push) Successful in 37m29s
Create DecisionService application-layer service that wraps DecisionRepository with structured logging and UnitOfWork transaction management. Wire DecisionService and PlanLifecycleService into the DI container as Factory providers. Inject DecisionService into PlanLifecycleService so that phase transitions automatically record decisions: start_strategize records a strategy_choice decision and start_execute records an implementation_choice decision. Decision recording is optional and never blocks lifecycle transitions. Add Behave feature (5 scenarios), Robot Framework smoke tests (2 test cases), ASV benchmarks (3 benchmark classes), and DI reference documentation. ISSUES CLOSED: #173 |
||
|
|
f7b8186b3f |
Merge branch 'master' into test/m6-e2e-verification
CI / lint (pull_request) Successful in 25s
CI / quality (pull_request) Successful in 21s
CI / security (pull_request) Successful in 32s
CI / benchmark-publish (pull_request) Has been skipped
CI / typecheck (pull_request) Successful in 50s
CI / build (pull_request) Successful in 22s
CI / integration_tests (pull_request) Successful in 5m18s
CI / unit_tests (pull_request) Successful in 12m10s
CI / docker (pull_request) Successful in 39s
CI / benchmark-regression (pull_request) Successful in 25m18s
CI / coverage (pull_request) Successful in 1h16m20s
|
||
|
|
8771b195f5 |
Merge branch 'master' into test/m5-e2e-verification
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 16s
CI / build (pull_request) Successful in 23s
CI / quality (pull_request) Successful in 37s
CI / typecheck (pull_request) Successful in 42s
CI / security (pull_request) Successful in 56s
CI / integration_tests (pull_request) Successful in 4m50s
CI / unit_tests (pull_request) Successful in 21m2s
CI / docker (pull_request) Successful in 9s
CI / benchmark-regression (pull_request) Successful in 26m7s
CI / coverage (pull_request) Successful in 1h16m25s
|
||
|
|
13b1eb45a8 |
Merge pull request 'feat(security): enforce read-only actions' (#436) from feature/m4-security-readonly into master
CI / lint (push) Successful in 16s
CI / build (push) Successful in 18s
CI / quality (push) Successful in 19s
CI / security (push) Successful in 34s
CI / typecheck (push) Successful in 41s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 3m1s
CI / unit_tests (push) Successful in 11m22s
CI / docker (push) Successful in 1m0s
CI / benchmark-publish (push) Successful in 13m56s
CI / coverage (push) Successful in 48m49s
Reviewed-on: #436 Reviewed-by: Brent Edwards <brent.edwards@cleverthis.com> |
||
|
|
8c5fa8ace7 |
Merge branch 'master' into test/m5-e2e-verification
CI / lint (pull_request) Successful in 14s
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 16s
CI / security (pull_request) Successful in 30s
CI / typecheck (pull_request) Successful in 34s
CI / build (pull_request) Successful in 41s
CI / integration_tests (pull_request) Successful in 5m23s
CI / unit_tests (pull_request) Successful in 20m59s
CI / docker (pull_request) Successful in 39s
CI / benchmark-regression (pull_request) Successful in 25m59s
CI / coverage (pull_request) Has been cancelled
|
||
|
|
493e5cf8a1 |
fix(security): wire read_only through ExecuteStubActor and replace stubs with real tests
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 20s
CI / lint (pull_request) Successful in 20s
CI / build (pull_request) Successful in 28s
CI / security (pull_request) Successful in 33s
CI / typecheck (pull_request) Successful in 34s
CI / integration_tests (pull_request) Successful in 3m38s
CI / benchmark-regression (pull_request) Successful in 26m8s
CI / unit_tests (pull_request) Successful in 29m12s
CI / docker (pull_request) Successful in 1m2s
CI / coverage (pull_request) Successful in 50m23s
- Add read_only kwarg to ExecuteStubActor.execute(), propagated to ChangeSetCapture; PlanExecutor._run_execute_with_stub passes plan.read_only through the execution path (P1 #2 fix) - Replace CLI fail-fast and Action-Skill stub scenarios with real ExecuteStubActor spy test and SkillContext.enforce_write_guard integration tests (P2 #1 fix) - Update docs: remove unimplemented Layer 5 (Action-Skill), add ExecuteStubActor wiring description, fix test command (P2 #2 fix) ISSUES CLOSED: #322 |
||
|
|
2b09568cfa |
feat(security): enforce read-only actions
Tighten ToolRuntime._enforce_capabilities() to block ANY tool with writes=True when plan_read_only is set, removing the not-cap.read_only loophole that allowed certain write tools through. Tool name is now always included in the ToolAccessDeniedError message. Add read_only flag to ChangeSetCapture with ReadOnlyViolationError raised when write-capable tools are wrapped on a read-only plan. Add CLI fail-fast guards on plan execute and plan apply commands that abort before calling the service layer if plan.read_only is True. SkillContext.enforce_write_guard() already included tool name correctly and required no changes. Includes 18 Behave scenarios (90 steps), Robot integration tests, ASV benchmarks, and docs/reference/read_only_actions.md. ISSUES CLOSED: #322 |
||
|
|
4ed057fa58
|
Docs: Fixed refs in docs
CI / lint (push) Successful in 25s
CI / quality (push) Successful in 27s
CI / security (push) Successful in 49s
CI / typecheck (push) Successful in 1m1s
CI / benchmark-regression (push) Has been skipped
CI / build (push) Successful in 24s
CI / integration_tests (push) Successful in 4m59s
CI / benchmark-publish (push) Successful in 15m36s
CI / unit_tests (push) Successful in 19m44s
CI / docker (push) Successful in 40s
CI / coverage (push) Successful in 1h33m28s
|
||
|
|
c88b432beb
|
Docs: Daily timeline update
CI / lint (push) Successful in 15s
CI / build (push) Successful in 24s
CI / quality (push) Successful in 31s
CI / security (push) Successful in 37s
CI / typecheck (push) Successful in 1m5s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 4m52s
CI / benchmark-publish (push) Has been cancelled
CI / unit_tests (push) Has been cancelled
CI / coverage (push) Has been cancelled
CI / docker (push) Has been cancelled
|
||
|
|
1ec2200e34 |
test(e2e): verify M6 success criteria — Firefox-scale autonomous porting
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 15s
CI / build (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 19s
CI / security (pull_request) Successful in 30s
CI / typecheck (pull_request) Successful in 34s
CI / integration_tests (pull_request) Successful in 4m18s
CI / unit_tests (pull_request) Successful in 12m21s
CI / docker (pull_request) Successful in 15s
CI / benchmark-regression (pull_request) Successful in 25m32s
CI / coverage (pull_request) Successful in 40m18s
Robot Framework E2E test suite exercising the complete M6 success criteria verification sequence: - Porting action creation from YAML config via CLI - Plan use + execute via CLI with mocked lifecycle service - Hierarchical decomposition: 4+ levels (root + L1-L4 = 21+ plans) - Decision correction recomputes only affected subtree (CorrectionImpact) - Parallel execution scales to 15 concurrent subplans (10+ required) - Realistic porting task: full ACTION → STRATEGIZE → EXECUTE → APPLY lifecycle with 10 subplans completing autonomously - Plan apply transitions to APPLIED terminal state - SubplanFailureHandler retry/stop-others logic verification - SubplanConfig supports all execution modes and merge strategies - Decision tree structure: PROMPT_DEFINITION root with SUBPLAN_PARALLEL_SPAWN children and superseded_by flow Ten subcommands in the Python helper, each printing a sentinel string on success. All subcommands verified passing locally. Closes #407 |
||
|
|
93f2d396a1 |
Merge pull request 'test: consolidated Brent QA batch — issues #179, #180, #404, #405, #187' (#442) from develop-brent-5 into master
CI / lint (push) Successful in 22s
CI / quality (push) Successful in 24s
CI / typecheck (push) Successful in 39s
CI / security (push) Successful in 53s
CI / build (push) Successful in 15s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 6m6s
CI / benchmark-publish (push) Successful in 11m51s
CI / unit_tests (push) Successful in 24m50s
CI / docker (push) Successful in 8s
CI / coverage (push) Successful in 1h23m59s
Reviewed-on: #442 Reviewed-by: Jeffrey Phillips Freeman <jeffrey.freeman@cleverthis.com> |
||
|
|
fd1612c38f |
test(e2e): verify M5 success criteria — ACMS and large-project context
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 17s
CI / lint (pull_request) Successful in 21s
CI / quality (pull_request) Successful in 20s
CI / security (pull_request) Successful in 54s
CI / typecheck (pull_request) Successful in 56s
CI / integration_tests (pull_request) Successful in 4m21s
CI / unit_tests (pull_request) Successful in 10m21s
CI / docker (pull_request) Successful in 39s
CI / benchmark-regression (pull_request) Successful in 22m20s
CI / coverage (pull_request) Successful in 1h5m5s
Robot Framework E2E test suite exercising the complete M5 success criteria verification sequence: - Large project creation with 10,000+ simulated files - Resource registration and linking to a project - Indexing verification (resource linked, project shows correctly) - Context tier management (hot/warm/cold) via ContextConfig - ACMS v1 context policy set/show with persistence round-trip - Phase view inheritance (default → strategize → execute → apply) - Scoped context output per ACMS phase with narrowing size limits - Policy clear and inheritance fallback - ContextView validation rules (size limits, VALID_PHASES) Nine subcommands in the Python helper, each printing a sentinel string on success. All subcommands verified passing locally. Closes #406 |
||
|
|
ffdd2f2b19 |
Merge branch 'master' into develop-brent-5
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 15s
CI / build (pull_request) Successful in 20s
CI / quality (pull_request) Successful in 29s
CI / typecheck (pull_request) Successful in 36s
CI / security (pull_request) Successful in 54s
CI / integration_tests (pull_request) Successful in 4m9s
CI / unit_tests (pull_request) Successful in 10m36s
CI / docker (pull_request) Successful in 39s
CI / benchmark-regression (pull_request) Successful in 26m16s
CI / coverage (pull_request) Successful in 39m2s
|
||
|
|
32b81793a2 |
refactor(test): rename decision persistence files to avoid conflict with master
Rename our serialization-focused decision persistence suites to *_serialization to avoid add/add conflicts with the repository-based decision persistence suites that landed on master independently: - decision_persistence.feature -> decision_persistence_serialization.feature - decision_persistence_steps.py -> decision_persistence_serialization_steps.py - decision_persistence_bench.py -> decision_persistence_serialization_bench.py - decision_persistence.robot -> decision_persistence_serialization.robot - helper_decision_persistence.py -> helper_decision_persistence_serialization.py Updated robot helper path, step docstring, and testing.md references. |
||
|
|
074f884f14 |
Merge pull request 'fix(security): close async resources and leaks' (#435) from feature/m4-security-async-cleanup into master
CI / lint (push) Successful in 15s
CI / quality (push) Successful in 35s
CI / typecheck (push) Successful in 43s
CI / benchmark-regression (push) Has been skipped
CI / security (push) Successful in 1m4s
CI / build (push) Successful in 53s
CI / integration_tests (push) Successful in 4m19s
CI / benchmark-publish (push) Successful in 16m1s
CI / unit_tests (push) Successful in 35m8s
CI / docker (push) Successful in 39s
CI / coverage (push) Has been cancelled
Reviewed-on: #435 |
||
|
|
76db58414a
|
Merge branch 'master' into feature/m3-agent-skills-loader
CI / lint (pull_request) Successful in 22s
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 29s
CI / build (pull_request) Successful in 27s
CI / security (pull_request) Successful in 55s
CI / typecheck (pull_request) Successful in 1m1s
CI / integration_tests (pull_request) Successful in 4m35s
CI / unit_tests (pull_request) Successful in 23m50s
CI / docker (pull_request) Successful in 50s
CI / benchmark-regression (pull_request) Successful in 26m46s
CI / coverage (pull_request) Successful in 55m34s
|
||
|
|
f8bc02869a
|
Merge branch 'master' into feature/m3-agent-skills-loader
CI / lint (pull_request) Successful in 24s
CI / quality (pull_request) Successful in 33s
CI / benchmark-publish (pull_request) Has been skipped
CI / security (pull_request) Successful in 59s
CI / typecheck (pull_request) Successful in 1m1s
CI / build (pull_request) Successful in 28s
CI / coverage (pull_request) Has been cancelled
CI / integration_tests (pull_request) Has been cancelled
CI / unit_tests (pull_request) Has been cancelled
CI / benchmark-regression (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
|
||
|
|
d0337a0881
|
fix(skill): eliminate Any from agent_skills_loader type signatures
Replace dict[str, Any] with a private _YamlMapping type alias (dict[str, object]) in AgentSkillSpec Pydantic fields and all internal helper function signatures. Add isinstance guard for allowed-tools list iteration to satisfy pyright. Refs: #160 |
||
|
|
c406781b86 |
fix(security): address PR #435 review feedback
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 15s
CI / quality (pull_request) Successful in 17s
CI / build (pull_request) Successful in 20s
CI / typecheck (pull_request) Successful in 41s
CI / security (pull_request) Successful in 57s
CI / integration_tests (pull_request) Successful in 2m53s
CI / unit_tests (pull_request) Successful in 19m17s
CI / docker (pull_request) Successful in 1m1s
CI / benchmark-regression (pull_request) Successful in 26m11s
CI / coverage (pull_request) Successful in 47m20s
P0: reject register() after close_all() with RuntimeError. P1: catch CancelledError in close_all(), use WeakKeyDictionary for cancellation_reasons to prevent memory leak, guard StateManager update_state/reset/load_checkpoint/time_travel after close(). P2: contextlib.suppress in __del__ for partial construction, re-cancel pending tasks in cleanup_tasks_async, handle late tasks added during await window, guard AcpEventQueue.publish() after close with _is_closed flag and is_closed property, fix ASV TimeRegisterBatch crash. Tests: 5 new Behave scenarios (T1-T4 + is_closed), log handler and event loop cleanup in after_scenario (T5-T6). Docs: async_safety.md updated for register-after-close and state mutation guards. ISSUES CLOSED: #321 |
||
|
|
5d5d3fde2c |
fix(security): close async resources and leaks
Add AsyncResourceTracker (core/async_cleanup.py) providing a central registry for async resources with timeout-bounded close_all(), async context manager support, and a __del__ finalizer that logs leaked resources by name. Enhance LangGraphBridge with cleanup_tasks_async() that awaits in-flight tasks with a deadline instead of fire-and-forget cancel(). Add cancellation_reasons dict to trace why tasks were cancelled. Add StateManager.close() to properly release checkpoint file handles and complete the RxPY BehaviorSubject. Add AcpEventQueue.close() to dispose all subscriptions. Includes 14 Behave scenarios (67 steps), Robot integration tests, ASV benchmarks, and docs/reference/async_safety.md. ISSUES CLOSED: #321 |
||
|
|
7ad9f2bf4a
|
chore: update CHANGELOG for feat(skill): add agent skills loader
ISSUE CLOSED #160 |
||
|
|
db58a3bb62 |
Merge pull request 'feat(decision): add decision persistence layer' (#131) from feature/m4-decision-persistence into master
CI / lint (push) Successful in 15s
CI / build (push) Successful in 21s
CI / quality (push) Successful in 23s
CI / security (push) Successful in 33s
CI / typecheck (push) Successful in 43s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 2m56s
CI / benchmark-publish (push) Successful in 14m45s
CI / unit_tests (push) Successful in 17m58s
CI / docker (push) Successful in 26s
CI / coverage (push) Has been cancelled
Reviewed-on: #131 Reviewed-by: Brent Edwards <brent.edwards@cleverthis.com> |
||
|
|
7f2b1c61fc |
fix(decision): rebase migration onto merged changeset head
CI / lint (pull_request) Successful in 15s
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 28s
CI / typecheck (pull_request) Successful in 34s
CI / build (pull_request) Successful in 23s
CI / security (pull_request) Successful in 54s
CI / integration_tests (pull_request) Successful in 5m18s
CI / unit_tests (pull_request) Successful in 19m34s
CI / docker (pull_request) Successful in 1m4s
CI / benchmark-regression (pull_request) Successful in 24m59s
CI / coverage (pull_request) Successful in 44m0s
After rebasing onto master, m4_001_decision_tables and d0_002_merge_changeset_and_locks were both leaf heads. Update down_revision so the decision migration chains after the merge migration, restoring a single Alembic head. ISSUES CLOSED: #171 |