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

ponder-lab / Hybridize-Functions-Refactoring / #2371
83%

Build:
DEFAULT BRANCH: main
Ran 07 Jul 2026 11:00PM UTC
Jobs 1
Files 32
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

07 Jul 2026 10:51PM UTC coverage: 80.202% (+0.2%) from 80.045%
#2371

push

github

web-flow
Add an eager-only-call safety precondition (#741)

A function whose body (transitively) invokes an eager-only API such as `Tensor.numpy()` crashes on first call under `@tf.function` tracing, so hybridizing it does not preserve semantics. `Util.callsEagerOnlyApi` mirrors the `performsTensorFlowOp` walk (#712): user bodies only, transitive over callees, walking through TensorFlow library nodes to reach callbacks. Detection is by callee attribute name (`numpy`) rather than receiver typing: the receiver's tensor typing is frequently unavailable (e.g. the result of a user-defined callable), and a missed call hybridizes a crasher while an over-match only declines an optimization.

The failure (`HAS_EAGER_ONLY_CALLS`, code 15) is checked ahead of the barren benefit signal: safety precedes benefit. An undetermined result (no call-graph node) neither blocks nor passes, mirroring the recursion and tensor-computation checks. The computation shares the tensor-parameter-candidate gate; `alwaysCheckEagerOnlyCalls` forces it on every function for corpus-wide measurement, mirroring `alwaysCheckTensorComputation`, wired through `EvaluationOption`, the evaluator handler, `run-headless-evaluator.sh` (`CHECK_EAGER_ONLY_CALLS`), and new "eager-only calls" columns in `functions.csv` and the settings record.

`testEagerOnlyCallsBlockHybridization` pins the direct and transitive cases, the still-hybridizable clean sibling (P1), and that an eager-only call on a function's result is attributed to the caller, not the function.


Claude-Session: https://claude.ai/code/session_01He1ULx8nRoHzGicMryry1A

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

39 of 45 new or added lines in 4 files covered. (86.67%)

1827 of 2278 relevant lines covered (80.2%)

0.8 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
93.92
-0.31% edu.cuny.hunter.hybridize.core/src/edu/cuny/hunter/hybridize/core/analysis/Function.java
2
70.46
-0.19% edu.cuny.hunter.hybridize.core/src/edu/cuny/hunter/hybridize/core/refactorings/HybridizeFunctionRefactoringProcessor.java
Jobs
ID Job ID Ran Files Coverage
1 #2371.1 07 Jul 2026 11:01PM UTC 32
80.2
Source Files on build #2371
  • Tree
  • List 32
  • Changed 4
  • Source Changed 4
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 0b5afa2b on github
  • Prev Build on gh-readonly-queue/main/pr-712-df5174c8dba5e1d6e2bcc365e1bb87b90624ad77
  • 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