Commit Graph

2730 Commits

Author SHA1 Message Date
HAL9000 b71e74e0ce fix(cli,sandbox,tests): remove duplicate method definitions and scope-creep tests
CI / build (pull_request) Successful in 28s
CI / helm (pull_request) Successful in 29s
CI / lint (pull_request) Successful in 38s
CI / quality (pull_request) Successful in 48s
CI / push-validation (pull_request) Successful in 35s
CI / typecheck (pull_request) Successful in 1m5s
CI / security (pull_request) Successful in 1m14s
CI / unit_tests (pull_request) Failing after 4m54s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / integration_tests (pull_request) Successful in 8m10s
CI / status-check (pull_request) Failing after 3s
The post-conflict-resolution merge left several methods defined twice on
the same class (F811/reportRedeclaration), where Python silently kept
the LAST definition and the failing CI runs were the visible symptom:

- PlanApplyService.correction_diff at line 1064 overrode the correct
  unit-of-work-validating implementation at line 548. The duplicate
  was a broken fallback that did not raise on missing corrections, so
  the canonical robot tests in robot/plan_correction_diff.robot failed
  all 6 scenarios.
- GitWorktreeSandbox.cleanup_stale and diff_against_head were defined
  twice each; the earlier copies are removed (the later copies use the
  more defensive _sanitise_branch_name path and are what was being
  invoked in practice).
- features/steps/agent_evolution_label_milestone_steps.py declared the
  step "it MUST mention milestone assignment" twice, raising
  AmbiguousStep at collection time and erroring all 31 features in the
  Behave unit suite. The two definitions are consolidated into a
  single context-tracking step; the prior label-assertion step records
  which section is in focus.
- plan.py called ActorRegistry.ensure_built_in_actors(), which does not
  exist on the class (reportAttributeAccessIssue); the call sat inside
  a suppress(Exception) block and was a silent no-op, so removing it
  preserves runtime behavior while resolving the pyright error.
- Lint-only: drop the stray f prefix from a non-interpolating raw
  string regex in agent_evolution_label_milestone_steps.py (F541).

The dead scope-creep tests that exercised the deleted code paths are
removed:

- features/plan_apply_correction_diff.feature and its step file: tests
  for the deleted PlanApplyService.correction_diff fallback. The
  canonical features/plan_correction_diff.feature (already on master)
  continues to cover correction_diff comprehensively against the
  unit-of-work-aware implementation.
- features/agent_evolution_label_milestone_compliance.feature and its
  step file: tests that asserted the existence and contents of
  .opencode/agents/agent-evolution-{worker,pool-supervisor}.md, files
  that do not exist anywhere in the worktree (or on master) and are
  not introduced by this PR.
- 2 Correction Diff scenarios in
  robot/git_worktree_class_methods.robot plus their helpers: tests for
  the deleted fallback impl.

ISSUES CLOSED: #8628
2026-06-02 06:57:24 -04:00
HAL9000 4bd87f3f09 fix(cli): replace private _commit_plan calls with public save_plan API (PR #8661)
Resolve the SOLID principle violation where CLI layer accessed private
_lifecycle._commit_plan() method directly, breaking encapsulation. All
four CLI call sites and two PlanService call sites now use the public
save_plan() method which is designed as the intended persistence interface.

ISSUES CLOSED: #8628
2026-06-02 06:57:24 -04:00
HAL9000 a5c1b2dda4 fix(cli): resolve typecheck failures and add missing infrastructure methods
Add GitWorktreeSandbox.cleanup_stale() and diff_against_head() class
methods, create strategy_actor module with resolve_strategy_actor(),
add PlanApplyService.correction_diff() method, and fix _get_apply_service()
and _get_plan_executor() to use correct API signatures.

Add Behave BDD unit tests and Robot Framework integration tests for all
new functionality.

ISSUES CLOSED: #8628
2026-06-02 06:57:24 -04:00
HAL9000 7cd81a898c fix(cli): revert plan start and plan show aliases that contradict v3 spec
Revert the 'agents plan start' and 'agents plan show' command aliases
because the v3 specification mandates 'agents plan use' and 'agents plan
status'. The spec explicitly states that the 'use' verb is the command
that transitions a plan from the Action phase into Strategize, and there
are 86 occurrences of 'plan use' in docs/specification.md with zero for
'plan start'.

The aliases diverged from the authoritative specification rather than
aligning with it, creating competing API surfaces.

ISSUES CLOSED: #8628
2026-06-02 06:57:24 -04:00
HAL9000 a7cbc776b2 fix(cli): add agents plan start alias or update spec to reflect v3 plan use/execute commands
- Added 'agents plan start' as an alias for 'agents plan use' to match v3 spec
- Added 'agents plan show' as an alias for 'agents plan status' to match v3 spec
- Both commands delegate to their canonical counterparts with full feature parity
- Updated module docstring to document the new aliases
- Added BDD tests for both new commands with comprehensive scenarios
- Updated CHANGELOG.md with the new feature entry
2026-06-02 06:57:24 -04:00
HAL9000 0117c31bf1 Merge pull request 'fix(engine_cache): guard MEMORY_ENGINES with lock to prevent TOCTOU race' (#8265) from fix/7566-engine-cache-toctou-race into master
CI / push-validation (push) Successful in 19s
CI / helm (push) Successful in 28s
CI / lint (push) Successful in 33s
CI / build (push) Successful in 37s
CI / quality (push) Successful in 44s
CI / typecheck (push) Successful in 56s
CI / e2e_tests (push) Successful in 1m4s
CI / security (push) Successful in 1m11s
CI / benchmark-regression (push) Failing after 40s
CI / unit_tests (push) Successful in 4m34s
CI / docker (push) Successful in 1m51s
CI / integration_tests (push) Successful in 7m59s
CI / coverage (push) Successful in 8m11s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Has been cancelled
2026-06-02 10:41:25 +00:00
HAL9000 9ae4e6c36e fix(tests): remove type: ignore and fix ruff format in toctou step file
CI / push-validation (pull_request) Successful in 22s
CI / build (pull_request) Successful in 29s
CI / lint (pull_request) Successful in 40s
CI / helm (pull_request) Successful in 40s
CI / quality (pull_request) Successful in 43s
CI / typecheck (pull_request) Successful in 1m13s
CI / security (pull_request) Successful in 1m20s
CI / unit_tests (pull_request) Successful in 5m31s
CI / integration_tests (pull_request) Successful in 8m17s
CI / docker (pull_request) Successful in 2m28s
CI / coverage (pull_request) Successful in 8m3s
CI / status-check (pull_request) Successful in 2s
Replace five # type: ignore comments with setattr() calls (for module
attribute monkey-patching) and an Any return type (for _get_memory_engines),
eliminating all type suppressions per project zero-tolerance policy.

Fix ruff format violations: collapse @when decorator to one line, reformat
raise...from split, and reformat assert message wrapping.

ISSUES CLOSED: #7566
2026-06-02 05:51:55 -04:00
HAL9000 d54ed1440c fix(engine_cache): guard MEMORY_ENGINES with lock to prevent TOCTOU race
Add MEMORY_ENGINES_LOCK to engine_cache.py and wrap the check-and-set
in UnitOfWork.engine with it to prevent concurrent threads from creating
duplicate in-memory SQLite engines. Also fix cache-hit bug where
self._engine was never assigned on a cache hit.

Closes #7566
2026-06-02 05:51:55 -04:00
HAL9000 c903dd8070 Merge pull request 'fix(plan-lifecycle): gate Apply phase on Definition-of-Done evaluation' (#8299) from fix/7927-apply-phase-dod-gating into master
CI / push-validation (push) Successful in 18s
CI / lint (push) Successful in 33s
CI / helm (push) Successful in 32s
CI / quality (push) Successful in 45s
CI / build (push) Successful in 47s
CI / typecheck (push) Successful in 1m14s
CI / security (push) Successful in 1m24s
CI / e2e_tests (push) Successful in 58s
CI / benchmark-regression (push) Failing after 38s
CI / unit_tests (push) Successful in 6m45s
CI / integration_tests (push) Successful in 9m10s
CI / docker (push) Successful in 1m38s
CI / coverage (push) Successful in 10m33s
CI / status-check (push) Successful in 2s
CI / benchmark-publish (push) Has been cancelled
2026-06-02 09:30:13 +00:00
HAL9000 37ce45c3bd fix(plan-lifecycle): correct _commit_plan typo to commit_plan in _evaluate_dod
CI / push-validation (pull_request) Successful in 23s
CI / helm (pull_request) Successful in 33s
CI / build (pull_request) Successful in 43s
CI / lint (pull_request) Successful in 56s
CI / quality (pull_request) Successful in 58s
CI / typecheck (pull_request) Successful in 1m8s
CI / security (pull_request) Successful in 1m17s
CI / unit_tests (pull_request) Successful in 6m37s
CI / docker (pull_request) Successful in 1m28s
CI / integration_tests (pull_request) Successful in 9m40s
CI / coverage (pull_request) Successful in 8m22s
CI / status-check (pull_request) Successful in 4s
`_evaluate_dod` called `self._commit_plan(plan)` which does not exist,
causing an AttributeError at runtime for any plan with DoD criteria and
a Pyright error during typecheck. The correct public method is
`self.commit_plan(plan)` (defined at line 792), which persists the
updated plan when a UnitOfWork is wired and is a no-op in in-memory
mode — matching the pattern used in `apply_plan` and `execute_plan`.

ISSUES CLOSED: #7927
2026-06-02 05:14:43 -04:00
HAL9000 419775b0d1 fix(plan-lifecycle): correct DoD gating test assertions
The test scenario 'validation_summary is populated after DoD evaluation'
was expecting 'total' and 'required_passed' keys which are not added by
the DoD evaluation. These keys are only present when the plan goes through
the Execute phase validation gate. The DoD evaluation only adds
'dod_evaluated', 'dod_all_passed', and 'dod' keys.

Updated the test to check for the 'dod' key instead, which correctly
reflects the structure of the validation_summary after DoD evaluation.

ISSUES CLOSED: #7927
2026-06-02 05:14:43 -04:00
HAL9000 de1fd49594 fix(plan-lifecycle): fix integration test regressions from DoD gating
Update integration test helpers to use definition_of_done values that
satisfy the new TextMatchEvaluator gate (criterion text must appear as
a substring of a plan argument key or value).  Also fix _evaluate_dod
to merge DoD metadata into plan.validation_summary without overwriting
Execute-phase validation counts, preserving the coverage/tool-validation
gate used by apply_with_validation_gate.  Update CONTRIBUTORS.md.

Fixes: wf02, wf04, wf06, wf07 integration test suites.

ISSUES CLOSED: #7927
2026-06-02 05:14:43 -04:00
HAL9000 0dcf7bf152 fix(plan-lifecycle): gate Apply phase on Definition-of-Done evaluation
Before transitioning to the Apply phase, PlanLifecycleService.apply_plan
now evaluates the plan's definition_of_done criteria using DoDEvaluator
(TextMatchEvaluator). If any required criteria fail, a DoDGatingError is
raised and the plan remains in Execute/COMPLETE state. The evaluation
result is stored in plan.validation_summary with dod_evaluated=True and
dod_all_passed reflecting the outcome. Plans with no DoD text skip
evaluation and proceed normally.

Adds DoDGatingError exception class and _evaluate_dod() helper method.
Adds BDD feature file and step definitions for DoD gating scenarios.

ISSUES CLOSED: #7927
2026-06-02 05:14:43 -04:00
HAL9000 c86539b033 Merge pull request 'fix(actor): move namespace filter inside lock in ActorLoader.list_actors' (#8660) from fix/actor-loader-list-actors-race-condition into master
CI / push-validation (push) Successful in 21s
CI / helm (push) Successful in 28s
CI / lint (push) Successful in 34s
CI / build (push) Successful in 32s
CI / quality (push) Successful in 57s
CI / typecheck (push) Successful in 59s
CI / security (push) Successful in 1m15s
CI / e2e_tests (push) Successful in 55s
CI / benchmark-regression (push) Failing after 40s
CI / unit_tests (push) Successful in 4m36s
CI / docker (push) Successful in 1m29s
CI / integration_tests (push) Successful in 9m16s
CI / coverage (push) Successful in 10m26s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Has been cancelled
2026-06-02 09:12:02 +00:00
HAL9000 3426720b1e style: apply ruff format to actor_loading_steps.py
CI / build (pull_request) Successful in 34s
CI / helm (pull_request) Successful in 36s
CI / lint (pull_request) Successful in 39s
CI / push-validation (pull_request) Successful in 26s
CI / quality (pull_request) Successful in 47s
CI / typecheck (pull_request) Successful in 56s
CI / security (pull_request) Successful in 1m12s
CI / unit_tests (pull_request) Successful in 7m45s
CI / integration_tests (pull_request) Successful in 8m3s
CI / docker (pull_request) Successful in 1m42s
CI / coverage (pull_request) Successful in 8m26s
CI / status-check (pull_request) Successful in 3s
Wrap long cast() call on line 455 to satisfy ruff line-length=88.

ISSUES CLOSED: #8588
2026-06-02 04:52:51 -04:00
HAL9001 a93ad552b9 fix(lint): reorder imports per PEP 8 ruff/isort rule in actor_loading_steps.py
The typing.cast import was placed after third-party imports (behave),
violating ruff/isort PEP 8 ordering enforced by CI lint. Move it into
the stdlib block before the blank-line separator from third-party.

Fixes CI / lint failure on this branch. Closes #8588
2026-06-02 04:52:51 -04:00
pr-merge-worker 12d8e03708 fix(actor): move namespace filter inside lock in ActorLoader.list_actors
ISSUES CLOSED: #8588

Replace type: ignore suppressions with cast() + getattr() per review feedback.
2026-06-02 04:52:51 -04:00
HAL9000 f7901c404f fix(actor): move namespace filter inside lock in ActorLoader.list_actors
Fixes a race condition (TOCTOU) in ActorLoader.list_actors() where the namespace
filter was applied outside the threading lock, creating a window for concurrent
dictionary modifications. Moving the filter inside the with self._lock: block
ensures atomic reads and filtering.

- Move namespace filtering inside the RLock in list_actors()
- Add concurrency BDD test (threading.Barrier) for list_actors + clear race condition
- Update CHANGELOG.md with fix entry (closes #8588)
- Update CONTRIBUTORS.md with contribution details

ISSUES CLOSED: #8588
2026-06-02 04:52:51 -04:00
HAL9000 fc07583aee Merge pull request 'Fix stdout restoration for concurrent validation pipelines' (#7811) from fix/issue-7623-validation-pipeline-stdout into master
CI / push-validation (push) Successful in 22s
CI / lint (push) Successful in 31s
CI / helm (push) Successful in 37s
CI / build (push) Successful in 41s
CI / quality (push) Successful in 46s
CI / typecheck (push) Successful in 1m8s
CI / security (push) Successful in 1m8s
CI / e2e_tests (push) Successful in 1m14s
CI / benchmark-regression (push) Failing after 36s
CI / unit_tests (push) Successful in 4m28s
CI / docker (push) Successful in 1m44s
CI / integration_tests (push) Successful in 8m16s
CI / coverage (push) Successful in 8m19s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Has been cancelled
2026-06-02 08:46:52 +00:00
HAL9000 29a3e70c36 fix(concurrency): add @tdd_issue tag and fix ruff formatting
CI / lint (pull_request) Successful in 38s
CI / helm (pull_request) Successful in 27s
CI / build (pull_request) Successful in 29s
CI / quality (pull_request) Successful in 53s
CI / typecheck (pull_request) Successful in 1m0s
CI / push-validation (pull_request) Successful in 33s
CI / security (pull_request) Successful in 1m5s
CI / integration_tests (pull_request) Successful in 8m13s
CI / unit_tests (pull_request) Successful in 8m16s
CI / docker (pull_request) Successful in 1m31s
CI / coverage (pull_request) Successful in 7m44s
CI / status-check (pull_request) Successful in 4s
- Add missing @tdd_issue companion tag to @tdd_issue_7623 scenario;
  before_scenario hook raised ValueError causing hook_error on every run
- Apply ruff format to validation_pipeline.py and
  validation_pipeline_concurrency_steps.py (2 files reformatted)
- Add use_step_matcher("parse") reset at end of concurrency steps
  to match convention in validation_pipeline_steps.py

ISSUES CLOSED: #7623
2026-06-02 04:29:20 -04:00
HAL9000 bd955696f9 fix(pr-7811 review): resolve remaining CI and code style blockers
Address all 4 remaining blocking issues from PR #7811 review:

- Delete duplicate _validation_pipeline_mock.py in features/steps/
  (the inline MockValidationExecutor is kept where it belongs)
- Replace # type: ignore[return-value] with cast(dict[str, Any], ...)
  to satisfy the zero-type-suppressions policy for test additions
- Add @tdd_issue_7623 regression tag on concurrency scenario
- Remove unreachable dead-code RuntimeError guard in
  _install_thread_local_streams() (constructors never return None)

All CI lint checks now pass. Source files remain within line limits.
2026-06-02 04:29:20 -04:00
HAL9000 9f7d50e512 fix(validation-pipeline): restore inline MockValidationExecutor to fix unit test crash
The relative import from ._validation_pipeline_mock causes behave-parallel's
module loader to create globals without '__name__', raising a KeyError during
load_step_modules(). Restoring the inline definition resolves the crash.

Closes #7811
2026-06-02 04:29:20 -04:00
HAL9000 2609787d35 fix(concurrency): fix ValidationPipeline.run() sys.stdout replacement #7623
Introduce a reference-counted shared stream wrapper manager so concurrent
ValidationPipeline.run() calls correctly restore the true sys.stdout/stderr
after all pipelines finish.

- Add _install_thread_local_streams() / _release_thread_local_streams()
  protected by threading.Lock; first caller saves originals and installs
  wrappers, last caller restores them
- Remove io.TextIOBase inheritance from _ThreadLocalStream to avoid Python
  3.13 read-only slot conflict; use cast(TextIO, ...) at assignment sites
- encoding property returns str | None matching io.TextIOBase signature
- Replace assert guards with explicit RuntimeError fail-fast checks
- Add Behave scenario: Concurrent pipelines restore global streams after
  execution
- Split validation_pipeline_steps.py (547→428 lines) by extracting
  MockValidationExecutor to _validation_pipeline_mock.py and edge-case
  steps to validation_pipeline_edge_steps.py
- Update CHANGELOG.md and CONTRIBUTORS.md

ISSUES CLOSED: #7623
2026-06-02 04:29:20 -04:00
HAL9000 23ffc8f068 Merge pull request 'docs(specification): add deleted_at field to agents project delete JSON/YAML output' (#8192) from spec/add-deleted-at-field-to-project-delete into master
CI / push-validation (push) Successful in 20s
CI / helm (push) Successful in 27s
CI / build (push) Successful in 30s
CI / lint (push) Successful in 33s
CI / typecheck (push) Successful in 53s
CI / quality (push) Successful in 53s
CI / security (push) Successful in 1m8s
CI / e2e_tests (push) Successful in 1m4s
CI / benchmark-regression (push) Failing after 36s
CI / unit_tests (push) Successful in 4m47s
CI / docker (push) Successful in 1m26s
CI / integration_tests (push) Successful in 8m12s
CI / coverage (push) Successful in 8m47s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Has been cancelled
2026-06-02 08:26:33 +00:00
HAL9000 8ebd922e77 docs(specification): add deleted_at field to agents project delete JSON/YAML output
CI / lint (pull_request) Successful in 35s
CI / helm (pull_request) Successful in 21s
CI / build (pull_request) Successful in 45s
CI / push-validation (pull_request) Successful in 31s
CI / quality (pull_request) Successful in 52s
CI / typecheck (pull_request) Successful in 1m3s
CI / security (pull_request) Successful in 1m15s
CI / unit_tests (pull_request) Successful in 4m23s
CI / docker (pull_request) Successful in 2m0s
CI / integration_tests (pull_request) Successful in 7m57s
CI / coverage (pull_request) Successful in 12m1s
CI / status-check (pull_request) Successful in 3s
Updated docs/specification.md to document the correct JSON/YAML output structure
for the project delete command, replacing the legacy deletion_summary object with
the deleted, success, and deleted_at fields that match the actual implementation
introduced in PR #6639. Added BDD feature file and step definitions to validate
the output format.

ISSUES CLOSED: #7872
2026-06-02 04:09:01 -04:00
HAL9000 9df5db50f3 Merge pull request 'fix(alembic): handle fileConfig parsing errors with user-friendly diagnostic' (#8288) from bugfix/m3-error-handling-fileconfig-unhandled-exception into master
CI / lint (push) Successful in 49s
CI / build (push) Successful in 48s
CI / quality (push) Successful in 51s
CI / push-validation (push) Successful in 35s
CI / helm (push) Successful in 38s
CI / typecheck (push) Successful in 1m12s
CI / security (push) Successful in 1m12s
CI / e2e_tests (push) Successful in 1m7s
CI / benchmark-regression (push) Failing after 37s
CI / unit_tests (push) Successful in 6m42s
CI / docker (push) Successful in 1m37s
CI / integration_tests (push) Successful in 10m40s
CI / coverage (push) Successful in 11m7s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Has been cancelled
2026-06-02 07:57:26 +00:00
HAL9000 6aba1c37b8 fix(tests): resolve lint errors and step logic in tdd_fileconfig steps
CI / lint (pull_request) Successful in 1m0s
CI / quality (pull_request) Successful in 51s
CI / security (pull_request) Successful in 1m25s
CI / typecheck (pull_request) Successful in 1m47s
CI / push-validation (pull_request) Successful in 38s
CI / helm (pull_request) Successful in 40s
CI / build (pull_request) Successful in 47s
CI / unit_tests (pull_request) Successful in 6m24s
CI / docker (pull_request) Successful in 1m30s
CI / integration_tests (pull_request) Successful in 8m57s
CI / coverage (pull_request) Successful in 7m46s
CI / status-check (pull_request) Successful in 3s
- Add `from typing import Any` to fix F821 undefined name errors
- Remove spurious `# noqa: TID251` and `# noqa: C901` directives (RUF100)
- Use `_MIGRATIONS_DIR` absolute path in alembic.ini writer functions so
  `alembic current` actually loads the project env.py and exercises the
  fileConfig() error-handling path
- Add `CLEVERAGENTS_DATABASE_URL` to subprocess env for valid-config scenario
- Add `assert result.returncode != 0` check in stderr guidance step
- Apply ruff format (merged adjacent decorator string literals)

ISSUES CLOSED: #7874
2026-06-02 03:39:50 -04:00
HAL9000 68fd040e31 chore(steps): improve fileConfig error handling step readability (issue #7874)
Minor improvements to feature descriptions and docstrings for clarity.
No behavioral changes - all scenarios produce the same assertions.
2026-06-02 03:39:50 -04:00
HAL9000 7859a6c05b fix(alembic): handle fileConfig parsing errors with user-friendly diagnostic (#7874)
Wrapped the `fileConfig()` call in `src/cleveragents/infrastructure/database/migrations/env.py`
with a `try/except` block that catches malformed INI logging configuration and emits
a clear, user-actionable error message to stderr before exiting with code 1.

Includes:
- Error handling guard around fileConfig() in env.py (fileConfig can raise
  configparser.Error, KeyError, ValueError on malformed logging config)
- BDD/Behave feature file with 4 scenarios under `features/`
- Step definitions in `features/steps/` for isolated test coverage
- CHANGELOG.md entry under [Unreleased] Fixed section
- CONTRIBUTORS.md update for HAL 9000

ISSUES CLOSED: #7874

Signed-off-by: CleverThis <hal9000@cleverthis.com>
2026-06-02 03:39:50 -04:00
HAL9000 9a10cf31c6 Merge pull request 'feat: implement automation profile precedence chain plan action global' (#8289) from feat/automation-profile-precedence-chain into master
CI / push-validation (push) Successful in 19s
CI / build (push) Successful in 26s
CI / lint (push) Successful in 39s
CI / helm (push) Successful in 32s
CI / quality (push) Successful in 1m16s
CI / security (push) Successful in 1m22s
CI / benchmark-regression (push) Failing after 37s
CI / unit_tests (push) Successful in 6m2s
CI / integration_tests (push) Successful in 9m39s
CI / e2e_tests (push) Failing after 14m3s
CI / typecheck (push) Failing after 14m11s
CI / coverage (push) Has been cancelled
CI / docker (push) Has been cancelled
CI / status-check (push) Has been cancelled
CI / benchmark-publish (push) Has been cancelled
2026-06-02 06:19:03 +00:00
HAL9000 3577bf95ba feat: implement automation profile precedence chain plan action global
CI / lint (pull_request) Successful in 56s
CI / quality (pull_request) Successful in 55s
CI / typecheck (pull_request) Successful in 1m2s
CI / security (pull_request) Successful in 1m11s
CI / helm (pull_request) Successful in 31s
CI / build (pull_request) Successful in 33s
CI / push-validation (pull_request) Successful in 29s
CI / unit_tests (pull_request) Successful in 6m49s
CI / docker (pull_request) Successful in 1m32s
CI / integration_tests (pull_request) Successful in 9m20s
CI / coverage (pull_request) Successful in 8m1s
CI / status-check (pull_request) Successful in 5s
Implementation of the four-level automation profile precedence chain
(plan > action > project > global) as defined in the v3.5.0 specification.

Core implementation (src/):
  - PrecedenceSource StrEnum with PLAN, ACTION, PROJECT, GLOBAL levels
  - PrecedenceResolution frozen dataclass capturing full resolution state
  - resolve_precedence_chain() with plan > action > project > global logic
  - _resolve_global_profile() with explicit > env var > default fallback
  - Comprehensive debug logging for observability

BDD tests (features/):
  - automation_profile_precedence_chain.feature: 30 scenarios covering all
    16 combinations of plan/action/project/global configurations plus edge
    cases, logging verification, enum values, env var override, and custom registry
  - step definitions with proper log handler cleanup via context._cleanup_handlers

CI compliance fixes (bd8b6748):
  - ruff format applied to step definitions (fixes CI lint gate)
  - CHANGELOG.md updated with accurate 4-level chain description
  - test_reports/ artifacts removed; directory added to .gitignore
  - tdd_a2a_sdk_dependency.feature reverted to use correct Client import

ISSUES CLOSED: #8234
2026-06-02 01:25:33 -04:00
HAL9000 9ddbe095d0 Merge pull request 'fix: update pr-review-pool-supervisor tracking prefix from AUTO-REV-POOL to AUTO-REV-SUP' (#8183) from fix/auto-rev-sup-tracking-prefix into master
CI / push-validation (push) Successful in 21s
CI / helm (push) Successful in 50s
CI / build (push) Successful in 51s
CI / quality (push) Successful in 59s
CI / lint (push) Successful in 1m0s
CI / typecheck (push) Successful in 1m11s
CI / security (push) Successful in 1m11s
CI / e2e_tests (push) Successful in 1m27s
CI / benchmark-regression (push) Failing after 39s
CI / unit_tests (push) Successful in 5m49s
CI / docker (push) Successful in 1m31s
CI / integration_tests (push) Successful in 9m38s
CI / coverage (push) Successful in 10m51s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Has been cancelled
2026-06-02 05:15:57 +00:00
HAL9000 9854b2c7cc chore: add CHANGELOG.md and CONTRIBUTORS.md entries for tracking prefix fix (#7891)
CI / push-validation (pull_request) Successful in 20s
CI / lint (pull_request) Successful in 35s
CI / build (pull_request) Successful in 33s
CI / helm (pull_request) Successful in 40s
CI / typecheck (pull_request) Successful in 59s
CI / quality (pull_request) Successful in 59s
CI / security (pull_request) Successful in 1m18s
CI / unit_tests (pull_request) Successful in 6m33s
CI / docker (pull_request) Successful in 1m30s
CI / integration_tests (pull_request) Successful in 10m3s
CI / coverage (pull_request) Successful in 9m18s
CI / status-check (pull_request) Successful in 3s
Added missing CHANGELOG.md entry under [Unreleased] > Fixed section documenting
the AUTO-REV-POOL to AUTO-REV-SUP tracking prefix alignment for the
pr-review-pool-supervisor agent.

Added CONTRIBUTORS.md entry crediting HAL 9000 for the tracking prefix
documentation fix (#7891).

ISSUES CLOSED: #7891
2026-06-02 00:58:16 -04:00
HAL9000 f7ce8f0093 fix: update pr-review-pool-supervisor tracking prefix from AUTO-REV-POOL to AUTO-REV-SUP
- Updated pr-review-pool-supervisor.md tracking prefix from AUTO-REV-POOL to AUTO-REV-SUP
- Updated automation-tracking.md table and search query to use AUTO-REV-SUP
- Updated agent-system-specification.md all references from AUTO-REV-POOL to AUTO-REV-SUP
- Aligns documentation with actual production tracking prefix

ISSUES CLOSED: #7891
2026-06-02 00:58:16 -04:00
HAL9000 36382e6e4f Merge pull request 'feat(tui): implement escape cascade key behavior' (#6684) from feat/issue-6450-tui-escape-cascade into master
CI / benchmark-regression (push) Failing after 29s
CI / lint (push) Successful in 37s
CI / helm (push) Successful in 37s
CI / push-validation (push) Successful in 31s
CI / quality (push) Successful in 50s
CI / typecheck (push) Successful in 57s
CI / build (push) Successful in 56s
CI / security (push) Successful in 1m17s
CI / e2e_tests (push) Successful in 1m0s
CI / unit_tests (push) Successful in 5m58s
CI / benchmark-publish (push) Has started running
CI / docker (push) Successful in 1m51s
CI / integration_tests (push) Successful in 10m4s
CI / coverage (push) Successful in 9m50s
CI / status-check (push) Successful in 2s
2026-06-02 04:55:41 +00:00
controller-ci-rerun 0805563003 chore: re-trigger CI [controller]
CI / helm (pull_request) Successful in 34s
CI / build (pull_request) Successful in 36s
CI / lint (pull_request) Successful in 42s
CI / push-validation (pull_request) Successful in 34s
CI / quality (pull_request) Successful in 1m11s
CI / typecheck (pull_request) Successful in 1m21s
CI / security (pull_request) Successful in 1m22s
CI / unit_tests (pull_request) Successful in 7m3s
CI / integration_tests (pull_request) Successful in 9m36s
CI / docker (pull_request) Successful in 2m35s
CI / coverage (pull_request) Successful in 8m23s
CI / status-check (pull_request) Successful in 5s
2026-06-02 00:38:09 -04:00
HAL9000 b14ac0151e fix(tui): use non-empty query in real-specs overlay step
The step "I initialise the overlay with real slash command specs"
was calling set_commands("", ...) which triggers the hide-on-empty-query
early return, leaving _text empty and failing all four assertions in
the "Overlay uses real slash_command_specs from catalog" scenario.

Use query "se" instead: all session:* entries (9) plus settings (1)
start with "se", giving 10 matches within the 12-entry display cap,
so both "  /session:create" / "Create a new session tab" and
"  /settings" / "Open settings" appear in the rendered overlay.

ISSUES CLOSED: #6450
2026-06-02 00:38:09 -04:00
HAL9000 1451882f42 fix(tui): remove obsolete TDD regression test for overlay descriptions
The test at line 35-39 was checking that descriptions are NOT shown in the
slash overlay, which was the old behavior before implementing ADR-046. Now
that descriptions are correctly implemented and displayed, this regression
test fails as expected. Remove it since the feature is complete.

Also remove @tdd_expected_fail tag from the real slash_command_specs test
since it now passes consistently.

ISSUES CLOSED: #6450
2026-06-02 00:38:09 -04:00
HAL9000 729d4391b3 fix(tests): initialize selected_index in keyboard nav overlay fixture
The step that loads test commands into the overlay was directly assigning
_commands and _visible without ensuring selected_index was initialized.
This caused navigate_down tests to fail because selected_index might not
be properly reset for each scenario.

Fixes: features/tdd_slash_overlay_keyboard_nav.feature:30,55
2026-06-02 00:38:09 -04:00
HAL9000 1d682c7bca fix(tui): apply ruff formatting to test steps file
ISSUES CLOSED: #6450
2026-06-02 00:38:09 -04:00
HAL9000 97f8f56468 fix(tui): resolve B009 getattr lint violation in test steps
Replace getattr(tui_app_module, '_strip_pending_reference_token')
with direct attribute access. Ruff B009 flags this as unnecessary
because the attribute is a compile-time constant — normal access
is equally safe and preferred.
2026-06-02 00:38:09 -04:00
HAL9000 7b57758a88 fix(tui): ensure escape clears reference token
Refs: #6450
2026-06-02 00:38:09 -04:00
HAL9000 1809df9609 fix(tui): clear reference token on escape
ISSUES CLOSED: #6450
2026-06-02 00:38:09 -04:00
HAL9000 ed973575b1 feat(tui): implement escape cascade key behavior (#6450)
ISSUES CLOSED: #6450
2026-06-02 00:38:09 -04:00
HAL9000 5d213f6967 Merge pull request 'fix(cli): add missing Origin panel, Overridden field, Winner indicator, and JSON envelope in config get output' (#3458) from fix/config-get-output-missing-origin-panel-and-envelope into master
CI / push-validation (push) Successful in 27s
CI / helm (push) Successful in 35s
CI / build (push) Successful in 35s
CI / lint (push) Successful in 44s
CI / typecheck (push) Successful in 59s
CI / quality (push) Successful in 1m18s
CI / e2e_tests (push) Successful in 1m10s
CI / security (push) Successful in 1m23s
CI / benchmark-regression (push) Failing after 39s
CI / unit_tests (push) Successful in 6m22s
CI / docker (push) Successful in 1m35s
CI / integration_tests (push) Successful in 10m30s
CI / coverage (push) Successful in 13m5s
CI / status-check (push) Successful in 4s
CI / benchmark-publish (push) Has been cancelled
2026-06-02 04:27:04 +00:00
HAL9000 082b39db79 fix(cli): repair config get JSON envelope and step staleness
CI / lint (pull_request) Successful in 45s
CI / push-validation (pull_request) Successful in 20s
CI / typecheck (pull_request) Successful in 1m2s
CI / build (pull_request) Successful in 47s
CI / helm (pull_request) Successful in 53s
CI / quality (pull_request) Successful in 1m8s
CI / security (pull_request) Successful in 1m11s
CI / unit_tests (pull_request) Successful in 7m21s
CI / docker (pull_request) Successful in 1m35s
CI / integration_tests (pull_request) Successful in 10m46s
CI / coverage (pull_request) Successful in 8m15s
CI / status-check (pull_request) Successful in 2s
The previous attempt left three CI-breaking issues:

- features/steps/config_cli_safety_net_coverage_steps.py imported
  _env_var_for_key/_normalize_key from config.py, but those helpers
  moved to _config_helpers.py and were never re-exported. Import
  from _config_helpers directly (matches where the symbols live).

- features/steps/config_get_spec_output_steps.py defined two when-
  steps whose default-parse {key} placeholders made the longer step
  ambiguous against the shorter one (behave raised AmbiguousStep on
  load). Switch those two patterns to the re matcher with [^"]+ so
  the quoted argument can't swallow ` with format "..."`.

- The same step file cached parsed JSON on context._spec_json with
  no invalidation. Behave layers context attributes — a value set at
  one scenario's layer remained visible to later scenarios, so the
  assertion read stale JSON from an earlier scenario's get. Parse
  fresh each call.

- src/cleveragents/cli/commands/config.py built a spec-correct JSON
  envelope and then passed it through format_output, which wraps its
  input in another envelope — the outer envelope's data field was
  the inner envelope, so data.type / data.source / data.overridden
  were absent. Emit the manually-built envelope directly via
  json.dumps / yaml.safe_dump so the started timing field and all
  spec data fields appear at the correct depth.

ISSUES CLOSED: #3423
2026-06-01 23:37:30 -04:00
cleveragents-auto 9d8a5b8813 chore: worker ruff auto-fix (pre-push lint gate) 2026-06-01 23:37:30 -04:00
HAL9000 8c926f9bba fix(cli): repair test import and restore --verbose no-op in config get
- Import _env_var_for_key from _config_helpers (where it was moved
  during refactor) instead of config module, fixing ImportError that
  blocked all unit_tests from running
- Restore --verbose / -v as a deprecated no-op parameter on config_get
  so existing tests and user scripts that pass --verbose continue to work;
  resolution chain is always shown per spec regardless of the flag
- Fix CliRunner(mix_stderr=False) in config_get_spec_output_steps.py to
  CliRunner() — mix_stderr is not accepted by this version of Typer

ISSUES CLOSED: #3423
2026-06-01 23:37:30 -04:00
freemo 0cff709531 fix(cli): add missing Origin panel, Overridden field, Winner indicator, and JSON envelope in config get output
Implements all spec-required output for `agents config get`:

Rich output:
- Rename panel title from 'Configuration Value' to 'Config' per spec
- Add 'Overridden' field to the Config panel
- Add 'Origin' panel showing File, Line, and Default fields
- Add 'Resolution Chain' panel (always shown, not just with --verbose)
- Add 'Winner' indicator to the Resolution Chain panel
- Use spec-required type strings (string/boolean/integer) instead of
  Python type names (str/bool/int)
- Add '✓ OK Config read' confirmation message

JSON output:
- Wrap result in standard envelope (command, status, exit_code, data,
  timing, messages)
- Add 'overridden' field to data
- Add 'origin' nested object (file, line, default)
- Add 'winner' nested object (source, level)
- Use human-readable source names (CLI flag, Env var, Config file,
  Default) instead of internal enum values
- Add 'started' timestamp to timing

BDD:
- Add features/config_get_spec_output.feature with 20 scenarios
  covering all Rich panels and JSON envelope fields
- Update existing tests to match new spec-compliant output

ISSUES CLOSED: #3423
2026-06-01 23:37:30 -04:00
HAL9000 6200574444 Merge pull request 'feat(ci): parallel coverage engine + explicit-gated coverage job; de-razor coverage to 96.62%' (#11258) from coverage-engine-master-port into master
CI / benchmark-publish (push) Has started running
CI / benchmark-regression (push) Failing after 40s
CI / push-validation (push) Successful in 36s
CI / helm (push) Successful in 38s
CI / build (push) Successful in 46s
CI / lint (push) Successful in 1m10s
CI / e2e_tests (push) Successful in 1m1s
CI / typecheck (push) Successful in 1m23s
CI / security (push) Successful in 1m23s
CI / quality (push) Successful in 1m24s
CI / unit_tests (push) Successful in 7m52s
CI / docker (push) Successful in 1m27s
CI / integration_tests (push) Successful in 12m8s
CI / coverage (push) Successful in 8m57s
CI / status-check (push) Successful in 3s
2026-06-02 03:34:30 +00:00