Skip to content

(3.14.5) Regression coverage for conditional action dependency manifests#286

Draft
leynos wants to merge 10 commits into
mainfrom
3-14-5-regression-coverage-for-conditional-action-dependency-manifests
Draft

(3.14.5) Regression coverage for conditional action dependency manifests#286
leynos wants to merge 10 commits into
mainfrom
3-14-5-regression-coverage-for-conditional-action-dependency-manifests

Conversation

@leynos

@leynos leynos commented Jun 15, 2026

Copy link
Copy Markdown
Owner

Summary

This is a draft pull request containing the execution plan (ExecPlan) for implementing comprehensive regression test coverage for conditional action dependency manifest functionality (roadmap item 3.14.5).

The plan outlines a seven-stage approach:

  • Stage A: Research and specification (understand feature semantics, research prior art)
  • Stage B: Red tests (specify expected behaviour with failing tests)
  • Stage C: Unit tests (implement feature to make tests pass)
  • Stage D: BDD and integration tests (end-to-end scenarios)
  • Stage E: Property-based and model-checking tests (advanced invariant verification)
  • Stage F: Documentation and quality gates
  • Stage G: CodeRabbit review and sign-off

The plan is structured to validate conditional execution (when), iteration (foreach), dependency lowering to IR, Ninja build statement generation, and test runner branch selection (nextest vs. legacy).

Testing Strategy

The plan integrates multiple testing approaches:

  • rstest: Parametrised unit tests with fixtures
  • rstest-bdd: Behaviour-driven testing with Given-When-Then scenarios
  • insta: Snapshot testing for Ninja build statement output
  • proptest: Property-based testing for IR invariants and dependency graphs
  • kani: Bounded model checking for soundness verification
  • googletest/pretty_assertions: Clear, detailed test failure messages

Key Design Decisions

  1. Use firecrawl to research GitHub Actions conditionals, Ninja syntax, and prior art before finalizing test design
  2. Use snapshot tests to capture Ninja output (ensures diffs are explicit and maintainable)
  3. Parametrise tests to exercise both nextest and legacy test runner branches identically
  4. Apply hexagonal architecture to separate domain logic from test infrastructure
  5. Use ortho_config for ergonomic, layered test configuration

Tolerances and Constraints

  • Scope: max 15 files changed
  • Test count: max 50 new test cases
  • Net code addition: max 3000 lines
  • Test execution time: full suite completes in <5 minutes
  • No external service dependencies required

Status

Status: DRAFT — Awaiting team review and approval before implementation begins.

A multi-agent design review is in progress, synthesizing feedback from:

  • Architectural review (soundness, coverage, feasibility, maintainability)
  • Rust/testing expert review (tool selection, patterns, practical concerns)
  • Prior art research (GitHub Actions conditionals, Ninja build system, dependency manifests)

The plan will be updated based on review feedback before moving to approved status.

Implementation Roadmap

Once approved, implementation will proceed stage-by-stage:

  1. Research and design specification (Stage A)
  2. Specification tests (Stage B) — establish baseline of failing tests
  3. Feature implementation (Stages C-E) — make tests pass, add advanced testing
  4. Documentation and cleanup (Stage F) — ensure quality gates pass
  5. CodeRabbit review (Stage G) — obtain independent verification

References

Execplan document: docs/execplans/3-14-5-regression-coverage-for-conditional-action-dependency-manifests.md

Lody session: https://lody.ai/leynos/sessions/[SESSION_ID]

leynos and others added 9 commits May 26, 2026 18:25
Update all `astral-sh/setup-uv` action and workflow references to the
requested commit SHA. Remove stale adjacent version comments so the pin is
not contradicted by old tag notes.
Detect the Docker-compatible runtime path that `act` will use before running
workflow tests. Forward a healthy rootless Podman socket automatically, and
skip with a concrete remediation message when the Podman API cannot list all
containers because stale entries are stuck in `Removing` state.

Document the required Podman repair condition and allow the Makefile to pass a
locally installed `act` binary into the pytest harness.
Migrate affected Typer entrypoints to inline `Annotated` options and
fall back to the GitHub Action environment when Typer leaves option
values unset. This keeps production env input handling reliable while
allowing tests to execute scripts with the project interpreter instead
of `uv run --script` isolation.

Run generate-coverage script tests through `sys.executable` so cmd-mox
stubs use the same environment as pytest.
Move the Docker CLI availability check into a private helper so the act
runtime probe stays below the configured complexity threshold.
Extract output path resolution, coverage percentage dispatch, and
GITHUB_OUTPUT reporting from `main` so the runner stays below the
configured complexity threshold without changing behaviour.
Move nullable boolean option fallback handling into a private helper so
`main` stays below the configured complexity threshold.
The episodic-work directory is a separate nested git repository with its own
linting configuration. Exclude it from the outer repo's ruff checks to prevent
linting failures on files outside the outer repo's scope.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
The episodic-work directory is a separate git repository with independent
history and commits. Exclude it from the outer repo's git tracking to prevent
stop hook warnings about untracked changes.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
…coverage

Add comprehensive execution plan for item 3.14.5, outlining:
- Testing strategy for when conditions, foreach loops, and deps lowering
- Seven implementation stages from research through CodeRabbit review
- Integration of rstest, rstest-bdd, insta, proptest, and kani
- Snapshot testing for Ninja build statement output
- Property-based testing for IR invariants
- BDD scenarios for end-to-end validation

The plan is structured for phased implementation with clear go/no-go criteria
at each stage. Research phase will use firecrawl to verify prior art and
semantics before design is finalized. Plan awaits team review and approval
before implementation begins.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @leynos, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@coderabbitai

coderabbitai Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 343c12c8-a114-4ac4-a530-8417602a81cf

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 3-14-5-regression-coverage-for-conditional-action-dependency-manifests

Comment @coderabbitai help to get the list of available commands and usage tips.

codescene-delta-analysis[bot]

This comment was marked as outdated.

Replace execplan with properly formatted markdown:
- All lines wrapped to 80 character limit
- Single heading without split lines
- Code blocks with language specifications
- URLs wrapped in markdown link syntax
- Proper spacing around all sections

Plan content and structure preserved; formatting compliant.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

@codescene-delta-analysis codescene-delta-analysis Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gates Failed
Prevent hotspot decline (1 hotspot with Complex Method)
Enforce advisory code health rules (1 file with Complex Method)

Our agent can fix these. Install it.

Gates Passed
4 Quality Gates Passed

Reason for failure
Prevent hotspot decline Violations Code Health Impact
run_rust.py 1 rule in this hotspot 7.96 → 7.58 Suppress
Enforce advisory code health rules Violations Code Health Impact
run_rust.py 1 advisory rule 7.96 → 7.58 Suppress

See analysis details in CodeScene

Quality Gate Profile: Pay Down Tech Debt
Install CodeScene MCP: safeguard and uplift AI-generated code. Catch issues early with our IDE extension and CLI tool.

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