From 3f99e5e5e53d92fa92cb9b658f8ded8754e1fba3 Mon Sep 17 00:00:00 2001 From: CleverThis Date: Thu, 14 May 2026 06:58:47 +0000 Subject: [PATCH] ci(workflows): fix Forgejo syntax and benchmark resilience, correct CHANGELOG structure - Replace github.* with forgejo.* context variables in benchmark-scheduled.yml (fixes: condition checks always fail on Forgejo using GitHub event context) - Add S3 baseline existence check to benchmark-regression job in master.yml so it gracefully skips when no baselines are available instead of failing - Move ReactiveEventBus.emit() fix entry from ### Added to ### Fixed section of CHANGELOG.md (it is a bug fix, not a feature addition) --- .forgejo/workflows/benchmark-scheduled.yml | 6 +++--- .forgejo/workflows/master.yml | 20 +++++++++++++++++++- CHANGELOG.md | 19 +++++++++---------- 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/.forgejo/workflows/benchmark-scheduled.yml b/.forgejo/workflows/benchmark-scheduled.yml index b30be4fd1..55fe12bb0 100644 --- a/.forgejo/workflows/benchmark-scheduled.yml +++ b/.forgejo/workflows/benchmark-scheduled.yml @@ -22,7 +22,7 @@ env: jobs: benchmark-regression: - if: github.event_name == 'schedule' && github.event.schedule == '0 2 * * *' || github.event_name == 'workflow_dispatch' && github.event.inputs.run_full_suite == 'false' + if: forgejo.event_name == 'schedule' && forgejo.event.schedule == '0 2 * * *' || forgejo.event_name == 'workflow_dispatch' && forgejo.event.inputs.run_full_suite == 'false' runs-on: docker timeout-minutes: 120 container: @@ -67,7 +67,7 @@ jobs: - name: Run benchmark regression via nox env: NOX_DEFAULT_VENV_BACKEND: uv - ASV_BASE_SHA: ${{ github.event.inputs.base_sha || 'master' }} + ASV_BASE_SHA: ${{ forgejo.event.inputs.base_sha || 'master' }} run: | mkdir -p build nox -s benchmark_regression 2>&1 | tee build/nox-benchmark-regression-output.log @@ -107,7 +107,7 @@ jobs: retention-days: 90 benchmark-full: - if: github.event_name == 'schedule' && github.event.schedule == '0 3 * * 0' || github.event_name == 'workflow_dispatch' && github.event.inputs.run_full_suite == 'true' + if: forgejo.event_name == 'schedule' && forgejo.event.schedule == '0 3 * * 0' || forgejo.event_name == 'workflow_dispatch' && forgejo.event.inputs.run_full_suite == 'true' runs-on: docker timeout-minutes: 180 container: diff --git a/.forgejo/workflows/master.yml b/.forgejo/workflows/master.yml index 0571f284a..c71b19e08 100644 --- a/.forgejo/workflows/master.yml +++ b/.forgejo/workflows/master.yml @@ -51,8 +51,26 @@ jobs: - name: Run asv continuous via nox env: - ASV_BASE_SHA: ${{ steps.hash.outputs.ASV_BASE_SHA }} + ASV_BASE_SHA: ${{ steps.hash.outputs.ASV_BASE_SHA }} + ASV_S3_BUCKET: ${{ secrets.ASV_S3_BUCKET }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} run: | + mkdir -p build/asv/results + + # Check whether S3 baseline data exists before running benchmarks + HAS_BASELINE=false + if [ -n "${ASV_S3_BUCKET}" ] && [ -n "${AWS_ACCESS_KEY_ID}" ]; then + python -m pip install -q awscli + aws s3 ls "s3://${ASV_S3_BUCKET}/asv/results/" >/dev/null 2>&1 && HAS_BASELINE=true || true + fi + + if [ "${HAS_BASELINE}" = "false" ]; then + echo "Benchmark regression skipped: no S3 baseline results available to compare against." + mkdir -p build/asv/html + exit 0 + fi + nox -s benchmark_regression - name: Archive the results diff --git a/CHANGELOG.md b/CHANGELOG.md index ff686c00b..e61d21959 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -77,16 +77,6 @@ Changed `wf10_batch.robot` to be less likely to create files, and - **A2A module rename BDD test suite** (#8615): Comprehensive Behave tests validating that the ACP→A2A module rename is complete — verifying all 22 A2A symbols are properly exported, no legacy ACP references remain in `.py` files under `cleveragents.a2a/`, and the module docstring uses current A2A naming. The step definitions include self-contained symbol lookups to avoid cross-scenario dependency failures. -- Fixed `ReactiveEventBus.emit()` exception handler to log the full exception - message (`str(exc)`) and enable traceback forwarding (`exc_info=True`). - Previously the handler logged only the exception type name (e.g. - "ValueError") with no diagnostic detail, making production debugging - impossible. The handler now includes the error message text and full - traceback in the structlog warning entry. Removed `@tdd_expected_fail` tag - from the TDD test so both scenarios run as normal regression guards. (#988) - -### Added - - **`pr-review-worker` review-started notification** (#11028): The `first_review` and `re_review` modes now post a "review started" notification comment to the PR at the beginning of the review, giving PR authors immediate visibility @@ -96,6 +86,15 @@ Changed `wf10_batch.robot` to be less likely to create files, and - **Plan Rollback Command** (#8557): Implemented `agents plan rollback []` for checkpoint-based plan state restoration in Epic #8493. The command restores a plan's sandbox to the state captured at a given checkpoint, discarding all decisions made after that checkpoint. The checkpoint can be specified as an optional positional second argument or via the `--to-checkpoint` named option. Supports `--yes/-y` flag to skip confirmation prompts and `--format/-f` for output format selection (rich/plain/json/yaml). Included with comprehensive BDD test coverage (>= 97%) and spec-aligned output formatting showing rollback summary, changes reverted, impact analysis, and post-rollback state panels. ### Fixed + +- Fixed `ReactiveEventBus.emit()` exception handler to log the full exception + message (`str(exc)`) and enable traceback forwarding (`exc_info=True`). + Previously the handler logged only the exception type name (e.g. + "ValueError") with no diagnostic detail, making production debugging + impossible. The handler now includes the error message text and full + traceback in the structlog warning entry. Removed `@tdd_expected_fail` tag + from the TDD test so both scenarios run as normal regression guards. (#988) + - **Guard cleanup_stale against execute/processing and execute/complete plans** (#11121): ``_create_sandbox_for_plan()`` in ``src/cleveragents/cli/commands/plan.py`` now skips ``GitWorktreeSandbox.cleanup_stale()`` when the plan is in -- 2.52.0