Commit Graph

3677 Commits

Author SHA1 Message Date
HAL9000 a6a5f72a00 TDD: Add test for timer firing after cancellation in McpClient
Add a TDD issue-capture test (tagged @tdd_issue, @tdd_issue_10516,
@tdd_expected_fail) that proves the race condition in
McpClient._schedule_idle_timer() where timer.start() is called
outside the lock, allowing a timer to fire even after shutdown()
has called _cancel_idle_timer().

The test uses concurrent scheduling threads to trigger the race
window and verifies that _check_idle() fires when _shutting_down
is True, confirming the bug exists.

Closes #10516
2026-06-17 02:36:59 -04:00
HAL9000 bd71314f75 Merge pull request 'fix(agents/graphs/auto_debug): return update dicts from node functions instead of mutating state in-place' (#11155) from fix/issue-10496-auto-debug-state-mutation into master
CI / load-versions (push) Successful in 17s
CI / push-validation (push) Successful in 24s
CI / lint (push) Successful in 43s
CI / build (push) Successful in 33s
CI / typecheck (push) Successful in 58s
CI / quality (push) Successful in 56s
CI / security (push) Successful in 1m17s
CI / helm (push) Successful in 39s
CI / unit_tests (push) Successful in 5m10s
CI / docker (push) Successful in 1m38s
CI / integration_tests (push) Successful in 8m46s
CI / coverage (push) Successful in 9m40s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Has been cancelled
CI / benchmark-regression (push) Has been cancelled
2026-06-17 06:00:50 +00:00
CleverAgents Bot 7feab6d29d test(auto-debug): exercise message content fixtures
CI / load-versions (pull_request) Successful in 15s
CI / push-validation (pull_request) Successful in 24s
CI / lint (pull_request) Successful in 36s
CI / build (pull_request) Successful in 35s
CI / quality (pull_request) Successful in 55s
CI / typecheck (pull_request) Successful in 57s
CI / security (pull_request) Successful in 1m23s
CI / helm (pull_request) Successful in 38s
CI / unit_tests (pull_request) Successful in 6m41s
CI / docker (pull_request) Successful in 1m29s
CI / integration_tests (pull_request) Successful in 10m47s
CI / coverage (pull_request) Successful in 9m38s
CI / status-check (pull_request) Successful in 7s
2026-06-17 01:43:50 -04:00
drew a8af98c372 test(auto_debug): type BDD mutation fixtures 2026-06-17 01:43:50 -04:00
HAL9000 dc0d7a82da Merge pull request 'feat(session): implement conversation content pruning' (#6628) from feat/issue-6350-conversation-content-pruning into master
CI / load-versions (push) Successful in 16s
CI / push-validation (push) Successful in 27s
CI / lint (push) Successful in 48s
CI / security (push) Successful in 1m8s
CI / build (push) Successful in 41s
CI / typecheck (push) Successful in 1m12s
CI / quality (push) Successful in 1m6s
CI / helm (push) Successful in 40s
CI / unit_tests (push) Successful in 5m42s
CI / docker (push) Successful in 1m29s
CI / integration_tests (push) Successful in 9m2s
CI / coverage (push) Successful in 10m2s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Has been cancelled
CI / benchmark-regression (push) Has been cancelled
2026-06-17 05:39:59 +00:00
drew ffac6be326 fix(tui): count conversation separators for pruning
CI / load-versions (pull_request) Successful in 16s
CI / push-validation (pull_request) Successful in 24s
CI / lint (pull_request) Successful in 50s
CI / quality (pull_request) Successful in 57s
CI / typecheck (pull_request) Successful in 1m3s
CI / security (pull_request) Successful in 1m4s
CI / build (pull_request) Successful in 43s
CI / helm (pull_request) Successful in 40s
CI / unit_tests (pull_request) Successful in 7m7s
CI / docker (pull_request) Successful in 2m11s
CI / integration_tests (pull_request) Successful in 11m38s
CI / coverage (pull_request) Successful in 10m18s
CI / status-check (pull_request) Successful in 3s
2026-06-17 00:57:52 -04:00
drew a2b2b4f087 fix(tui): satisfy conversation benchmark lint
Rename unused benchmark loop variables so ruff B007 passes after the rebase onto current master.

ISSUES CLOSED: #6350
2026-06-17 00:57:51 -04:00
HAL9000 84628831ab test(tui): add direct Behave coverage for conversation pruning module
Adds 20 scenarios that exercise ConversationSettings clamping,
ConversationBlock line counting, ConversationStream bootstrap / clear /
extend / render / pruning behaviour, and load_conversation_settings
fallback paths directly. The pre-existing single Behave scenario
covered ConversationStream only through the TUI app's
_append_conversation_block, leaving most of the new conversation
module unmeasured and pulling overall coverage below the 97%
threshold (the lone failing CI gate).

ISSUES CLOSED: #6350
2026-06-17 00:57:51 -04:00
HAL9000 90d65d8a3e fix(tui): fix prune_excess minimum and robot test iteration count
ConversationSettings clamped prune_excess to minimum=100, so the
helper's prune_excess=50 was silently raised to 100, making
trigger_line_count=200 exactly equal to the 200 lines added in the
robot test. The > check never fired, pruning never ran, and both
prune-trigger and prune-note-inserted failed.

Fixes:
- Lower prune_excess minimum from 100 to 10 in _normalise_positive so
  values like 50 are accepted without clamping.
- Change range(20) to range(21) in cmd_prune_trigger and
  cmd_prune_note_inserted: 21 blocks x 10 lines = 210 lines triggers
  pruning twice (at block 15 and block 20), leaving total_lines=91
  after the final prune event which satisfies the <= 100 assertion.

ISSUES CLOSED: #6350
2026-06-17 00:57:51 -04:00
HAL9000 c5df00c6d3 feat(tui): fix lint, add robot/benchmark/changelog for pruning
- Fix ruff format violations in app.py, conversation.py, and
  tui_conversation_pruning_steps.py (3 files reformatted)
- Fix ruff E501 line-too-long in helper_tui_conversation_pruning.py
- Expand ConversationSettings docstring to explain hysteresis design
- Add _note_active invariant comment in ConversationStream.__init__
- Add full docstring to load_conversation_settings (config path, keys,
  fallback behaviour)
- Narrow bare except Exception to (OSError, json.JSONDecodeError) and
  (ValueError, TypeError) in load_conversation_settings
- Add Robot Framework integration tests (tui_conversation_pruning.robot
  + helper) covering prune-trigger, note-inserted, protected-blocks,
  clear-resets-state, settings-defaults
- Add ASV benchmarks (conversation_stream_bench.py) covering add_block
  baseline, heavy-load pruning, render after prune, clear+repopulate
- Add CHANGELOG.md entry for feat(tui) conversation content pruning

ISSUES CLOSED: #6350
2026-06-17 00:57:51 -04:00
HAL9000 b5a3b3c84f feat(session): implement conversation content pruning with line limit enforcement (#6350)
Implement conversation pruning logic, integrate with TUI stream, and add regression coverage.

ISSUES CLOSED: #6350
2026-06-17 00:57:51 -04:00
HAL9000 6d8f3ec849 Merge pull request 'fix(tui): integrate ShellSafetyService properly in TUI app' (#6576) from feat/issue-6361-shell-safety-service-tui into master
CI / load-versions (push) Successful in 13s
CI / push-validation (push) Successful in 27s
CI / lint (push) Successful in 41s
CI / build (push) Successful in 34s
CI / quality (push) Successful in 1m4s
CI / typecheck (push) Successful in 1m8s
CI / security (push) Successful in 1m23s
CI / helm (push) Successful in 39s
CI / unit_tests (push) Successful in 4m57s
CI / docker (push) Successful in 1m38s
CI / integration_tests (push) Successful in 10m11s
CI / coverage (push) Successful in 9m41s
CI / status-check (push) Successful in 4s
CI / benchmark-publish (push) Has been cancelled
CI / benchmark-regression (push) Has been cancelled
2026-06-17 04:36:58 +00:00
HAL9000 6b2a97ecda refactor(tui-tests): extract mock-Textual infrastructure to _tui_mock_helpers.py
CI / load-versions (pull_request) Successful in 14s
CI / push-validation (pull_request) Successful in 24s
CI / lint (pull_request) Successful in 45s
CI / quality (pull_request) Successful in 58s
CI / security (pull_request) Successful in 1m4s
CI / typecheck (pull_request) Successful in 1m12s
CI / build (pull_request) Successful in 40s
CI / helm (pull_request) Successful in 38s
CI / unit_tests (pull_request) Successful in 4m51s
CI / docker (pull_request) Successful in 1m29s
CI / integration_tests (pull_request) Successful in 10m12s
CI / coverage (pull_request) Successful in 9m40s
CI / status-check (pull_request) Successful in 3s
Move _MOCK_TEXTUAL_KEYS, _build_mock_textual, _install_mock_textual,
_restore_modules, _make_persona_state, _cleanup_tmpdir, and
_FakeCommandRouter out of tui_app_coverage_steps.py into a shared
_tui_mock_helpers.py module so both step files can import them without
duplication and the coverage steps file stays within the 500-line budget.

ISSUES CLOSED: #6361
2026-06-17 00:21:34 -04:00
drew c78862fe8b test(tui): cover shell safety confirmation callbacks
ISSUES CLOSED: #6361
2026-06-17 00:21:34 -04:00
drew b83b84ca79 fix(test): restore SimpleNamespace import in tui_app_coverage_steps (rebase fixup)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 00:21:34 -04:00
controller-ci-rerun 64147c8d1f chore: re-trigger CI [controller] 2026-06-17 00:21:34 -04:00
controller-ci-rerun 5e6bad359d chore: re-trigger CI [controller] 2026-06-17 00:21:34 -04:00
controller-ci-rerun 4900d757f7 chore: re-trigger CI [controller] 2026-06-17 00:21:34 -04:00
HAL9000 b56c824909 fix(tui): repair shell-safety test scaffolding
Three independent test-scaffold defects blocked the unit_tests and
integration_tests gates on PR #6361's shell-safety wiring:

- features/steps/_tui_helpers.py: the mocked-shell helper patched
  cleveragents.tui.input.shell_exec.run_shell_command, but modes.py
  binds the symbol into its own namespace via `from ... import`. The
  patch was inert, and only the CLEVERAGENTS_ALLOW_DANGEROUS_SHELL=1
  gate kept the real `rm -rf /tmp` from running in the behave runner.
  Patch the use site (modes.run_shell_command) instead.

- src/cleveragents/tui/widgets/prompt.py: _FallbackPromptInput (used
  whenever Textual is mocked or unavailable) had no add_class /
  remove_class / has_class, so the new "prompt should be marked as
  dangerous" assertions raised AttributeError and the three new
  scenarios errored. The production path (_TextualPromptInput) already
  inherits these from textual.containers.Horizontal; the fallback now
  mirrors that contract via a small self._classes set.

- robot/tui_shell_safety.robot: Catenate's space-based argument
  separator collapses multi-space indentation, so the Python function
  bodies (warn_callback, deny) landed at column 0 and the helper
  scripts died with IndentationError before either assertion ran.
  Preserve the 4-space indent with ${SPACE * 4} markers.

ISSUES CLOSED: #6361
2026-06-17 00:21:34 -04:00
HAL9000 9c6e6ce55f fix(tui): remove dead state fields and DRY up step helpers
- Remove `_shell_warning_active` and `_last_shell_warning` from
  CleverAgentsTuiApp.__init__, _show_shell_warning, and
  _clear_shell_warning — both fields were set but never consumed
- Extract shared `_submit_text` and `_submit_text_with_mocked_shell`
  into features/steps/_tui_helpers.py; update tui_app_coverage_steps
  and tui_shell_safety_steps to import from shared module, eliminating
  the duplicate definitions flagged across multiple review cycles
2026-06-17 00:21:34 -04:00
HAL9000 8e8f2d5f89 fix(tui): enforce shell safety gating
- honour ShellSafetyService verdicts before executing shell commands
- tighten TUI confirmation defaults and align warning messaging with spec
- split shell-safety Behave steps and add Robot coverage

ISSUES CLOSED: #6361
2026-06-17 00:21:34 -04:00
HAL9000 6fe9b86b60 fix(tui): integrate ShellSafetyService properly in TUI app (#6361)
- route shell submissions through ShellSafetyService and surface warnings in the UI
- add shell warning banner, prompt styling, and configurable shell.warn_dangerous flag
- extend TUI coverage scenarios for shell safety and document the fix

ISSUES CLOSED: #6361
2026-06-17 00:21:34 -04:00
HAL9000 bc0b6fde6b Merge pull request 'fix: Update for Click 8.2+ compatibility and fix quality gates' (#3774) from fix/quality-gates-click82-compat into master
CI / load-versions (push) Successful in 15s
CI / push-validation (push) Successful in 26s
CI / lint (push) Successful in 50s
CI / build (push) Successful in 41s
CI / quality (push) Successful in 53s
CI / typecheck (push) Successful in 59s
CI / security (push) Successful in 1m16s
CI / helm (push) Successful in 50s
CI / unit_tests (push) Successful in 5m48s
CI / docker (push) Successful in 1m39s
CI / integration_tests (push) Successful in 8m39s
CI / coverage (push) Successful in 10m8s
CI / status-check (push) Successful in 4s
CI / benchmark-publish (push) Has been cancelled
CI / benchmark-regression (push) Has been cancelled
2026-06-17 03:58:38 +00:00
HAL9000 0dc1a3c629 style(tests): apply ruff format to plan_cli_spec_alignment step
CI / load-versions (pull_request) Successful in 14s
CI / push-validation (pull_request) Successful in 21s
CI / lint (pull_request) Successful in 35s
CI / typecheck (pull_request) Successful in 53s
CI / security (pull_request) Successful in 1m3s
CI / quality (pull_request) Successful in 58s
CI / build (pull_request) Successful in 46s
CI / helm (pull_request) Successful in 1m16s
CI / unit_tests (pull_request) Successful in 6m55s
CI / docker (pull_request) Successful in 1m58s
CI / integration_tests (pull_request) Successful in 11m12s
CI / coverage (pull_request) Successful in 12m34s
CI / status-check (pull_request) Successful in 3s
Collapse the namespace-filter ``runner.invoke(...)`` call onto a single
line so ``ruff format --check`` (the ``lint`` gate's ``format``
session) passes.

ISSUES CLOSED: #3773
2026-06-16 23:08:30 -04:00
HAL9000 2e04e8597e test(config,plan): add coverage for CLEVERAGENTS_HOME branch and --namespace filter
Two changed source lines were uncovered by the existing test suite:

- ``src/cleveragents/cli/commands/config.py:57`` — ``return Path(home_env)``
  branch in ``_get_config_dir()`` (only reached when
  ``CLEVERAGENTS_HOME`` is set).
- ``src/cleveragents/cli/commands/plan.py:3131`` —
  ``active_filters.append(f"[yellow]Namespace:[/yellow] {namespace}")``
  in ``lifecycle_list_plans`` (only reached when ``--namespace`` is
  passed).

Add one scenario per uncovered line:

- ``features/config_cli_safety_net_coverage.feature`` — new
  ``safety-net _get_config_dir`` scenario sets
  ``CLEVERAGENTS_HOME`` and asserts the resolver returns that
  path. Step reuses the existing safety-net env var helper.
- ``features/plan_cli_spec_alignment.feature`` — new ``Plan list
  with --namespace filter`` scenario invokes ``plan list
  --namespace myteam`` against the existing plan-spec-alignment
  fixtures and reuses the existing ``the plan spec list should
  succeed`` assertion.

ISSUES CLOSED: #3773
2026-06-16 23:08:30 -04:00
HAL9000 12828ca7e8 fix(config): use module-level _CONFIG_DIR/_CONFIG_PATH in _get_service for patchability
Tests in features/config_cli_*.feature and robot/config_cli.robot /
robot/automation_profile_cli.robot patch
``cleveragents.cli.commands.config._CONFIG_DIR`` /
``_CONFIG_PATH`` with ``unittest.mock.patch.object`` to redirect
the CLI to a temp config directory. ``_get_service`` was calling
``_get_config_dir()`` and recomputing the path from
``CLEVERAGENTS_HOME`` / ``Path.home()`` on every invocation, which
bypassed the patches and routed every test through the developer's
real ``~/.cleveragents`` — producing the 8 unit_tests scenario
failures and 3 integration Robot failures observed on CI.

Read the patched module-level constants directly so the patches
take effect. Module-load-time path resolution (the assignment at
file scope) still honours ``CLEVERAGENTS_HOME``.

The 4 robot tests that had ``tdd_expected_fail`` for tdd_issue_4204
and tdd_issue_4302 now pass — drop the tag so the
tdd_expected_fail_listener doesn't invert their PASS into a FAIL.

ISSUES CLOSED: #3773
2026-06-16 23:08:30 -04:00
brent.edwards 29639558a3 fix(tests): resolve all failing CI checks on PR #3774
Fix 8 distinct integration test and E2E failures:

1. JSON envelope unwrapping in test helpers
   Helpers were asserting keys at the top-level of the JSON envelope
   ({command, status, exit_code, data, timing, messages}) rather than
   inside the nested 'data' field.  Updated helpers to access
   parsed['data'] for assertions on the actual response payload:
   - helper_cli_formats.py: action_list_json, action_show_yaml,
     plan_list_json, global_format_json_version, global_format_yaml_version,
     global_format_shorthand
   - helper_automation_profile_cli.py: test_show_json, test_list_json
   - helper_cli_extensions.py: action_show_json
   - helper_config_cli.py: config_set_get_roundtrip
   - helper_config_project_scope.py: cli_roundtrip

2. Plan list --namespace / -n option (issue #4301)
   Add 'namespace' parameter to lifecycle_list_plans() in plan.py,
   passing it through to service.list_plans(namespace=...) and
   displaying it in the Filters panel.

3. Config registry key count (issue #4304)
   Update expected count from 105 to 106 to match current registry
   (additional server key was added via the server stubs feature).

4. Container tool exec mock fix (issue #4243)
   The test mocked ev.resolve_and_validate (no longer called) instead
   of ev.resolve_with_precedence.  Fix the mock target so ToolRunner
   correctly routes to the container path and returns the expected
   error when no ContainerToolExecutor is configured.

5. E2E config CLI CLEVERAGENTS_HOME support
   config.py used a hardcoded Path.home() / '.cleveragents' for the
   config directory, ignoring CLEVERAGENTS_HOME.  E2E tests run in
   isolated temporary homes set via CLEVERAGENTS_HOME; this caused the
   WF07 CI Profile Configuration test to read from the global config
   (returning 'review') instead of the test-scoped config.  Make
   _get_config_dir() and _get_service() respect CLEVERAGENTS_HOME.

ISSUES CLOSED: #4204 #4205 #4206 #4243 #4301 #4302 #4303 #4304
2026-06-16 23:08:30 -04:00
HAL9000 5291728601 Merge pull request 'test(a2a): add regression tests to verify zero acp references after module rename' (#10668) from test/v3.6.0/a2a-rename-regression-tests into master
CI / load-versions (push) Successful in 17s
CI / push-validation (push) Successful in 27s
CI / lint (push) Successful in 45s
CI / typecheck (push) Successful in 1m15s
CI / security (push) Successful in 1m21s
CI / quality (push) Successful in 1m0s
CI / build (push) Successful in 58s
CI / helm (push) Successful in 1m1s
CI / unit_tests (push) Successful in 6m48s
CI / docker (push) Successful in 1m49s
CI / integration_tests (push) Successful in 11m4s
CI / coverage (push) Successful in 14m16s
CI / status-check (push) Successful in 4s
CI / benchmark-publish (push) Has been cancelled
CI / benchmark-regression (push) Has been cancelled
2026-06-17 01:31:27 +00:00
controller-ci-rerun b3048f128a chore: re-trigger CI [controller]
CI / load-versions (pull_request) Successful in 15s
CI / push-validation (pull_request) Successful in 27s
CI / lint (pull_request) Successful in 49s
CI / typecheck (pull_request) Successful in 1m0s
CI / quality (pull_request) Successful in 1m7s
CI / security (pull_request) Successful in 1m10s
CI / build (pull_request) Successful in 53s
CI / helm (pull_request) Successful in 40s
CI / unit_tests (pull_request) Successful in 5m23s
CI / docker (pull_request) Successful in 1m35s
CI / integration_tests (pull_request) Successful in 8m54s
CI / coverage (pull_request) Successful in 11m55s
CI / status-check (pull_request) Successful in 3s
2026-06-16 21:01:14 -04:00
HAL9000 18b4d80627 fix(test): rename a2a_naming_regression_steps to include 'acp' in filename
CI / load-versions (pull_request) Successful in 18s
CI / push-validation (pull_request) Successful in 27s
CI / lint (pull_request) Successful in 43s
CI / quality (pull_request) Successful in 1m16s
CI / typecheck (pull_request) Successful in 1m22s
CI / security (pull_request) Successful in 1m23s
CI / build (pull_request) Successful in 55s
CI / helm (pull_request) Successful in 39s
CI / unit_tests (pull_request) Successful in 6m32s
CI / docker (pull_request) Successful in 1m31s
CI / integration_tests (pull_request) Failing after 20m0s
CI / coverage (pull_request) Failing after 14m40s
CI / status-check (pull_request) Has been cancelled
The a2a_module_imports_audit scenario at line 126 scans all step files
for bare `\bacp\b` references on lines that lack `a2a`. The audit skips
files whose name contains "acp", "rename", or "audit", but
`a2a_naming_regression_steps.py` matched none of those markers despite
containing many ACP-related strings (import checks, error messages, etc.).

Renaming to `a2a_acp_naming_regression_steps.py` puts "acp" in the
filename so the audit correctly skips it. Behave discovers step
definitions by directory scan, so no feature file updates are needed.

ISSUES CLOSED: #10668
2026-06-16 20:17:35 -04:00
controller-ci-rerun 4327055973 chore: re-trigger CI [controller] 2026-06-16 20:17:35 -04:00
HAL9000 d180b01f56 style: apply ruff format to a2a_naming_regression_steps.py 2026-06-16 20:17:35 -04:00
HAL9000 eab8466489 test(a2a): fix regression test expectations to match actual module exports 2026-06-16 20:17:35 -04:00
HAL9000 81157826bf test(a2a): add regression tests to verify zero acp references after module rename
Regression tests were added to exercise the a2a module rename scenario and verify that there are zero acp references after the rename. These tests ensure the rename path handles all references correctly, including imports and related metadata.

They validate both static references in source and configuration, and dynamic references in generated artifacts, ensuring no residual acp references remain post-rename.

Why they're important: they guard against regressions during refactors, protect the integrity of acp references across the codebase, and help catch issues early before release.

ISSUES CLOSED: #7578

Git user: HAL9000 (HAL9000@cleverthis.com)
2026-06-16 20:17:35 -04:00
HAL9000 eceeec69d6 Merge pull request 'docs: add module guides for Sandbox, Correction Attempts, and Invariant Reconciliation' (#4652) from docs/session-4615-2026-04-08-cycle1 into master
CI / load-versions (push) Successful in 16s
CI / push-validation (push) Successful in 29s
CI / lint (push) Successful in 55s
CI / quality (push) Successful in 1m11s
CI / security (push) Successful in 1m19s
CI / typecheck (push) Successful in 1m29s
CI / build (push) Successful in 54s
CI / helm (push) Successful in 53s
CI / unit_tests (push) Successful in 6m43s
CI / docker (push) Successful in 1m51s
CI / integration_tests (push) Successful in 10m54s
CI / coverage (push) Successful in 12m13s
CI / status-check (push) Successful in 4s
CI / benchmark-publish (push) Has been cancelled
CI / benchmark-regression (push) Has been cancelled
2026-06-16 23:30:40 +00:00
controller-ci-rerun 153eeb5497 chore: re-trigger CI [controller]
CI / load-versions (pull_request) Successful in 16s
CI / push-validation (pull_request) Successful in 23s
CI / lint (pull_request) Successful in 48s
CI / build (pull_request) Successful in 48s
CI / quality (pull_request) Successful in 1m0s
CI / helm (pull_request) Successful in 53s
CI / security (pull_request) Successful in 1m19s
CI / typecheck (pull_request) Successful in 1m27s
CI / unit_tests (pull_request) Successful in 5m33s
CI / docker (pull_request) Successful in 1m30s
CI / integration_tests (pull_request) Successful in 8m38s
CI / coverage (pull_request) Successful in 9m49s
CI / status-check (pull_request) Successful in 3s
2026-06-16 18:28:16 -04:00
HAL9000 d1ced790ca docs: update CHANGELOG, CONTRIBUTORS, and fix DI snippet for module guides (#4848)
- Add CHANGELOG.md [Unreleased] entry for the three new module guides
- Add CONTRIBUTORS.md entry for HAL9000 authoring the module guides
- Fix InvariantReconciliationActor DI container snippet in
  invariant-reconciliation.md: replace incorrect event_bus/audit_service
  params with the actual constructor params (invariant_service,
  decision_service) as defined in src/cleveragents/actor/reconciliation.py

ISSUES CLOSED: #4848
2026-06-16 18:28:16 -04:00
HAL9000 44652c216a docs: add sandbox, correction, and invariant module guides
Document lifecycle details, security warnings, and CLI usage for the new module guides so implementors have a single reference.

ISSUES CLOSED: #4848
2026-06-16 18:18:18 -04:00
HAL9000 7bfbe9a296 Merge pull request 'feat(resources): implement cloud infrastructure resource types (AWS, GCP, Azure stubs)' (#10592) from feat/v360/cloud-resource-types into master
CI / load-versions (push) Successful in 15s
CI / push-validation (push) Successful in 29s
CI / lint (push) Successful in 41s
CI / typecheck (push) Successful in 57s
CI / quality (push) Successful in 48s
CI / security (push) Successful in 1m13s
CI / build (push) Successful in 56s
CI / helm (push) Successful in 40s
CI / unit_tests (push) Successful in 4m42s
CI / docker (push) Successful in 2m11s
CI / integration_tests (push) Failing after 8m33s
CI / coverage (push) Successful in 9m35s
CI / status-check (push) Failing after 3s
CI / benchmark-publish (push) Has been cancelled
CI / benchmark-regression (push) Has been cancelled
2026-06-15 18:57:34 +00:00
controller-ci-rerun 61f4df93dc chore: re-trigger CI [controller]
CI / load-versions (pull_request) Successful in 15s
CI / push-validation (pull_request) Successful in 23s
CI / lint (pull_request) Successful in 38s
CI / typecheck (pull_request) Successful in 1m1s
CI / security (pull_request) Successful in 1m13s
CI / quality (pull_request) Successful in 54s
CI / build (pull_request) Successful in 56s
CI / helm (pull_request) Successful in 38s
CI / unit_tests (pull_request) Successful in 5m47s
CI / docker (pull_request) Successful in 1m47s
CI / integration_tests (pull_request) Successful in 9m29s
CI / coverage (pull_request) Successful in 11m14s
CI / status-check (pull_request) Successful in 3s
2026-06-15 14:11:47 -04:00
controller-ci-rerun 65a121423f chore: re-trigger CI [controller] 2026-06-15 14:11:47 -04:00
HAL9000 94ab8f1a6f fix(actor): propagate typer.Exit through CLI exception handlers and add missing BDD step
- actor.py and actor_run.py: broaden `except click.exceptions.Exit` to
  `except (click.exceptions.Exit, typer.Exit)` so that typer.Exit(code=N)
  raised by _resolve_config_files propagates with the original exit code
  instead of being caught by the generic Exception handler and re-raised
  as code 3. Fixes Unknown Actor Name Error / Actor App Unknown Name Error
  integration tests.
- actor_run_signature_resolve_steps.py + actor_run_signature_security_steps.py:
  add typer.Exit to the exception catches around resolve_config_files calls
  so Behave scenarios correctly capture the exit code.
- cloud_types_steps.py: add missing @then("it should reject tags with empty key")
  step for the AWSResource tags validation scenario.

ISSUES CLOSED: #8607
2026-06-15 14:11:47 -04:00
controller-ci-rerun eb5d9275b1 chore: re-trigger CI [controller] 2026-06-15 14:11:47 -04:00
HAL9000 b4ec544e40 feat(resources): implement cloud infrastructure resource type stubs (AWS, GCP, Azure) and resolve merge conflicts 2026-06-15 14:11:47 -04:00
HAL9000 2541a6dd2b Merge pull request 'docs(spec): align checkpoint trigger names and config key path with implementation' (#5163) from spec/checkpoint-trigger-names-and-config-key-fix into master
CI / load-versions (push) Successful in 16s
CI / push-validation (push) Successful in 27s
CI / build (push) Successful in 38s
CI / lint (push) Successful in 42s
CI / quality (push) Successful in 50s
CI / typecheck (push) Successful in 1m1s
CI / helm (push) Successful in 39s
CI / integration_tests (push) Successful in 8m38s
CI / security (push) Failing after 11m33s
CI / unit_tests (push) Failing after 16m31s
CI / coverage (push) Has been cancelled
CI / docker (push) Has been cancelled
CI / status-check (push) Has been cancelled
CI / benchmark-publish (push) Has been cancelled
CI / benchmark-regression (push) Has been cancelled
2026-06-15 17:46:18 +00:00
controller-ci-rerun 0d846a335c chore: re-trigger CI [controller]
CI / load-versions (pull_request) Successful in 28s
CI / push-validation (pull_request) Successful in 25s
CI / lint (pull_request) Successful in 1m18s
CI / typecheck (pull_request) Successful in 1m18s
CI / security (pull_request) Successful in 1m18s
CI / quality (pull_request) Successful in 1m18s
CI / build (pull_request) Successful in 32s
CI / helm (pull_request) Successful in 41s
CI / unit_tests (pull_request) Successful in 5m1s
CI / docker (pull_request) Successful in 1m30s
CI / integration_tests (pull_request) Successful in 8m28s
CI / coverage (pull_request) Successful in 9m23s
CI / status-check (pull_request) Successful in 3s
2026-06-15 13:14:25 -04:00
HAL9000 f85ecd0feb docs(changelog): add entry for checkpoint config key spec fix
ISSUES CLOSED: #5009
2026-06-15 13:14:25 -04:00
HAL9000 4a68e02107 docs(spec): align checkpoint trigger names and config key path with implementation
Fixes two spec-implementation discrepancies identified in issue #5009:

1. Checkpoint trigger names: rename on_tool_write → before_tool_execute and
   on_tool_write_complete → after_tool_execute to match the implementation in
   src/cleveragents/tool/runner.py and src/cleveragents/application/services/
   config_service.py. The implementation names are more precise — they describe
   the execution phase rather than implying only write tools trigger them
   (though the implementation correctly gates them on write tools).

2. Config key path: correct the Configuration Reference table entry from
   sandbox.checkpoint.auto-create-on to core.checkpoints.auto-create-on,
   matching both the implementation (config_service.py line 482) and the
   inline spec at line 19449. Also update the default values in the table
   to use the corrected trigger names.

Closes #5009
2026-06-15 13:14:25 -04:00
HAL9000 8a38c4a578 Merge pull request 'fix(plan): use structured alternatives objects in plan explain output per spec' (#11090) from bugfix/m2-plan-explain-alternatives-format into master
CI / load-versions (push) Successful in 15s
CI / push-validation (push) Successful in 24s
CI / lint (push) Successful in 39s
CI / build (push) Successful in 42s
CI / helm (push) Successful in 50s
CI / unit_tests (push) Successful in 5m15s
CI / integration_tests (push) Successful in 8m49s
CI / quality (push) Failing after 14m14s
CI / security (push) Failing after 14m14s
CI / typecheck (push) Failing after 14m14s
CI / coverage (push) Has been cancelled
CI / docker (push) Has been cancelled
CI / status-check (push) Has been cancelled
CI / benchmark-publish (push) Has been cancelled
CI / benchmark-regression (push) Has been cancelled
2026-06-15 16:48:57 +00:00
controller-ci-rerun 144d040284 chore: re-trigger CI [controller]
CI / load-versions (pull_request) Successful in 15s
CI / push-validation (pull_request) Successful in 25s
CI / build (pull_request) Successful in 35s
CI / lint (pull_request) Successful in 47s
CI / quality (pull_request) Successful in 48s
CI / typecheck (pull_request) Successful in 1m0s
CI / security (pull_request) Successful in 1m8s
CI / helm (pull_request) Successful in 41s
CI / unit_tests (pull_request) Successful in 4m43s
CI / docker (pull_request) Successful in 1m30s
CI / integration_tests (pull_request) Successful in 8m24s
CI / coverage (pull_request) Successful in 9m10s
CI / status-check (pull_request) Successful in 3s
2026-06-15 12:10:18 -04:00