Commit 7612e18
committed
fix(cpp): filter skip fields out of metadata.common_input before op init (CI review)
CI diff-fuzz on this PR found a new go-vs-cpp divergence (seed
1784954760 divergence_000076) that the fixture-level fix did not cover.
pine-go's SetMetadata (pine.go:159-168) filters skip control fields
out of metadata.common_input before handing it to the operator via
MetadataAware; the operator sees only business fields. My earlier #174
fix gated OperatorInput::common on the excluded_common set — the
skip field's VALUE returns nil — but I never filtered the field NAME
out of the list handed to operator init(). Ops that iterate
cfg.metadata.common_input to build a salt/hash (reorder_shuffle_by_salt
loops over common_inputs_ in execute()) then see an extra entry:
Go common_input=[count] salt = "17|"
cpp common_input=[count,_skip] salt = "17||"
Same downstream cascade as #174: different salt → different shuffle
order → cascading downstream item order divergence.
Fix: at engine construction, filter cfg.skip out of
op_cfg.metadata.common_input before calling op->init(cfg). Matches
Go's SetMetadata filter step and applies to every operator uniformly,
not just shuffle. DAG dependency inference sees the unfiltered read
set via CommonReadFields at plan time, so wiring is unaffected.
Verified: the failing CI seed 1784954760 100 rounds is now 100/0;
seed 20260725 500 rounds also 100/0; nightly divergence #174/#177
regressions still pass; cross-validate 3/9 → 98/98 + 91/91.1 parent ca2baf0 commit 7612e18
1 file changed
Lines changed: 22 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
355 | 355 | | |
356 | 356 | | |
357 | 357 | | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
358 | 380 | | |
359 | 381 | | |
360 | 382 | | |
| |||
0 commit comments