v2.9.44: cross-calendar finish instants - #8
Merged
Merged
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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)
cpm-engine.jsandpython_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.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.After merge
Tag
v2.9.44on main soverify.ymlsigns the canonical witness, then commit therelease-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