Three asks, no bugs reported:
1. disasm({target:'rom'}) runs the per-instruction M/X width dataflow on
65816 — the same widthRanges walk as target:'project': in-window rep/sep
followed (width-homogeneous ADDRMODE ranges) + entry-width inference
(8/8 first, others scored by desync symptoms). Re-decoding one range
under corrected widths is one call; no project regen that would discard
hand-maintained annotations. Composes with dataRanges (width carries
across data). Documented in the tool description.
2. breakpoint({on:'write'}) conditionWidth:16 (auto-inferred when
conditionValue > 255): 'equals' arms the core watch on the HIGH byte +
verifies the low byte host-side (a $2077 write doesn't satisfy word ==
$2000); 'increase'/'decrease' compare the word host-side each frame so a
16-bit counter's carry can't lie. valueWord/oldValueWord/watchedByte in
results; conditionValue schema 0-65535.
3. memory({op:'read', offsets, compact:true}) returns one {"0xOFF":"hex"}
map (~4x fewer tokens for sample-N-flags).
widthRanges/addrmode exported from common/reassemble.js (not in the vendored
kit — no parity impact). Tests: v0.94-feedback-round.test.js (7).
Reply: ~/Downloads/feedback/v0.94.0/MAINTAINER_REPLY.md. 1153/1153, lint
clean.