Commit Graph

1143 Commits

Author SHA1 Message Date
freemo 23d73e7fb2 chore: Fix ruff format violations in db_url_sanitisation_steps.py
CI / lint (push) Successful in 56s
CI / typecheck (push) Successful in 1m36s
CI / security (push) Successful in 1m37s
CI / helm (push) Successful in 51s
CI / push-validation (push) Successful in 48s
CI / build (push) Successful in 1m26s
CI / quality (push) Successful in 1m29s
CI / benchmark-regression (push) Failing after 1m47s
CI / e2e_tests (push) Successful in 1m48s
CI / integration_tests (push) Successful in 4m19s
CI / unit_tests (push) Successful in 6m8s
CI / docker (push) Successful in 1m23s
CI / coverage (push) Successful in 10m30s
CI / status-check (push) Successful in 2s
CI / benchmark-publish (push) Successful in 1h26m6s
CI / helm (pull_request) Successful in 47s
CI / push-validation (pull_request) Successful in 47s
CI / build (pull_request) Successful in 1m34s
CI / lint (pull_request) Successful in 2m18s
CI / quality (pull_request) Successful in 2m18s
CI / typecheck (pull_request) Successful in 2m30s
CI / security (pull_request) Successful in 2m36s
CI / integration_tests (pull_request) Successful in 5m23s
CI / unit_tests (pull_request) Successful in 7m48s
CI / docker (pull_request) Successful in 1m34s
CI / coverage (pull_request) Successful in 10m45s
CI / status-check (pull_request) Successful in 3s
Fix formatting issues detected by CI lint check:
- Simplify multi-line decorator arguments to single line
- Simplify multi-line assertion error messages to single line

This resolves the format --check failure blocking CI.
2026-05-16 06:04:01 +00:00
HAL9000 86f96f299e fix(cli): Mask database URL credentials in agents info CLI output (#8395) 2026-05-16 06:04:01 +00:00
HAL9000 5c5309f35d fix(ci): add missing effective set count step definition
CI / lint (push) Successful in 50s
CI / benchmark-regression (push) Failing after 46s
CI / typecheck (push) Successful in 1m21s
CI / security (push) Successful in 1m20s
CI / quality (push) Successful in 1m3s
CI / build (push) Successful in 35s
CI / helm (push) Successful in 32s
CI / integration_tests (push) Successful in 3m22s
CI / push-validation (push) Successful in 33s
CI / e2e_tests (push) Successful in 55s
CI / unit_tests (push) Successful in 5m49s
CI / docker (push) Successful in 2m1s
CI / coverage (push) Successful in 13m13s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Failing after 24m24s
The Behave scenario at line 671 of consolidated_domain_models.feature
asserts 'the effective set should have {count:d} invariants' but no
step handler existed, causing UndefinedStepError and CI failure.

Adds the missing step: @then('the effective set should have {count:d} invariants')
to step_invariant_models_steps.py, mirroring the existing invariant-set count pattern.
2026-05-16 04:14:17 +00:00
HAL9000 761622f746 fix(invariant): pass action_name in list_invariants when scope is ACTION
Fixes list_invariants(effective=True) to forward action_name to
get_effective_invariants when scope is ACTION, ensuring action-scoped
invariants are included in effective invariant lists.

Also applies ruff formatting to the return statement in get_effective_invariants.

Addresses reviewer observation about list_invariants gap.

Refs: #9126
2026-05-16 04:14:17 +00:00
freemo bf52a9c648 fix(invariant): restore ACTION scope in merge_invariants and InvariantSet.merge precedence chain
The 4-tier invariant precedence chain (plan > action > project > global) was
broken at the domain layer — merge_invariants() and InvariantSet.merge() only
accepted 3 parameters (plan, project, global), silently dropping all action-
scoped invariants. Added action_invariants as a fourth parameter with proper
backward compatibility (default to empty list). Updated module docstrings,
InvariantScope docstring, and InvariantService.get_effective_invariants() to
reflect the correct precedence chain. Added comprehensive BDD test scenarios
covering four-tier merge precedence, action-before-project ordering, and effective
invariant computation with all four scopes.

ISSUES CLOSED: #9126
2026-05-16 04:14:17 +00:00
CoreRasurae 97c1007bb5 feat(events): wire domain services to emit missing EventBus events
CI / push-validation (pull_request) Successful in 48s
CI / build (pull_request) Successful in 1m17s
CI / helm (pull_request) Successful in 1m0s
CI / lint (pull_request) Successful in 1m54s
CI / quality (pull_request) Successful in 1m55s
CI / security (pull_request) Successful in 2m5s
CI / typecheck (pull_request) Successful in 2m4s
CI / integration_tests (pull_request) Successful in 5m1s
CI / unit_tests (pull_request) Successful in 5m10s
CI / docker (pull_request) Successful in 1m51s
CI / coverage (pull_request) Successful in 12m47s
CI / status-check (pull_request) Successful in 8s
CI / benchmark-publish (push) Has started running
CI / benchmark-regression (push) Failing after 1m15s
CI / typecheck (push) Has started running
CI / security (push) Has started running
CI / quality (push) Has started running
CI / integration_tests (push) Has started running
CI / unit_tests (push) Has started running
CI / e2e_tests (push) Has started running
CI / lint (push) Successful in 56s
CI / helm (push) Successful in 53s
CI / push-validation (push) Successful in 54s
CI / build (push) Successful in 1m24s
CI / coverage (push) Blocked by required conditions
CI / docker (push) Blocked by required conditions
CI / status-check (push) Blocked by required conditions
Add TokenAuthMiddleware to emit AUTH_SUCCESS/AUTH_FAILURE with spec-aligned audit details and wire it through the DI container using server.token resolution.

Add Behave and Robot coverage for auth event emission and end-to-end audit persistence, and update audit subscriber producer notes and changelog.

ISSUES CLOSED: #714
2026-05-15 22:19:57 +01:00
hamza.khyari b4351ca78d Revert "Merge pull request 'fix(acms): use project-level hot_max_tokens in execute phase context assembly' (#11216) from bugfix/m5-acms-project-budget-override into master"
CI / push-validation (pull_request) Successful in 41s
CI / helm (pull_request) Successful in 50s
CI / build (pull_request) Successful in 1m13s
CI / lint (pull_request) Successful in 1m34s
CI / typecheck (pull_request) Successful in 1m40s
CI / quality (pull_request) Successful in 1m45s
CI / security (pull_request) Successful in 1m50s
CI / integration_tests (pull_request) Successful in 3m52s
CI / unit_tests (pull_request) Successful in 8m50s
CI / docker (pull_request) Successful in 1m39s
CI / coverage (pull_request) Successful in 12m1s
CI / status-check (pull_request) Successful in 6s
This reverts commit 94622f467c, reversing
changes made to 1196c726f2.
2026-05-15 11:15:41 +00:00
hamza.khyari 1baa888659 fix(acms): use project-level hot_max_tokens in execute phase context assembly
CI / lint (pull_request) Successful in 57s
CI / typecheck (pull_request) Successful in 1m24s
CI / quality (pull_request) Successful in 1m16s
CI / build (pull_request) Successful in 40s
CI / security (pull_request) Successful in 1m28s
CI / integration_tests (pull_request) Successful in 6m2s
CI / helm (pull_request) Successful in 24s
CI / push-validation (pull_request) Successful in 28s
CI / unit_tests (pull_request) Successful in 7m13s
CI / docker (pull_request) Successful in 1m29s
CI / coverage (pull_request) Successful in 11m50s
CI / status-check (pull_request) Successful in 7s
Added _resolve_effective_budget() method to
ACMSExecutePhaseContextAssembler that reads each linked project's
settings.hot_max_tokens and uses the maximum override value as the
pipeline budget instead of the hardcoded global default.

Updated assemble() to use the resolved effective budget for both
CoreContextBudget and ContextRequest.

Added Behave regression scenario with @tdd_issue @tdd_issue_11035 tags
verifying the pipeline receives the project-level budget.

Removed test artifact ANALYSIS.md left over from scenario 20.

Fixes: #11035
Fixes: #11215
2026-05-15 10:27:57 +00:00
HAL9000 1196c726f2 fix(lint): remove broken step file and fix line-length violation
CI / helm (pull_request) Successful in 56s
CI / push-validation (pull_request) Successful in 1m1s
CI / build (pull_request) Successful in 1m59s
CI / lint (pull_request) Successful in 2m21s
CI / typecheck (pull_request) Successful in 2m49s
CI / quality (pull_request) Successful in 2m56s
CI / security (pull_request) Successful in 3m21s
CI / integration_tests (pull_request) Successful in 5m36s
CI / unit_tests (pull_request) Successful in 9m7s
CI / docker (pull_request) Successful in 1m49s
CI / coverage (pull_request) Successful in 16m22s
CI / status-check (pull_request) Successful in 4s
CI / build (push) Successful in 1m7s
CI / helm (push) Successful in 39s
CI / push-validation (push) Successful in 35s
CI / lint (push) Successful in 1m36s
CI / typecheck (push) Successful in 1m51s
CI / quality (push) Successful in 1m55s
CI / security (push) Successful in 2m8s
CI / e2e_tests (push) Successful in 1m7s
CI / benchmark-regression (push) Failing after 1m22s
CI / integration_tests (push) Failing after 17m27s
CI / unit_tests (push) Failing after 17m29s
CI / benchmark-publish (push) Successful in 1h37m6s
CI / coverage (push) Has been cancelled
CI / docker (push) Has been cancelled
CI / status-check (push) Has been cancelled
- Removed features/steps/plan_status_json_envelope_steps.py which contained
  invalid Python syntax (dummy content, not referenced by any feature)
- Fixed line-length violation in execute_phase_context_assembler.py
  (CoreContextBudget constructor call exceeded 88-char limit)
2026-05-15 03:41:13 +00:00
HAL9000 655cd7ebc2 fix: persist strategy decisions via DecisionService during strategize (#10813)
The plan tree command reported zero decision nodes after strategize because
PlanExecutor.run_strategize() never persisted strategy decisions as domain
Decision objects. Added _persist_strategy_decisions() to the PlanExecutor,
wired decision_service from the DI container in _get_plan_executor(), and
ensure each strategy decision is recorded with correct DecisionType mapping.

ISSUES CLOSED: #10813
2026-05-15 03:41:13 +00:00
HAL9000 dbc382f3d9 Fix TypeError in infer_resource_slots() when properties is null
CI / lint (pull_request) Successful in 1m53s
CI / security (pull_request) Successful in 2m12s
CI / push-validation (pull_request) Successful in 48s
CI / quality (pull_request) Successful in 1m11s
CI / helm (pull_request) Successful in 48s
CI / typecheck (pull_request) Successful in 2m28s
CI / build (pull_request) Successful in 2m10s
CI / integration_tests (pull_request) Successful in 5m50s
CI / unit_tests (pull_request) Successful in 6m17s
CI / docker (pull_request) Successful in 1m39s
CI / coverage (pull_request) Successful in 12m32s
CI / status-check (pull_request) Successful in 3s
CI / lint (push) Successful in 1m11s
CI / helm (push) Successful in 1m7s
CI / push-validation (push) Successful in 41s
CI / build (push) Successful in 1m21s
CI / quality (push) Successful in 1m46s
CI / e2e_tests (push) Successful in 1m16s
CI / security (push) Successful in 1m54s
CI / typecheck (push) Successful in 2m5s
CI / benchmark-regression (push) Failing after 1m22s
CI / integration_tests (push) Successful in 5m1s
CI / unit_tests (push) Successful in 6m55s
CI / docker (push) Successful in 2m36s
CI / coverage (push) Successful in 13m15s
CI / status-check (push) Successful in 8s
CI / benchmark-publish (push) Has been cancelled
Fixed MCPToolAdapter.infer_resource_slots() to handle null  values
in JSON Schema by using  instead of
 which returned None when the key exists with a null value.

The @tdd_expected_fail tag was removed from TDD issue #10470 since the fix is now applied.
2026-05-15 02:41:37 +00:00
CoreRasurae b41f536da6 fix(automation): respect automation profile gates in lifecycle service and async jobs
CI / helm (push) Successful in 47s
CI / build (push) Successful in 1m11s
CI / push-validation (push) Successful in 40s
CI / benchmark-publish (push) Has started running
CI / lint (push) Successful in 1m26s
CI / typecheck (push) Successful in 1m55s
CI / e2e_tests (push) Successful in 1m12s
CI / quality (push) Successful in 2m6s
CI / security (push) Successful in 2m9s
CI / benchmark-regression (push) Failing after 1m28s
CI / integration_tests (push) Successful in 3m48s
CI / unit_tests (push) Successful in 7m31s
CI / coverage (push) Has started running
CI / docker (push) Successful in 1m35s
CI / helm (pull_request) Successful in 39s
CI / push-validation (pull_request) Successful in 39s
CI / build (pull_request) Successful in 1m13s
CI / lint (pull_request) Successful in 1m32s
CI / quality (pull_request) Successful in 1m49s
CI / typecheck (pull_request) Successful in 1m48s
CI / security (pull_request) Successful in 1m58s
CI / status-check (push) Has been cancelled
CI / integration_tests (pull_request) Successful in 4m48s
CI / unit_tests (pull_request) Successful in 5m11s
CI / coverage (pull_request) Has started running
CI / docker (pull_request) Successful in 1m44s
CI / status-check (pull_request) Has been cancelled
Add BDD regression tests for issue #4328 automation profile gates

Tests verify that complete_strategize() and complete_execute() respect
automation profile thresholds and do NOT unconditionally call auto_progress().

Covers 8 built-in profiles: manual, full-auto, supervised, auto,
review_before_apply, ci, trusted

ISSUES CLOSED: #4328
2026-05-14 22:57:11 +00:00
HAL9000 2f29f8352f chore: resolve merge conflicts and apply cosmetic fixes
CI / push-validation (push) Successful in 29s
CI / helm (push) Successful in 39s
CI / build (push) Successful in 1m9s
CI / lint (push) Successful in 1m23s
CI / typecheck (push) Successful in 1m34s
CI / quality (push) Successful in 1m39s
CI / security (push) Successful in 1m46s
CI / e2e_tests (push) Successful in 52s
CI / benchmark-regression (push) Failing after 40s
CI / integration_tests (push) Successful in 5m6s
CI / unit_tests (push) Successful in 6m7s
CI / docker (push) Successful in 1m28s
CI / coverage (push) Successful in 10m46s
CI / status-check (push) Successful in 7s
CI / benchmark-publish (push) Failing after 45m49s
CI / helm (pull_request) Successful in 45s
CI / build (pull_request) Successful in 1m8s
CI / lint (pull_request) Successful in 1m45s
CI / quality (pull_request) Successful in 1m39s
CI / security (pull_request) Successful in 2m11s
CI / typecheck (pull_request) Successful in 2m21s
CI / push-validation (pull_request) Successful in 22s
CI / integration_tests (pull_request) Successful in 4m19s
CI / unit_tests (pull_request) Successful in 5m5s
CI / docker (pull_request) Successful in 1m47s
CI / coverage (pull_request) Successful in 11m53s
CI / status-check (pull_request) Successful in 3s
- Resolve CHANGELOG.md conflict to include both entries, referencing issue #8164 instead of PR #11161
- Resolve CONTRIBUTORS.md conflict, fix leading space in new entry
- Remove duplicate create_sequence_node function (dead code)
Merges master into feat/structural-output-validation branch
2026-05-14 18:14:48 +00:00
hurui200320 cc8e013f9b fix(actor): handle nested actor type and combined config.actor field in v3 YAML
CI / push-validation (push) Successful in 43s
CI / helm (push) Successful in 50s
CI / benchmark-regression (push) Failing after 1m28s
CI / build (push) Successful in 1m39s
CI / quality (push) Successful in 2m32s
CI / lint (push) Successful in 2m37s
CI / security (push) Successful in 2m40s
CI / typecheck (push) Successful in 2m47s
CI / e2e_tests (push) Successful in 2m43s
CI / integration_tests (push) Successful in 5m0s
CI / unit_tests (push) Successful in 8m3s
CI / docker (push) Successful in 1m52s
CI / coverage (push) Successful in 14m30s
CI / status-check (push) Successful in 6s
CI / helm (pull_request) Successful in 46s
CI / build (pull_request) Successful in 1m22s
CI / quality (pull_request) Successful in 1m39s
CI / lint (pull_request) Successful in 1m55s
CI / security (pull_request) Successful in 1m55s
CI / push-validation (pull_request) Successful in 1m40s
CI / typecheck (pull_request) Successful in 1m42s
CI / integration_tests (pull_request) Successful in 4m29s
CI / unit_tests (pull_request) Successful in 5m42s
CI / docker (pull_request) Successful in 1m38s
CI / coverage (pull_request) Successful in 10m50s
CI / status-check (pull_request) Successful in 4s
CI / benchmark-publish (push) Successful in 1h24m10s
Two defects in ActorConfiguration._extract_v3_actor() prevented YAML files
using the spec-canonical nested actors map format from being registered:

Defect A: The method looked for the 'type' field inside the 'config:' block
(config_block.get('type')) instead of at the actor-entry level
(first_entry.get('type')). Because the spec places 'type' at
actors.<name>.type — a sibling of 'config:', not a child of it — the v3
detection branch never fired for nested-actors-map YAMLs, causing
_extract_v3_actor() to return (None, None, None, False) immediately.

Defect B: Even if the type was found, the method only consulted separate
config.provider and config.model keys; it never parsed the combined
config.actor: 'provider/model' shorthand. Without the combined-field
fallback, provider and model remained None for all spec-canonical YAMLs
that use the shorthand, causing from_blob() to raise
'BadParameter: provider is required'.

Both defects had to be fixed together because Defect A blocked the code
from ever reaching the path where Defect B would otherwise have been
encountered.

The combined-format parser (config.actor split on first '/') is inserted
after the explicit config.provider / config.model lookups so that explicit
separate fields always take precedence over the shorthand when both are
present.

Parsing logic extracted into _parse_combined_actor_field() helper to
eliminate DRY violation. Both provider and model halves validated
consistently (empty provider half was previously silently inferred).

Adds Behave scenarios covering: nested actors map + combined config.actor
(success), explicit config.provider precedence over config.actor,
explicit config.model precedence over config.actor, genuinely missing
provider/model raising validation error, and malformed combined values
(empty model half, empty provider half, missing delimiter). Adds a Robot
integration test for the combined-actor YAML path with provider/model
assertions via show. Restores accidentally deleted TOOL and GRAPH Robot
integration tests. Mirrors provider/model extraction in
step_run_actor_update for assertion step compatibility.

ISSUES CLOSED: #11189
2026-05-14 08:10:58 +00:00
HAL9000 6d46baf552 fix: apply ruff format to step definitions file
CI / push-validation (pull_request) Successful in 35s
CI / helm (pull_request) Successful in 39s
CI / build (pull_request) Successful in 1m13s
CI / lint (pull_request) Successful in 1m17s
CI / quality (pull_request) Successful in 1m42s
CI / typecheck (pull_request) Successful in 1m49s
CI / security (pull_request) Successful in 2m4s
CI / integration_tests (pull_request) Successful in 3m38s
CI / unit_tests (pull_request) Successful in 4m57s
CI / docker (pull_request) Successful in 1m32s
CI / coverage (pull_request) Failing after 10m46s
CI / status-check (pull_request) Failing after 3s
2026-05-14 06:46:27 +00:00
HAL9000 ac81ea2ceb fix: replace Scenario Outline with literal steps to fix Behave-parallel parameter substitution bug
The Behevare-parallel runner in this project does not support inline
parameter substitution for '{param}' or '<param>' markers within
Scenario Outline Examples. All 4 original Scenario Outlines were failing
because parameters were not being substituted, causing UndefinedStep and
ValueError failures.

Fix: Convert all Scenario Outline scenarios to regular Scenarios with
explicit literal step definitions. Each unique Gherkin line gets its own
@Given/@When/@Then step definition matching the exact string.

Also fix pre-existing bugs identified in PR review #8719:
- Fix undefined step by quoting {{seq}} in feature (line 46)
- Fix ctx.decision_result → ctx.validation_result context variable (line 184)
- Fix ctx.struct_result → ctx.validation_result context variable (line 210)
- Replace # type: ignore[arg-type] with proper Callable[[Any], dict] type
- Add missing literal step definitions for structured_output tests

ISSUES CLOSED: #11161
2026-05-14 06:46:27 +00:00
freemo b092ccac49 fix(ci): apply ruff formatting to validation.py and step definitions
ISSUES CLOSED: #11147
2026-05-14 06:46:27 +00:00
freemo b59b2508af fix(ci): resolve remaining lint errors in __init__.py and step definitions
ISSUES CLOSED: #11147
2026-05-14 06:46:27 +00:00
HAL9000 f8e4f4a579 feat: implement structural component output validation
Replace exact character matching with structural component checking
for output validation. Implements three validators covering plan tree
output, decision CLI dicts, and structured session snapshots.

- validate_plan_tree: validates node dicts for required keys (decision_id, type, sequence, question, children), ULID format, correct types, and sibling ordering
- validate_decision_dict: validates decision CLI output against Decision.as_cli_dict() schema with field presence, type, ULID, confidence range [0..1], bool fields
- validate_structured_output: validates StructuredOutput envelope for command, session_id (ULID), status membership, exit_code, elements integrity
- validate_structured_component_output: unified dispatcher by target_type

BDD tests in features/structural_validation.feature.

ISSUES CLOSED: #11147
2026-05-14 06:46:27 +00:00
hurui200320 39f9903f1a fix(tests): restore agent-evolution-pool-supervisor.md or remove its orphaned BDD scenarios
CI / helm (pull_request) Successful in 1m5s
CI / push-validation (pull_request) Successful in 1m14s
CI / build (pull_request) Successful in 1m15s
CI / lint (pull_request) Successful in 1m47s
CI / typecheck (pull_request) Successful in 1m56s
CI / quality (pull_request) Successful in 1m50s
CI / security (pull_request) Successful in 1m56s
CI / integration_tests (pull_request) Successful in 7m43s
CI / unit_tests (pull_request) Successful in 9m18s
CI / docker (pull_request) Successful in 1m35s
CI / coverage (pull_request) Successful in 24m0s
CI / status-check (pull_request) Successful in 4s
CI / push-validation (push) Successful in 46s
CI / helm (push) Successful in 1m0s
CI / lint (push) Successful in 1m17s
CI / build (push) Successful in 1m26s
CI / benchmark-publish (push) Has started running
CI / quality (push) Successful in 1m50s
CI / e2e_tests (push) Successful in 1m52s
CI / security (push) Successful in 1m59s
CI / typecheck (push) Successful in 2m3s
CI / benchmark-regression (push) Failing after 49s
CI / integration_tests (push) Successful in 4m53s
CI / unit_tests (push) Successful in 4m59s
CI / docker (push) Successful in 2m59s
CI / coverage (push) Successful in 13m4s
CI / status-check (push) Successful in 3s
Chose Option B (fallback): remove orphaned BDD scenarios for two retired agents.

Commit 3c8cf601 deleted .opencode/agents/agent-evolution-pool-supervisor.md
and .opencode/agents/implementation-pool-supervisor.md as part of a large-scale
restructuring of agent definition files. However, their corresponding Behave feature
files and step definitions were not cleaned up, causing nox -s unit_tests to fail
with AssertionError on master.

Removed files:
- features/agent_evolution_pool_supervisor_metadata.feature (7 scenarios testing
  agent-evolution-pool-supervisor.md existence and content)
- features/steps/agent_evolution_pool_supervisor_metadata_steps.py (382 lines of
  step definitions for the above feature)
- features/pr_compliance_pool_supervisor.feature (10 scenarios testing
  implementation-pool-supervisor.md existence and content)
- features/steps/pr_compliance_pool_supervisor_steps.py (219 lines of step
  definitions for the above feature)

Both agent definition files were permanently retired by the restructuring commit
and are not expected to return. Keeping orphaned tests that assert on deleted files
is not valid; removal is the correct resolution per the project's handling of
obsolete tests policy.

Quality gates verified:
- nox -s unit_tests: 694 features passed, 0 failed (was failing on master)
- nox -s lint: all checks passed
- nox -s typecheck: 0 errors, 3 warnings (pre-existing import warnings)
- nox -s coverage_report: 96.5% (meets 96.5% threshold)
- nox -s integration_tests: 1998 tests passed, 0 failed

ISSUES CLOSED: #11208
2026-05-14 04:16:04 +00:00
HAL9000 3459f821c5 fix(events): add close() method to ReactiveEventBus to complete RxPY subject
Add _closed flag and close() method to ReactiveEventBus to complete the
RxPY Subject, preventing subscriber resource leaks. close() is idempotent
and raises RuntimeError when called on a closed bus.

Also adds:
- emit() guard against post-close calls (RuntimeError)
- __enter__/__exit__ context manager protocol for automatic cleanup
- BDD scenarios in event_bus.feature and TDD tests in
  tdd_reactive_event_bus_close.feature

ISSUES CLOSED: #10378
2026-05-13 12:24:33 +00:00
CoreRasurae 3fcfaee02d feat(mcp): implement StdioMCPTransport for JSON-RPC 2.0 stdio communication
CI / helm (push) Successful in 38s
CI / build (push) Successful in 1m3s
CI / push-validation (push) Successful in 30s
CI / lint (push) Successful in 1m22s
CI / quality (push) Successful in 1m31s
CI / security (push) Successful in 1m46s
CI / typecheck (push) Successful in 1m53s
CI / integration_tests (push) Successful in 3m41s
CI / e2e_tests (push) Failing after 4m5s
CI / unit_tests (push) Successful in 4m58s
CI / docker (push) Successful in 1m30s
CI / benchmark-regression (push) Failing after 45s
CI / coverage (push) Successful in 11m32s
CI / status-check (push) Successful in 5s
CI / benchmark-publish (push) Successful in 1h20m26s
Implements concrete StdioMCPTransport class that:
- Spawns MCP server as subprocess and communicates via JSON-RPC 2.0 over stdio
- Performs MCP handshake (initialize + notifications/initialized)
- Supports tools/list and tools/call methods
- Uses RLock for thread-safe concurrent access
- Auto-selected when transport='stdio' in MCPServerConfig

Adds BDD tests for stdio transport covering:
- Connection lifecycle and error handling
- Tool discovery and invocation
- MCPToolAdapter integration

ISSUES CLOSED: #4918
2026-05-13 07:13:34 +00:00
HAL9000 3368cba38f refactor(a2a): execute ACP to A2A module rename and symbol standardization (#10583)
CI / lint (push) Successful in 1m15s
CI / helm (push) Successful in 51s
CI / push-validation (push) Successful in 1m3s
CI / build (push) Successful in 1m17s
CI / quality (push) Successful in 1m45s
CI / typecheck (push) Successful in 2m14s
CI / security (push) Successful in 2m13s
CI / integration_tests (push) Successful in 3m48s
CI / e2e_tests (push) Successful in 4m21s
CI / unit_tests (push) Successful in 5m14s
CI / docker (push) Successful in 2m28s
CI / coverage (push) Successful in 11m51s
CI / status-check (push) Successful in 3s
CI / benchmark-regression (push) Has been cancelled
CI / benchmark-publish (push) Has been cancelled
Executes the systematic ACP -> A2A module rename per ADR-047.
- Renamed all legacy ACP references to A2A throughout cleveragents.a2a module
- Standardized all 22 exported symbols to A2A naming conventions
- Added BDD test suite validating export completeness, zero ACP remnants, and documentation accuracy

Closes #10583
Parent Epic: #8569 (A2A Standard Adoption)
2026-05-13 06:49:40 +00:00
freemo 9cfa1dd1d7 fix(subplan): propagate invariant_enforced decisions to child plans on spawn
CI / lint (pull_request) Successful in 1m25s
CI / typecheck (pull_request) Successful in 1m48s
CI / quality (pull_request) Successful in 1m52s
CI / security (pull_request) Successful in 1m52s
CI / push-validation (pull_request) Successful in 36s
CI / helm (pull_request) Successful in 38s
CI / build (pull_request) Successful in 46s
CI / integration_tests (pull_request) Successful in 3m55s
CI / unit_tests (pull_request) Successful in 6m46s
CI / docker (pull_request) Successful in 1m33s
CI / coverage (pull_request) Successful in 10m45s
CI / status-check (pull_request) Successful in 7s
CI / lint (push) Successful in 56s
CI / quality (push) Successful in 1m15s
CI / typecheck (push) Successful in 1m25s
CI / security (push) Successful in 1m30s
CI / build (push) Successful in 34s
CI / push-validation (push) Successful in 40s
CI / helm (push) Successful in 43s
CI / benchmark-regression (push) Failing after 45s
CI / integration_tests (push) Successful in 3m55s
CI / unit_tests (push) Successful in 4m21s
CI / e2e_tests (push) Successful in 4m26s
CI / docker (push) Successful in 1m28s
CI / coverage (push) Successful in 12m20s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Successful in 1h20m8s
SubplanService.spawn() now re-records all invariant_enforced decisions from
the parent plan decision tree onto each child plan decision tree. This
satisfies the spec requirement: 'recorded as invariant_enforced decisions that
propagate to child plans.' (Glossary → Invariant)

Previously, child plans started Strategize with a completely empty invariant
set, violating the spec's propagation requirement. non_overridable global
invariants enforced on the parent were not guaranteed to be enforced on child
plans.

The fix adds _propagate_invariant_decisions() to SubplanService which queries
the parent plan's invariant_enforced decisions and re-records each one on the
child plan using DecisionService.record_decision(). The DecisionService is
already injected into SubplanService, so no new dependencies are required.

BDD regression coverage added in features/tdd_invariant_propagation_subplan.feature
with 4 scenarios covering: single invariant propagation, multiple invariant
propagation, non_overridable invariant propagation, and clean spawn with no
parent invariants.

ISSUES CLOSED: #9131
2026-05-12 16:45:59 +00:00
CoreRasurae 3b83438e7d test(actor): add regression test for issue 4321 nested config extraction
CI / benchmark-regression (push) Failing after 49s
CI / lint (push) Successful in 1m13s
CI / quality (push) Successful in 1m21s
CI / typecheck (push) Successful in 1m31s
CI / security (push) Successful in 1m31s
CI / push-validation (push) Successful in 39s
CI / helm (push) Successful in 40s
CI / build (push) Successful in 48s
CI / integration_tests (push) Successful in 3m12s
CI / e2e_tests (push) Failing after 3m40s
CI / unit_tests (push) Successful in 6m34s
CI / docker (push) Successful in 1m48s
CI / coverage (push) Successful in 10m46s
CI / status-check (push) Successful in 4s
CI / helm (pull_request) Successful in 35s
CI / push-validation (pull_request) Successful in 34s
CI / build (pull_request) Successful in 55s
CI / lint (pull_request) Successful in 1m15s
CI / quality (pull_request) Successful in 1m17s
CI / typecheck (pull_request) Successful in 1m29s
CI / security (pull_request) Successful in 1m44s
CI / integration_tests (pull_request) Successful in 3m42s
CI / unit_tests (pull_request) Successful in 4m57s
CI / docker (pull_request) Successful in 1m29s
CI / coverage (pull_request) Successful in 10m34s
CI / status-check (pull_request) Successful in 3s
CI / benchmark-publish (push) Has started running
Add BDD regression test for Forgejo issue 4321: ActorRegistry.add()
fails to extract provider and model from nested actor config.

The test verifies that when type is only at the nested actors map level
(not at top level), provider and model are correctly extracted from the
nested config block.

This scenario is already handled correctly by the _extract_nested_v3_config()
function added in commit 78be0887 (issue #4300). The test confirms the fix
works as expected and prevents future regressions.

Tags: @tdd_issue @tdd_issue_4321

ISSUES CLOSED: #4321
2026-05-12 13:02:59 +00:00
hurui200320 52830971f2 fix(plan): guard cleanup_stale against execute/complete plans awaiting apply
CI / push-validation (pull_request) Successful in 33s
CI / helm (pull_request) Successful in 48s
CI / build (pull_request) Successful in 1m10s
CI / lint (pull_request) Successful in 1m31s
CI / typecheck (pull_request) Successful in 1m53s
CI / quality (pull_request) Successful in 1m57s
CI / security (pull_request) Successful in 2m13s
CI / integration_tests (pull_request) Successful in 4m2s
CI / unit_tests (pull_request) Successful in 5m23s
CI / docker (pull_request) Successful in 1m28s
CI / coverage (pull_request) Successful in 10m41s
CI / status-check (pull_request) Successful in 3s
CI / benchmark-publish (push) Has started running
CI / helm (push) Successful in 52s
CI / push-validation (push) Successful in 56s
CI / benchmark-regression (push) Failing after 1m10s
CI / build (push) Successful in 1m18s
CI / lint (push) Successful in 1m51s
CI / quality (push) Successful in 1m51s
CI / typecheck (push) Successful in 1m58s
CI / security (push) Successful in 2m24s
CI / e2e_tests (push) Successful in 4m30s
CI / integration_tests (push) Successful in 5m20s
CI / unit_tests (push) Successful in 6m58s
CI / docker (push) Successful in 1m28s
CI / coverage (push) Successful in 10m41s
CI / status-check (push) Successful in 3s
Bug #11121: _create_sandbox_for_plan() called GitWorktreeSandbox.cleanup_stale()
unconditionally, destroying the cleveragents/plan-<id> git branch when
agents plan execute was re-invoked on a plan already in execute/complete
state (awaiting apply). This caused plan apply to find zero artifacts.

Fix: Add a phase/state guard inside _create_sandbox_for_plan() that returns
the flat fallback early when the plan is execute/complete, preserving the
worktree branch intact for plan apply to merge.

- TDD regression test from issue #11120 (without @tdd_expected_fail)
- Verified sandbox lifecycle tests still pass

ISSUES CLOSED: #11121
2026-05-12 10:17:39 +00:00
hurui200320 9fe69c468c test(plan): add tdd issue-capture test for cleanup_stale destroying execute output before apply
Add two Behave scenarios tagged @tdd_issue, @tdd_issue_11121, and @tdd_expected_fail
that capture bug #11121: _create_sandbox_for_plan() calls
GitWorktreeSandbox.cleanup_stale() unconditionally on every execute invocation,
including when the plan is already in execute/complete state awaiting apply.

Scenario 1 asserts that the cleveragents/plan-<id> branch survives a second call
to _create_sandbox_for_plan() on an execute/complete plan. This assertion fails
because cleanup_stale deletes the branch regardless of plan state.

Scenario 2 asserts that plan apply would find at least one artifact after a
re-invoked execute on an execute/complete plan. This assertion fails because the
branch (holding execute output) was destroyed by cleanup_stale.

Both scenarios use @tdd_expected_fail so CI passes while the bug is unfixed.
The @mock_only tag ensures no database is created for these git-only tests.
The companion fix is tracked in issue #11121.

Additional CI fixes bundled in this commit:

- Fixed PlanGenerationGraph recursion bug: _should_retry() was mutating state
  in-place but LangGraph conditional edge functions cannot persist state
  mutations. Replaced with a proper _handle_retry() node that increments
  retry_count via state returns, resolving the GraphRecursionError that was
  crashing the integration tests. Updated the graph to include handle_retry
  as the 5th node, routing validate→should_retry→handle_retry→analyze.

- Fixed TDD quality gate (scripts/tdd_quality_gate.py): Renamed @tdd_bug_N
  tags to @tdd_issue_N to match the CONTRIBUTING.md specification. Added
  _diff_is_tdd_issue_capture() detection so that TDD issue-capture PRs
  (which add @tdd_expected_fail rather than remove it) pass the quality gate
  correctly. Updated all related tests (Behave unit tests, Robot integration
  tests, and test helpers) to use the new tag naming.

ISSUES CLOSED: #11120
2026-05-12 16:57:50 +08:00
hurui200320 d25a060c58 Revert "feat(ci): implement TDD bug tag quality gate for bug fix PRs"
CI / lint (pull_request) Successful in 50s
CI / quality (pull_request) Successful in 1m2s
CI / push-validation (pull_request) Successful in 39s
CI / helm (pull_request) Successful in 43s
CI / typecheck (pull_request) Successful in 1m31s
CI / security (pull_request) Successful in 1m32s
CI / build (pull_request) Successful in 1m3s
CI / integration_tests (pull_request) Successful in 3m42s
CI / unit_tests (pull_request) Successful in 6m13s
CI / docker (pull_request) Successful in 2m2s
CI / coverage (pull_request) Successful in 11m15s
CI / status-check (pull_request) Successful in 3s
CI / build (push) Successful in 53s
CI / lint (push) Successful in 1m1s
CI / helm (push) Successful in 26s
CI / quality (push) Successful in 1m16s
CI / typecheck (push) Successful in 1m20s
CI / security (push) Successful in 1m37s
CI / benchmark-regression (push) Failing after 40s
CI / push-validation (push) Successful in 21s
CI / integration_tests (push) Successful in 3m17s
CI / unit_tests (push) Successful in 4m28s
CI / e2e_tests (push) Successful in 3m22s
CI / docker (push) Successful in 1m52s
CI / coverage (push) Successful in 12m50s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Successful in 1h20m0s
This reverts commit e8d2f76466.
2026-05-12 08:30:24 +00:00
hurui200320 b4a514e0f4 fix(cli): add spec-required --data-dir, --config-path, and -v global options to main_callback
CI / benchmark-regression (push) Failing after 34s
CI / tdd_quality_gate (push) Has been skipped
CI / push-validation (push) Successful in 1m5s
CI / helm (push) Successful in 1m6s
CI / build (push) Successful in 1m23s
CI / lint (push) Successful in 1m55s
CI / typecheck (push) Successful in 2m4s
CI / quality (push) Successful in 2m2s
CI / security (push) Successful in 2m2s
CI / integration_tests (push) Successful in 7m35s
CI / e2e_tests (push) Successful in 4m30s
CI / unit_tests (push) Successful in 9m19s
CI / docker (push) Successful in 1m47s
CI / coverage (push) Successful in 12m33s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Has been cancelled
Implements ADR-021 §Global CLI Flags and ADR-024 §Resolution Chain.
All three global options were missing from main_callback(), causing any
invocation with these flags to crash with 'No such option'.

Changes:
- src/cleveragents/cli/main.py
  * Add _VERBOSITY_LOG_LEVELS tuple mapping verbose count to log levels
    (0=CRITICAL/silent, 1=ERROR, 2=WARNING, 3=INFO, 4=DEBUG, 5+=DEBUG)
  * Add --data-dir PATH option: validates path is a directory if it exists,
    sets CLEVERAGENTS_DATA_DIR env var, resets Settings singleton
  * Add --config-path PATH option: validates file exists and is a file,
    sets CLEVERAGENTS_CONFIG_PATH env var for ConfigService to pick up
  * Add -v (count=True) option: wires verbose count to configure_structlog
  * Store all three values in ctx.obj for subcommand access
  * Update _print_basic_help() to include the three new global options so
    'cleveragents --help' (fast path) also lists them
  * In the catch-all Exception handler, print the original exception
    type+message directly to err_console so actionable details remain
    visible even when log level is CRITICAL (e.g. 'No such option')

- src/cleveragents/application/services/config_service.py
  * ConfigService.__init__ now checks CLEVERAGENTS_CONFIG_PATH env var
    when no explicit config_path is passed, completing the resolution
    chain for --config-path CLI override

Tests (all passing):
- features/cli_global_options.feature (21 Behave scenarios)
- features/steps/cli_global_options_steps.py
- robot/cli_global_options.robot (8 Robot Framework integration tests)
- robot/helper_cli_global_options.py

Quality gates: lint ✓  typecheck ✓  unit_tests ✓  integration_tests ✓
Coverage: 96.52% (threshold 96.5% ✓)

ISSUES CLOSED: #6785
2026-05-12 01:05:10 +00:00
CoreRasurae e8d2f76466 feat(ci): implement TDD bug tag quality gate for bug fix PRs
CI / push-validation (pull_request) Successful in 45s
CI / helm (pull_request) Successful in 57s
CI / build (pull_request) Successful in 1m8s
CI / lint (pull_request) Successful in 1m31s
CI / tdd_quality_gate (pull_request) Failing after 1m26s
CI / quality (pull_request) Successful in 1m30s
CI / typecheck (pull_request) Successful in 1m43s
CI / security (pull_request) Successful in 1m42s
CI / e2e_tests (pull_request) Failing after 4m10s
CI / integration_tests (pull_request) Successful in 5m2s
CI / unit_tests (pull_request) Successful in 6m6s
CI / docker (pull_request) Successful in 1m32s
CI / coverage (pull_request) Successful in 12m12s
CI / status-check (push) Blocked by required conditions
CI / status-check (pull_request) Failing after 3s
CI / tdd_quality_gate (push) Has been skipped
CI / benchmark-regression (push) Failing after 1m8s
CI / build (push) Successful in 1m2s
CI / lint (push) Successful in 1m16s
CI / helm (push) Successful in 45s
CI / push-validation (push) Successful in 45s
CI / quality (push) Successful in 1m37s
CI / typecheck (push) Successful in 2m1s
CI / security (push) Successful in 2m1s
CI / integration_tests (push) Successful in 3m34s
CI / unit_tests (push) Successful in 5m14s
CI / docker (push) Successful in 1m37s
CI / coverage (push) Failing after 19m17s
CI / benchmark-publish (push) Successful in 1h20m43s
CI / e2e_tests (push) Successful in 4m13s
Add an automated quality gate that enforces TDD bug fix workflow rules
on pull requests. The gate parses PR descriptions for bug-closing
keywords (Closes/Fixes/Resolves #N, ISSUES CLOSED: #N), searches the
codebase for corresponding TDD tests tagged @tdd_bug_N, and verifies
that @tdd_expected_fail tags have been removed.

Key components:
- scripts/tdd_quality_gate.py: Main quality gate script with PR
  description parsing, TDD test discovery, and tag removal verification.
  All public functions validate arguments fail-fast and are statically
  typed.
- noxfile.py: New tdd_quality_gate session that reads PR_DESCRIPTION
  from the environment and runs the quality gate script.
- .forgejo/workflows/ci.yml: New tdd_quality_gate CI job that runs
  only on pull_request events, passing the PR body as PR_DESCRIPTION.
- features/tdd_quality_gate.feature: 46 Behave scenarios covering PR
  parsing, TDD test search, tag removal verification, full gate logic,
  robot diff handling, edge cases, argument validation, bool guards,
  co-located bug false-positive guard, and main() CLI entry point.
- features/steps/tdd_quality_gate_steps.py: Step definitions for all
  Behave scenarios using temporary directories for isolation.
- robot/tdd_quality_gate.robot: 15 Robot Framework integration tests
  exercising the gate end-to-end via a helper subprocess.
- robot/helper_tdd_quality_gate.py: Helper script for Robot tests with
  sentinel-based sub-commands.

Review-round fixes applied:
- check_expected_fail_removed now uses _contains_tag_token for
  word-boundary matching (avoids false positives on partial tag names)
- Diff expected-fail removal detection tracks flags at file level
  instead of per-hunk (fixes false negatives when tags span hunks)
- parse_bug_refs filters out issue number zero
- Redundant double error reporting eliminated (file-level check
  short-circuits the diff-level check)
- run_quality_gate returns (errors, bug_refs) tuple to avoid
  redundant re-parsing in main()
- Regex compilation cached via functools.lru_cache
- Nox session no longer installs the full project (stdlib only)
- CI checkout uses fetch-depth: 0 for reliable merge-base resolution

Review-round 2 fixes applied:
- _diff_has_expected_fail_removal_for_bug now requires the removed
  line to contain both the expected-fail tag and the specific bug tag
  (fixes false positives when two bugs share the same test file)
- check_expected_fail_removed error messages use the correct tag
  prefix per file type (@tdd_bug_N for .feature, tdd_bug_N for .robot)
- bool values rejected by bug-number validation guards in
  find_tdd_tests, check_expected_fail_removed, and
  _diff_has_expected_fail_removal_for_bug
- File-read error handling catches UnicodeDecodeError alongside OSError
  (root-safe unreadable-file handling via invalid-UTF-8 test fixture)
- Temp directory cleanup added to after_scenario hook in environment.py
- 8 new Behave scenarios: bool type guards (2), co-located bug
  false-positive regression (1), run_quality_gate argument validation
  (3), and main() CLI entry point exit codes (2)

Review-round 3 fixes applied:
- Synthetic PR diff helper (_default_pr_diff_for_bug_refs) now
  auto-detects .robot vs .feature file type from the temp search
  tree and generates the matching diff format (fixes under-tested
  robot-format diff code path in multi-bug integration scenarios)
- check_expected_fail_removed test step now filters files by bug
  tag via find_tdd_tests before checking (matches production path
  in run_quality_gate)
- after_scenario temp directory cleanup no longer sets
  context.temp_dir = None (fixes cleanup conflict with
  cli_init_yes_flag_steps.py cleanup functions that run after hooks)
- 2 new Behave scenarios: multi-line PR description parsing, and
  non-string pr_diff type guard for run_quality_gate

ISSUES CLOSED: #629
2026-05-12 00:22:49 +01:00
HAL9000 b692894c88 fix(tests): remove AmbiguousStep conflict in security_pyyaml_dependency_steps
CI / benchmark-regression (push) Has been skipped
CI / helm (push) Successful in 43s
CI / build (push) Successful in 1m7s
CI / lint (push) Successful in 1m16s
CI / quality (push) Successful in 1m45s
CI / security (push) Successful in 1m45s
CI / typecheck (push) Successful in 1m46s
CI / push-validation (push) Successful in 35s
CI / integration_tests (push) Successful in 3m36s
CI / e2e_tests (push) Successful in 3m57s
CI / unit_tests (push) Successful in 5m30s
CI / docker (push) Successful in 1m28s
CI / coverage (push) Successful in 10m44s
CI / status-check (push) Successful in 5s
CI / benchmark-publish (push) Successful in 1h20m49s
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Failing after 2m3s
CI / helm (pull_request) Successful in 50s
CI / quality (pull_request) Successful in 1m36s
CI / build (pull_request) Successful in 1m35s
CI / typecheck (pull_request) Successful in 1m23s
CI / unit_tests (pull_request) Successful in 7m14s
CI / e2e_tests (pull_request) Failing after 5m44s
CI / integration_tests (pull_request) Successful in 6m9s
CI / push-validation (pull_request) Successful in 1m18s
CI / lint (pull_request) Successful in 1m12s
CI / security (pull_request) Successful in 1m24s
CI / coverage (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
CI / status-check (pull_request) Has been cancelled
Duplicate step definitions for 'the pyproject.toml file exists at',
'I read the project dependencies from pyproject.toml',
'I attempt to import the module', and 'the import should succeed without
errors' were present in both security_pyyaml_dependency_steps.py and
tdd_a2a_sdk_dependency_steps.py, causing a behave.AmbiguousStep error
that failed the unit_tests CI gate.

Removed the 4 duplicate step definitions from security_pyyaml_dependency_steps.py,
keeping only the 3 PyYAML-specific step definitions. The shared steps are
now exclusively provided by tdd_a2a_sdk_dependency_steps.py.

Also resolved merge conflicts from master in CONTRIBUTORS.md: preserved
all master additions (database resource types entry) alongside the existing
PyYAML upgrade entry.

ISSUES CLOSED: #9055
2026-05-11 08:59:08 +00:00
HAL9000 2f01e7d625 fix(tests): resolve lint format failure and harden pyyaml BDD step path resolution
- Move _flatten_toml_dict to module level: eliminates nested function
  definition that ruff format reformats unexpectedly; makes the helper
  independently testable and clearly documented.
- Rename helper to _flatten_toml_dict (was _flatten) for unambiguous
  module-level identity and improved readability.
- Add _PROJECT_ROOT constant computed from __file__ so pyproject.toml
  is always resolved via an absolute path regardless of the process
  working directory — fixes brittle relative-path lookup that fails
  when behave-parallel forks workers whose cwd differs from the repo root.
- Fix ruff format violations: wrap long assert message, normalise
  decorator quote style, ensure trailing newline, fix import ordering
  (behave imports before packaging).
- All quality gates pass: lint, format --check, security_scan, dead_code.

ISSUES CLOSED: #9055
2026-05-11 08:59:08 +00:00
HAL9000 63746b4d30 fix(pyyaml): address CI review feedback from PR #11012
- Fix ruff lint F541 error: remove unnecessary f-string prefix
- Remove dead step_uv_lock_specifier step (never called by BDD scenarios)
- Update CONTRIBUTORS.md to reference correct PR number (#11012 not #9244)

ISSUES CLOSED: #9055
2026-05-11 08:59:08 +00:00
HAL9000 05acc26c40 chore(deps): upgrade PyYAML to address known security vulnerability
- Added `pyyaml>=6.0.3` dependency constraint to pyproject.toml after
  aiohttp to prevent installation of vulnerable older versions with known
  YAML parsing security issues.
- Updated uv.lock package dependencies and requires-dist to include pyyaml
  entry with specifier '>=6.0.3'.
- Added changelog Security section entry under [Unreleased] documenting the
  upgrade for issue #9055.
- Updated CONTRIBUTORS.md with contribution note (PR #9244).
- Added BDD test scenario verifying PyYAML security dependency constraint.

ISSUES CLOSED: #9055
2026-05-11 08:59:08 +00:00
hurui200320 87a7ce35d7 feat(session): implement real LLM actor invocation in session tell
CI / benchmark-regression (push) Has been skipped
CI / helm (push) Successful in 38s
CI / lint (push) Successful in 1m14s
CI / build (push) Successful in 1m10s
CI / push-validation (push) Successful in 49s
CI / quality (push) Successful in 1m35s
CI / typecheck (push) Successful in 1m39s
CI / security (push) Successful in 1m45s
CI / integration_tests (push) Successful in 3m44s
CI / e2e_tests (push) Successful in 4m29s
CI / unit_tests (push) Successful in 5m10s
CI / docker (push) Successful in 1m55s
CI / coverage (push) Successful in 11m8s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Successful in 1h20m21s
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Failing after 1m35s
CI / docker (pull_request) Successful in 1m26s
CI / unit_tests (pull_request) Successful in 6m40s
CI / push-validation (pull_request) Successful in 1m24s
CI / quality (pull_request) Successful in 4m4s
CI / integration_tests (pull_request) Successful in 5m44s
CI / e2e_tests (pull_request) Failing after 6m5s
CI / helm (pull_request) Successful in 1m10s
CI / build (pull_request) Successful in 2m39s
CI / lint (pull_request) Successful in 2m58s
CI / typecheck (pull_request) Successful in 3m56s
CI / security (pull_request) Successful in 3m56s
CI / coverage (pull_request) Successful in 10m52s
CI / status-check (pull_request) Failing after 3s
Replace the M3 stub in `agents session tell` with real orchestrator actor
invocation via `SessionWorkflow.tell()`. The stub echoed a canned
`Acknowledged: ...` response without calling any LLM or actor; this
commit wires up the full pipeline:

Architecture:
- New `SessionWorkflow` (Application layer) orchestrates LLM invocation
  for session tell. Accepts a `ProviderRegistry` and `ToolRegistry`;
  falls back to `FakeListLLM` when no provider is configured.
- `LangChainSessionCaller` implements the `LLMCaller` protocol, building
  history-aware LangChain message lists from the session conversation and
  invoking the LLM via `ToolCallingRuntime.run_tool_loop()`.
- `TellResult` (Pydantic BaseModel) carries the assistant response plus
  token usage (input_tokens, output_tokens, cost_usd, duration_ms).

Domain / service layer:
- `SessionActorNotConfiguredError` added to the session domain model;
  raised when tell is invoked with no actor on the session and no
  `--actor` override. Clear message; CLI exits with code 1.
- `SessionService.get_messages()` abstract method added (+ implementation
  in `PersistentSessionService`) to load ordered message history.

A2A facade:
- `A2aLocalFacade` gains `message/send` and `message/stream` standard
  A2A operation handlers that route to `SessionWorkflow.tell()`.
  Total supported operations count: 42 → 44.

CLI:
- `session tell` command delegates to `_build_session_workflow()`
  (patchable factory) instead of directly calling `SessionService`.
- Non-streaming: `SessionWorkflow.tell()` returns `TellResult`; output
  includes a Usage panel (Rich/Plain) or a `usage` object (JSON/YAML).
- Streaming: `SessionWorkflow.tell_stream()` yields tokens; CLI prints
  them via `console.print` (not raw `sys.stdout.write`).
- Token usage recorded via `SessionService.update_token_usage()` in
  both paths.

Tests:
- New Behave feature `session_tell_llm.feature` (4 scenarios): real LLM
  response persisted; streaming yields tokens; no-actor exits code 1;
  `--actor` override resolves correctly.
- New Robot suite `session_tell_llm.robot` (4 tests): end-to-end with
  stub LLM injected via monkey-patching `_resolve_llm`.
- Updated all existing `session tell` test steps to patch
  `_build_session_workflow` returning a mock `TellResult` so tests
  remain isolated from the LLM layer.
- Updated operation-count assertions (42 → 44) in
  `a2a_cli_facade_integration`, `consolidated_misc`,
  `m6_autonomy_acceptance` feature files and steps.

Cycle 7 (Review ID 8088) fixes:
- Blocker 4: Split `session_workflow.py` (was 801 lines) into two files:
  `session_workflow.py` (467 lines) and `session_caller.py` (318 lines).
  Extracted: `LangChainSessionCaller`, `extract_content`,
  `extract_token_usage`, `estimate_cost`, `estimate_tokens`,
  `history_to_langchain_messages`, and stub classes.
- Blocker 5: Route CLI streaming path through
  `_facade_dispatch("message/stream", ...)` instead of directly
  calling `workflow.tell_stream()`. The facade's
  `_handle_message_stream` falls back to non-streaming with
  `streamed: false` (acceptable for this milestone per the spec).
- Updated streaming test assertion to validate full response presence
  (no longer checks token-by-token word positions, since the facade
  fallback returns a complete message).

ISSUES CLOSED: #5784
2026-05-11 04:39:29 +00:00
CoreRasurae 78be08870c fix(cli): validate actor provider field at correct config nesting level
CI / lint (push) Successful in 1m10s
CI / quality (push) Successful in 1m16s
CI / build (push) Successful in 1m1s
CI / benchmark-regression (push) Has been skipped
CI / typecheck (push) Successful in 1m46s
CI / security (push) Successful in 1m58s
CI / push-validation (push) Successful in 43s
CI / helm (push) Successful in 47s
CI / e2e_tests (push) Successful in 4m9s
CI / integration_tests (push) Successful in 5m9s
CI / unit_tests (push) Successful in 7m45s
CI / docker (push) Successful in 1m49s
CI / coverage (push) Successful in 14m18s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Successful in 1h31m39s
CI / lint (pull_request) Successful in 1m17s
CI / typecheck (pull_request) Successful in 1m30s
CI / benchmark-publish (pull_request) Has been skipped
CI / security (pull_request) Successful in 1m33s
CI / push-validation (pull_request) Successful in 48s
CI / helm (pull_request) Successful in 49s
CI / build (pull_request) Successful in 1m32s
CI / benchmark-regression (pull_request) Failing after 2m1s
CI / quality (pull_request) Successful in 2m9s
CI / e2e_tests (pull_request) Successful in 4m58s
CI / integration_tests (pull_request) Successful in 5m23s
CI / unit_tests (pull_request) Successful in 6m43s
CI / docker (pull_request) Successful in 1m36s
CI / coverage (pull_request) Successful in 10m58s
CI / status-check (pull_request) Successful in 5s
- Actor configuration in V3 is now obtained from the nested configuration parameter, according to the specification.
- Removed the legacy V2 fallback support and the tests affected by that removal. Mocked existing steps to allow remaining V2 features to be covered/tested.
- Fix add() to pass unsafe flag to add_v3() for proper unsafe actor handling
- Add _extract_nested_v3_config() to extract provider/model from nested
  actors.<name>.config block before v3 schema validation
- Remove v2 extraction test scenarios from consolidated_actor.feature
  that call removed _extract_v2_actor() and _extract_v2_options() methods
- Update test YAML in actor_registry_spec_yaml_steps.py to exercise nested type detection (no top-level type field)
- Add @tdd_issue_4300 regression test tag to existing spec-compliant
  actors map scenario

ISSUES CLOSED: #4300
2026-05-09 23:13:33 +01:00
HAL9000 5ee08ea946 fix(plan): remove TDD expected fail tag and fix format violations
CI / benchmark-regression (push) Has been skipped
CI / lint (push) Successful in 1m21s
CI / quality (push) Successful in 1m33s
CI / helm (push) Successful in 51s
CI / build (push) Successful in 1m12s
CI / push-validation (push) Successful in 50s
CI / security (push) Successful in 1m59s
CI / typecheck (push) Successful in 2m18s
CI / integration_tests (push) Successful in 4m51s
CI / e2e_tests (push) Successful in 5m1s
CI / unit_tests (push) Successful in 6m42s
CI / docker (push) Successful in 1m36s
CI / coverage (push) Successful in 13m8s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Successful in 1h25m1s
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Failing after 1m12s
CI / typecheck (pull_request) Successful in 1m36s
CI / docker (pull_request) Successful in 1m28s
CI / integration_tests (pull_request) Successful in 4m52s
CI / push-validation (pull_request) Successful in 20s
CI / quality (pull_request) Successful in 1m23s
CI / helm (pull_request) Successful in 36s
CI / build (pull_request) Successful in 58s
CI / lint (pull_request) Successful in 1m6s
CI / security (pull_request) Successful in 1m47s
CI / e2e_tests (pull_request) Successful in 4m21s
CI / unit_tests (pull_request) Successful in 5m51s
CI / coverage (pull_request) Successful in 12m1s
CI / status-check (pull_request) Successful in 4s
- Remove @tdd_expected_fail from Tree with json format scenario in
  plan_explain.feature (bug is now fixed by the envelope implementation)
- Update scenario assertions to verify new spec-required envelope format
  instead of old bare-array format
- Add step_tree_json_valid_envelope step definition in plan_explain_steps.py
- Fix ruff format violation in plan_explain_cli_coverage_steps.py

ISSUES CLOSED: #9163
2026-05-09 12:23:24 +00:00
HAL9000 6e1646d565 fix(plan): wrap plan tree JSON/YAML output in spec-required command envelope.\n\nISSUES CLOSED: #9163
# Conflicts:
#	CONTRIBUTORS.md
2026-05-09 12:23:24 +00:00
HAL9000 af6e54f0b2 fix(tests): reformat pr_compliance_pool_supervisor_steps.py and fix pre-existing lint errors
CI / benchmark-publish (push) Has started running
CI / benchmark-regression (push) Has been skipped
CI / push-validation (push) Successful in 45s
CI / helm (push) Successful in 54s
CI / build (push) Successful in 1m7s
CI / lint (push) Successful in 1m39s
CI / quality (push) Successful in 1m38s
CI / typecheck (push) Successful in 1m43s
CI / security (push) Successful in 2m12s
CI / integration_tests (push) Successful in 3m30s
CI / e2e_tests (push) Successful in 5m2s
CI / unit_tests (push) Successful in 5m30s
CI / docker (push) Successful in 1m38s
CI / coverage (push) Successful in 10m39s
CI / status-check (push) Successful in 3s
- ruff format: multiline AGENT_DEF_PATH assignment, compress all() comprehension,
  add blank line before decorator block — fixes CI / unit_tests lint failure
- ruff --fix: remove unused imports from tests/actor/test_registry_builtin_yaml.py
  (pre-existing F401 errors on master)

ISSUES CLOSED: #9824
2026-05-08 18:50:33 +00:00
HAL9000 addbc51dc4 fix(tests): fix lint violation UP035 and match feature file step text to Pool: prefixes
- B5 (lint): changed 'from typing import Any, Callable' to
  'from collections.abc import Callable' per ruff UP035 rule
- B7 (step mismatch): added 'Pool: ' prefix to all Then/And steps in
  pr_compliance_pool_supervisor.feature to match step definition decorators

ISSUES CLOSED: #9824
2026-05-08 18:50:33 +00:00
HAL9000 96670720f0 fix(tests): resolve Behave AmbiguousStep conflict in pool-supervisor steps
The pr_compliance_pool_supervisor_steps.py file defined @then step texts
identical to those in the pre-existing pr_compliance_checklist_steps.py,
causing Behave's ambiguous-step detection to reject the test run.

Fix: prefix all pool-supervisor @then decorators with 'Pool:' so they're
uniquely identifiable by Behave while reusing the same validator logic.
Also fix PROJECT_ROOT from parents[3] -> parents[2] for correct repo root
resolution in step files located at features/steps/.

ISSUES CLOSED: #9824
2026-05-08 18:50:33 +00:00
HAL9000 fbe6308200 feat(agents): add mandatory PR compliance checklist to implementation-pool-supervisor
Add a new implementation-pool-supervisor agent definition with an embedded
8-item PR Compliance Checklist. Workers dispatched by the pool supervisor
must complete all 8 items before creating any PR: CHANGELOG.md update,
CONTRIBUTORS.md update, commit footer (ISSUES CLOSED: #N), CI verification,
BDD tests, Epic reference, label application via forgejo-label-manager,
and milestone assignment. Includes concrete markdown examples for each
subsection and compliance verification pseudocode.

Also adds BDD test coverage (pr_compliance_pool_supervisor.feature + steps)
to verify the pool supervisor agent definition contains all 8 checklist items.

Parent Epic: #9779

ISSUES CLOSED: #9824
2026-05-08 18:50:33 +00:00
HAL9000 b588de18d6 fix(tui): rebase onto master and add CHANGELOG entry for prompt symbol fix (#6431)
Rebases the TUI prompt symbol fix onto the latest master, resolving
conflicts with the TextArea→Input refactor and the dollar-prefix shell
mode addition. Adds the missing CHANGELOG.md entry for #6431 and
removes the now-obsolete tui_prompt_textarea feature/steps that tested
the old TextArea-based implementation.

ISSUES CLOSED: #6431
2026-05-08 11:15:36 +00:00
HAL9000 a15b77f6a6 fix(acms): normalize context path matching for absolute paths in _path_matches
CI / benchmark-publish (pull_request) Has been skipped
CI / push-validation (pull_request) Successful in 50s
CI / helm (pull_request) Successful in 55s
CI / build (pull_request) Successful in 1m34s
CI / lint (pull_request) Successful in 1m55s
CI / typecheck (pull_request) Successful in 2m33s
CI / quality (pull_request) Successful in 2m35s
CI / benchmark-regression (pull_request) Failing after 2m38s
CI / security (pull_request) Successful in 2m50s
CI / integration_tests (pull_request) Successful in 5m21s
CI / e2e_tests (pull_request) Successful in 5m29s
CI / unit_tests (pull_request) Successful in 7m30s
CI / docker (pull_request) Successful in 1m33s
CI / coverage (pull_request) Successful in 11m41s
CI / docker (push) Blocked by required conditions
CI / status-check (push) Blocked by required conditions
CI / coverage (push) Blocked by required conditions
CI / benchmark-publish (push) Waiting to run
CI / benchmark-regression (push) Waiting to run
CI / unit_tests (push) Has started running
CI / integration_tests (push) Has started running
CI / e2e_tests (push) Has started running
CI / status-check (pull_request) Successful in 4s
CI / build (push) Successful in 1m2s
CI / lint (push) Successful in 1m10s
CI / push-validation (push) Successful in 33s
CI / helm (push) Successful in 44s
CI / quality (push) Successful in 1m30s
CI / security (push) Successful in 1m39s
CI / typecheck (push) Successful in 1m42s
Fixes issue #10972 where _path_matches() used PurePath.full_match()/match()
which requires the entire path to match. Since fragment metadata stores
absolute paths (e.g. /app/.opencode/skills/SKILL.md) while project context
--exclude-path/--include-path settings produce relative globs (.opencode/*,
docs/*), include/exclude filters were silently ineffective.

Added _matches_any() static helper in execute_phase_context_assembler.py that:
- Tries full_match(pattern) as-is for relative paths and anchored patterns
- Auto-prefixes relative patterns with **/ so they match absolute paths
Updated _matches_pattern() in context_phase_analysis.py with same logic plus
zero-depth compatibility shim.

Added 7 new BDD regression scenarios with @tdd_issue tags:
- 5 in execute_phase_context_assembler_coverage.feature (absolute path matching)
- 1 extra trailing ** glob exclusion test
- 1 in project_context_phase_analysis.feature (phase analysis exclusion)

ISSUES CLOSED: #10972
2026-05-08 09:57:18 +00:00
HAL9000 5b6224daa8 fix(plugins): prevent arbitrary code execution in PluginLoader.validate_protocol()
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 1m59s
CI / push-validation (pull_request) Successful in 36s
CI / build (pull_request) Successful in 1m5s
CI / helm (pull_request) Successful in 51s
CI / benchmark-regression (pull_request) Failing after 1m45s
CI / typecheck (pull_request) Successful in 2m23s
CI / quality (pull_request) Successful in 2m13s
CI / security (pull_request) Successful in 2m19s
CI / integration_tests (pull_request) Successful in 4m30s
CI / e2e_tests (pull_request) Successful in 4m42s
CI / unit_tests (pull_request) Successful in 5m54s
CI / docker (pull_request) Successful in 1m44s
CI / coverage (pull_request) Successful in 11m32s
CI / status-check (pull_request) Successful in 3s
CI / benchmark-publish (push) Has started running
CI / helm (push) Successful in 38s
CI / build (push) Successful in 1m6s
CI / push-validation (push) Successful in 24s
CI / lint (push) Successful in 1m16s
CI / quality (push) Successful in 1m29s
CI / typecheck (push) Successful in 1m41s
CI / security (push) Successful in 1m55s
CI / integration_tests (push) Successful in 3m54s
CI / benchmark-regression (push) Has been skipped
CI / unit_tests (push) Successful in 5m5s
CI / e2e_tests (push) Successful in 5m21s
CI / docker (push) Successful in 1m52s
CI / coverage (push) Successful in 15m41s
CI / status-check (push) Successful in 3s
- Add guard in TypeError fallback path: raise ProtocolMismatchError when
  issubclass raises TypeError and protocol has no inspectable members,
  preventing silent True return for unverifiable protocols
- Update test scenario descriptions to accurately reflect the new
  implementation (no instantiation occurs at any point)
- Update step definition comments to remove references to old
  instantiation-based code paths

ISSUES CLOSED: #7418
2026-05-08 09:32:29 +00:00
HAL9000 883ec872e2 fix(CI): resolve remaining lint/format violations in PR #8722
CI / lint (push) Successful in 1m54s
CI / build (push) Successful in 1m29s
CI / quality (push) Successful in 2m1s
CI / typecheck (push) Successful in 2m7s
CI / security (push) Successful in 2m20s
CI / helm (push) Successful in 29s
CI / integration_tests (push) Successful in 4m17s
CI / push-validation (push) Successful in 20s
CI / e2e_tests (push) Successful in 4m21s
CI / unit_tests (push) Successful in 5m42s
CI / benchmark-regression (push) Has been skipped
CI / docker (push) Successful in 2m1s
CI / coverage (push) Successful in 13m48s
CI / status-check (push) Successful in 4s
CI / benchmark-publish (push) Successful in 1h17m24s
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 51s
CI / helm (pull_request) Successful in 32s
CI / lint (pull_request) Successful in 1m4s
CI / typecheck (pull_request) Successful in 1m18s
CI / quality (pull_request) Successful in 1m19s
CI / security (pull_request) Successful in 1m25s
CI / push-validation (pull_request) Successful in 20s
CI / integration_tests (pull_request) Successful in 3m31s
CI / benchmark-regression (pull_request) Failing after 53s
CI / e2e_tests (pull_request) Successful in 5m13s
CI / unit_tests (pull_request) Successful in 6m43s
CI / coverage (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
CI / status-check (pull_request) Has been cancelled
- Apply ruff format to features/steps/strategize_decision_recording_steps.py:
  expanded single-line set literal to multi-line canonical form (PEP 87)
  This was the sole remaining CI lint blocker per review cycle 14.

- Remove unused imports from tests/actor/test_registry_builtin_yaml.py:
  removed 'Settings' and 'ProviderRegistry' to fix F401 errors.
  These were pre-existing violations caught by ruff check.

ISSUES CLOSED: #8522

Closes: #8722
2026-05-08 06:24:23 +00:00
HAL9000 e7fb7168b4 feat(decisions): implement decision recording hook in Strategize phase
Implement the StrategizeDecisionHook class for recording decisions during
the Strategize phase. The hook captures every decision point with question,
chosen_option, alternatives_considered, confidence_score, rationale, and
full context_snapshot (hot_context_hash, actor_state_ref, relevant_resources).

Supports four decision types: strategy_choice, resource_selection,
subplan_spawn, and invariant_enforced. Includes a DecisionRecorder protocol
port for decoupled persistence and capture_context_snapshot utility function.

Comprehensive BDD test suite with 40+ scenarios covering all decision types,
context snapshot validation, error handling, and tree structure tracking.

ISSUES CLOSED: #8522
2026-05-08 06:24:23 +00:00
HAL9000 241c2602b0 fix(quality-gates): resolve ruff formatting and missing type annotations
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 1m1s
CI / helm (pull_request) Successful in 36s
CI / typecheck (pull_request) Successful in 1m11s
CI / push-validation (pull_request) Successful in 34s
CI / build (pull_request) Successful in 53s
CI / security (pull_request) Successful in 1m17s
CI / quality (pull_request) Successful in 1m23s
CI / benchmark-regression (pull_request) Failing after 1m14s
CI / integration_tests (pull_request) Successful in 5m14s
CI / e2e_tests (pull_request) Successful in 5m22s
CI / unit_tests (pull_request) Successful in 9m0s
CI / docker (pull_request) Successful in 1m51s
CI / coverage (pull_request) Successful in 11m11s
CI / status-check (push) Blocked by required conditions
CI / benchmark-publish (push) Has started running
CI / benchmark-regression (push) Has been skipped
CI / status-check (pull_request) Successful in 4s
CI / lint (push) Successful in 1m17s
CI / push-validation (push) Successful in 35s
CI / build (push) Successful in 54s
CI / quality (push) Successful in 1m29s
CI / helm (push) Successful in 47s
CI / security (push) Successful in 1m33s
CI / typecheck (push) Successful in 1m38s
CI / integration_tests (push) Successful in 4m25s
CI / e2e_tests (push) Failing after 5m25s
CI / unit_tests (push) Successful in 7m18s
CI / coverage (push) Has started running
CI / docker (push) Has started running
Fix two lint blockers identified in PR review:

1. Collapsible list comprehension format (ruff RUF015): Collapse the
   "projects" list comprehension in _build_strategize_context_snapshot()
   from 3 lines to a single line within the 88-character limit.

2. Missing type annotations on 13 new BDD step functions: All existing
   step functions use explicit `context: Context` and `-> None` return
   type annotations per project style. The 13 new step functions added
   for issue #9056 were missing these declarations, causing lint
   warning RUF012 (missing type annotations on function arguments).

Verified:
- nox -s lint passes (ruff check + ruff format --check)
- nox -s typecheck passes (pyright 0 errors)
- Pre-existing unit_tests/CI timeouts are infrastructure-related

ISSUES CLOSED: #9056
2026-05-08 05:14:03 +00:00
HAL9000 8ed8c25652 fix(plan-lifecycle): record full context snapshots in Strategize phase
The Strategize phase was recording decisions with minimal context
snapshots (only a hash of question+chosen_option), violating the
v3.2.0 acceptance criterion that decisions must include full context
snapshots sufficient to replay the decision.

Changes:
- Add _build_strategize_context_snapshot() helper that builds a full
  ContextSnapshot from plan metadata (description, action_name,
  strategy_actor, project_links)
- Update _try_record_decision() to accept an optional context_snapshot
  parameter and forward it to DecisionService
- Update start_strategize() to build and pass a full context snapshot
- Add 3 BDD scenarios in decision_recording.feature verifying that
  hot_context_hash, hot_context_ref, actor_state_ref, and
  relevant_resources are all populated for Strategize-phase decisions

ISSUES CLOSED: #9056
2026-05-08 05:11:47 +00:00
HAL9000 0ce2e14f2d style: fix ruff format violations in devcontainer_autodiscovery_wiring_steps.py
CI / status-check (push) Blocked by required conditions
CI / benchmark-regression (push) Has been skipped
CI / helm (push) Successful in 45s
CI / push-validation (push) Successful in 43s
CI / quality (push) Successful in 1m29s
CI / build (push) Successful in 1m7s
CI / lint (push) Successful in 1m39s
CI / typecheck (push) Successful in 1m54s
CI / security (push) Successful in 1m55s
CI / e2e_tests (push) Successful in 4m48s
CI / unit_tests (push) Successful in 5m45s
CI / integration_tests (push) Successful in 6m13s
CI / docker (push) Successful in 1m32s
CI / coverage (push) Failing after 19m57s
CI / benchmark-publish (push) Successful in 1h18m32s
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 56s
CI / quality (pull_request) Successful in 1m14s
CI / typecheck (pull_request) Successful in 1m24s
CI / security (pull_request) Successful in 1m25s
CI / helm (pull_request) Successful in 38s
CI / push-validation (pull_request) Successful in 38s
CI / build (pull_request) Successful in 1m6s
CI / benchmark-regression (pull_request) Failing after 1m36s
CI / unit_tests (pull_request) Successful in 4m51s
CI / integration_tests (pull_request) Successful in 4m15s
CI / e2e_tests (pull_request) Failing after 4m35s
CI / coverage (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
CI / status-check (pull_request) Has been cancelled
Apply ruff auto-format to resolve CI lint failure: long lines in subprocess.run() calls and list comprehensions were not wrapped to the project's line-length limit.
2026-05-07 23:49:20 +00:00