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

ponder-lab / Hybridize-Functions-Refactoring / #1440
71%
main: 72%

Build:
Build:
LAST BUILD BRANCH: warn/unknown-tf-function-arg
DEFAULT BRANCH: main
Ran 18 May 2026 07:08PM UTC
Jobs 1
Files 30
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

18 May 2026 07:04PM UTC coverage: 71.393%. Remained the same
#1440

push

travis-pro

web-flow
Document lattice ⊤/⊥ contract in `Parameter.inferTensorTypes`; pin behavior (#492)

* Document lattice ⊤/⊥ contract in `Parameter.inferTensorTypes`; pin behavior.

Closes #486.

The existing `inferTensorTypes` implementation already preserves the wala/ML lattice contract correctly: Ariadne emits `TensorType` instances with `null` dims for shape-⊤ (the convention documented in `com.ibm.wala.cast.python.ml/CONTRIBUTING.md`'s `Tensor Type Generators` section), and the iterator filters `state != null && !state.isEmpty()`, leaving an empty set when no entry is yielded. The lattice violation flagged in the issue was on the documentation side—the prior Javadoc claimed ⊤ and ⊥ were indistinguishable from the iterator output, conflating the generator-level convention with what reaches consumers.

Rewrite the Javadoc to describe the actual contract:

- The wala/ML lattice (`getDefaultShapes`/`getDefaultDTypes`) lives at the generator level, not at the `TensorTypeAnalysis` iterator level. By the time results reach the iterator, the generator outputs are accumulated into a `TensorVariable.state` (`Set<TensorType>`), and the iterator filters `state != null && !state.isEmpty()`.
- Hybridize sees only iterator output, which collapses three generator-side conditions—no bound `TensorVariable`, variable-level ⊤ (`state == null`), and variable-level ⊥ (`state.isEmpty()`)—into one indistinguishable observable: "no iterator entry."
- The TensorType-level shape-⊤ marker (`getDims() == null`) and dtype-⊤ marker (`getDType() == DType.UNKNOWN`) remain observable through the iterator when state is non-empty. The two axes are orthogonal per the `Tensor Types—getTensorTypes` note.

Keep the `IllegalStateException` for the `tensorVariable == null` branch: the iterator filters its output, so this branch is unreachable under the current contract; the throw surfaces a future invariant violation rather than silently coercing.

Add two regression tests:

- `testInferredTensorTypesUnkn... (continued)

1133 of 1587 relevant lines covered (71.39%)

0.71 hits per line

Jobs
ID Job ID Ran Files Coverage
1 #1440.1 18 May 2026 07:08PM UTC 30
71.39
Source Files on build #1440
  • Tree
  • List 30
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • e2fd2faf on github
  • Prev Build on main
  • Next Build on gh-readonly-queue/main/pr-492-484d1aa14abae54f98ca7edecee42b1473c6db43 (#26054387496)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc