Commit ece82a9
committed
fix: backport tf_working_days to Python + crossval (audit R9 LOW)
JS computed tf_working_days (TF in working days on the activity's own
calendar, signed for negative-float). Python emitted only tf (calendar
days). An expert quoting JS's tf=13 against a MonFri-cal activity
would be impeached when P6 / Python showed 10.
Backported:
python_reference/cpm.py: new _count_work_days_between() helper
mirroring JS cpm-engine.js:814. Reuses the v2.9.27 holiday-Set
cache for performance.
python_reference/cpm.py: per-node tf_working_days populated in the
post-pass loop (lines 1326-1335), mirroring JS:2270.
Crossval harness extended:
- PY_HARNESS extractor now emits node.tf_working_days
- JS extractor now emits node.tf_working_days
- compareFixture compares the two bit-identically when both sides
emit the field
Crossval went from 444 → 545 checks (+101 tf_working_days
comparisons across all 43 fixtures); all bit-identical.
Tests: 1064/0 unit, 43/43 crossval (545/545 checks).1 parent cb8fc65 commit ece82a9
2 files changed
Lines changed: 70 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
| 131 | + | |
| 132 | + | |
131 | 133 | | |
132 | 134 | | |
133 | 135 | | |
| |||
173 | 175 | | |
174 | 176 | | |
175 | 177 | | |
| 178 | + | |
| 179 | + | |
176 | 180 | | |
177 | 181 | | |
178 | 182 | | |
| |||
285 | 289 | | |
286 | 290 | | |
287 | 291 | | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
288 | 298 | | |
289 | 299 | | |
290 | 300 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
361 | 361 | | |
362 | 362 | | |
363 | 363 | | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
364 | 414 | | |
365 | 415 | | |
366 | 416 | | |
| |||
1269 | 1319 | | |
1270 | 1320 | | |
1271 | 1321 | | |
| 1322 | + | |
| 1323 | + | |
| 1324 | + | |
| 1325 | + | |
| 1326 | + | |
| 1327 | + | |
| 1328 | + | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
1272 | 1332 | | |
1273 | 1333 | | |
1274 | 1334 | | |
| |||
0 commit comments