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

ponder-lab / Hybridize-Functions-Refactoring / #2416 / 1
81%
main: 83%

Build:
Build:
LAST BUILD BRANCH: dependabot/github_actions/actions/setup-python-7
DEFAULT BRANCH: main
Ran 10 Jul 2026 03:00AM UTC
Files 32
Run time 1s
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

10 Jul 2026 02:56AM UTC coverage: 81.243% (+0.01%) from 81.23%
#2416.1

push

github

web-flow
Harden the numpy shape precondition: poison ambiguous descriptors and cache the type index (#752)

* Harden the numpy shape precondition: poison ambiguous descriptors, cache the index

Two post-merge review findings on #750:

- colorShapeFrom let the last writer win when a value received shape provenance
  from two conflicting sources (e.g. a phi merge), which could "prove" staticness
  from one source only. Poison such a value to an ambiguous descriptor (null
  source, so it resolves to ⊤/unprovable), the conservative outcome.
- indexTensorTypes was rebuilt on every appliesNumpyToParameters call, i.e. per
  call-graph node of every function. Build it once per function and reuse it
  across the function's nodes; indexTensorTypes is now the shared entry point.

Behavior-preserving on the corpus and the unit fixtures (no conflicting
descriptors arise there); suite 570 green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01He1ULx8nRoHzGicMryry1A

* Make indexTensorTypes package-private

It is only used within the analysis package (from Function); no need to
widen the API surface.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01He1ULx8nRoHzGicMryry1A

* Re-enqueue a value when its shape descriptor changes

colorShapeFrom only re-enqueued a value on first taint, so poisoning an
already-processed value to the ambiguous descriptor never re-evaluated its
uses, leaving a sink decided on the stale descriptor. Re-enqueue on any
descriptor change too; descriptors are monotone (unset -> concrete ->
ambiguous), so this terminates.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01He1ULx8nRoHzGicMryry1A

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

2079 of 2559 relevant lines covered (81.24%)

0.81 hits per line

Source Files on job #2416.1
  • Tree
  • List 32
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 2416
  • 6f685250 on github
  • Prev Job for on gh-readonly-queue/main/pr-752-0ce87ac5ddacf70f66817d61aba56c63ed6b1239 (##2408.1)
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