Skip to content

Plan: Regression coverage for conditional action dependency manifests (3.14.5)#387

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

Plan: Regression coverage for conditional action dependency manifests (3.14.5)#387
leynos wants to merge 1 commit 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

Adds the execution plan for roadmap item 3.14.5 — Add regression coverage
for conditional action dependency manifests
. This PR contains the plan only
(docs/execplans/3-14-5-regression-coverage-for-conditional-action-dependency-manifests.md);
no test or production code is included. The plan must be approved before
implementation begins.

The implementation it covers (3.14.2–3.14.4) already exists, so the plan scopes
test and documentation work only. It was produced with a planning agent
team, reviewed and revised by a community-of-experts agent team (structural,
contract/correctness, alternatives/DX, and reliability/ops lenses), and
cross-checked against the codebase. Tooling facts (googletest, pretty_assertions)
were researched via Firecrawl.

What the plan delivers

Regression coverage for all four roadmap sub-bullets:

  1. Action-level when and foreach (integrated fixture; explicit action fan-out).
  2. Complementary nextest-vs-legacy branches selecting exactly one action,
    driven through the real which resolver (existing complementary tests
    are stubbed).
  3. Absent-command fallback without invoking shell(), asserted via
    StdlibState::is_impure() — the executable-discovery vs command-execution
    boundary.
  4. deps lowering into IR implicit_deps and Ninja build statements, for
    conditionally-selected actions, including the {{ item }}-in-deps
    interaction.

Layers: in-crate rstest unit tests (selection / no-shell), IR integration
tests, insta Ninja snapshots validated with real ninja, and one combined
BDD scenario. Hexagonal framing pins the boundary without restructuring code.

Notable design decisions (see Decision Log)

  • Injection uses the public StdlibConfig::with_path_override seam (not the
    private WhichConfig); in-crate placement is forced only by expand_foreach
    being pub(crate).
  • is_impure() is honestly scoped: it flips for shell/grep/fetch.
  • Property/bounded-model coverage of the same invariants is deferred to 4.2.x /
    4.3.2; ortho_config is out of scope.

Open questions for the approver

  1. googletest mandate. The brief requires googletest, but the expert review
    unanimously recommended dropping it (keeping only pretty_assertions) given
    zero prior use, unverified #[gtest]+#[rstest] interop under the pinned
    rstest 0.18.0, and trivial assertions. The plan keeps it confined and
    spike-gated
    ; the approver may instead choose pretty_assertions-only or
    googletest-throughout.
  2. BDD depth — reduced to a single combined scenario; confirm or expand.
  3. Stray src/stdlib/command/mod_backup.rs flagged for separate cleanup.

References

🤖 Generated with Claude Code

….14.5)

Draft an execution plan for roadmap item 3.14.5: regression coverage for
conditional action dependency manifests. The implementation (3.14.2-3.14.4)
already exists, so the plan scopes test and documentation work only.

The plan was developed with a planning agent team, reviewed and revised by a
community-of-experts agent team (structural, contract/correctness,
alternatives/DX, and reliability/ops lenses), and cross-checked against the
codebase. It covers all four roadmap sub-bullets, frames the work through the
manifest-time-expansion boundary (executable-discovery vs command-execution
ports), and records open questions for the approver.

Co-Authored-By: Claude Opus 4.8 (1M context) <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: e2f65de7-98e0-4f22-baef-36da49ee0fe0

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.

@leynos leynos changed the title Draft execplan: regression coverage for conditional action dependency manifests (3.14.5) Plan: Regression coverage for conditional action dependency manifests (3.14.5) Jun 19, 2026
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