Skip to content

Required checks run whenever their inputs change (path filters) #317

Open

Description

@irzhywau

Part of #194.

Part of #311 (Group D, CI consistency). Owner: not assigned. Task base and PR target: develop. Merge before #318 and #320 (same file).

Intended behavior

A required check runs its real work whenever any input it builds or calls changes. A skipped check proves nothing, so a skip happens only when no input changed.

Current behavior

  • The custody-harness-smoke filter (.github/workflows/ci.yml:390-411) lists custody, availability and IPFS providers, the protected-content crates and six elastos-server modules. It misses inputs that the smoke builds or calls:
    • scripts/setup-source-home.sh (called per scripts/custody-harness-ci-smoke.sh:72, 93, 385);
    • capsules/chain-provider/** (built at deploy/custody-host/Dockerfile:137);
    • elastos/crates/elastos-runtime/**;
    • elastos/Cargo.lock;
    • rust-toolchain.toml;
    • .github/workflows/ci.yml itself.
  • When no path matches, the job reports success without running the smoke (ci.yml:412-418), so the required check passes. Push and merge-group runs always run it.
  • The canary filter (.github/workflows/canary-holder-linux.yml:7) misses:
    • scripts/update-hop-compare.py (imported at line 74);
    • scripts/seed-kubo-cache.sh (line 65);
    • components.json (line 232);
    • the Cargo.lock files.

Implementation notes

Add the missing inputs. Add a policy test in scripts/ci-release-policy-test.py: it parses the job's scripts for repository paths they call, and asserts that the filter covers each one. The test keeps the filter in step with future script changes.

Done means

Activity

  1. added this to the 0.8.0 milestone on Oct 9, 2026
  2. andersalm commented on Oct 9, 2026

    @andersalm
    Contributor

    The independent adversarial review of #326 found a remaining local input-coverage gap. The current release trigger meets #319's narrow acceptance but misses changes to several inputs of ci-release-policy-test.py, including that test itself, CI/release workflows, the cache action, package-release-binaries.sh, installed-journey helpers and llama bundle tooling. prepare-release-platform-test.py and publish-platform-artifacts-test.py also remain hosted-only.

    Extend #317's input map to cover local lightweight policy/self-tests as well as hosted skip decisions. Each mapped input change must select its policy/fixture check; unrelated tooling keeps the basic formatting/product-data gate. Add negative fixtures for unknown and mixed inputs, and retain per-command failure/zero-case refusal. A public PR with clean checks still needs its hosted current-candidate checks.

    The same review notes that local RUSTC/wrapper/target environment settings can differ from CI even though RUSTFLAGS and CARGO_ENCODED_RUSTFLAGS are now controlled. Define the supported local compiler/target environment explicitly and test accidental overrides. Local checks provide early feedback; hosted checks retain the current acceptance boundary. These are follow-ups, not blockers to #326's passed scope.

  3. andersalm commented on Oct 13, 2026

    @andersalm
    Contributor

    Postponed to 0.8.1: CI cleanup/hardening; no workflow or deletion changes on release day.

  4. modified the milestones: 0.8.0, After 0.8.0 on Oct 13, 2026
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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions