Commit Graph

3696 Commits

Author SHA1 Message Date
controller-ci-rerun a28ad0202e chore: re-trigger CI [controller]
CI / load-versions (pull_request) Successful in 27s
CI / push-validation (pull_request) Successful in 28s
CI / lint (pull_request) Successful in 51s
CI / typecheck (pull_request) Successful in 1m17s
CI / security (pull_request) Successful in 1m22s
CI / build (pull_request) Successful in 48s
CI / helm (pull_request) Successful in 51s
CI / quality (pull_request) Successful in 1m29s
CI / integration_tests (pull_request) Failing after 17m33s
CI / unit_tests (pull_request) Failing after 17m34s
CI / coverage (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
CI / status-check (pull_request) Has been cancelled
2026-06-18 09:51:13 -04:00
HAL9000 96e6a9c567 fix(tests): drop removed mix_stderr kwarg from validation list CliRunner
CI / load-versions (pull_request) Successful in 17s
CI / push-validation (pull_request) Successful in 40s
CI / lint (pull_request) Successful in 55s
CI / typecheck (pull_request) Successful in 1m12s
CI / quality (pull_request) Successful in 1m32s
CI / security (pull_request) Successful in 1m39s
CI / build (pull_request) Successful in 42s
CI / unit_tests (pull_request) Successful in 5m29s
CI / helm (pull_request) Successful in 45s
CI / docker (pull_request) Successful in 2m28s
CI / integration_tests (pull_request) Failing after 15m20s
CI / coverage (pull_request) Failing after 15m43s
CI / status-check (pull_request) Has been cancelled
Click 8.2 removed the mix_stderr=False keyword argument from
CliRunner.__init__. Every CliRunner(...) call in
features/steps/validation_list_command_steps.py was passing it,
causing all 7 scenarios in features/validation_list_command.feature
to error with TypeError during the @when steps. Drop the keyword
to restore the default (which now always merges stderr into stdout,
matching what the tests previously did with mix_stderr=False = True
semantics via result.output).

ISSUES CLOSED: #8621
2026-06-18 09:06:40 -04:00
HAL9000 9d60b424fa fix(validation): add missing @tdd_issue tag and fix JSON/YAML envelope assertions
All 7 scenarios in validation_list_command.feature were tagged with
@tdd_issue_8621 but missing the required @tdd_issue companion tag.
validate_tdd_tags() in before_scenario raises ValueError when the
numbered tag is present without @tdd_issue, causing every scenario
to error at hook-level in behave-parallel.

Also fix the JSON and YAML Then steps: format_output() returns an
envelope dict {"data": [...], "command": "", ...} not a plain list.

ISSUES CLOSED: #8621
2026-06-18 09:06:40 -04:00
CleverAgents Bot 51ac078c73 fix(cli): repair validation list and attach commands 2026-06-18 09:06:40 -04:00
controller-ci-rerun 5c6d39aa83 chore: re-trigger CI [controller] 2026-06-18 09:06:40 -04:00
controller-ci-rerun 621392ff2f chore: re-trigger CI [controller] 2026-06-18 09:06:40 -04:00
HAL9000 4acea435de fix(tests): update stale mock patch targets after validation helper refactor
The PR moved `_get_tool_registry_service` from a private helper in
`validation.py` to a public `get_tool_registry_service` in
`validation_helpers.py`, re-exported into the `validation` module
namespace. All test files that patched the old private name via
`mock.patch()` raised `AttributeError` at runtime.

Updated all 14 affected files to patch the public name:
- features/steps/: 8 step files updated patch targets and direct imports
- robot/: 4 helper scripts updated patch targets
- benchmarks/: 2 benchmark files updated patch targets

Also fixed `validation_list_command_steps.py`:
- Added `patch` import
- Added proper `get_tool_registry_service` patcher in all @given steps
  so the CLI is mocked correctly during scenario execution
- Removed invalid import from non-existent `validation_app` module

ISSUES CLOSED: #8667
2026-06-18 09:06:40 -04:00
HAL9000 7ea13cb6d6 fix(cli): add agents validation list command to validation CLI
Add the `list` subcommand to the validation CLI command group. This fixes issue #8621 where users were unable to list registered validations through the CLI interface due to the command not being implemented and registered.

Changes:
- Added `list` command with --namespace/-n, --source/-s, and --pattern/-p (regex) filters for listing validation agents
- Extracted shared helper functions into new validation_helpers.py module
- Updated imports in validation.py to use extracted helpers instead of inline private functions
- Fixed lint and formatting issues

Testing:
- Added BDD regression test feature file (features/validation_list_command.feature) with 7 scenarios covering: empty state, rich table display, namespace/source/pattern filtering, JSON output, and YAML output modes
- Added corresponding step definitions in features/steps/validation_list_command_steps.py

ISSUES CLOSED: #8621
2026-06-18 09:06:40 -04:00
CleverAgents Bot 556de5f6f9 fix(events): restore event bus close and bridge semantics
CI / load-versions (push) Successful in 16s
CI / push-validation (push) Successful in 24s
CI / lint (push) Successful in 41s
CI / quality (push) Successful in 52s
CI / build (push) Successful in 39s
CI / security (push) Successful in 1m5s
CI / typecheck (push) Successful in 1m16s
CI / helm (push) Successful in 57s
CI / unit_tests (push) Successful in 5m54s
CI / integration_tests (push) Successful in 8m32s
CI / docker (push) Successful in 2m4s
CI / coverage (push) Successful in 11m53s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Has been cancelled
CI / benchmark-regression (push) Has been cancelled
2026-06-18 10:38:44 +00:00
controller-ci-rerun 4fd5393a62 chore: re-trigger CI [controller] 2026-06-18 10:38:44 +00:00
controller-ci-rerun 3195d1a59e chore: re-trigger CI [controller] 2026-06-18 10:38:44 +00:00
controller-ci-rerun 68eb026bfd chore: re-trigger CI [controller] 2026-06-18 10:38:44 +00:00
controller-ci-rerun 4b1eecd741 chore: re-trigger CI [controller] 2026-06-18 10:38:44 +00:00
HAL9000 d3a74aa86c fix(events): eliminate inline type ignores in event_bus_steps.py
Replace all # type: ignore[arg-type] and # type: ignore[misc] comments
with pyright-compatible alternatives: typing.cast() for intentional
type mismatches in error-handling tests, and explicit stub method bodies
for Protocol subclasses.
2026-06-18 10:38:44 +00:00
CleverThis Bot 339a5ad0e0 fix(ci): resolve ruff SIM105, E501, W291 lint errors in PR #11197 changes
- events.py: add missing contextlib import, use contextlib.suppress for
  TypeError/AttributeError try/except (SIM105)
- reactive.py: fix docstring line length (E501), remove trailing whitespace (W291)
- logging_bus.py: fix docstring line length (E501), remove trailing whitespace (W291)
2026-06-18 10:38:44 +00:00
HAL9000 432fd2c9a1 fix(events): add unsubscribe() to EventBus protocol and implementations 2026-06-18 10:38:44 +00:00
HAL9000 76b1a62f04 Merge pull request 'perf(ci): reduce CI quality check execution time by parallelizing and caching' (#10845) from test/v3.8.0-ci-quality-execution-time into master
CI / load-versions (push) Successful in 16s
CI / push-validation (push) Successful in 28s
CI / lint (push) Successful in 56s
CI / build (push) Successful in 44s
CI / typecheck (push) Successful in 1m9s
CI / quality (push) Successful in 1m23s
CI / security (push) Successful in 1m30s
CI / helm (push) Successful in 47s
CI / unit_tests (push) Successful in 6m2s
CI / docker (push) Successful in 2m22s
CI / integration_tests (push) Successful in 10m59s
CI / coverage (push) Successful in 12m54s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Has been cancelled
CI / benchmark-regression (push) Has been cancelled
2026-06-18 08:20:48 +00:00
controller-ci-rerun f7eebf01e4 chore: re-trigger CI [controller]
CI / load-versions (pull_request) Successful in 16s
CI / push-validation (pull_request) Successful in 30s
CI / lint (pull_request) Successful in 45s
CI / quality (pull_request) Successful in 1m12s
CI / typecheck (pull_request) Successful in 1m35s
CI / security (pull_request) Successful in 1m36s
CI / build (pull_request) Successful in 48s
CI / helm (pull_request) Successful in 47s
CI / unit_tests (pull_request) Successful in 6m26s
CI / docker (pull_request) Successful in 2m18s
CI / integration_tests (pull_request) Successful in 10m54s
CI / coverage (pull_request) Successful in 12m21s
CI / status-check (pull_request) Successful in 4s
2026-06-18 04:00:46 -04:00
controller-ci-rerun d227205020 chore: re-trigger CI [controller] 2026-06-18 04:00:46 -04:00
controller-ci-rerun c48fa88e75 chore: re-trigger CI [controller] 2026-06-18 04:00:46 -04:00
controller-ci-rerun 40a4c83028 chore: re-trigger CI [controller] 2026-06-18 04:00:46 -04:00
controller-ci-rerun 04c90ba78f chore: re-trigger CI [controller] 2026-06-18 04:00:46 -04:00
HAL9000 9cd0748dd6 fix(tests): update coverage job dependency assertions to unit_tests
The coverage job in ci.yml was updated to depend on unit_tests only
(removing lint/typecheck which are independent static-analysis jobs).
Two BDD scenarios still asserted the old lint+typecheck dependency,
causing unit_tests gate failures. Updated both scenarios and the
step definition to assert the correct unit_tests dependency.

ISSUES CLOSED: #1641
2026-06-18 04:00:46 -04:00
HAL9000 f60c996000 perf(ci): reduce CI quality check execution time by parallelizing and caching
Key optimisations applied to .forgejo/workflows/ci.yml:

1. Remove unnecessary needs: [lint, typecheck, security, quality] from the
   coverage job. Coverage runs the full unit-test suite independently under
   slipcover and does not depend on static-analysis results. Removing this
   dependency allows coverage to start immediately in parallel with all other
   jobs, eliminating a sequential bottleneck that forced coverage to wait for
   four upstream jobs before it could begin.

2. Reduce docker job gate from needs: [lint, typecheck, security, quality,
   unit_tests] to needs: [unit_tests] only. The Docker image build does not
   require static-analysis results to succeed; gating on unit_tests alone is
   sufficient to ensure the image is built from tested code.

3. Add uv.lock to all cache keys (was pyproject.toml only). Including the
   lock file produces a more precise cache key: a dependency version bump now
   correctly invalidates the cache, and unchanged lock files yield higher hit
   rates across PRs that only touch source code.

4. Add per-job .nox virtualenv caching for all jobs (lint, typecheck,
   security, quality, unit_tests, integration_tests, e2e_tests, coverage,
   build). On cache hit, nox skips the full uv pip install step, saving
   30-90 s of package installation time per job per run.

Expected aggregate wall-clock reduction: >50% vs the 3556 s baseline
(target: <=1778 s over 20 PRs), primarily from parallelising coverage and
reducing per-job install overhead via nox venv caching.

ISSUES CLOSED: #1641
2026-06-18 04:00:46 -04:00
HAL9000 93e1ca8bb6 Merge pull request 'fix(cleanup): invalidate sandbox_dirs_cache after purge (#7527)' (#11010) from fix-sandbox-cache-invalidation into master
CI / load-versions (push) Successful in 16s
CI / push-validation (push) Successful in 27s
CI / lint (push) Successful in 1m3s
CI / quality (push) Successful in 1m6s
CI / build (push) Successful in 1m4s
CI / security (push) Successful in 1m14s
CI / typecheck (push) Successful in 1m14s
CI / helm (push) Successful in 44s
CI / unit_tests (push) Successful in 6m28s
CI / docker (push) Successful in 2m26s
CI / integration_tests (push) Successful in 11m0s
CI / coverage (push) Successful in 13m25s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Has been cancelled
CI / benchmark-regression (push) Has been cancelled
2026-06-18 07:55:55 +00:00
controller-ci-rerun 85e36369bd chore: re-trigger CI [controller]
CI / load-versions (pull_request) Successful in 18s
CI / push-validation (pull_request) Successful in 26s
CI / build (pull_request) Successful in 40s
CI / lint (pull_request) Successful in 48s
CI / quality (pull_request) Successful in 52s
CI / typecheck (pull_request) Successful in 1m20s
CI / security (pull_request) Successful in 1m21s
CI / helm (pull_request) Successful in 47s
CI / unit_tests (pull_request) Successful in 5m59s
CI / docker (pull_request) Successful in 2m30s
CI / integration_tests (pull_request) Successful in 10m29s
CI / coverage (pull_request) Successful in 12m16s
CI / status-check (pull_request) Successful in 3s
2026-06-18 03:28:57 -04:00
controller-ci-rerun 0e807f8f5e chore: re-trigger CI [controller]
CI / load-versions (pull_request) Successful in 31s
CI / push-validation (pull_request) Successful in 36s
CI / build (pull_request) Successful in 54s
CI / integration_tests (pull_request) Failing after 56s
CI / quality (pull_request) Successful in 59s
CI / lint (pull_request) Successful in 1m4s
CI / typecheck (pull_request) Successful in 1m31s
CI / security (pull_request) Successful in 1m32s
CI / helm (pull_request) Successful in 1m23s
CI / unit_tests (pull_request) Successful in 6m23s
CI / docker (pull_request) Successful in 2m32s
CI / coverage (pull_request) Successful in 13m50s
CI / status-check (pull_request) Failing after 4s
2026-06-18 03:03:26 -04:00
HAL9000 ffa0a3b3bf fix(acms): defer settings strategy auto-load past _strategies/_logger init
The previous ACMSPipeline.__init__ invoked _load_strategies_from_settings
at line 831 before self._strategies (line 834) and self._logger (line 864)
were initialized.  When a Settings whose context dict contained a
'strategies' key was passed in, the method body raised AttributeError on
'self._strategies', and the except handler then raised a second
AttributeError on 'self._logger' that propagated out of __init__ and
crashed pipeline construction entirely.

Move the auto-load call to after both attributes are bound.  Convert the
pytest-shaped tests/strategies/test_strategy_registry.py (which the
behave-based unit_tests gate never ran) into a behave feature file +
step definitions under features/, matching the project's BDD convention
and bringing the strategy auto-loading paths under actual CI coverage.

ISSUES CLOSED: #7527
2026-06-18 03:03:26 -04:00
CleverAgents Bot 35ecfda7d4 ci: rerun sandbox cache invalidation gates 2026-06-18 03:03:26 -04:00
controller-ci-rerun e9fd57d401 chore: re-trigger CI [controller] 2026-06-18 03:03:26 -04:00
CleverAgents Bot 53803c5e73 fix(acms): align strategy registry types 2026-06-18 03:03:26 -04:00
cleveragents-auto c98c71467e fix(context): clean strategy registry lint after rebase 2026-06-18 03:03:26 -04:00
cleveragents-auto 7693ec2506 chore: re-trigger CI after no-status timeout 2026-06-18 03:03:26 -04:00
controller-ci-rerun 22aff4bb44 chore: re-trigger CI [controller] 2026-06-18 03:03:26 -04:00
controller-ci-rerun 27f460898e chore: re-trigger CI [controller] 2026-06-18 03:03:26 -04:00
controller-ci-rerun c023ccb5e3 chore: re-trigger CI [controller] 2026-06-18 03:03:26 -04:00
Rebase Agent dea5ea4c18 Put tsx on PATH instead of replacing npx call sites 2026-06-18 03:03:26 -04:00
Rebase Agent 8f631969ff Bypass npx by installing tsx locally and calling its binary directly 2026-06-18 03:03:26 -04:00
Rebase Agent 6f2c4de113 Guard all prompt_async paths against empty bodies 2026-06-18 03:03:26 -04:00
OpenCode AI cb6986c8f9 feat(context): implement ContextStrategy protocol and plugin registration system
Implement strategy registry integration as spec §47561 by adding:

- load_strategies_from_config() in context_strategies.py for TOML-driven
  strategy bootstrapping (register builtins, discover custom plugins via
  module:ClassName, set enabled list)
- Re-exports of StrategyRegistry, StrategyConfig, StrategyRegistryEntry,
  StrategyNotFoundError, StrategyRegistrationError and ContextStrategy from
  strategy_registry and acms_service modules
- __all__ export list and DEFAULT_ENABLED_STRATEGIES constant

Fix StrategyRegistry.validate_registry() to skip resource_types check for
v1 pipeline strategies (context_strategies.py, acms_service.py) whose
StrategyCapabilities dataclass lacks the domain-model resource_types field,
preventing false-positive warnings.  Adds _is_v1_pipeline_caps() helper.

Auto-load strategy configuration from Settings in ACMSPipeline.__init__()
when a Settings object is provided, reading context.strategies config and
registering/ enabling strategies via the plugin loader.
2026-06-18 03:03:26 -04:00
Rebase Agent fc7fed644d Skip worker launch when build_*_prompt returns empty content 2026-06-18 03:03:26 -04:00
Rebase Agent 0fb95af78b build fixed weird forgejo bug 2026-06-18 03:03:26 -04:00
Rebase Agent 9791460cca Add grooming worker type with task-groomer and estimator-grooming 2026-06-18 03:03:26 -04:00
HAL9000 ce41cad75c Merge pull request 'fix(cli): fix invariant add scope handling' (#11058) from fix/invariant-scope-handling into master
CI / load-versions (push) Successful in 14s
CI / push-validation (push) Successful in 28s
CI / unit_tests (push) Failing after 42s
CI / lint (push) Successful in 53s
CI / quality (push) Successful in 1m5s
CI / build (push) Successful in 52s
CI / typecheck (push) Successful in 1m13s
CI / security (push) Successful in 1m16s
CI / coverage (push) Has been skipped
CI / docker (push) Has been skipped
CI / helm (push) Successful in 44s
CI / integration_tests (push) Successful in 10m45s
CI / status-check (push) Failing after 6s
CI / benchmark-publish (push) Has been cancelled
CI / benchmark-regression (push) Has been cancelled
2026-06-18 06:55:57 +00:00
HAL9000 c7a20eccd0 fix(cli): preserve no-flag list_invariants "all scopes" semantics
CI / load-versions (pull_request) Successful in 31s
CI / push-validation (pull_request) Successful in 37s
CI / lint (pull_request) Successful in 44s
CI / typecheck (pull_request) Successful in 1m10s
CI / security (pull_request) Successful in 1m24s
CI / build (pull_request) Successful in 36s
CI / quality (pull_request) Successful in 1m22s
CI / helm (pull_request) Successful in 2m7s
CI / unit_tests (pull_request) Successful in 7m55s
CI / docker (pull_request) Successful in 2m54s
CI / integration_tests (pull_request) Successful in 12m23s
CI / coverage (pull_request) Successful in 14m4s
CI / status-check (pull_request) Successful in 3s
The previous refactor routed list_invariants through _resolve_scope,
which silently changed the no-flags behavior: _resolve_scope returns
(GLOBAL, "system") when no flag is given (the `add` default), so
`agents invariant list` filtered to only global+system invariants
instead of returning every active invariant.

InvariantService.list_invariants documents scope=None / source_name=None
as "all scopes" / "all sources"; the listing CLI must preserve that
contract. Inline the mutual-exclusion check in list_invariants and
restore the if/elif chain that leaves scope/source_name=None when no
flag is set, while keeping `agents invariant add` defaulting to global.

Tests added:
- "List invariants with no flags passes no scope filter" verifies the
  service is called with scope=None, source_name=None.
- "List invariants with conflicting scope flags rejected" covers the
  new BadParameter raise path.

ISSUES CLOSED: #11049
2026-06-18 02:28:23 -04:00
controller-ci-rerun 875dce304e chore: re-trigger CI [controller] 2026-06-18 02:28:23 -04:00
CleverAgents Bot b7e2a03f6f ci: rerun helm gate after transient failure 2026-06-18 02:28:23 -04:00
cleveragents-auto 26662836aa test(cli): preserve invariant scope coverage after rebase 2026-06-18 02:28:23 -04:00
cleveragents-auto 5a711f9776 chore: re-trigger CI after no-status timeout 2026-06-18 02:28:23 -04:00
controller-ci-rerun d4e0307e29 chore: re-trigger CI [controller] 2026-06-18 02:28:23 -04:00