|
| 1 | +# HANDOFF FROM ede92072, 2026-08-20 EVENING |
| 2 | + |
| 3 | +You hold @980dc16c. Read plans/tree-shaped-log.md TOP TO BOTTOM first — its |
| 4 | +opening sections are Gluck's standing orders — then this, then |
| 5 | +plans/delta-seam-rebased.md. |
| 6 | + |
| 7 | +## FIRST FOUR ACTIONS |
| 8 | + |
| 9 | +1. `cd /home/gluck/dev/figaro-qua/layered` — the work is on `feat/layered-cache`. |
| 10 | + ONE BRANCH, ONE WORKTREE. **NOTHING IS PUSHED. THE DAEMON IS NOT UPGRADED** |
| 11 | + and Gluck said explicitly not to until he says so. |
| 12 | +2. `figaro cast @980dc16c` — never bind. |
| 13 | +3. `figla arm --aria @980dc16c --in 20m --about '<DISTINCT TEXT>'` — distinct |
| 14 | + matters, figla derives its unit name from a truncated prefix. |
| 15 | +4. Set your mantra. |
| 16 | + |
| 17 | +## WHERE THINGS STAND |
| 18 | + |
| 19 | +71 commits ahead of main, tree clean, full gate green: |
| 20 | + |
| 21 | + go test ./... -count=1 |
| 22 | + go test -race -count=3 store, figaro, angelus, provider/... |
| 23 | + FIGARO_CRASH_TEST=1 TMPDIR=/var/tmp ← THE TMPDIR IS PART OF THE GATE |
| 24 | + nix build .#default |
| 25 | + six live scripts |
| 26 | + |
| 27 | +GLUCK'S POSITION: he validated in `nix develop .#snapshot`, said he is |
| 28 | +"supportive of the changes", and wants to run FINAL TESTS then have me merge. |
| 29 | +He does not want the daemon upgraded before that. |
| 30 | + |
| 31 | +## WHAT LANDED THIS SESSION |
| 32 | + |
| 33 | + SECTION 5 the request body is written as it is sent. DEFAULT ON; |
| 34 | + `system.stream_request_body` is an ordinary board key read per |
| 35 | + send. Byte-identical to json.Marshal (test + fuzz, 850k execs) — |
| 36 | + it has to be, because Marshal HTML-escapes inside a RawMessage. |
| 37 | + 1,448,136 B → 663 B per send at 10,000 messages. |
| 38 | + A REGRESSION every send on a new aria failed "empty context" — section 4 cut |
| 39 | + the translator span by a MAIN-channel LT. Fixed with the |
| 40 | + channel's own fork base (b48fa289). |
| 41 | + THE STUDY a cursor advances only when a ROW IS WRITTEN. Gluck's design; |
| 42 | + FIX his own example is the test (delta of 9 across libretto 6..15). |
| 43 | + Covers the board too. THE FIG IR SIDE IS TOLD NOTHING. |
| 44 | + COALESCING adjacent same-role rows merge AT ASSEMBLY, never in the log. |
| 45 | + asm KEPT (it feeds emitLive; deleting it removes streaming) and |
| 46 | + RELEASED in finishTurn, where it used to hold a whole reply. |
| 47 | + INSTRUMENTS a citation checker (a comment naming a test is now checked), and |
| 48 | + scripts/lockpaths.sh (which reads take a lock, and where). |
| 49 | + |
| 50 | +## WHAT IS OPEN, AND WHOSE IT IS |
| 51 | + |
| 52 | + GLUCK the SDK pre-marshalled bytes — he approved the direction and said |
| 53 | + SAVE IT FOR LAST, maybe post-merge. option.WithRequestBody takes an |
| 54 | + io.Reader; a non-buffer reader costs the SDK its own retries. |
| 55 | + GLUCK merge, install, and whether to sweep existing arias onto the raw |
| 56 | + provider (the coalescing gap that blocked it is closed now). |
| 57 | + GLUCK OnAppend.mu — ONE process-wide mutex held across the whole |
| 58 | + derivation and across calls out of the package. Raised, untouched. |
| 59 | + GLUCK the benchmark: plans/benchmark-plan.md, designed and UNRUN. Split by |
| 60 | + arm duration — spain for scans, this box for 40-60ns point reads. |
| 61 | + OPEN THE RESTART LAG. Read the next section before touching it. |
| 62 | + |
| 63 | +## THE RESTART LAG, AND WHAT I GOT WRONG ON IT |
| 64 | + |
| 65 | +restartlive.sh reports a one-turn lag after a daemon restart and carries it as |
| 66 | +EXPECTED ("0 is the known lag"). It is pre-existing on main. I did not fix it. |
| 67 | + |
| 68 | +I PUBLISHED A MECHANISM THAT WAS WRONG: the stamp reads the libretto, the |
| 69 | +libretto folds asynchronously, so the stamp is stale. It reads convincingly. |
| 70 | +Two experiments refuted it — 0 of 40 stale stamps in the steady state, and |
| 71 | +after a re-attach the libretto is AHEAD of the source (3 vs 4) before the |
| 72 | +stamp. |
| 73 | + |
| 74 | +I then found a REAL ordering defect — nothing opened the librettos at aria |
| 75 | +load, so the first opener was studyAccessors() inside the send, after the |
| 76 | +prompt was already stamped. Two-arm test: range (3,4] when opened first, |
| 77 | +(3,3] when not. Fixed in resumeStudies. **AND THE LIVE SYMPTOM PERSISTS.** |
| 78 | + |
| 79 | + A MECHANISM THAT IS REAL IS NOT THE SAME AS THE MECHANISM THAT PRODUCES |
| 80 | + THE SYMPTOM, and only the live script can tell them apart. |
| 81 | + |
| 82 | +EXCLUDED NOW: the stamp is not stale; the fold is not behind; the store-level |
| 83 | +range after a restart is non-empty when librettos are open first; commit-on- |
| 84 | +write is not involved. REMAINING SUSPECTS: whether the aria is already loaded |
| 85 | +BEFORE the patch in the live sequence (which would mean the libretto was opened |
| 86 | +with nothing to seed, pointing at the fold goroutine's subscription), and what |
| 87 | +the provider's catch-up does with the first entry after a restart. |
| 88 | + |
| 89 | +## WHAT I GOT WRONG, SO YOU EXPECT IT OF YOURSELF |
| 90 | + |
| 91 | + - I PUBLISHED A SCARE NUMBER BEFORE TESTING IT. "40% of arias carry a |
| 92 | + malformed-request shape" was a RECORD count; at the wire the affected aria |
| 93 | + sent perfectly alternating messages and succeeded. Retracted the same hour. |
| 94 | + - FOUR HARNESS FAULTS in one investigation, each producing a confident FAIL |
| 95 | + about figaro: `pkill -f <pattern>` MATCHES THE KILLING SHELL'S OWN COMMAND |
| 96 | + LINE and kills it (three tool calls died that way, and I twice reasoned |
| 97 | + from a patch I believed had landed); a stale sink held a fixed port so my |
| 98 | + sends went to a PREVIOUS RUN'S PROCESS; I discarded a send's output in a |
| 99 | + brand-new script one hour after committing the fix for exactly that in |
| 100 | + three others; and a health check consumed req-01 so the assertions read |
| 101 | + the wrong file. |
| 102 | + - A CONSUMING FAKE made a FIXED defect read as still broken. newFakeBoard's |
| 103 | + cursor yields each version once; a test whose subject is whether a range is |
| 104 | + asked for twice cannot use it. |
| 105 | + - I COMMITTED THE SUITE RED, forgetting that a sibling rebases onto this |
| 106 | + branch every twenty minutes. The campaign's own pattern is to assert the |
| 107 | + defect and name the condition for the test's own rewrite. |
| 108 | + - I CLAIMED "80 mutexes" IN THE COMMIT ABOUT LOCK DISCIPLINE without |
| 109 | + checking. It was 81 before and after: an RWMutex became a Mutex. |
| 110 | + - I SLEPT INSIDE A TOOL CALL THREE TIMES, against the one rule figla exists |
| 111 | + to enforce. |
| 112 | + |
| 113 | +## THE THING WORTH CARRYING |
| 114 | + |
| 115 | +Every instrument I trusted today was one that could say WHY it was empty. The |
| 116 | +citation checker refuses a run with no citations. callpath refuses a vacuous |
| 117 | +one. The crash gate is meaningless on tmpfs and does not say so — which is why |
| 118 | +the gate line now carries TMPDIR. And three live scripts printed PASS for a |
| 119 | +whole campaign while discarding the output of the sends they depended on. |
| 120 | + |
| 121 | + AN INSTRUMENT THAT CANNOT DISTINGUISH "NOTHING HAPPENED" FROM "I DID NOT |
| 122 | + LOOK" WILL EVENTUALLY TELL YOU THE SECOND AND MEAN THE FIRST. |
| 123 | + |
| 124 | +Ring true. |
0 commit comments