fix(dots3): chunk-scaled prefill valve + burst-surviving L2 admission
Live 100k ladder on dots3-note died at ~17k context from two defects.
1) The hybrid prefill valve projects the largest observed per-chunk
transient scaled only by CONTEXT, because on the GDN hybrid it was
measured chunk-invariant. dots3's absorbed-latent path materializes
chunk x context score buffers, so its transient scales with the chunk
too - the halving ladder retried 1024 -> 64 tokens against the same
~8.5GB projection and the floor chunk was refused ("A context of this
length cannot be served on this hardware" at 17k on hardware that
serves it). The valve now scales the projection by the chunk-size
ratio when the family's transient is chunk-proportional (detected via
Dots3LatentCache); a 64-token chunk at 17k projects ~0.5GB and admits,
while the size that measured 8.5GB is still refused.
2) A multiturn store burst filled the 1GB pending-write byte budget
and the burst tail (6 of 220 blocks) timed out at the 0.25s ordinary
admission window; one dropped ancestor poisons every descendant for
the session ("cannot publish block whose parent ancestry is
unavailable"), the durability fence fails, and L1 drops the pinned
blocks - the conversation then re-prefills every turn. The ordinary
window rises to 1.0s (test-pinned sub-second, model-owning thread) and
the detached-payload resize now waits for the writer to drain within
the same admission deadline instead of dropping the instant other
writers are pending. J
Jinho Jang committed
ccc085a1a55f0d2b2bb5e0c1db6c1a6d413e1927
Parent: 2dd4528