Releases: danafitkowski/cpp-cpm-engine
v2.9.34
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
v2.9.33 — audit-response pass 2 (closes 14 of 19 findings)
v2.9.32
v2.9.32 — audit-response wave + version-drift regression gate
v2.9.31
v2.9.31 — Forensic Strict Mode (court-grade run gate)
v2.9.30
v2.9.30 — Daubert verification packaging + coverage + calendar citations
v2.9.29
v2.9.29 — adversarial-audit second-pass residual cleanup
v2.9.28
v2.9.28 — adversarial-audit response (Daubert disclosure hygiene)
v2.9.27 — Audit closeout (13 items); crossval 444→747
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_daysMonFri fast path (~250× speedup at 30d walks)
Python parity backports
- R9
tf_working_days+_count_work_days_betweenhelper - 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_countvshashed_relationship_count,algorithm: nullfor empty
Engine MED/HIGH
- R10 Python
_cal_forhonorsproject_calendarfallback (was JS-only) - R6 MS_Start/SO
constraint-widens-lfWARN (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:
- Section D full calendar-awareness (fold Section C into runCPM)
- Welford's online variance for Bayesian
- Lognormal/Beta exact-quantile inverse-CDF CIs
- Sub-day lag precision (engine-wide ripple)
- Python TT_Hammock + TT_LOE implementation
- Engine epoch move (fixes R12 epoch collision)
- 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
v2.9.26 — Provenance sidecars + citation polish
3 audit items closed.
Provenance
- R20 LOW —
npm run attestwritescpm-engine.js.sha256andpython_reference/cpm.py.sha256sidecar files for mechanicalshasum -cverification
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
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
_isCleanMonFriuses bitmask not Set alloc (~200k fewer throw-away Sets per CPM run) - R21 Section D constraint helpers hoist
projectStartparse (~300k fewer redundant Date constructions)
Python parity (1 partial)
- R21 Python
add_work_dayscaches 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_overrideschedule 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.