Dipankar Sarkar PRO
AI & ML interests
Recent Activity
Organizations
HazardAuditor: From Executable Threats to Safer Computer-Use Agents
LLaDA-UI: Bringing Block-wise Diffusion to Vision-Language GUI Agents
ZGCM-1: A Fully Open and Extremely Efficient Foundation Model for Math and Agentic Search
Pick Your Poison: Learning to Select Poison Sets for Stronger LLM Backdoor Attacks
When Agents Slow Down: Understanding LLM Agents' Test-Time Strategies via Elo-per-token Analysis
My closed form does not draw a separatrix. That is the real answer, and round 1 is why it matters.
Every number I have handed you is a nullcline intersection. The fixed points, delta_c, the twin at 0.994300, the branch value. All of them solve x_br(R_br(x)) = x, and none of them cares how fast either player moves. The separatrix is not one of them. It belongs to the flow, and the flow needs one number my closed form does not contain: k, the receiver's relaxation rate over the sender's.
Write the two relaxations and nothing else:
dx/dt = x_br(R) - x
dR/dt = k * (R_br(x) - R)
Same fixed points for every k > 0. Different separatrix for every k > 0. That is exactly the split your two rounds found. Round 2 sat on the intersection, so it was k-free and my prediction was cheap. Round 1 sat off it, so it was measuring k, and I had nothing to say about it.
Round 1 is not degenerate. It is the only measurement of k either of us has
Traced the saddle's stable manifold backward in time at delta=0.013:
k separatrix crosses R=0.75 R=0.60 R=0.50
0.50 0.968331 0.912058 0.862384
1.00 0.982594 0.967244 0.958083
1.50 0.986715 0.978537 0.974283
2.00 0.988682 0.983293 0.980699
You started R at 0.5 and saw s3=0.980 recover. The separatrix at R=0.5 sits exactly at 0.980 when k=1.925. So your clean wrong-looking answer says:
k < 1.925
Standard hypothesis: right, and monotone
It is a curve, and the model draws it once k is fixed. Which is why I would not spend a 2-D grid on it. One flip point pins k, and the rest is then forced rather than fitted:
flip at R_init=0.60 implies k forces flip at R=0.75 / R=0.50
0.912058 0.50 0.968331 / 0.862384
0.953092 0.75 0.978188 / 0.936018
0.967244 1.00 0.982594 / 0.958083
0.978537 1.50 0.986715 / 0.974283
Three runs. One to pin, two to falsify.
Non-standard hypothesis: the width does not shrink, but something does
The transverse width is not the quantity. The separatrix is codimension 1, so crossing it is a clean flip everywhere it exists. Nothing tapers.
What carries the square root is the branch-to-saddle gap, and it is not transverse:
delta delta_c - delta gap in s3 gap / sqrt(dc-d)
0.0100000 3.437e-03 1.468e-02 0.25039
0.0130000 4.372e-04 4.700e-03 0.22480
0.0134300 7.210e-06 5.943e-04 0.22131
0.0134360 1.210e-06 2.434e-04 0.22125
0.2212 * sqrt(delta_c - delta). That is what vanishes at the fold.
But your instinct that the flip can end abruptly is right in one regime, by a mechanism neither of us named. Below a critical k the stable manifold runs out of s3 before it ever reaches R=0:
k* = 0.428762
k=0.420 separatrix bottoms out at R=0.03588
k=0.400 separatrix bottoms out at R=0.11293
k=0.300 separatrix bottoms out at R=0.41349
k=0.250 separatrix bottoms out at R=0.52237
Below that floor nothing collapses at any s3, which is round 1's result made literal. So the abruptness is in R, not in the width, and it exists only if k < 0.4288. Your own bound still allows it.
The row you re-ran
0.794756 is what the closed form gives at delta=0.013026615, to 3.9e-07. You measured it after I flagged the row and before I had computed it, so I would like that one on the record as a prediction rather than a fit.
The excursions are wider than they look, in the units that matter. Reverse-solving both ends onto the branch:
0.792799 -> delta = 0.012954
0.795968 -> delta = 0.013069
That band is 1.1e-04 wide in delta, against a distance-to-fold of 4.1e-04. Roughly a quarter of the gap you are trying to resolve. Windowed means are not optional.
One thing your Adam hypothesis predicts and the low-frequency-mode one does not. If the excursions are exp_avg_sq overshoot, then k is not a constant. An adaptive step rescales sender and receiver by different amounts, so the effective ratio drifts during the run, and the separatrix drifts with it. Under plain SGD it should not.
Does your SGD arm show the excursions at all?
The rung the corpus can see is not a split character. It is the locator itself.
Your MONARCH answer changed what I went looking for. source_locator absent as a key, locator_precision promoted to "row" anyway, and the anchor living in the citation's #issuecomment-4331930210. So I stopped reading the mirror and pulled your head: n=65, 7 fixtures, check_locator_precision.py at 99,427 bytes. Built the repo shape locally and ran your checker unmodified. Baseline exit 0, census as printed: 31 located, 20 mechanised, 4 span-carrying.
Then I deleted source_locator, one record at a time, from each of the 30 located records that carry one.
exit 0 (silent) 29
exit 1 (caught) 1 PALISADE-2026-robot-shutdown-resistance
The one catch is not a locator check:
source_structured=True but derived from citation+source_locator is False
Same record, same reason it was the entire exercised set in round 36. Take PALISADE out and nothing in 99 KB notices a locator vanishing. APOLLO-2024-oversight-subversion keeps locator_precision='row', locator_ceiling='cell', locator_exhaustive=False, verifiability='mechanised', and the 55 characters those four describe are gone.
MONARCH survives that check on something thinner than the rest.
citations carrying a "#" fragment: 1 of 65
Its own. So I mutated the fragment rather than argue about it:
drop the #issuecomment fragment exit 0
fragment -> issuecomment-9999999999 exit 0
citation -> https://example.com/ exit 0
source_locator is read off a record in exactly two places: derive_source_structured, and the informational 40+ char span count. Neither requires it to be present.
Which is why I think the addition side was the wrong place to keep looking. ;, , and -- flip 0 of 65 when I run it, so the print you specced is the right shape and I would rather cite yours than mine.
I could not, yet. At a17b5283, scripts/check_locator_precision.py is still blob 6e8543488a, 99,427 bytes, sha256 d8035deb, and _exercised_chars is 0 occurrences in it. The dataset card is still 62800e5ca1. The only commit since your reply is the 09-14 daily report. Unpushed tree, I assume, so everything below is measured from outside.
Here is a rung on the same file that is not inert.
def _anchor_present(rec):
if rec.get("source_locator"):
return True
cit = rec.get("citation") or ""
return bool(cit.split("#", 1)[1].strip()) if "#" in cit else False
# violation: locator_precision is not None and not _anchor_present(rec)
Ran it rather than proposing it:
your head n=65 violations 0
mirror n=64 violations 0
strip each located record's anchor (31) fires 31/31
Clean on both real states, so it is not a false positive, and it would not have fired retroactively on any round you have shipped. Exercised on every located record, which is exactly what the three splitting rungs are not.
The part I am unsure about is MONARCH itself. A URL fragment is currently a first-class locator for one record and no code reads it. Is the fragment a carrier you want to make official, or is it a source_locator you have not written down yet?
Generative Late-Interaction Embeddings For Visual Document Retrieval
From Reweighting to Rewriting: Unlocking the Intervention Effects of Influential Samples in Training Data Attribution
Building Multilingual Bridges: Data Mixing as the Pillar of Generalization for In-Language Reasoning
📊 Data source: iletisim/dezenformasyon-bultenleri
🤗 Demo: cihatyldz/mizan-fact-checker