Skip to content

Releases: danafitkowski/cpp-cpm-engine

v2.9.34

24 May 16:34

Choose a tag to compare

v2.9.34 — audit-ledger closure wave

Closes 4 of 7 carryover items from AUDIT_LEDGER_v2.9.34.md plus HS3
(missing CLAUDE.md operating contract):

- HS3 / CLAUDE.md operating contract (repo root)
- #9 / alert investigation (23 alerts triaged)
- #10 / 1k DAG fixture with branching/merging
- #16 / cryptographic signoff stub + schema v2 wire format
- #17 / SOP checklist schema + validator

Partial close — #6 P6 expected-value (engineering scaffolding only;
P6-values portion stays user-blocked).

Engine math unchanged from v2.9.33; crossval 747/747 holds.

See CHANGELOG.md v2.9.34 entry for the full breakdown.

v2.9.33

24 May 14:37

Choose a tag to compare

v2.9.33 — audit-response pass 2 (closes 14 of 19 findings)

v2.9.32

24 May 14:05

Choose a tag to compare

v2.9.32 — audit-response wave + version-drift regression gate

v2.9.31

24 May 03:33

Choose a tag to compare

v2.9.31 — Forensic Strict Mode (court-grade run gate)

v2.9.30

24 May 03:03

Choose a tag to compare

v2.9.30 — Daubert verification packaging + coverage + calendar citations

v2.9.29

24 May 00:25

Choose a tag to compare

v2.9.29 — adversarial-audit second-pass residual cleanup

v2.9.28

24 May 00:02

Choose a tag to compare

v2.9.28 — adversarial-audit response (Daubert disclosure hygiene)

v2.9.27 — Audit closeout (13 items); crossval 444→747

18 May 14:39

Choose a tag to compare

v2.9.27 — Audit closeout + crossval expansion

Final addressable-scope release before v3.0. Closes 13 specific audit findings by direct file:line cross-reference, including all three longest-standing deferred paired-fix items.

Headline metric

Crossval JS↔Python bit-identical surface went from 444 → 747 checks across 43 fixtures, via backporting tf_working_days, ff, and ff_working_days to Python (F24 documented JS-only gap LIFTED).

Paired JS+Python fixes (the three deferred items)

  • R6 Completed-successor skip in backward pass (SCL Protocol §4 / AACE 29R-03 §4 retained-logic)
  • R12 data_date floor snaps forward to next workday on non-workday calendars
  • R21 Python add_work_days MonFri fast path (~250× speedup at 30d walks)

Python parity backports

  • R9 tf_working_days + _count_work_days_between helper
  • F24 ff + ff_working_days (full FF loop, FF/SF-binding-succ calendar correction)
  • A12-M1/M2/M4 topology hash hardenings: str() coercion, input_relationship_count vs hashed_relationship_count, algorithm: null for empty

Engine MED/HIGH

  • R10 Python _cal_for honors project_calendar fallback (was JS-only)
  • R6 MS_Start/SO constraint-widens-lf WARN (paired with existing MS_Finish/MFO WARN)
  • R18 5 method_ids gained AACE-canonical methodology labels (computeScheduleHealth, computeBayesianUpdate, computeKinematicDelay, computeTopologyHash, computeFloatBurndown)

Disclosure / docs / test

  • R16 DAUBERT/CONTRIBUTING crossval counts refreshed to 1071/747/43
  • R14 Array.isArray() topology-hash gate + coverage-gap caveat
  • R8 T3.18 in-progress test extended with TF/LF/CP assertions
  • R7 docs/api.md activity-code contract documented

Test state

Metric v2.9.26 v2.9.27
Unit tests 1056/0 1071/0
Crossval fixtures 43/0 43/0
Crossval checks 444/444 747/747

Audit ledger status

This release closes every patchable engineering item from the 20-agent audit ledger. Remaining items are all v3.0 architectural scope:

  1. Section D full calendar-awareness (fold Section C into runCPM)
  2. Welford's online variance for Bayesian
  3. Lognormal/Beta exact-quantile inverse-CDF CIs
  4. Sub-day lag precision (engine-wide ripple)
  5. Python TT_Hammock + TT_LOE implementation
  6. Engine epoch move (fixes R12 epoch collision)
  7. Hammock-of-hammocks LS_CEIL walker class

The v2.9.x audit-driven engineering wave is complete. v3.0 will be a design-and-implement cycle, not a patch wave.

v2.9.26 — Provenance sidecars + citation polish

18 May 11:38

Choose a tag to compare

v2.9.26 — Provenance sidecars + citation polish

3 audit items closed.

Provenance

  • R20 LOWnpm run attest writes cpm-engine.js.sha256 and python_reference/cpm.py.sha256 sidecar files for mechanical shasum -c verification

Bayesian citations

  • R22 LOW — Elshaer (2013) full citation; paraphrased "38%" percentage removed
  • R22 LOW — Bayesian + kinematic Python parity gap explicitly disclosed in DAUBERT.md

Test state

Metric v2.9.25 v2.9.26
Unit tests 1056/0 1056/0
Crossval 444/444 444/444

Audit ledger

~98 cumulative closed. ~12 still open (Python F4/F6 backports, hammock-of-hammocks LS walker, MCP-side, 7 v3.0 architectural).

v2.9.25 — Perf wave + Python parity partial

18 May 11:33

Choose a tag to compare

v2.9.25 — Perf wave + Python parity partial

Engine perf (3)

  • R21 OoS detector memoizes actual_start offsets (~500k fewer Date constructions on 25k-activity schedules)
  • R21 _isCleanMonFri uses bitmask not Set alloc (~200k fewer throw-away Sets per CPM run)
  • R21 Section D constraint helpers hoist projectStart parse (~300k fewer redundant Date constructions)

Python parity (1 partial)

  • R21 Python add_work_days caches holiday Set on calendar_info (avoids 73M list-to-set ops on 50k×365-holiday schedules). MonFri fast-path reverted — broke 444/444 → 440/444; paired-fix candidate documented.

Daubert doc (1)

  • R8 DAUBERT.md notes progress_override schedule mode is unsupported (retained-logic only, already alerted; now also in public disclosure docs).

Test state

Metric v2.9.24 v2.9.25
Unit tests 1056/0 1056/0
Crossval fixtures 43/0 43/0
Crossval checks 444/444 444/444

Audit ledger

~95 cumulative closed v2.9.13–v2.9.25. ~15-20 still open (Python F4/F6 backports, hammock FS hard-precedence, MCP-side). ~7 deferred to v3.0.