neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Verifies the convergence guarantee holds for a set of Yjs updates, and summarizes causal update history.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Verifies the convergence guarantee actually holds for a set of Yjs updates, and summarizes causal update history — debugging tooling for Yjs beyond Y.logUpdate().README 전문 보기 ↗Verifies the convergence guarantee actually holds for a set of Yjs updates, and summarizes causal update history — debugging tooling for Yjs beyond Y.logUpdate().
Yjs is the most widely-deployed CRDT in production (Tiptap, BlockNote, Jupyter real-time collaboration, and many more). Its own debugging surface is thin by design: Y.logUpdate() prints an update's contents to the console, and that's essentially it in the open-source ecosystem. A commercial hosted dashboard (Liveblocks) can inspect document state, but only inside its own platform — there's nothing open-source and framework-agnostic that answers the one question that actually matters for a CRDT: did this set of updates actually converge to the same result no matter what order they were applied in?
Two pieces, both built only on Yjs's stable, documented public API:
checkConvergence(updates, options)Applies a flat set of updates (gathered from any number of diverged replicas) to fresh docs in many random orders — Yjs is explicitly designed to accept updates out of causal order, so this is a real code path, not a contrived one — and asserts every ordering converges to the same materialized content. Compares materialized content, not raw encoded bytes: two Yjs docs can be logically identical while their internal struct representation differs, so byte comparison would produce false positives. Runs are seeded for reproducibility.
summarizeUpdate(update)Yjs represents causal history as per-client clock ranges rather than Automerge-style discrete named changes. This surfaces that structure directly: which client IDs contributed to an update, and what clock range (how many ops) each one covers.
updateSummaryToMermaid(summary)Renders a summarizeUpdate result as a Mermaid diagram — paste into a ```mermaid fenced block anywhere that renders Markdown (GitHub does this natively) instead of reading a table of client IDs and clock ranges:
graph LR
update(("update"))
client0["client 1\nclock 0-2\n2 op(s)"]
update --> client0
client1["client 2\nclock 0-1\n1 op(s)"]
update --> client1
npm install yjs-lens yjs
import * as Y from "yjs";
import { checkConvergence, summarizeUpdate } from "yjs-lens";
const updates = [/* gathered from diverged replicas */];
const result = checkConvergence(updates);
if (!result.converged) {
throw new Error(`convergence violated: ${JSON.stringify(result.divergence)}`);
}
for (const c of summarizeUpdate(updates[0])) {
console.log(`client ${c.client}: ops ${c.fromClock}-${c.toClock}`);
}
Run the annotated demo:
npx tsx examples/demo.ts
checkConvergence materializes state via Doc.toJSON() by default. That method is marked deprecated in Yjs (in favor of calling toJSON() on individual shared types you already know about), but it remains the only generic way to serialize an entire doc's content without knowing its schema ahead of time, and it is not removed. Pass your own materialize function if you'd rather not depend on it.getConflicts() API that names every candidate value and its author for a resolved key. Yjs's equivalent resolution logic lives in internal, unstable struct-store fields (Item, private map fields) that aren't part of its public API contract. Rather than depend on internals that could break on any Yjs patch release, this ships only what the stable API actually supports.updateSummaryToMermaid produces static diagram source you render yourself.npm install
npm run typecheck
npm test
npm run build
MIT
This is one of 8 independent open-source infrastructure tools, each built against a real, researched gap:
Built by ArkNet Digital.