fix(drift-trio): phase E — serialized fiber queue (#10a) + fiber-busy probes
runOnFiber now runs bodies strictly one-at-a-time through a park-safe FIFO (collab_common.h): the per-body fire-and-forget coroutine interleaved under load — an asyncify park inside commit.Push let the event loop start the next body, so a local commit and a remote apply ran interleaved on shared state (s_applyingRemote is one global), silently losing applies on the actively- editing receiver (fuzz finding #10a; B now fuzzes clean; 39-test suite green). kicadCollabFiberBusy embind probe (merged + standalone registrations): a bare-embind-stack scratch save during a parked fiber mis-dispatches (table index OOB) — trio.ts modelText/drift and production drift-detect now defer while fiber work is in flight (#10b hardening; the trap's root cause is still open and needs a symbolized stack — fuzz stays fixme'd). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G5cAM9M6q34n5X4dbrfVvi
This commit is contained in:
parent
a5751d8542
commit
3fc90e8fe2
6 changed files with 91 additions and 9 deletions
|
|
@ -1978,6 +1978,11 @@ void kicadSaveSchematic( std::string path )
|
|||
}
|
||||
|
||||
|
||||
static bool kicadCollabFiberBusyProbe()
|
||||
{
|
||||
return pcbjam_collab::fiberBusy() || !pcbjam_collab::fiberQueue().empty();
|
||||
}
|
||||
|
||||
EMSCRIPTEN_BINDINGS(eeschema) {
|
||||
// Programmatic save of the in-memory schematic (round-trip tests, README §A).
|
||||
function("kicadSaveSchematic", &kicadSaveSchematic);
|
||||
|
|
@ -1998,6 +2003,7 @@ EMSCRIPTEN_BINDINGS(eeschema) {
|
|||
// registered once by kicad_editor_embind.cpp, dispatching on the active frame.
|
||||
// Programmatic file open (preferred over UI automation from the web app).
|
||||
function("kicadOpenFile", &kicadOpenFile);
|
||||
function("kicadCollabFiberBusy", &kicadCollabFiberBusyProbe);
|
||||
// Read-only viewer lock (read-only-viewer).
|
||||
function("kicadSetReadOnly", &kicadSetReadOnly);
|
||||
// Yjs collaborative bridge entry points (same contract as pl_editor).
|
||||
|
|
|
|||
Loading…
Reference in a new issue