Review follow-up: native control marker duplication
Scope: fable-review.md P5-3's $statusbar_native_mark_slot /
$tab_native_mark_slot near-twin finding. Inspected on main after f4d16032.
Both setters contained the same bounds check and byte/bit addressing, with
only the backing region different. The corresponding *_native_is queries
also repeated window-slot lookup and bit extraction. They now delegate to
one setter and one query helper. The family wrappers still name their own
region directly, retaining the compiler's symbolic ownership checks and all
existing callers. The source change removes 14 net lines.
This does not change native tab/status painting, their special dispatch interceptors, storage size, slot lifetime, or the division between guest layout and native rendering. Those are separate correctness questions.
test/test-native-control-markers.js passes before and after the refactor.
It covers every window slot, all bit positions and byte boundaries,
non-boolean nonzero marks, independent tab/status state, clearing, unknown
HWNDs, and negative/oversized indices without changing bitmap or adjacent
bytes. The existing MenuHelp test also passes against the refactor.
The complete source closure compiles through the render harness. Fragment
balance and region declaration checks pass; the exact-duplicate census
remains 144 groups / 551 members (these were near-twins, not exact clones).
The property-sheet copy/callback/ownership/lifetime regression and full
canonical/compat build pass as well. The build log is
/private/tmp/wa-native-markers-build.log; symbolic owners and automatic test
tier membership pass without edits to their declarations or exception lists.
During selection of this item, the review's later duplicate version-fixture
finding was rechecked: it is already addressed by 65706a4a. Both
test-file-version-info.js and test-win16-version.js import
buildVersionBlob / buildVersionPe from tools/pe-version.js. No duplicate
builder work was needed, and no version-API runtime behavior was changed.