Skip to content

Release 1.2.0 - #25

Merged
remislp merged 1 commit into
masterfrom
release-1.2.0
Sep 11, 2026
Merged

remislp merged 1 commit into
masterfrom
release-1.2.0

Conversation

@remislp

@remislp remislp commented Sep 11, 2026

Copy link
Copy Markdown
Member

Seven merged pull requests have been waiting since 1.1.0, and one of them is now
blocking work elsewhere.

HJCFIT's fitting layer (DCPROGS/HJCFIT#194) is duck-typed on a mechanism and
needs Rate.is_free, which exists here on master and not in the published
1.1.0. Its [fitting] extra pins scalcs>=1.1.0, which is too loose — the
integration tests fail on the released wheel with 'Rate' object has no attribute 'is_free'.

A minor rather than a patch release, because it corrects computed values as
well as adding API.

#17 root bracketing for the asymptotic pdf — counts not recomputed when a bound moved, one-shot widening, the wrong state count, and det[W(s)] unusable at large |s| where it reaches 1e53 and changes sign hundreds of times in noise. Roots now refined by bisecting the eigenvalue count where the determinant cannot be trusted, and validated before being returned
#18 scsim re-exports burst segmentation from dcio — one implementation, not two
#20 the dARSdS sign. exact_mean_open_shut_time was too large by exactly twice the dead time, the conditional means by once. This changes numbers a caller will have seen
#21 impose_resolution checked against RESHJC2.FOR interval for interval
#22 the simulator checked against Q-matrix theory for multi-state mechanisms, not only the two-state case where a reciprocal rate is the answer
#23 qmatlib.H inverted sI − Q_FF directly, which fails exactly where the root search walks. The singularity is removable; only the factored form has a pole
#24 GPL-2.0-or-later, without which HJCFIT (GPL-3.0-or-later) could not depend on this at all

Verified against the built wheel

  • reports 1.2.0, both version files bumped — the versions-agree gate from Release 1.1.0 #16
    is what makes that hard to get wrong;
  • declares License-Expression: GPL-2.0-or-later;
  • carries its three data files (icon, About-box animation, sample mechanism);
  • Rate.is_free is present when installed from it into a clean environment,
    which is the thing HJCFIT#194 needs.

617 passing, 1 skipped.

Merge and I will tag v1.2.0.

🤖 Generated with Claude Code

Seven merged pull requests have been waiting since 1.1.0, and one of them is
now blocking work elsewhere: HJCFIT's fitting layer is duck-typed on a
mechanism and needs Rate.is_free, which exists here on master and not in the
published 1.1.0. Its [fitting] extra pins scalcs>=1.1.0, which is too loose --
the integration tests fail on the released wheel with "'Rate' object has no
attribute 'is_free'".

A minor rather than a patch release, because it corrects computed values as
well as adding API.

  #17  root bracketing for the asymptotic pdf. Counts were not recomputed when
       a search bound moved, widening happened once where it needed to repeat,
       and the upper bound was compared against the wrong state count. det[W(s)]
       is also unusable at large |s|, where it is of order 1e53 and changes sign
       hundreds of times in noise, so roots are now refined by bisecting the
       eigenvalue count where the determinant cannot be trusted. Roots are
       validated before being returned.
  #18  scsim re-exports burst segmentation from dcio; one implementation in the
       stack rather than two.
  #20  the dARSdS sign. exact_mean_open_shut_time was too large by exactly
       twice the dead time and the conditional means by once. This changes
       numbers a caller will have seen.
  #21  impose_resolution checked against RESHJC2.FOR interval for interval.
  #22  the simulator checked against Q-matrix theory for multi-state
       mechanisms, not only the two-state case where a reciprocal rate is the
       answer.
  #23  qmatlib.H inverted sI - QFF directly, which fails where the root search
       walks. The singularity is removable; only the factored form has a pole.
  #24  GPL-2.0-or-later rather than GPL-2.0-only, without which HJCFIT
       (GPL-3.0-or-later) could not depend on this at all.

Both version files are bumped; the versions-agree gate added in #16 is what
makes that hard to get wrong. Verified: the built wheel reports 1.2.0, carries
its three data files, declares GPL-2.0-or-later, and Rate.is_free is present
when installed from it into a clean environment.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@remislp
remislp merged commit fb8382e into master Sep 11, 2026
9 checks passed
@remislp
remislp deleted the release-1.2.0 branch September 11, 2026 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant