• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ponder-lab / Hybridize-Functions-Refactoring / #3121
86%
main: 89%

Build:
Build:
LAST BUILD BRANCH: 97ac5798fb8f6a41f1e42535260ebda1b2519942
DEFAULT BRANCH: main
Ran 14 Sep 2026 02:33AM UTC
Jobs 1
Files 42
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

14 Sep 2026 02:27AM UTC coverage: 85.55% (+0.02%) from 85.529%
#3121

push

github

web-flow
Assert the slice derivation the numpy walk depends on (#968)

* Assert the slice derivation the numpy walk depends on

`NumpyParameterFlowAnalysis` tracks a tensor parameter's taint through a
`x[a:b:c]` subscript, which is modeled as a call to the `slice` builtin. Until
Ariadne 0.52.102 that builtin's summary body returned its receiver, so the walk
carried the taint out through the callee's `SSAReturnInstruction` and no
consumer code was needed.

wala/ML#916 made the body return nothing, supplying an identical points-to
result through a builder constraint instead. The points-to set is unchanged,
but the def-use edge this analysis walks is gone, so the taint stops at the
slice and the numpy precondition no longer fires on a function whose taint
crosses one.

The derivation is a property of slicing rather than of how the builtin happens
to be summarized, so assert it here. The engine change is correct on its own
terms and is not reverted.

Two shapes regressed, and each gets a fixture:

  np.maximum(boxes[:2], 0.0)                    slice is a direct operand
  h = bboxA[:,3] - bboxA[:,1]; np.maximum(w, h) slice feeds arithmetic first

The second does not follow from the first. A change severing the derivation
only at a direct operand would leave it passing while the direct case
regressed, so neither fixture alone distinguishes those cases.

Fixes #967

* Pin the slice chain, and assert the colors are disjoint

Two additions from review.

A chained-slice fixture. The existing two fixtures each slice a bare parameter
exactly once, so neither exercises a slice whose receiver is another slice's
result. That chain reaches numpy only if coloring the inner slice's def
re-enqueues it and the outer slice then re-matches on it, so a derivation
asserted for a parameter but never re-entered would pass both existing fixtures
and fail here. Removing the branch fails all three.

An assertion that the two colors are disjoint. The branch added here partitions
on a valu... (continued)

6 of 6 new or added lines in 1 file covered. (100.0%)

3641 of 4256 relevant lines covered (85.55%)

0.86 hits per line

Jobs
ID Job ID Ran Files Coverage
1 #3121.1 14 Sep 2026 02:33AM UTC 42
85.55
Source Files on build #3121
  • Tree
  • List 42
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • c4651732 on github
  • Prev Build on main
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc