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

ponder-lab / Hybridize-Functions-Refactoring / #2841
85%
main: 85%

Build:
Build:
LAST BUILD BRANCH: fcb0d91132da029cb55d766340a624866a5feda5
DEFAULT BRANCH: main
Ran 08 Aug 2026 03:54PM UTC
Jobs 1
Files 41
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

08 Aug 2026 03:50PM UTC coverage: 84.57% (+0.1%) from 84.452%
#2841

push

github

web-flow
Decline hybridizing a function called with a Keras symbolic tensor (#889)

* Decline hybridizing a function called with a Keras symbolic tensor

`tf.function` is one of the APIs a `KerasTensor` explicitly refuses, so
decorating a function whose call site passes one turns a working program
into one that raises a `TypeError` on the first call, before anything is
traced (#887, observed on TensorFlow2.0-Examples' YOLOv3, whose only
call site is Functional model construction in `train.py`). The hazard is
independent of `input_signature`: a bare decorator fails the same way,
and the shape and dtype the tool infers there are exactly right.

The marker is syntactic, so no dynamic reasoning is needed: every
spelling of the producing API reads the one summarized
`tensorflow/keras/layers/Input` object, which makes the question the
provenance of the argument value in the caller's own IR. A new
caller-direction analysis resolves it backwards — an `Input` result is
symbolic, a built-in layer application propagates symbolicness from its
inputs (`Dense(...)(kt)` is a `KerasTensor`; the same layer on an eager
tensor is not), and a phi is symbolic only when every operand is, since
a merge makes the answer path-dependent, which is ignorance under this
analysis's allow-on-unknown polarity. Across call sites the quantifier
is existential: one site passing a symbolic tensor breaks the decorated
function.

Code 23 joins the safety family in `check()`, before the benefit signal,
and the evaluator gains the matching `alwaysCheckKerasSymbolicArguments`
knob and column. Validated two-sided: pre-fix `symbolic` and `derived`
both hybridize (P1) with the verdict unset, post-fix both decline while
`eager` still converts, and all three arms were runtime-verified on the
pinned TF 2.9.3 — decorating either of the first two raises the
`TypeError`, decorating `eager` runs. The class runs 632/632.

Fixes #887.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Ses... (continued)

69 of 76 new or added lines in 4 files covered. (90.79%)

3327 of 3934 relevant lines covered (84.57%)

0.85 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
90.89
-0.19% edu.cuny.hunter.hybridize.core/src/edu/cuny/hunter/hybridize/core/analysis/Function.java
3
94.34
edu.cuny.hunter.hybridize.core/src/edu/cuny/hunter/hybridize/core/analysis/KerasSymbolicArgumentAnalysis.java
Jobs
ID Job ID Ran Files Coverage
1 #2841.1 08 Aug 2026 03:54PM UTC 41
84.57
Source Files on build #2841
  • Tree
  • List 41
  • Changed 3
  • Source Changed 3
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 92351f50 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