Commit Graph

5 Commits

Author SHA1 Message Date
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
freemo 4ad51561fc perf(tests): optimize medium-slow BDD features (10-100s tier)
Cap time.sleep and asyncio.sleep globally at 10ms in before_all to
eliminate retry/backoff waits (tenacity wait_fixed, retry_auto_debug
exponential backoff). Save originals as time._original_sleep and
asyncio._original_sleep for tests that need real wall-clock delays
(CircuitBreaker recovery, debounce timers, validation timeouts).

Enhance template-DB patch: add "db." prefix to _SCENARIO_DB_PREFIXES
and check db_path.stat().st_size > 0 so 0-byte auto-created SQLite
files receive the template copy instead of falling through to real
migrations.

Replace subprocess.run CLI invocations with typer.testing.CliRunner
in module_coverage, main_coverage_complete, and coverage_extras step
files, eliminating ~6s Python cold-start overhead per call.

Switch plan_persistence and action_persistence to in-memory SQLite by
default; only cross-restart scenarios use file-based via an explicit
Given step.

Replace MigrationRunner.run_migrations with Base.metadata.create_all
in plan_service_steps for freshly created in-memory engines.

Removed leftover debug comment in environment.py.

Total tier runtime: 565s -> 21s (96% reduction), 20 features all
under 5s behave-internal time.

ISSUES CLOSED: #480
2026-03-02 02:01:27 +00:00
CoreRasurae 4874f2ad6f feat(validation): add validation pipeline and results model
ISSUES CLOSED: #175
2026-02-25 10:03:57 +00:00