Skip to content

[Epic] Diff-driven E2E install selector — hack/select-install.sh + test-minimal (#2847 Track A) #3277

Description

@myasnikovdaniil

Summary

Implement the install-side analog of hack/select-e2e.sh: a diff-driven selector that, given the app(s) a PR touches, computes the minimal set of packages to install for the E2E run — instead of always provisioning the full isp-full platform. This is the concrete implementation of Track A of the diff-driven E2E epic (#2847).

Today select-e2e.sh already scopes which Chainsaw suites run by walking the PackageSource dependsOn graph (reverse direction). The install still brings up the whole platform. Scoping the install to just what the selected suites need is the remaining half.

Key design decisions

  • Reuse the real dependsOn graph in packages/core/platform/sources/*.yaml — no parallel install.deps / per-app *.deps files. Single source of truth; mirrors select-e2e.sh, walked in the forward direction.
  • dependsOn is install-ordering + readiness-gating only (see internal/operator/package_reconciler.go, buildDependsOn / areDependenciesReady) — it does not auto-install a dependency. So the enabled set must be the full explicit forward closure (app + every transitive dep), not just the leaf app.
  • Unlike the reverse (test-selection) walk, the forward (install) walk keeps the cozystack.cozystack-engine ordering edge — for install it is a genuine prerequisite.

Tasks

  • hack/select-install.sh — forward dependsOn closure over the PackageSource graph; input = target app suite(s), output = minimal package-name set
  • hack/select-install_test.bats — unit tests (single app, transitive chain, cycle, unknown source), run via hack/cozytest.sh
  • dependency-graph validator — reachability + cycle check against the real sources (fail if a source depends on a non-existent package)
  • test-minimal platform variant / bundle definition — the minimal always-on base (networking, engine, storage) that the closure layers onto via bundles.enabledPackages (needs a platform-variant design decision — see note)
  • wire the selector + test-minimal bundle into the pull-requests.yaml E2E install step

Sequencing

The selector + tests + validator are self-contained and land first (one PR). The test-minimal variant and the CI install-step wiring depend on a platform-variant design decision and land as a defined follow-up.

References

Activity

  1. added
    kind/featureCategorizes issue or PR as related to a new feature
    epicA large development increment that brings definite value to Cozystack users
    area/ciIssues or PRs related to CI workflows, GitHub Actions, automation
    area/testingIssues or PRs related to testing (e2e, bats, unit tests)
    on Jul 13, 2026
  2. myasnikovdaniil commented on Jul 13, 2026

    @myasnikovdaniil
    ContributorAuthor

    Superseded by the global CI tracking issue #3278. The install-selector detail (Track A of #2847) lives there as A8/A9.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/ciIssues or PRs related to CI workflows, GitHub Actions, automationarea/testingIssues or PRs related to testing (e2e, bats, unit tests)epicA large development increment that brings definite value to Cozystack userskind/featureCategorizes issue or PR as related to a new feature

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions