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

ponder-lab / Hybridize-Functions-Refactoring / #3467
90%

Build:
DEFAULT BRANCH: main
Ran 15 Oct 2026 04:50AM UTC
Jobs 1
Files 46
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

15 Oct 2026 04:35AM UTC coverage: 88.369% (+0.03%) from 88.342%
#3467

push

github

web-flow
Refuse a returned variable or tensor array, or a passed tensor spec, at the tf.function boundary (#1080)

* Refuse values tf.function cannot carry across its boundary

A function was converted when a value crossing its tf.function
boundary would not cross it as written, so the converted function, or
its caller, raised where the eager one ran. Measured on TensorFlow
2.9.3:

- A returned tf.Variable comes back as a tensor holding its value, so a
  caller that assigns to it or compares its ref() fails.
- A returned tf.TensorArray comes back as a tensor, so a caller that
  writes to it fails.
- A tf.TensorSpec passed as an argument makes the call raise ValueError.

A new analysis decides these from the points-to sets, by the type of
the allocation reached: a returned value, or an element of a returned
list, tuple, or dictionary, that is a variable or a tensor array, or a
tensor spec that a call site passes, also inside a container. A
function that has one fails a new precondition,
HAS_UNCROSSABLE_BOUNDARY_VALUES (36). A variable only read in the body
and a tensor array stacked before it is returned are left alone.

Three cases are pinned as not yet detected, with TODOs citing the
engine gaps: a tensor array (wala/ML#1035, modeled from Ariadne
0.52.105), a list built with += (wala/ML#1069), and a Keras weight
from add_weight (wala/ML#1068).

Part of #1075.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NTnpjPjJj2aZy1ZkUD1eAn

* Say the boundary converts a returned variable, not that it cannot carry one

Measured on TensorFlow 2.9.3, a tf.function that returns a tf.Variable
or a tf.TensorArray raises nothing: the boundary converts the value to
a tensor, so the eager object's identity and mutability are lost, and
a caller that assigns to the variable, compares its reference, or
writes to the array fails or means something else. Only a passed
tf.TensorSpec makes the call itself raise. The failure mess... (continued)

75 of 83 new or added lines in 4 files covered. (90.36%)

5136 of 5812 relevant lines covered (88.37%)

0.88 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
93.12
-0.12% edu.cuny.hunter.hybridize.core/src/edu/cuny/hunter/hybridize/core/analysis/Function.java
4
92.98
edu.cuny.hunter.hybridize.core/src/edu/cuny/hunter/hybridize/core/analysis/UncrossableBoundaryValueAnalysis.java
Jobs
ID Job ID Ran Files Coverage
1 #3467.1 15 Oct 2026 04:50AM UTC 46
88.37
Source Files on build #3467
  • Tree
  • List 46
  • Changed 3
  • Source Changed 3
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 0cd67291 on github
  • Prev Build on gh-readonly-queue/main/pr-1079-5b3c4dcee0c9d69f8b09c921b15e1f380b37189c
  • Next 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