Skip to content

fix: dependency-skipped actions show SKIP in tally, level lines reflect failures#80

Merged
Muizzkolapo merged 5 commits intomainfrom
fix/skipped-status-tally-and-level-coloring
Apr 2, 2026
Merged

fix: dependency-skipped actions show SKIP in tally, level lines reflect failures#80
Muizzkolapo merged 5 commits intomainfrom
fix/skipped-status-tally-and-level-coloring

Conversation

@Muizzkolapo
Copy link
Copy Markdown
Owner

Summary

  • Dependency-skipped actions were incorrectly counted as ERROR in the tally (always showing 0 SKIP) because _handle_dependency_skip set status to "failed"
  • Level completion lines were always green regardless of failures in the level
  • Introduces "skipped" as a proper terminal status — the tally now correctly shows "N OK | M SKIP | K ERROR" and level lines show red/yellow/green based on action outcomes

Changes

  • state.py: Added is_skipped(), updated get_pending_actions and is_workflow_done terminal sets to include "skipped"
  • executor.py: _handle_dependency_skip now uses status="skipped" + DISPOSITION_SKIPPED; _check_upstream_health checks both failed and skipped for transitive cascade
  • action_executor.py: Level line color: red (failures), yellow (skips), green (all OK)
  • Tests: Updated circuit breaker tests to expect "skipped", added tests for skipped-via-state, skipped-via-disposition, is_skipped(), terminal set behavior, and summary counts

Test plan

  • ruff check . — clean
  • pytest — 4271 passed, 2 skipped, 0 failures
  • Manual: run workflow with invalid API key → first action fails → descendants show SKIP in tally → level lines red/yellow

Muizzkolapo and others added 5 commits April 2, 2026 10:05
…ines reflect failures

Dependency-skipped actions were incorrectly counted as ERROR in the tally
(always showing "0 SKIP") because _handle_dependency_skip set status to
"failed". Level completion lines were always green regardless of failures.

Changes:
- Introduce "skipped" as a proper terminal status for dependency-skipped actions
- _handle_dependency_skip now sets status="skipped" and writes DISPOSITION_SKIPPED
- _check_upstream_health checks both is_failed and is_skipped for transitive cascade
- get_pending_actions and is_workflow_done treat "skipped" as terminal
- Level completion lines: red (failures), yellow (skips), green (all OK)
- Tally now correctly shows "N OK | M SKIP | K ERROR"
…sing packages (#79)

* fix: lazy-load all external provider SDKs to prevent CLI crash on missing packages

Previously only Gemini and Mistral used lazy imports in CLIENT_REGISTRY.
The remaining providers (OpenAI, Anthropic, Cohere, Groq, Ollama) were
eagerly imported at module level, causing the entire CLI to crash with
ImportError if any single SDK was missing or version-incompatible — even
when the user wasn't using that provider.

All external SDK providers now use the same lazy "module:Class" string
pattern. Internal providers (agac, hitl, tool) remain eager since they
have no external dependencies. _resolve_client() catches ImportError and
raises DependencyError with an actionable install command. The preflight
validator gracefully skips capability checks for unavailable providers.

* test: add sync guard asserting _VENDOR_PACKAGES covers all lazy registry entries

Prevents silent degradation of DependencyError messages when a new lazy
provider is added to CLIENT_REGISTRY without a corresponding package mapping.

* fix: address PR review — test gaps, error handling, and diagnostics

- Add tests for ImportError paths: _resolve_client() raises DependencyError
  with correct context; _resolve_capabilities() returns None gracefully
- Fix vacuous pass: snapshot CLIENT_REGISTRY in fixture so sync-guard test
  checks actual lazy-string entries, not already-resolved classes
- Catch AttributeError alongside ImportError for wrong class names in lazy
  entries (developer error scenario)
- Preserve original traceback with `from err` instead of `from None`
- Add logger.debug when _resolve_capabilities skips an unavailable SDK
- Document DependencyError in invoke_client docstring Raises section
… gaps

- Clear DISPOSITION_SKIPPED in _verify_completion_status on re-run
  (prevents stale skip markers from incorrectly skipping on retry)
- Reason string now says "skipped" for cascaded skips instead of "failed"
- Add _write_skipped_disposition exception path test
- Add level coloring tests (green/yellow/red/precedence)
- Explicit is_skipped=False in test_dep_failed_via_state_manager
@Muizzkolapo Muizzkolapo merged commit 4675b01 into main Apr 2, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant