Commit 1f8f50d
committed
fix(pm): partition os-regen-merge.sh's step-1 conflicts by generatedness
The step-1 conflict report partitioned the conflicted set against the
`merge=os-regen` routing list alone, so `non_regen_conflicts` was the set
difference and nothing asked whether a path was generated. A generated
path that is deliberately NOT routed — `NOT_DRIVER_MANAGED` in
`scripts/regen-artifacts.mjs` — therefore drew the "NON-generated files,
resolve those by hand" message together with its "do not resolve
generated files textually" line, two sentences about one file with
nothing saying which governs.
The conflicted set is now partitioned by generatedness first and routing
second, into three classes: unrouted and undeclared (today's message,
unchanged), routed and MIXED (today's message, unchanged), and declared
in `NOT_DRIVER_MANAGED`, which gets a new per-path reading.
Class 3 is not one instruction, and the ledger is what shows it:
"resolve by regeneration" is right for three of its thirty tracked
entries and wrong for the rest, whose own entries say a merge must never
recompute them. The discriminator is the generated-region marker pair in
the conflicted file, not the entry's `gen` field, which is an accounting
field carried by every ratchet in the list.
For a marked file the report also answers the caveat instead of
delegating it: it reads both sides out of the index, strips the
generated regions from each, and says whether the remainders differ —
the PR #17835 shape, where taking a side dropped two hand-authored
regions silently with every gate green.
Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8
Co-authored-by: Claude <noreply@anthropic.com>1 parent 57343f7 commit 1f8f50d
1 file changed
Lines changed: 525 additions & 22 deletions
0 commit comments