Skip to content

v2.9.44: cross-calendar finish instants - #8

Merged
danafitkowski merged 2 commits into
mainfrom
v2.9.44-cross-calendar-instants
Sep 16, 2026
Merged

danafitkowski merged 2 commits into
mainfrom
v2.9.44-cross-calendar-instants

Conversation

@danafitkowski

Copy link
Copy Markdown
Owner

Summary

v2.9.44 is an engine-math release: cross-calendar logic moves to P6's finish-instant semantics. A successor is driven from its predecessor's finish instant (the close of the last worked period) and starts at the first working instant of its own calendar; a lag is working time on the relationship-lag calendar counted from that instant; a finish milestone sits at the instant that drove it; a completed predecessor's instant comes from the time of its actual finish; the data date honours its time of day; and the backward pass mirrors all of it, so forward and backward walks are inverses on cross-calendar links. Same-calendar networks are unchanged.

Measured on a 2,898-activity real export with five active calendars: once the 40 activities whose stored dates the file's own logic cannot produce were pinned, every one of the 25 residual root divergences from P6's stored early dates was a cross-calendar instant shape, and after the change the engine reproduces P6 on every activity outside those 40 and their successors on every calendar. The CHANGELOG entry carries the detail.

Release contents (two commits)

  1. The engine, paired in cpm-engine.js and python_reference/cpm.py (regenerated from the canonical engine by the same derivation as before), with XC-1..10 unit checks, the CHANGELOG entry and the package version.
  2. The release rotation: Python reference README pin and transcript, coverage re-measured on these bytes (93.79% statements / 83.32% branches / 94.69% functions on 1,288 checks), the 13-case P6 comparison matrix recomputed under v2.9.44 against the same capture (13 / 13), and every current-state version and count reference moved to v2.9.44.

Verification

  • npm run test:all: unit suite 1,288 / 0; public crossval 46 fixtures, 1009 of 1015 comparisons executed and bit-identical (the same 6 mutual skips); citation, client-name, truncation, SOP, reissue, crypto-signoff, P6-comparison and corpus-DAG gates pass; the version gate passes with its expected pre-tag WARN that the v2.9.44 evidence packet does not exist yet.
  • Three existing expectations that pinned the old boundary walker's under-count (V2942-7, RL-7) were updated with their derivation.

After merge

Tag v2.9.44 on main so verify.yml signs the canonical witness, then commit the release-evidence/v2.9.44/ packet (CI witness, Sigstore verification output, Rekor entry, hash pins, verify transcript, validation summary), which also fills the manifest's commit row.

🤖 Generated with Claude Code

danafitkowski and others added 2 commits September 15, 2026 11:35
…predecessor's finish instant on their own calendar; backward pass mirrored

See the CHANGELOG entry for the P6 semantics, the measurements on a
2,898-activity five-calendar export, and the three updated expectations
(V2942-7, RL-7) with their derivations. Release docs (README, DAUBERT,
VERIFY_RELEASE evidence, tag, attestation) are not updated here.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…e-measured, P6 matrix recomputed, docs rotated

python_reference/cpm.py is the canonical engine's v2.9.44 bytes put through the
same derivation as before (the strip of the surfaces the harness does not
import), so the public 46-fixture crossval reads 1009 of 1015 comparisons
executed and bit-identical with the same 6 mutual skips. Its README pin,
provenance note and expected-output transcript rotate with it.

Coverage was re-measured on these bytes rather than carried forward: 93.79%
statements (9,718 / 10,361), 83.32% branches (2,084 / 2,501), 94.69%
functions (125 / 132) on the 1,288-check unit suite; DAUBERT S2.1, its
reproduction paragraph, the README badge anchor and the VERIFY_RELEASE
manifest all say so. The 13-case P6 comparison matrix was recomputed under
the new engine against the same 2026-08-11 capture and still reads 13 / 13;
the per-case engine outputs, the outputs summary and the generated matrix are
refreshed, the hand-written capture notes in each case README are kept with
only their engine-version heading rotated.

Every current-state version and count reference moves to v2.9.44 / 1,288
(README, DAUBERT, VERIFY_RELEASE, FORENSIC_USE_SOP, CONTRIBUTING, SECURITY,
docs/api, docs/jurisdictions, ROADMAP_OPEN status note); historic mentions
keep the phrasing the version gate recognises. The VERIFY_RELEASE manifest's
commit row is populated in the release-evidence packet once the tag exists.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@danafitkowski
danafitkowski merged commit 10dcc2c into main Sep 16, 2026
20 checks passed
@danafitkowski
danafitkowski deleted the v2.9.44-cross-calendar-instants branch September 16, 2026 02:22
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