Skip to content

docs(dom): the paint/ and query/ plan — item 2 of the order of 2026-09-25 - #2765

Merged
MarcosBrendonDePaula merged 1 commit into
mainfrom
docs/paint-query-plan
Sep 25, 2026
Merged

MarcosBrendonDePaula merged 1 commit into
mainfrom
docs/paint-query-plan

Conversation

@MarcosBrendonDePaula

Copy link
Copy Markdown
Member

Plan for item 2 of the #2731 order: Phase A moves the paint list, stacking, transforms and decoration into paint/ and the geometry queries into query/ (zero logic, byte-identical parity); Phase B makes the hit-test a traversal of the fragments.

🤖 Generated with Claude Code

https://claude.ai/code/session_01ERaR4gN9psf59ofSFpqZaf

@MarcosBrendonDePaula
MarcosBrendonDePaula merged commit dcacce9 into main Sep 25, 2026
@MarcosBrendonDePaula
MarcosBrendonDePaula deleted the docs/paint-query-plan branch September 25, 2026 22:13
@github-actions

Copy link
Copy Markdown
Contributor

Cross-runtime parity (RTS vs Bun vs Node)

Metric Value
Total 1516
✅ Pass 1275
❌ RTS diverges 180
⚠️ Bun ≠ Node 0
💥 RTS error 60
🚫 Rejected 0

Divergences detected

claude-array-index-upper-boundary — rts_diverge

Bun output:

maxIndexLen=4294967295
maxIndexVal=last
maxIndexKeys=4294967294
maxIndexIn=false true
beyondLen=0
beyondKeys=4294967295
beyondVal=beyond
aboveLen=0 keys=4294967296
setMaxLen=4294967295 keys=0
setBeyond=RangeError
stillMax=4294967295
ctorMax=4294967295
ctorBeyond=RangeError
ctorNeg=RangeError
ctorFrac=RangeError
hugeLen=4000000001 hugeKeys=1 hugeLast=x
hugeHas=true false

Node output:

maxIndexLen=4294967295
maxIndexVal=last
maxIndexKeys=4294967294
maxIndexIn=false true
beyondLen=0
beyondKeys=4294967295
beyondVal=beyond
aboveLen=0 keys=4294967296
setMaxLen=4294967295 keys=0
setBeyond=RangeError
stillMax=4294967295
ctorMax=4294967295
ctorBeyond=RangeError
ctorNeg=RangeError
ctorFrac=RangeError
hugeLen=4000000001 hugeKeys=1 hugeLast=x
hugeHas=true false

RTS output:

maxIndexLen=4294967295
maxIndexVal=last
maxIndexKeys=4294967294
maxIndexIn=false true
beyondLen=0
beyondKeys=4294967295
beyondVal=beyond
aboveLen=0 keys=4294967296
setMaxLen=4294967295 keys=0
stillMax=4294967296
ctorMax=4294967295
ctorBeyond=RangeError
ctorNeg=RangeError
ctorFrac=RangeError
hugeLen=4000000001 hugeKeys=1 hugeLast=undefined
hugeHas=true false
claude-array-length-truncation-and-nonwritable — rts_diverge

Bun output:

trunc=[0,1] len=2
idx2=undefined has2=false
grow=5 holes=yynnn
strLen=1 [1]
throw -1 -> RangeError
throw 1.5 -> RangeError
throw NaN -> RangeError
throw 4294967296 -> RangeError
throw Infinity -> RangeError
blockedSet=false
blockedLen=3 kept=0,1,22
desc=true,false,false
frozenSet=false len=2
frozenDesc=false

Node output:

trunc=[0,1] len=2
idx2=undefined has2=false
grow=5 holes=yynnn
strLen=1 [1]
throw -1 -> RangeError
throw 1.5 -> RangeError
throw NaN -> RangeError
throw 4294967296 -> RangeError
throw Infinity -> RangeError
blockedSet=false
blockedLen=3 kept=0,1,22
desc=true,false,false
frozenSet=false len=2
frozenDesc=false

RTS output:

trunc=[0,1] len=2
idx2=undefined has2=false
grow=5 holes=yynnn
strLen=1 []
ok -1 -> -1
ok 1.5 -> 1.5
ok NaN -> NaN
ok 4294967296 -> 4294967296
ok Infinity -> Infinity
blockedSet=true
blockedLen=0 kept=
desc=true,false,false
frozenSet=false len=2
frozenDesc=false
claude-fill-shares-reference-and-clamps — rts_diverge

Bun output:

shared=9,9,9 same=true
all=9,9,9,9,9
from2=0,1,9,9,9
fromNeg2=0,1,2,9,9
two_four=0,1,9,9,4
neg=0,1,9,9,4
startGtEnd=0,1,2,3,4
beyond=0,1,2,3,4
nan=0,1,2,3,4
undefEnd=0,9,9,9,9
frac=0,9,9,3,4
holesIn=yyyyy v=1,0,0,0,5
identity=true
like=undefined,z,z
frozen=TypeError

Node output:

shared=9,9,9 same=true
all=9,9,9,9,9
from2=0,1,9,9,9
fromNeg2=0,1,2,9,9
two_four=0,1,9,9,4
neg=0,1,9,9,4
startGtEnd=0,1,2,3,4
beyond=0,1,2,3,4
nan=0,1,2,3,4
undefEnd=0,9,9,9,9
frac=0,9,9,3,4
holesIn=yyyyy v=1,0,0,0,5
identity=true
like=undefined,z,z
frozen=TypeError

RTS output:

shared=9,9,9 same=true
all=9,9,9,9,9
from2=0,1,9,9,9
fromNeg2=0,1,2,9,9
two_four=0,1,9,9,4
neg=0,1,9,9,4
startGtEnd=0,1,2,3,4
beyond=0,1,2,3,4
nan=0,1,2,3,4
undefEnd=0,9,9,9,9
frac=0,9,9,3,4
holesIn=yyyyy v=1,0,0,0,5
identity=true
like=undefined,undefined,undefined
claude-from-async-iterables-and-arraylike — rts_diverge

Bun output:

iterable=10,20 order=y1 m0 y2 m1
arrayLike=a,undefined,c
arrayLikeIn=yyy
negLen=0
nanLen=0
fracLen=2
strLen=2
noLen=0
string=3
stringLike=3
mapArity=2,2
ctor=C len=2 v=12
badMap=TypeError
pulledAfterBadMap=false
set=1,2
map=1:a
of=1 ctor=3

Node output:

iterable=10,20 order=y1 m0 y2 m1
arrayLike=a,undefined,c
arrayLikeIn=yyy
negLen=0
nanLen=0
fracLen=2
strLen=2
noLen=0
string=3
stringLike=3
mapArity=2,2
ctor=C len=2 v=12
badMap=TypeError
pulledAfterBadMap=false
set=1,2
map=1:a
of=1 ctor=3

RTS output:

iterable=10,20 order=y1 m0 y2 m1
arrayLike=a,undefined,c
arrayLikeIn=yyy
negLen=0
nanLen=0
fracLen=2
strLen=2
noLen=0
string=3
stringLike=3
mapArity=3,3
ctor=C len=2 v=12
pulledAfterBadMap=true
set=1,2
map=1:a
of=1 ctor=3
claude-generic-methods-on-arraylike — rts_diverge

Bun output:

join=a-b-c
slice=["b","c"]
indexOf=1
map=["a!","b!","c!"]
filter=["a","c"]
includes=true
at=c
pushLen=2 v=xy
pop=y len=1 has1=false
strLength=1,2
negLength=|
fracLength=1,2
sparseVisits=1
sparseJoin=,mid,
strJoin=a.b.c
strMap=["A","B"]
strSlice=["b","c"]
onNumber=[]
onBool=|
onNull=TypeError
onUndef=TypeError

Node output:

join=a-b-c
slice=["b","c"]
indexOf=1
map=["a!","b!","c!"]
filter=["a","c"]
includes=true
at=c
pushLen=2 v=xy
pop=y len=1 has1=false
strLength=1,2
negLength=|
fracLength=1,2
sparseVisits=1
sparseJoin=,mid,
strJoin=a.b.c
strMap=["A","B"]
strSlice=["b","c"]
onNumber=[]
onBool=|
onNull=TypeError
onUndef=TypeError

RTS output:

join=a-b-c
slice=["b","c"]
indexOf=undefined
map=["a!","b!","c!"]
filter=["a","c"]
includes=false
at=c
pushLen=0 v=undefinedundefined
pop=undefined len=0 has1=false
strLength=undefined
negLength=|
fracLength=1,2
sparseVisits=1
sparseJoin=,mid,
strJoin=undefined
strMap=undefined
strSlice=undefined
onNumber=undefined
onBool=undefined|
claude-join-cycle-detection — rts_error

Bun output:

self=1,2,
selfToString=1,2,
mutual_b=1-2,
mutual_c=2-1,
triple=||9
again=1,2,
obj=O,1
nested=1,2,3,4
nestedStr=1,2,3,4

Node output:

self=1,2,
selfToString=1,2,
mutual_b=1-2,
mutual_c=2-1,
triple=||9
again=1,2,
obj=O,1
nested=1,2,3,4
nestedStr=1,2,3,4

RTS output:


claude-push-pop-shift-unshift-boundaries — rts_diverge

Bun output:

popEmpty=undefined len=0
shiftEmpty=undefined len=0
pushNone=2
pushMany=3
unshiftNone=2
unshiftMany=3
unshiftHoles=yyny v=a,1,,3
shiftHole=undefined len=3 in=yny
popHole=undefined len=1
genericPush=3 len=3 v=c
genericPop=c len=2 has2=false
noLenPush=1 len=1 v=x
strLenPush=2 v=b type=number
pushOverflow=TypeError
frozenPopThrew=true
frozenLen=2
returnType=number number undefined
sparseShift=undefined len=3 keys=2

Node output:

popEmpty=undefined len=0
shiftEmpty=undefined len=0
pushNone=2
pushMany=3
unshiftNone=2
unshiftMany=3
unshiftHoles=yyny v=a,1,,3
shiftHole=undefined len=3 in=yny
popHole=undefined len=1
genericPush=3 len=3 v=c
genericPop=c len=2 has2=false
noLenPush=1 len=1 v=x
strLenPush=2 v=b type=number
pushOverflow=TypeError
frozenPopThrew=true
frozenLen=2
returnType=number number undefined
sparseShift=undefined len=3 keys=2

RTS output:

popEmpty=undefined len=0
shiftEmpty=undefined len=0
pushNone=2
pushMany=3
unshiftNone=2
unshiftMany=3
unshiftHoles=yyny v=a,1,,3
shiftHole=undefined len=3 in=yny
popHole=undefined len=1
genericPush=undefined len=2 v=undefined
genericPop=undefined len=2 has2=false
noLenPush=undefined len=undefined v=undefined
strLenPush=1 v=undefined type=string
frozenPopThrew=true
frozenLen=2
returnType=number number undefined
sparseShift=undefined len=3 keys=2
claude-reverse-holes-and-arraylike — rts_diverge

Bun output:

in=ynyny v=4,,2,,0
oddIn=yny v=2,,0
holeOnlyLen=1 in0=false
identity=true len=3 v=3,2,1
toRevIn=yyy v=2,undefined,0
like=c,hole,a
onString=TypeError

Node output:

in=ynyny v=4,,2,,0
oddIn=yny v=2,,0
holeOnlyLen=1 in0=false
identity=true len=3 v=3,2,1
toRevIn=yyy v=2,undefined,0
like=c,hole,a
onString=TypeError

RTS output:

in=ynyny v=4,,2,,0
oddIn=yny v=2,,0
holeOnlyLen=1 in0=false
identity=true len=3 v=3,2,1
toRevIn=yyy v=2,undefined,0
like=a,hole,c
claude-species-and-subclass-derivation — rts_diverge

Bun output:

isSub=true isArr=true
map=true
filter=true
slice=true
splice=true
concat=true
flat=true
flatMap=true
toSorted=false
toReversed=false
toSpliced=false
with=false
join=string
reduceType=number
speciesArray=false isArr=true
nullSpecies=true
badSpecies=TypeError
ctorCalls=0:undefined 1:3 1:0
ofSub=true fromSub=true
arraySpecies=true
subSpecies=true

Node output:

isSub=true isArr=true
map=true
filter=true
slice=true
splice=true
concat=true
flat=true
flatMap=true
toSorted=false
toReversed=false
toSpliced=false
with=false
join=string
reduceType=number
speciesArray=false isArr=true
nullSpecies=true
badSpecies=TypeError
ctorCalls=0:undefined 1:3 1:0
ofSub=true fromSub=true
arraySpecies=true
subSpecies=true

RTS output:

isSub=true isArr=true
map=true
filter=true
slice=true
splice=true
concat=true
flat=true
flatMap=false
toSorted=false
toReversed=false
toSpliced=false
with=false
join=string
reduceType=number
speciesArray=false isArr=true
nullSpecies=true
ctorCalls=0:undefined 1:3 1:0
ofSub=true fromSub=true
arraySpecies=true
subSpecies=true
claude-splice-negative-and-overflow-args — rts_error

Bun output:

start2 removed=[2,3,4] rest=[0,1] len=2
startNeg2 removed=[3,4] rest=[0,1,2] len=3
startNeg99 removed=[0,1,2,3,4] rest=[] len=0
start99 removed=[] rest=[0,1,2,3,4] len=5
startNaN removed=[0,1,2,3,4] rest=[] len=0
startUndef removed=[0,1,2,3,4] rest=[] len=0
count_neg5 removed=[] rest=[0,1,2,3,4] len=5
count_99 removed=[1,2,3,4] rest=[0] len=1
count_NaN removed=[] rest=[0,1,2,3,4] len=5
count0_ins removed=[] rest=[0,a,b,1,2,3,4] len=7
neg1_1_ins removed=[4] rest=[0,1,2,3,x] len=5
none removed=[] rest=[0,1,2,3,4] len=5
frac removed=[1,2,3,4] rest=[0] len=1
strings removed=[2] rest=[0,1,3,4] len=4
grow=1,a,b,c,2 retIsArray=true retLen=0
remIn=nyn rem=,3,
leftIn=yy left=1,5

Node output:

start2 removed=[2,3,4] rest=[0,1] len=2
startNeg2 removed=[3,4] rest=[0,1,2] len=3
startNeg99 removed=[0,1,2,3,4] rest=[] len=0
start99 removed=[] rest=[0,1,2,3,4] len=5
startNaN removed=[0,1,2,3,4] rest=[] len=0
startUndef removed=[0,1,2,3,4] rest=[] len=0
count_neg5 removed=[] rest=[0,1,2,3,4] len=5
count_99 removed=[1,2,3,4] rest=[0] len=1
count_NaN removed=[] rest=[0,1,2,3,4] len=5
count0_ins removed=[] rest=[0,a,b,1,2,3,4] len=7
neg1_1_ins removed=[4] rest=[0,1,2,3,x] len=5
none removed=[] rest=[0,1,2,3,4] len=5
frac removed=[1,2,3,4] rest=[0] len=1
strings removed=[2] rest=[0,1,3,4] len=4
grow=1,a,b,c,2 retIsArray=true retLen=0
remIn=nyn rem=,3,
leftIn=yy left=1,5

RTS output:

start2 removed=[2,3,4] rest=[0,1] len=2
startNeg2 removed=[3,4] rest=[0,1,2] len=3
startNeg99 removed=[0,1,2,3,4] rest=[] len=0
start99 removed=[] rest=[0,1,2,3,4] len=5
startNaN removed=[0,1,2,3,4] rest=[] len=0
startUndef removed=[0,1,2,3,4] rest=[] len=0
count_neg5 removed=[] rest=[0,1,2,3,4] len=5
count_99 removed=[1,2,3,4] rest=[0] len=1
count_NaN removed=[] rest=[0,1,2,3,4] len=5
count0_ins removed=[] rest=[0,a,b,1,2,3,4] len=7
neg1_1_ins removed=[4] rest=[0,1,2,3,x] len=5
none removed=[] rest=[0,1,2,3,4] len=5
frac removed=[1,2,3,4] rest=[0] len=1
claude2-array-length-and-defineproperty-interplay — rts_diverge

Bun output:

defineSmaller=true 2[0,1]
shrinkAndLock=true 1[0]
lockedDesc={"value":1,"writable":false,"enumerable":false,"configurable":false}
pushAfterLock=TypeError:1
setAfterLock=false 1[0]
indexWriteAfterLock=false 1[0]
index0WriteAfterLock=true v=y
unlock=false
sameValueRedefine=true
makeEnumerable=false
makeConfigurable=false
makeAccessor=false
cDesc={"value":1,"writable":true,"enumerable":false,"configurable":false}
blocked=false 3[0,1,2]
blockedAgain=false 3[0,1,2]
blockedGrow=true len=9
defineIndex5=true 6[0,5]
defineIndex0=true 6[0,5]
defineStrKey=true 6[0,5,007]
defineFloatKey=true 6[0,5,007,1.5]
accessorIndex=1[0] v=computed join=computed json=["computed"]
accessorMap=["computed"]
nonEnumIndex=2[0] join=1,2 json=[1,2]
nonEnumForEach=2
nonEnumForIn=0

Node output:

defineSmaller=true 2[0,1]
shrinkAndLock=true 1[0]
lockedDesc={"value":1,"writable":false,"enumerable":false,"configurable":false}
pushAfterLock=TypeError:1
setAfterLock=false 1[0]
indexWriteAfterLock=false 1[0]
index0WriteAfterLock=true v=y
unlock=false
sameValueRedefine=true
makeEnumerable=false
makeConfigurable=false
makeAccessor=false
cDesc={"value":1,"writable":true,"enumerable":false,"configurable":false}
blocked=false 3[0,1,2]
blockedAgain=false 3[0,1,2]
blockedGrow=true len=9
defineIndex5=true 6[0,5]
defineIndex0=true 6[0,5]
defineStrKey=true 6[0,5,007]
defineFloatKey=true 6[0,5,007,1.5]
accessorIndex=1[0] v=computed join=computed json=["computed"]
accessorMap=["computed"]
nonEnumIndex=2[0] join=1,2 json=[1,2]
nonEnumForEach=2
nonEnumForIn=0

RTS output:

defineSmaller=true 2[0,1]
shrinkAndLock=true 1[0]
lockedDesc={"value":1,"writable":true,"enumerable":false,"configurable":false}
pushAfterLock=no-throw:2
setAfterLock=true 5[0,1]
indexWriteAfterLock=true 5[0,1]
index0WriteAfterLock=true v=y
unlock=true
sameValueRedefine=true
makeEnumerable=false
makeConfigurable=false
makeAccessor=false
cDesc={"value":1,"writable":true,"enumerable":false,"configurable":false}
blocked=false 3[0,1,2]
blockedAgain=true 1[0]
blockedGrow=true len=9
defineIndex5=true 6[0,5]
defineIndex0=true 6[0,5]
defineStrKey=true 6[0,5,007]
defineFloatKey=true 6[0,5,007,1.5]
accessorIndex=0[0] v=undefined join= json=[]
accessorMap=[]
nonEnumIndex=2[0,1] join=1,2 json=[1,2]
nonEnumForEach=2
nonEnumForIn=0,1
claude2-lastindexof-and-search-direction — rts_diverge

Bun output:

idx_default=0 last_default=3
idx_from3=3 last_from3=3
idx_from0=2 last_from0=-1
idx_neg1=5 last_neg1=5
idx_neg99=0 last_neg99=-1
idx_99=-1 last_99=3
idx_nan=0 last_nan=0
idx_undef=0 last_undef=0
idx_frac=1 last_frac=1
idx_str=4 last_str=4
arity1=5 arity2=-1
lengths=1,1
strNum=-1,-1
nan=-1,-1
negZero=0,0
objIdentity=0,-1
holes=0,2
allHoles=-1,-1
empty=-1,-1
generic=0,2
shortLen=0
findLast=undefined findLastIndex=2
findLastProbes=3
findLastOrder=30,20
findOrder=10,20

Node output:

idx_default=0 last_default=3
idx_from3=3 last_from3=3
idx_from0=2 last_from0=-1
idx_neg1=5 last_neg1=5
idx_neg99=0 last_neg99=-1
idx_99=-1 last_99=3
idx_nan=0 last_nan=0
idx_undef=0 last_undef=0
idx_frac=1 last_frac=1
idx_str=4 last_str=4
arity1=5 arity2=-1
lengths=1,1
strNum=-1,-1
nan=-1,-1
negZero=0,0
objIdentity=0,-1
holes=0,2
allHoles=-1,-1
empty=-1,-1
generic=0,2
shortLen=0
findLast=undefined findLastIndex=2
findLastProbes=3
findLastOrder=30,20
findOrder=10,20

RTS output:

idx_default=0 last_default=3
idx_from3=3 last_from3=3
idx_from0=2 last_from0=-1
idx_neg1=5 last_neg1=5
idx_neg99=0 last_neg99=-1
idx_99=-1 last_99=3
idx_nan=0 last_nan=3
idx_undef=0 last_undef=3
idx_frac=1 last_frac=1
idx_str=1 last_str=-1
arity1=5 arity2=5
lengths=1,1
strNum=-1,-1
nan=-1,-1
negZero=0,0
objIdentity=0,-1
holes=0,2
allHoles=-1,-1
empty=-1,-1
generic=undefined,undefined
shortLen=undefined
findLast=undefined findLastIndex=2
findLastProbes=3
findLastOrder=30,20
findOrder=10,20
claude2-spread-vs-from-vs-concat-protocols — rts_error

Bun output:

spread=it0,it1 pulls=pull0 pull1 pull2
from=it0,it1 pulls=pull0 pull1 pull2
concat=1 pulls=
sliceCall=i0,i1,i2 pulls=
patchedSpread=A,B
patchedFrom=A,B
patchedSlice=1,2,3
patchedConcat=1,2,3
patchedJoin=1,2,3
patchedForOf=A,B
holes spread=yyy from=yyy slice=yny concat=yny
strSpread=2 strFrom=2 strSlice=3
setSpread=1,2 setSliceLen=0
callSpread=2:it0|it1
objSpread={"0":"i0","1":"i1","2":"i2","length":3}
objSpreadArray={"0":1,"2":3}
objSpreadString={"0":"a","1":"b"}
spreadPlain=TypeError
objSpreadNull={"k":1}
fromPlain=0
badIterSpread=TypeError
badIterFrom=TypeError
undefIterFrom=z

Node output:

spread=it0,it1 pulls=pull0 pull1 pull2
from=it0,it1 pulls=pull0 pull1 pull2
concat=1 pulls=
sliceCall=i0,i1,i2 pulls=
patchedSpread=A,B
patchedFrom=A,B
patchedSlice=1,2,3
patchedConcat=1,2,3
patchedJoin=1,2,3
patchedForOf=A,B
holes spread=yyy from=yyy slice=yny concat=yny
strSpread=2 strFrom=2 strSlice=3
setSpread=1,2 setSliceLen=0
callSpread=2:it0|it1
objSpread={"0":"i0","1":"i1","2":"i2","length":3}
objSpreadArray={"0":1,"2":3}
objSpreadString={"0":"a","1":"b"}
spreadPlain=TypeError
objSpreadNull={"k":1}
fromPlain=0
badIterSpread=TypeError
badIterFrom=TypeError
undefIterFrom=z

RTS output:

spread=it0,it1 pulls=pull0 pull1 pull2
from=it0,it1 pulls=pull0 pull1 pull2
concat=1 pulls=
sliceCall=i0,i1,i2 pulls=
patchedSpread=1,2,3
patchedFrom=1,2,3
patchedSlice=1,2,3
patchedConcat=1,2,3
patchedJoin=1,2,3
patchedForOf=A,B
holes spread=yyy from=yyy slice=yny concat=yny
codex3_021_array_length_shrink_rollback — rts_diverge

Bun output:

true 3 0,1,2
2 undefined undefined

Node output:

true 3 0,1,2
2 undefined undefined

RTS output:

false 1 0
undefined undefined undefined
codex3_022_array_map_holes_getter_mutation — rts_diverge

Bun output:

0:10|1:2|3:4
4 0,1,3 [20,4,null,8]
5

Node output:

0:10|1:2|3:4
4 0,1,3 [20,4,null,8]
5

RTS output:

0:1|1:2|2:3|3:4
4 0,1,2,3 [2,4,6,8]
4
codex3_025_array_sort_accessor_sideeffects — rts_diverge

Bun output:

2 3
get0|set0:1

Node output:

2 3
get0|set0:1

RTS output:

2 3
claude-asintn-asuintn-wrapping — rts_diverge

Bun output:

bits=0 v=0 int=0 uint=0
bits=0 v=1 int=0 uint=0
bits=0 v=-1 int=0 uint=0
bits=0 v=255 int=0 uint=0
bits=1 v=0 int=0 uint=0
bits=1 v=1 int=-1 uint=1
bits=1 v=2 int=0 uint=0
bits=1 v=3 int=-1 uint=1
bits=1 v=-1 int=-1 uint=1
bits=1 v=-2 int=0 uint=0
bits=8 v=127 int=127 uint=127
bits=8 v=128 int=-128 uint=128
bits=8 v=255 int=-1 uint=255
bits=8 v=256 int=0 uint=0
bits=8 v=-1 int=-1 uint=255
bits=8 v=-128 int=-128 uint=128
bits=8 v=-129 int=127 uint=127
bits=32 v=2147483647 int=2147483647 uint=2147483647
bits=32 v=2147483648 int=-2147483648 uint=2147483648
bits=32 v=4294967295 int=-1 uint=4294967295
bits=32 v=4294967296 int=0 uint=0
bits=32 v=-2147483648 int=-2147483648 uint=2147483648
bits=64 v=9223372036854775807 int=9223372036854775807 uint=9223372036854775807
bits=64 v=9223372036854775808 int=-9223372036854775808 uint=9223372036854775808
bits=64 v=18446744073709551615 int=-1 uint=18446744073709551615
bits=64 v=18446744073709551616 int=0 uint=0
bits=64 v=-9223372036854775808 int=-9223372036854775808 uint=9223372036854775808
bits=64 v=-9223372036854775809 int=9223372036854775807 uint=9223372036854775807
bits=128 v=1606938044258990275541962092341162602522202993782792835301376 int=0 uint=0
bits=128 v=-1606938044258990275541962092341162602522202993782792835301376 int=0 uint=0
idempotent=true
floatBits=44
strBits=44
negBits=RangeError
numberValue=TypeError
strValue=44
type=bigint

Node output:

bits=0 v=0 int=0 uint=0
bits=0 v=1 int=0 uint=0
bits=0 v=-1 int=0 uint=0
bits=0 v=255 int=0 uint=0
bits=1 v=0 int=0 uint=0
bits=1 v=1 int=-1 uint=1
bits=1 v=2 int=0 uint=0
bits=1 v=3 int=-1 uint=1
bits=1 v=-1 int=-1 uint=1
bits=1 v=-2 int=0 uint=0
bits=8 v=127 int=127 uint=127
bits=8 v=128 int=-128 uint=128
bits=8 v=255 int=-1 uint=255
bits=8 v=256 int=0 uint=0
bits=8 v=-1 int=-1 uint=255
bits=8 v=-128 int=-128 uint=128
bits=8 v=-129 int=127 uint=127
bits=32 v=2147483647 int=2147483647 uint=2147483647
bits=32 v=2147483648 int=-2147483648 uint=2147483648
bits=32 v=4294967295 int=-1 uint=4294967295
bits=32 v=4294967296 int=0 uint=0
bits=32 v=-2147483648 int=-2147483648 uint=2147483648
bits=64 v=9223372036854775807 int=9223372036854775807 uint=9223372036854775807
bits=64 v=9223372036854775808 int=-9223372036854775808 uint=9223372036854775808
bits=64 v=18446744073709551615 int=-1 uint=18446744073709551615
bits=64 v=18446744073709551616 int=0 uint=0
bits=64 v=-9223372036854775808 int=-9223372036854775808 uint=9223372036854775808
bits=64 v=-9223372036854775809 int=9223372036854775807 uint=9223372036854775807
bits=128 v=1606938044258990275541962092341162602522202993782792835301376 int=0 uint=0
bits=128 v=-1606938044258990275541962092341162602522202993782792835301376 int=0 uint=0
idempotent=true
floatBits=44
strBits=44
negBits=RangeError
numberValue=TypeError
strValue=44
type=bigint

RTS output:

bits=0 v=0 int=0 uint=0
bits=0 v=1 int=0 uint=0
bits=0 v=-1 int=0 uint=0
bits=0 v=255 int=0 uint=0
bits=1 v=0 int=0 uint=0
bits=1 v=1 int=-1 uint=1
bits=1 v=2 int=0 uint=0
bits=1 v=3 int=-1 uint=1
bits=1 v=-1 int=-1 uint=1
bits=1 v=-2 int=0 uint=0
bits=8 v=127 int=127 uint=127
bits=8 v=128 int=-128 uint=128
bits=8 v=255 int=-1 uint=255
bits=8 v=256 int=0 uint=0
bits=8 v=-1 int=-1 uint=255
bits=8 v=-128 int=-128 uint=128
bits=8 v=-129 int=127 uint=127
bits=32 v=2147483647 int=2147483647 uint=2147483647
bits=32 v=2147483648 int=-2147483648 uint=2147483648
bits=32 v=4294967295 int=-1 uint=4294967295
bits=32 v=4294967296 int=0 uint=0
bits=32 v=-2147483648 int=-2147483648 uint=2147483648
bits=64 v=9223372036854775807 int=9223372036854775807 uint=9223372036854775807
bits=64 v=9223372036854775808 int=-9223372036854775808 uint=9223372036854775808
bits=64 v=18446744073709551615 int=-1 uint=18446744073709551615
bits=64 v=18446744073709551616 int=0 uint=0
bits=64 v=-9223372036854775808 int=-9223372036854775808 uint=9223372036854775808
bits=64 v=-9223372036854775809 int=9223372036854775807 uint=9223372036854775807
bits=128 v=1606938044258990275541962092341162602522202993782792835301376 int=0 uint=0
bits=128 v=-1606938044258990275541962092341162602522202993782792835301376 int=0 uint=0
idempotent=true
floatBits=44
strBits=44
negBits=RangeError
strValue=undefined
type=bigint
claude-bigint-constructor-string-forms — rts_diverge

Bun output:

plain=10n
padded=10n
tabbed=10n
empty=0n
blank=0n
nbsp_only=0n
bom_wrapped=10n
plus=10n
minus=-10n
minus_zero=0n
plus_zero=0n
leading_zeros=7n
inner_space!SyntaxError
trailing_junk!SyntaxError
long=123456789012345678901234567890n
hex_lower=31n
hex_upper=31n
binary=5n
binary_upper=5n
octal=15n
octal_upper=15n
hex_signed!SyntaxError
hex_plus!SyntaxError
bare_0x!SyntaxError
legacy_octal=17n
fraction!SyntaxError
trailing_dot!SyntaxError
leading_dot!SyntaxError
exponent!SyntaxError
exponent_upper!SyntaxError
separator!SyntaxError
bigint_suffix!SyntaxError
infinity!SyntaxError
neg_infinity!SyntaxError
nan_string!SyntaxError
num_int=10n
num_neg=-10n
num_zero=0n
num_negzero=0n
num_fraction!RangeError
num_tiny_fraction!RangeError
num_nan!RangeError
num_infinity!RangeError
num_neg_infinity!RangeError
num_2pow53=9007199254740992n
num_2pow53_plus1_literal=9007199254740992n
num_1e21=1000000000000000000000n
num_max_value=179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368n
num_min_value!RangeError
true=1n
false=0n
null!TypeError
undefined!TypeError
symbol!TypeError
bigint_itself=7n
empty_array=0n
array_one=15n
array_two!SyntaxError
array_nested=7n
plain_object!SyntaxError
valueof_num=7n
valueof_frac!RangeError
valueof_string=16n
tostring_only=42n
number_wrapper=9n
string_wrapper=9n
bigint_wrapper=9n
new_BigInt!TypeError
BigInt_length=1
BigInt_name=BigInt
has_prototype=object
proto_tag=BigInt
asIntN_length=2
asUintN_length=2

Node output:

plain=10n
padded=10n
tabbed=10n
empty=0n
blank=0n
nbsp_only=0n
bom_wrapped=10n
plus=10n
minus=-10n
minus_zero=0n
plus_zero=0n
leading_zeros=7n
inner_space!SyntaxError
trailing_junk!SyntaxError
long=123456789012345678901234567890n
hex_lower=31n
hex_upper=31n
binary=5n
binary_upper=5n
octal=15n
octal_upper=15n
hex_signed!SyntaxError
hex_plus!SyntaxError
bare_0x!SyntaxError
legacy_octal=17n
fraction!SyntaxError
trailing_dot!SyntaxError
leading_dot!SyntaxError
exponent!SyntaxError
exponent_upper!SyntaxError
separator!SyntaxError
bigint_suffix!SyntaxError
infinity!SyntaxError
neg_infinity!SyntaxError
nan_string!SyntaxError
num_int=10n
num_neg=-10n
num_zero=0n
num_negzero=0n
num_fraction!RangeError
num_tiny_fraction!RangeError
num_nan!RangeError
num_infinity!RangeError
num_neg_infinity!RangeError
num_2pow53=9007199254740992n
num_2pow53_plus1_literal=9007199254740992n
num_1e21=1000000000000000000000n
num_max_value=179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368n
num_min_value!RangeError
true=1n
false=0n
null!TypeError
undefined!TypeError
symbol!TypeError
bigint_itself=7n
empty_array=0n
array_one=15n
array_two!SyntaxError
array_nested=7n
plain_object!SyntaxError
valueof_num=7n
valueof_frac!RangeError
valueof_string=16n
tostring_only=42n
number_wrapper=9n
string_wrapper=9n
bigint_wrapper=9n
new_BigInt!TypeError
BigInt_length=1
BigInt_name=BigInt
has_prototype=object
proto_tag=BigInt
asIntN_length=2
asUintN_length=2

RTS output:

plain=10n
padded=10n
tabbed=10n
empty=0n
blank=0n
nbsp_only=0n
bom_wrapped=10n
plus=10n
minus=-10n
minus_zero=0n
plus_zero=0n
leading_zeros=7n
inner_space=undefinedn
trailing_junk=undefinedn
long=123456789012345678901234567890n
hex_lower=31n
hex_upper=31n
binary=5n
binary_upper=5n
octal=15n
octal_upper=15n
hex_signed=undefinedn
hex_plus=undefinedn
bare_0x=undefinedn
legacy_octal=17n
fraction=undefinedn
trailing_dot=undefinedn
leading_dot=undefinedn
exponent=undefinedn
exponent_upper=undefinedn
separator=undefinedn
bigint_suffix=undefinedn
infinity=undefinedn
neg_infinity=undefinedn
nan_string=undefinedn
num_int=10n
num_neg=-10n
num_zero=0n
num_negzero=0n
num_fraction=undefinedn
num_tiny_fraction=undefinedn
num_nan=undefinedn
num_infinity=undefinedn
num_neg_infinity=undefinedn
num_2pow53=9007199254740992n
num_2pow53_plus1_literal=9007199254740992n
num_1e21=1000000000000000000000n
num_max_value=179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368n
num_min_value=undefinedn
true=1n
false=0n
null=undefinedn
undefined=undefinedn
symbol=undefinedn
bigint_itself=7n
empty_array=undefinedn
array_one=undefinedn
array_two=undefinedn
array_nested=undefinedn
plain_object=undefinedn
valueof_num=undefinedn
valueof_frac=undefinedn
valueof_string=undefinedn
tostring_only=undefinedn
number_wrapper=undefinedn
string_wrapper=undefinedn
bigint_wrapper=undefinedn
new_BigInt=undefined
BigInt_length=1
BigInt_name=BigInt
has_prototype=object
proto_tag=BigInt
asIntN_length=2
asUintN_length=2
claude-bigint-division-shifts-and-bitwise — rts_diverge

Bun output:

div_pp=3
div_np=-3
div_pn=-3
div_nn=3
div_exact=2
div_smaller=0
div_smaller_neg=0
div_huge=142857142857142857142857142857
mod_pp=1
mod_np=-1
mod_pn=1
mod_nn=-1
mod_exact=0
mod_smaller=1
identity=-7
div_by_zero!RangeError
mod_by_zero!RangeError
zero_div_zero!RangeError
zero_div_one=0
neg_zero_literal=0
neg_zero_is_zero=true
pow=1024
pow_zero=1
pow_neg_base_odd=-8
pow_neg_base_even=16
pow_neg_exp!RangeError
pow_zero_neg_exp!RangeError
pow_one_neg_exp!RangeError
pow_big=18446744073709551616
shl=256
shl_big=1267650600228229401496703205376
shl_neg_count=2
shr=16
shr_neg_count=256
shr_to_zero=0
shr_neg_value=-1
shr_neg_value2=-3
shr_neg_far=-1
shr_pos_far=0
shl_neg_value=-8
ushr!TypeError
not_5=-6
not_neg1=0
not_0=-1
and_neg=255
and_neg_neg=-2
or_neg=-1
xor_self_neg=0
xor_neg=-6
and_big=0
or_big=1267650600228229401496703205377
asIntN_0=0
asUintN_0=0
asIntN_1_of_1=-1
asIntN_1_of_0=0
asIntN_1_of_neg1=-1
asUintN_1_of_3=1
asUintN_1_of_neg1=1
asIntN_3_of_7=-1
asIntN_3_of_4=-4
asUintN_3_of_neg1=7
asIntN_64_wrap=-9223372036854775808
asUintN_64_wrap=18446744073709551615
asIntN_neg_width!RangeError
asIntN_frac_width=-1
asIntN_string_width=-1
asIntN_number_value!TypeError

Node output:

div_pp=3
div_np=-3
div_pn=-3
div_nn=3
div_exact=2
div_smaller=0
div_smaller_neg=0
div_huge=142857142857142857142857142857
mod_pp=1
mod_np=-1
mod_pn=1
mod_nn=-1
mod_exact=0
mod_smaller=1
identity=-7
div_by_zero!RangeError
mod_by_zero!RangeError
zero_div_zero!RangeError
zero_div_one=0
neg_zero_literal=0
neg_zero_is_zero=true
pow=1024
pow_zero=1
pow_neg_base_odd=-8
pow_neg_base_even=16
pow_neg_exp!RangeError
pow_zero_neg_exp!RangeError
pow_one_neg_exp!RangeError
pow_big=18446744073709551616
shl=256
shl_big=1267650600228229401496703205376
shl_neg_count=2
shr=16
shr_neg_count=256
shr_to_zero=0
shr_neg_value=-1
shr_neg_value2=-3
shr_neg_far=-1
shr_pos_far=0
shl_neg_value=-8
ushr!TypeError
not_5=-6
not_neg1=0
not_0=-1
and_neg=255
and_neg_neg=-2
or_neg=-1
xor_self_neg=0
xor_neg=-6
and_big=0
or_big=1267650600228229401496703205377
asIntN_0=0
asUintN_0=0
asIntN_1_of_1=-1
asIntN_1_of_0=0
asIntN_1_of_neg1=-1
asUintN_1_of_3=1
asUintN_1_of_neg1=1
asIntN_3_of_7=-1
asIntN_3_of_4=-4
asUintN_3_of_neg1=7
asIntN_64_wrap=-9223372036854775808
asUintN_64_wrap=18446744073709551615
asIntN_neg_width!RangeError
asIntN_frac_width=-1
asIntN_string_width=-1
asIntN_number_value!TypeError

RTS output:

div_pp=3
div_np=-3
div_pn=-3
div_nn=3
div_exact=2
div_smaller=0
div_smaller_neg=0
div_huge=142857142857142857142857142857
mod_pp=1
mod_np=-1
mod_pn=1
mod_nn=-1
mod_exact=0
mod_smaller=1
identity=-7
div_by_zero!RangeError
mod_by_zero!RangeError
zero_div_zero!RangeError
zero_div_one=0
neg_zero_literal=0
neg_zero_is_zero=false
pow=1024
pow_zero=1
pow_neg_base_odd=-8
pow_neg_base_even=16
pow_neg_exp!RangeError
pow_zero_neg_exp!RangeError
pow_one_neg_exp!RangeError
pow_big=18446744073709551616
shl=256
shl_big=1267650600228229401496703205376
shl_neg_count=2
shr=16
shr_neg_count=256
shr_to_zero=0
shr_neg_value=-1
shr_neg_value2=-3
shr_neg_far=-1
shr_pos_far=0
shl_neg_value=-8
ushr=0
not_5=-6
not_neg1=0
not_0=-1
and_neg=255
and_neg_neg=-2
or_neg=-1
xor_self_neg=0
xor_neg=-6
and_big=0
or_big=1267650600228229401496703205377
asIntN_0=0
asUintN_0=0
asIntN_1_of_1=-1
asIntN_1_of_0=0
asIntN_1_of_neg1=-1
asUintN_1_of_3=1
asUintN_1_of_neg1=1
asIntN_3_of_7=-1
asIntN_3_of_4=-4
asUintN_3_of_neg1=7
asIntN_64_wrap=-9223372036854775808
asUintN_64_wrap=18446744073709551615
asIntN_neg_width!RangeError
asIntN_frac_width=-1
asIntN_string_width=-1
asIntN_number_value=undefined
claude-bigint-json-sort-and-stringify — rts_diverge

Bun output:

bare!TypeError
in_object!TypeError
in_array!TypeError
nested!TypeError
wrapper!TypeError
as_key={"1":2}
zero!TypeError
replacer={"a":"1","b":2}
replacer_number={"a":5}
replacer_sees_bigint=object,bigint
own_toJSON={"a":"one"}
--- parse ---
parsed_typeof=number
parsed_value=1.2345678901234568e+29
parsed_lost=9007199254740992
parsed_collides=true
reviver_sees=number
--- sort ---
default=-1,0,1,10,100,2,9
numeric=-1,0,1,2,9,10,100
mixed_default=1,10,2,9
toSorted=-1,0,1,10,100,2,9
comparator_returning_bigint!TypeError
--- stringification ---
String=1234567890123456789012345
template=-42
concat=v=42
join=1-2-3
array_toString=1,2
Array_from_map=2,4
toStringTag=BigInt
keys_of_object=1,2
--- toJSON escape hatch ---
with_toJSON_bare="1"
with_toJSON_object={"a":"1","b":["2"]}
with_toJSON_wrapper="3"
after_delete!TypeError
toJSON_gone=false

Node output:

bare!TypeError
in_object!TypeError
in_array!TypeError
nested!TypeError
wrapper!TypeError
as_key={"1":2}
zero!TypeError
replacer={"a":"1","b":2}
replacer_number={"a":5}
replacer_sees_bigint=object,bigint
own_toJSON={"a":"one"}
--- parse ---
parsed_typeof=number
parsed_value=1.2345678901234568e+29
parsed_lost=9007199254740992
parsed_collides=true
reviver_sees=number
--- sort ---
default=-1,0,1,10,100,2,9
numeric=-1,0,1,2,9,10,100
mixed_default=1,10,2,9
toSorted=-1,0,1,10,100,2,9
comparator_returning_bigint!TypeError
--- stringification ---
String=1234567890123456789012345
template=-42
concat=v=42
join=1-2-3
array_toString=1,2
Array_from_map=2,4
toStringTag=BigInt
keys_of_object=1,2
--- toJSON escape hatch ---
with_toJSON_bare="1"
with_toJSON_object={"a":"1","b":["2"]}
with_toJSON_wrapper="3"
after_delete!TypeError
toJSON_gone=false

RTS output:

bare!TypeError
in_object!TypeError
in_array!TypeError
nested!TypeError
wrapper!TypeError
as_key={"1":2}
zero!TypeError
replacer={"a":"1","b":2}
replacer_number={"a":5}
replacer_sees_bigint=object,bigint
own_toJSON={"a":"one"}
--- parse ---
parsed_typeof=number
parsed_value=1.2345678901234568e+29
parsed_lost=9007199254740992
parsed_collides=true
reviver_sees=number
--- sort ---
default=-1,0,1,10,100,2,9
numeric=-1,0,1,2,9,10,100
mixed_default=1,10,2,9
toSorted=-1,0,1,10,100,2,9
comparator_returning_bigint!TypeError
--- stringification ---
String=1234567890123456789012345
template=-42
concat=v=42
join=1-2-3
array_toString=1,2
Array_from_map=2,4
toStringTag=BigInt
keys_of_object=1,2
--- toJSON escape hatch ---
with_toJSON_bare="1"
with_toJSON_object={"a":"1","b":["2"]}
with_toJSON_wrapper=undefined
after_delete!TypeError
toJSON_gone=false

220 additional divergences are available in the uploaded workflow artifact.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant