fix(testing): document and harden non-AssertionError guard in apply_tdd_inversion to reduce flaky CI #8325

Merged
hurui200320 merged 1 commit from fix/tdd-inversion-non-assertion-guard into master 2026-04-15 05:49:14 +00:00
Member

Summary

  • Make apply_tdd_inversion() surface non-AssertionError guard firings in
    standard Behave output by emitting the warning to both stderr and the
    structured logger via a new _warning_with_stderr helper.
  • Add BDD coverage in features/tdd_expected_fail_infrastructure.feature:
    • Positive scenario: asserts the guard warning IS emitted to stderr when
      a non-AssertionError exception (e.g. RuntimeError) prevents inversion.
    • Negative scenario: asserts the guard warning is NOT emitted when the
      exception IS an AssertionError (correct expected-fail signal path), and
      confirms the step is correctly set to passed after inversion.
  • Document in CONTRIBUTING.md that @tdd_expected_fail bug-signaling failures
    must use AssertionError (assert / raise AssertionError(...)) so
    infrastructure/runtime exceptions are not accidentally treated as expected bug
    failures.
  • Add CHANGELOG.md entry for #8294 under [Unreleased] → ### Fixed.

Approach

_warning_with_stderr(message: str) is a module-private helper that calls
_tdd_logger.warning(message) and print(message, file=sys.stderr). The call
site uses an f-string rather than lazy %-style formatting; an inline comment
documents this is intentional because the message is always emitted to stderr
via print() so deferred formatting provides no benefit. An additional inline
comment in _warning_with_stderr documents that the dual-emit is intentional:
the logger may route to structured sinks not visible in CI output, so stderr
guarantees visibility in Behave's console output.

Exception text in the guard warning is defensively truncated to 500 characters
(exc_text = str(step.exception)[:500]) to avoid runaway output for exceptions
with very long str() representations.

The stderr output should not contain BDD step validates the negative path using
redirect_stderr / StringIO capture, the same mechanism as the positive
scenario. The negative scenario now also asserts And the step "bug step" should have status "passed" to match the positive scenario's step-level status coverage
and make the asymmetry explicit.

Audit (AC #4)

An audit was performed of all existing apply_tdd_inversion callers and
@tdd_expected_fail scenarios across the codebase. No violations were found:
all existing scenarios correctly use AssertionError-based failures.

Deferred items

  • n1: The "unexpected pass" warning path (_tdd_logger.warning on line ~238)
    was not updated to use _warning_with_stderr; this is out of scope for #8294
    and will be addressed if it causes CI visibility issues (follow-up ticket
    recommended).
  • m4: No isolated unit test for _warning_with_stderr — acceptable for this PR.
    A dedicated unit test should be added in a follow-up ticket.

Validation

  • nox -e lint
  • nox -e typecheck ✓ (0 errors, 3 import-source warnings — pre-existing)
  • nox -e unit_tests ✓ (22 scenarios in tdd_expected_fail_infrastructure.feature, all pass)
  • nox -e integration_tests ✓ (1873 Robot Framework tests passed, 0 failed; pabot exit 252 is a reporting artifact, not a test failure — confirmed via xunit.xml and output.xml)
  • nox -e e2e_tests ✓ (114 E2E tests passed, 0 failed; LLM API keys available in environment)
  • nox (full suite) ✓ (lint, format, typecheck, security_scan, dead_code, unit_tests, integration_tests, docs, build, coverage_report — all sessions successful)
  • nox -s coverage_report ✓ (coverage: 97.25% ≥ 97% threshold — AC5 satisfied)

Closes #8294

## Summary - Make `apply_tdd_inversion()` surface non-`AssertionError` guard firings in standard Behave output by emitting the warning to both `stderr` and the structured logger via a new `_warning_with_stderr` helper. - Add BDD coverage in `features/tdd_expected_fail_infrastructure.feature`: - **Positive scenario**: asserts the guard warning IS emitted to stderr when a non-`AssertionError` exception (e.g. `RuntimeError`) prevents inversion. - **Negative scenario**: asserts the guard warning is NOT emitted when the exception IS an `AssertionError` (correct expected-fail signal path), and confirms the step is correctly set to `passed` after inversion. - Document in `CONTRIBUTING.md` that `@tdd_expected_fail` bug-signaling failures must use `AssertionError` (`assert` / `raise AssertionError(...)`) so infrastructure/runtime exceptions are not accidentally treated as expected bug failures. - Add `CHANGELOG.md` entry for #8294 under `[Unreleased] → ### Fixed`. ## Approach `_warning_with_stderr(message: str)` is a module-private helper that calls `_tdd_logger.warning(message)` and `print(message, file=sys.stderr)`. The call site uses an f-string rather than lazy `%`-style formatting; an inline comment documents this is intentional because the message is always emitted to `stderr` via `print()` so deferred formatting provides no benefit. An additional inline comment in `_warning_with_stderr` documents that the dual-emit is intentional: the logger may route to structured sinks not visible in CI output, so stderr guarantees visibility in Behave's console output. Exception text in the guard warning is defensively truncated to 500 characters (`exc_text = str(step.exception)[:500]`) to avoid runaway output for exceptions with very long `str()` representations. The `stderr output should not contain` BDD step validates the negative path using `redirect_stderr` / `StringIO` capture, the same mechanism as the positive scenario. The negative scenario now also asserts `And the step "bug step" should have status "passed"` to match the positive scenario's step-level status coverage and make the asymmetry explicit. ## Audit (AC #4) An audit was performed of all existing `apply_tdd_inversion` callers and `@tdd_expected_fail` scenarios across the codebase. No violations were found: all existing scenarios correctly use `AssertionError`-based failures. ## Deferred items - n1: The "unexpected pass" warning path (`_tdd_logger.warning` on line ~238) was not updated to use `_warning_with_stderr`; this is out of scope for #8294 and will be addressed if it causes CI visibility issues (follow-up ticket recommended). - m4: No isolated unit test for `_warning_with_stderr` — acceptable for this PR. A dedicated unit test should be added in a follow-up ticket. ## Validation - `nox -e lint` ✓ - `nox -e typecheck` ✓ (0 errors, 3 import-source warnings — pre-existing) - `nox -e unit_tests` ✓ (22 scenarios in `tdd_expected_fail_infrastructure.feature`, all pass) - `nox -e integration_tests` ✓ (1873 Robot Framework tests passed, 0 failed; pabot exit 252 is a reporting artifact, not a test failure — confirmed via xunit.xml and output.xml) - `nox -e e2e_tests` ✓ (114 E2E tests passed, 0 failed; LLM API keys available in environment) - `nox` (full suite) ✓ (lint, format, typecheck, security_scan, dead_code, unit_tests, integration_tests, docs, build, coverage_report — all sessions successful) - `nox -s coverage_report` ✓ (coverage: **97.25%** ≥ 97% threshold — AC5 satisfied) Closes #8294
hurui200320 force-pushed fix/tdd-inversion-non-assertion-guard from c237658e6d
Some checks are pending
CI / benchmark-publish (pull_request) Waiting to run
CI / helm (pull_request) Successful in 24s
CI / lint (pull_request) Successful in 25s
CI / push-validation (pull_request) Successful in 27s
CI / quality (pull_request) Successful in 41s
CI / build (pull_request) Successful in 42s
CI / typecheck (pull_request) Successful in 1m4s
CI / security (pull_request) Successful in 1m5s
CI / benchmark-regression (pull_request) Waiting to run
CI / integration_tests (pull_request) Successful in 4m22s
CI / e2e_tests (pull_request) Successful in 4m27s
CI / unit_tests (pull_request) Successful in 5m21s
CI / docker (pull_request) Successful in 10s
CI / coverage (pull_request) Successful in 10m51s
CI / status-check (pull_request) Successful in 1s
to 43106f951c
All checks were successful
CI / push-validation (pull_request) Successful in 20s
CI / helm (pull_request) Successful in 22s
CI / lint (pull_request) Successful in 26s
CI / quality (pull_request) Successful in 34s
CI / typecheck (pull_request) Successful in 53s
CI / security (pull_request) Successful in 1m0s
CI / e2e_tests (pull_request) Successful in 3m8s
CI / build (pull_request) Successful in 3m19s
CI / integration_tests (pull_request) Successful in 3m55s
CI / unit_tests (pull_request) Successful in 8m11s
CI / docker (pull_request) Successful in 11s
CI / coverage (pull_request) Successful in 10m47s
CI / status-check (pull_request) Successful in 2s
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Successful in 57m11s
2026-04-13 09:30:17 +00:00
Compare
Owner

Thank you for submitting this PR, @hurui200320.

Acknowledgment:

PR #8325 (fix(testing): harden TDD expected-fail non-assertion guard visibility) has been received. This PR addresses issue #8294 by:

  • Emitting non-AssertionError guard warnings to stderr in addition to structured logging
  • Adding BDD coverage for the guard warning visibility
  • Documenting the AssertionError requirement in CONTRIBUTING.md

Status: This PR is open and awaiting review. The automated review pipeline will assess it against the project's quality gates. A human or automated review will follow.

If you have any questions about the review process or timeline, please comment here.


Automated by CleverAgents Bot
Supervisor: Human Liaison | Agent: human-liaison-pool-supervisor

Thank you for submitting this PR, @hurui200320. **Acknowledgment:** PR #8325 (`fix(testing): harden TDD expected-fail non-assertion guard visibility`) has been received. This PR addresses issue #8294 by: - Emitting non-`AssertionError` guard warnings to stderr in addition to structured logging - Adding BDD coverage for the guard warning visibility - Documenting the `AssertionError` requirement in `CONTRIBUTING.md` **Status:** This PR is open and awaiting review. The automated review pipeline will assess it against the project's quality gates. A human or automated review will follow. If you have any questions about the review process or timeline, please comment here. --- **Automated by CleverAgents Bot** Supervisor: Human Liaison | Agent: human-liaison-pool-supervisor
HAL9000 added this to the v3.5.0 milestone 2026-04-14 04:18:00 +00:00
Owner

[GROOMED]
Quality issues identified:

  • Missing State/, Priority/, and MoSCoW/ labels required by CONTRIBUTING.md
  • No milestone assigned to this PR
  • Required CHANGELOG update is missing from the diff
  • Required CONTRIBUTORS.md update is missing from the diff

Actions taken:

  • Added State/In Review (ID 848), Priority/Medium (ID 860), and MoSCoW/Should have (ID 884) labels
  • Assigned milestone v3.5.0 (ID 108) to this PR

Outstanding follow-ups:

  • Author must add the correct CHANGELOG entry
  • Author must add the corresponding CONTRIBUTORS.md update

Automated by CleverAgents Bot
Supervisor: Grooming Pool | Agent: grooming-pool-supervisor
Worker: [AUTO-GROOM-8325]

[GROOMED] Quality issues identified: - Missing State/, Priority/, and MoSCoW/ labels required by CONTRIBUTING.md - No milestone assigned to this PR - Required CHANGELOG update is missing from the diff - Required CONTRIBUTORS.md update is missing from the diff Actions taken: - Added State/In Review (ID 848), Priority/Medium (ID 860), and MoSCoW/Should have (ID 884) labels - Assigned milestone v3.5.0 (ID 108) to this PR Outstanding follow-ups: - Author must add the correct CHANGELOG entry - Author must add the corresponding CONTRIBUTORS.md update --- **Automated by CleverAgents Bot** Supervisor: Grooming Pool | Agent: grooming-pool-supervisor Worker: [AUTO-GROOM-8325]
hurui200320 force-pushed fix/tdd-inversion-non-assertion-guard from 43106f951c
All checks were successful
CI / push-validation (pull_request) Successful in 20s
CI / helm (pull_request) Successful in 22s
CI / lint (pull_request) Successful in 26s
CI / quality (pull_request) Successful in 34s
CI / typecheck (pull_request) Successful in 53s
CI / security (pull_request) Successful in 1m0s
CI / e2e_tests (pull_request) Successful in 3m8s
CI / build (pull_request) Successful in 3m19s
CI / integration_tests (pull_request) Successful in 3m55s
CI / unit_tests (pull_request) Successful in 8m11s
CI / docker (pull_request) Successful in 11s
CI / coverage (pull_request) Successful in 10m47s
CI / status-check (pull_request) Successful in 2s
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Successful in 57m11s
to 854f608a21
All checks were successful
CI / lint (pull_request) Successful in 34s
CI / typecheck (pull_request) Successful in 52s
CI / push-validation (pull_request) Successful in 19s
CI / helm (pull_request) Successful in 21s
CI / quality (pull_request) Successful in 57s
CI / security (pull_request) Successful in 1m2s
CI / build (pull_request) Successful in 57s
CI / e2e_tests (pull_request) Successful in 4m5s
CI / integration_tests (pull_request) Successful in 4m21s
CI / unit_tests (pull_request) Successful in 5m43s
CI / docker (pull_request) Successful in 1m17s
CI / coverage (pull_request) Successful in 13m10s
CI / status-check (pull_request) Successful in 1s
2026-04-14 05:14:35 +00:00
Compare
hurui200320 force-pushed fix/tdd-inversion-non-assertion-guard from 854f608a21
All checks were successful
CI / lint (pull_request) Successful in 34s
CI / typecheck (pull_request) Successful in 52s
CI / push-validation (pull_request) Successful in 19s
CI / helm (pull_request) Successful in 21s
CI / quality (pull_request) Successful in 57s
CI / security (pull_request) Successful in 1m2s
CI / build (pull_request) Successful in 57s
CI / e2e_tests (pull_request) Successful in 4m5s
CI / integration_tests (pull_request) Successful in 4m21s
CI / unit_tests (pull_request) Successful in 5m43s
CI / docker (pull_request) Successful in 1m17s
CI / coverage (pull_request) Successful in 13m10s
CI / status-check (pull_request) Successful in 1s
to 74c6d2651b
All checks were successful
CI / lint (pull_request) Successful in 37s
CI / typecheck (pull_request) Successful in 50s
CI / quality (pull_request) Successful in 30s
CI / security (pull_request) Successful in 1m17s
CI / build (pull_request) Successful in 27s
CI / helm (pull_request) Successful in 21s
CI / push-validation (pull_request) Successful in 19s
CI / e2e_tests (pull_request) Successful in 4m47s
CI / integration_tests (pull_request) Successful in 5m18s
CI / unit_tests (pull_request) Successful in 6m3s
CI / docker (pull_request) Successful in 31s
CI / coverage (pull_request) Successful in 12m55s
CI / status-check (pull_request) Successful in 1s
2026-04-14 06:22:21 +00:00
Compare
hurui200320 changed title from fix(testing): harden TDD expected-fail non-assertion guard visibility to fix(testing): document and harden non-AssertionError guard in apply_tdd_inversion to reduce flaky CI 2026-04-14 06:22:52 +00:00
hurui200320 modified the milestone from v3.5.0 to v3.2.0 2026-04-14 06:30:17 +00:00
Author
Member

@HAL9001 please review this PR

@HAL9001 please review this PR
hurui200320 2026-04-14 06:59:49 +00:00
Author
Member

@HAL9000 please review this PR

@HAL9000 please review this PR
hurui200320 scheduled this pull request to auto merge when all checks succeed 2026-04-14 09:55:35 +00:00
Owner

[GROOMED]
Summary:

  • Verified State/In Review, Priority/High, Type/Bug, and MoSCoW/Should have labels are present per CONTRIBUTING.md requirements.
  • Confirmed milestone v3.2.0 is set within the required v3.x release window.
  • PR description clearly documents scope, approach, linked issue #8294, and validation results.
  • CHANGELOG.md and CONTRIBUTING.md updates are included in the diff; no outstanding grooming follow-ups remain.

Automated by CleverAgents Bot
Supervisor: Grooming | Agent: grooming-pool-supervisor

[GROOMED] Summary: - Verified State/In Review, Priority/High, Type/Bug, and MoSCoW/Should have labels are present per CONTRIBUTING.md requirements. - Confirmed milestone v3.2.0 is set within the required v3.x release window. - PR description clearly documents scope, approach, linked issue #8294, and validation results. - CHANGELOG.md and CONTRIBUTING.md updates are included in the diff; no outstanding grooming follow-ups remain. --- **Automated by CleverAgents Bot** Supervisor: Grooming | Agent: grooming-pool-supervisor ---
HAL9001 approved these changes 2026-04-14 20:05:55 +00:00
HAL9001 left a comment

Code Review: APPROVED

Summary

This PR correctly addresses all acceptance criteria from issue #8294. The implementation is clean, well-documented, and all quality gates pass.


Checklist

Criterion Status Notes
Conventional Commit format fix(testing): ... with ISSUES CLOSED: #8294 footer
Closes #8294 in PR description Present at end of PR body
Milestone assigned v3.2.0
Exactly one Type/* label Type/Bug
CHANGELOG.md updated Entry added under [Unreleased] → ### Fixed
CONTRIBUTING.md updated AssertionError requirement documented under TDD Issue Test Tags
BDD tests present Two new scenarios in tdd_expected_fail_infrastructure.feature
Coverage ≥ 97% 97.25% reported by nox -s coverage_report
All CI jobs pass 13/13 jobs green (lint, typecheck, security, quality, unit_tests, integration_tests, e2e_tests, coverage, build, docker, helm, push-validation, status-check)

Implementation Review

features/environment.py_warning_with_stderr helper

  • Clean, minimal helper with a clear docstring explaining the dual-emit rationale.
  • Defensive truncation of exception text to 500 chars is appropriate.
  • Switching from lazy %-style to f-string is intentional and correctly documented with an inline comment.
  • Type annotation (message: str) -> None) is correct.

features/steps/tdd_expected_fail_infrastructure_steps.py — new step definitions

  • step_run_apply_inversion_failed_capture_stderr correctly uses contextlib.redirect_stderr + StringIO for clean, side-effect-free stderr capture.
  • step_check_stderr_contains and step_check_stderr_not_contains both guard against missing context.captured_stderr with a clear error message pointing to the correct When step.
  • All new steps have proper type annotations and docstrings.

features/tdd_expected_fail_infrastructure.feature — new BDD scenarios

  • Positive scenario (apply_tdd_inversion surfaces non-AssertionError guard warning to stderr): correctly asserts guard fires, result is True (not inverted), and stderr contains the expected warning text.
  • Negative scenario (apply_tdd_inversion does not emit guard warning for AssertionError exceptions): correctly asserts no warning emitted, result is False (inverted), and step status is passed — providing symmetric coverage to the positive path.

CHANGELOG.md — entry is accurate, well-scoped, and placed correctly under [Unreleased] → ### Fixed.

CONTRIBUTING.md — the new rule is clear, actionable, and placed in the correct section (TDD Issue Test Tags).


Deferred Items (Acknowledged)

The PR explicitly documents two acceptable deferrals:

  • n1: The "unexpected pass" warning path (_tdd_logger.warning ~line 238) not updated — out of scope for #8294.
  • m4: No isolated unit test for _warning_with_stderr — acceptable; follow-up ticket recommended.

Neither deferred item blocks this PR.


Verdict

All five acceptance criteria from issue #8294 are satisfied. The code is correct, well-tested, and does not introduce regressions. Approved for merge.


Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
Worker: [AUTO-REV-8325]

## Code Review: APPROVED ✅ ### Summary This PR correctly addresses all acceptance criteria from issue #8294. The implementation is clean, well-documented, and all quality gates pass. --- ### Checklist | Criterion | Status | Notes | |-----------|--------|-------| | Conventional Commit format | ✅ | `fix(testing): ...` with `ISSUES CLOSED: #8294` footer | | `Closes #8294` in PR description | ✅ | Present at end of PR body | | Milestone assigned | ✅ | v3.2.0 | | Exactly one `Type/*` label | ✅ | `Type/Bug` | | CHANGELOG.md updated | ✅ | Entry added under `[Unreleased] → ### Fixed` | | CONTRIBUTING.md updated | ✅ | AssertionError requirement documented under TDD Issue Test Tags | | BDD tests present | ✅ | Two new scenarios in `tdd_expected_fail_infrastructure.feature` | | Coverage ≥ 97% | ✅ | 97.25% reported by `nox -s coverage_report` | | All CI jobs pass | ✅ | 13/13 jobs green (lint, typecheck, security, quality, unit_tests, integration_tests, e2e_tests, coverage, build, docker, helm, push-validation, status-check) | --- ### Implementation Review **`features/environment.py`** — `_warning_with_stderr` helper - Clean, minimal helper with a clear docstring explaining the dual-emit rationale. - Defensive truncation of exception text to 500 chars is appropriate. - Switching from lazy `%`-style to f-string is intentional and correctly documented with an inline comment. - Type annotation (`message: str) -> None`) is correct. **`features/steps/tdd_expected_fail_infrastructure_steps.py`** — new step definitions - `step_run_apply_inversion_failed_capture_stderr` correctly uses `contextlib.redirect_stderr` + `StringIO` for clean, side-effect-free stderr capture. - `step_check_stderr_contains` and `step_check_stderr_not_contains` both guard against missing `context.captured_stderr` with a clear error message pointing to the correct When step. - All new steps have proper type annotations and docstrings. **`features/tdd_expected_fail_infrastructure.feature`** — new BDD scenarios - **Positive scenario** (`apply_tdd_inversion surfaces non-AssertionError guard warning to stderr`): correctly asserts guard fires, result is `True` (not inverted), and stderr contains the expected warning text. - **Negative scenario** (`apply_tdd_inversion does not emit guard warning for AssertionError exceptions`): correctly asserts no warning emitted, result is `False` (inverted), and step status is `passed` — providing symmetric coverage to the positive path. **`CHANGELOG.md`** — entry is accurate, well-scoped, and placed correctly under `[Unreleased] → ### Fixed`. **`CONTRIBUTING.md`** — the new rule is clear, actionable, and placed in the correct section (TDD Issue Test Tags). --- ### Deferred Items (Acknowledged) The PR explicitly documents two acceptable deferrals: - **n1**: The "unexpected pass" warning path (`_tdd_logger.warning` ~line 238) not updated — out of scope for #8294. - **m4**: No isolated unit test for `_warning_with_stderr` — acceptable; follow-up ticket recommended. Neither deferred item blocks this PR. --- ### Verdict All five acceptance criteria from issue #8294 are satisfied. The code is correct, well-tested, and does not introduce regressions. **Approved for merge.** --- **Automated by CleverAgents Bot** Supervisor: PR Review Pool | Agent: pr-reviewer Worker: [AUTO-REV-8325]
Owner

Code Review Decision: APPROVED

All quality criteria satisfied. PR #8325 correctly implements all five acceptance criteria from issue #8294:

  1. _warning_with_stderr helper emits guard warnings to both structured logger and stderr
  2. CONTRIBUTING.md documents the AssertionError-only requirement for @tdd_expected_fail steps
  3. Two new BDD scenarios added to tdd_expected_fail_infrastructure.feature (positive + negative paths)
  4. Audit of existing @tdd_expected_fail step definitions — no violations found
  5. Coverage at 97.25% ≥ 97% threshold

All 13 CI jobs green. Commit message follows Conventional Commit format with ISSUES CLOSED: #8294 footer. Milestone v3.2.0 and Type/Bug label correctly set.


Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
Worker: [AUTO-REV-8325]

**Code Review Decision: APPROVED ✅** All quality criteria satisfied. PR #8325 correctly implements all five acceptance criteria from issue #8294: 1. ✅ `_warning_with_stderr` helper emits guard warnings to both structured logger and `stderr` 2. ✅ CONTRIBUTING.md documents the `AssertionError`-only requirement for `@tdd_expected_fail` steps 3. ✅ Two new BDD scenarios added to `tdd_expected_fail_infrastructure.feature` (positive + negative paths) 4. ✅ Audit of existing `@tdd_expected_fail` step definitions — no violations found 5. ✅ Coverage at 97.25% ≥ 97% threshold All 13 CI jobs green. Commit message follows Conventional Commit format with `ISSUES CLOSED: #8294` footer. Milestone v3.2.0 and `Type/Bug` label correctly set. --- **Automated by CleverAgents Bot** Supervisor: PR Review Pool | Agent: pr-reviewer Worker: [AUTO-REV-8325]
HAL9000 force-pushed fix/tdd-inversion-non-assertion-guard from 74c6d2651b
All checks were successful
CI / lint (pull_request) Successful in 37s
CI / typecheck (pull_request) Successful in 50s
CI / quality (pull_request) Successful in 30s
CI / security (pull_request) Successful in 1m17s
CI / build (pull_request) Successful in 27s
CI / helm (pull_request) Successful in 21s
CI / push-validation (pull_request) Successful in 19s
CI / e2e_tests (pull_request) Successful in 4m47s
CI / integration_tests (pull_request) Successful in 5m18s
CI / unit_tests (pull_request) Successful in 6m3s
CI / docker (pull_request) Successful in 31s
CI / coverage (pull_request) Successful in 12m55s
CI / status-check (pull_request) Successful in 1s
to ed7dba552c
All checks were successful
CI / lint (pull_request) Successful in 26s
CI / helm (pull_request) Successful in 24s
CI / quality (pull_request) Successful in 33s
CI / build (pull_request) Successful in 31s
CI / push-validation (pull_request) Successful in 21s
CI / security (pull_request) Successful in 55s
CI / typecheck (pull_request) Successful in 1m1s
CI / e2e_tests (pull_request) Successful in 3m10s
CI / integration_tests (pull_request) Successful in 6m30s
CI / unit_tests (pull_request) Successful in 8m17s
CI / docker (pull_request) Successful in 1m18s
CI / coverage (pull_request) Successful in 13m3s
CI / status-check (pull_request) Successful in 2s
2026-04-15 00:41:00 +00:00
Compare
Owner

@hurui200320 — The automated review pool has approved PR #8325. All five acceptance criteria from issue #8294 have been verified as satisfied:

  1. _warning_with_stderr helper correctly emits guard warnings to both structured logger and stderr
  2. CONTRIBUTING.md documents the AssertionError-only requirement for @tdd_expected_fail steps
  3. Two new BDD scenarios added to tdd_expected_fail_infrastructure.feature (positive and negative paths)
  4. Audit of existing @tdd_expected_fail step definitions confirmed no violations
  5. Coverage at 97.25%, meeting the >=97% threshold

All 13 CI jobs are green. Commit message follows Conventional Commit format with ISSUES CLOSED: #8294 footer. Milestone v3.2.0 and Type/Bug label are correctly set.

The merge pool will process this PR for merging. Thank you for the contribution.


Automated by CleverAgents Bot
Supervisor: Human Liaison | Agent: human-liaison-pool-supervisor
Worker: [AUTO-HUMAN-8]

@hurui200320 — The automated review pool has approved PR #8325. All five acceptance criteria from issue #8294 have been verified as satisfied: 1. `_warning_with_stderr` helper correctly emits guard warnings to both structured logger and stderr 2. CONTRIBUTING.md documents the `AssertionError`-only requirement for `@tdd_expected_fail` steps 3. Two new BDD scenarios added to `tdd_expected_fail_infrastructure.feature` (positive and negative paths) 4. Audit of existing `@tdd_expected_fail` step definitions confirmed no violations 5. Coverage at 97.25%, meeting the >=97% threshold All 13 CI jobs are green. Commit message follows Conventional Commit format with `ISSUES CLOSED: #8294` footer. Milestone v3.2.0 and `Type/Bug` label are correctly set. The merge pool will process this PR for merging. Thank you for the contribution. --- **Automated by CleverAgents Bot** Supervisor: Human Liaison | Agent: human-liaison-pool-supervisor Worker: [AUTO-HUMAN-8]
hurui200320 force-pushed fix/tdd-inversion-non-assertion-guard from ed7dba552c
All checks were successful
CI / lint (pull_request) Successful in 26s
CI / helm (pull_request) Successful in 24s
CI / quality (pull_request) Successful in 33s
CI / build (pull_request) Successful in 31s
CI / push-validation (pull_request) Successful in 21s
CI / security (pull_request) Successful in 55s
CI / typecheck (pull_request) Successful in 1m1s
CI / e2e_tests (pull_request) Successful in 3m10s
CI / integration_tests (pull_request) Successful in 6m30s
CI / unit_tests (pull_request) Successful in 8m17s
CI / docker (pull_request) Successful in 1m18s
CI / coverage (pull_request) Successful in 13m3s
CI / status-check (pull_request) Successful in 2s
to f67e8a2e07
All checks were successful
CI / lint (pull_request) Successful in 18s
CI / build (pull_request) Successful in 17s
CI / helm (pull_request) Successful in 18s
CI / quality (pull_request) Successful in 53s
CI / typecheck (pull_request) Successful in 56s
CI / security (pull_request) Successful in 57s
CI / push-validation (pull_request) Successful in 40s
CI / unit_tests (pull_request) Successful in 3m13s
CI / integration_tests (pull_request) Successful in 4m23s
CI / e2e_tests (pull_request) Successful in 4m37s
CI / docker (pull_request) Successful in 1m34s
CI / coverage (pull_request) Successful in 10m46s
CI / status-check (pull_request) Successful in 1s
CI / lint (push) Successful in 17s
CI / quality (push) Successful in 17s
CI / build (push) Successful in 24s
CI / helm (push) Successful in 24s
CI / push-validation (push) Successful in 37s
CI / typecheck (push) Successful in 52s
CI / security (push) Successful in 52s
CI / e2e_tests (push) Successful in 3m13s
CI / unit_tests (push) Successful in 6m37s
CI / integration_tests (push) Successful in 6m39s
CI / docker (push) Successful in 1m35s
CI / coverage (push) Successful in 11m13s
CI / status-check (push) Successful in 1s
2026-04-15 05:37:27 +00:00
Compare
hurui200320 canceled auto merging this pull request when all checks succeed 2026-04-15 05:37:36 +00:00
hurui200320 scheduled this pull request to auto merge when all checks succeed 2026-04-15 05:37:50 +00:00
hurui200320 deleted branch fix/tdd-inversion-non-assertion-guard 2026-04-15 05:49:15 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
cleveragents/cleveragents-core!8325
No description provided.