Skip to content

guard-tree's no-cargo guards depend on python3 + site-packages: 10 guards (16 rows) red without yaml/tomli, 21 guards (30 rows) red with no python3 — latent on every runner that differs from intel's #3697

Closed as not planned

Description

@noahgift

Measured on the local 0.70 batch (release/0.70-batch-1 @ 59f7fe77a, main a877fa056 plus 9 constituents) with bash scripts/guard_tree.sh --no-cargo under four interpreter shapes, each as a python3 stub first on PATH:

python3 is… result
the box's 3.13 87 checks, 0 failed
3.10 with its site-packages (this box has tomli + PyYAML) 87 checks, 0 failed
3.10 -S (no site-packages: no tomli, no PyYAML) 16 FAIL rows across 10 guards
absent (a stub exiting 127) 30 FAIL rows across 21 guards

Red under -S (10): check_arch_constraints_contract_covers_fallback (self-test, run), check_kind_labels_derived (s, r), check_parity_block_refusals (s, r), check_parity_receipt (r), check_pathonly_devdeps_unused_in_src (r), check_perf_receipt_fields_have_producers (s, r), check_roadmap_completion_is_cited (r), check_roadmap_diff_additive (r), check_roadmap_fragment_required (s, r), check_roadmap_ids_unique (s, r).

Additionally red with no python3 (11 more): check_cascade_clean_room_gate (r), check_complexity_ratchet (r), check_dogfood_coverage (r), check_fleet_pv_shapes_gate (s), check_milestone_cut (s, r), check_nextest_ci_profile_no_fail_fast (s, r), check_no_hosted_runners (s, r), check_ont_ratchet (s), check_reconcile (r), check_t2_preflight_verdict (s), check_thresholds_in_matrix (r).

Why this is latent, not red today: every runner that takes guard-tree today has a python3 with PyYAML. intel's 3.10 has no TOML reader, which is exactly what reddened check_pathonly_devdeps_unused_in_src on intel-clean-room-3 (run 35591815643, fixed by #3692 → UNMEASURED). A runner image that drops PyYAML, or ships no python3 (the sovereign-ci image has none by design), reds these guards for a reason no PR can fix: the per-host "flake" shape.

What lands (0.70): per guard, one of:

Plus one guard-tree row: guard_tree.sh --no-cargo under a python3 -S stub and a no-python3 stub. It must end 0 failed, with every python-dependent guard either python-free or printing UNMEASURED, so a new python-dependent guard can't land red-on-another-runner.

My own check_nextest_ci_profile_no_fail_fast.sh (#3626) is on the no-python3 list. It reads TOML through a purpose-built fallback on 3.10, but with no interpreter at all it reports ENV rc 2, which guard_tree counts as FAIL: same class, (b) applies.

Refs #3692 #3694 #3651 #3647 #3626

Activity

  1. added this to the 0.70.0 milestone on Sep 21, 2026
  2. noahgift commented on Sep 21, 2026

    @noahgift
    MemberAuthor

    Re-measured after #3689 (with #3692) merged, on release/0.70-batch-1 @ 0a8fc204f (main 5f9bd9344 merged in): 3.10 -S → 15 FAIL rows / 9 guards (check_pathonly_devdeps_unused_in_src dropped out: #3692 now prints UNMEASURED … reason=no-toml-reader and guard_tree surfaces it); no python3 → still 30 rows / 21 guards. #3692 covers the missing TOML reader, not a missing interpreter: with no python3 the pathonly scanner exits 127 and the guard still ends ENV … (scan rc=2) → FAIL. So (b) above applies to pathonly's rc-127 path too.

  3. added
    kind:codeWork is a code change (derived rule, #4159)
    on Sep 24, 2026
  4. modified the milestones: 0.70.0, backlog on Sep 24, 2026
  5. noahgift commented on Sep 25, 2026

    @noahgift
    MemberAuthor

    Parked by APR-EPIC-001: over S3 budget (rank 50/142). Reopen = pull. Applied by aprender-d1: claude+agy both said close, apr shadow row recorded (handoff/close-quorum-2026-09-25.json).

  6. added
    parkedClosed over epic budget (APR-EPIC-001 rule 5). Reopen = pull.
    on Sep 25, 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

    bugSomething isn't workingkind:codeWork is a code change (derived rule, #4159)parkedClosed over epic budget (APR-EPIC-001 rule 5). Reopen = pull.

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions