[{"data":1,"prerenderedAt":2172},["ShallowReactive",2],{"cycle-doc-qnative-c3-review-3.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":22},{"id":5,"title":6},"c3","Developer Mode",{"id":8,"label":9},"qnative","Qnative (provisional)","review-3.md","Review stop 3: the stream core, Source, Live Activity (Phases 1–3)",[13,14,15,16,17,18,19,20,21],"In short","How to try it","What was built","Parity, by test","The readings (Phase 3: Live Activity under a stream)","The sensor's side: asks, not waits","Calls for Mark","For the Rust expert (added to review-0's eight)","Not done",{"type":23,"children":24},"root",[25,110,116,232,237,250,255,317,322,336,651,656,685,861,968,973,1014,1037,1234,1280,1288,1410,1415,1428,1462,1467,1504,1509,1893,1898,2027,2032,2167],{"type":26,"tag":27,"props":28,"children":29},"element","p",{},[30],{"type":26,"tag":31,"props":32,"children":33},"em",{},[34,37,44,46,52,54,60,62,68,70,76,78,84,86,92,94,100,102,108],{"type":35,"value":36},"text","2026-11-11. Design c138 Phases 1, 2 and 3, run in sequence without stopping, on Mark's night ruling: \"I'd like to move through the blockers if possible. We can do our best to examine our team's repos to take a good guess on the data shape. If there are phases that are blockers, let's undertake them in sequence.\" The ruling is recorded in design ",{"type":26,"tag":38,"props":39,"children":41},"code",{"className":40},[],[42],{"type":35,"value":43},"9eec43f656",{"type":35,"value":45},". The calls are collected here. Built in ",{"type":26,"tag":38,"props":47,"children":49},{"className":48},[],[50],{"type":35,"value":51},"..\u002Fqnative-c3",{"type":35,"value":53}," on branch ",{"type":26,"tag":38,"props":55,"children":57},{"className":56},[],[58],{"type":35,"value":59},"c3\u002Fphases",{"type":35,"value":61}," and fast-forwarded into ",{"type":26,"tag":38,"props":63,"children":65},{"className":64},[],[66],{"type":35,"value":67},"main",{"type":35,"value":69}," at each phase's end: Phase 1 ",{"type":26,"tag":38,"props":71,"children":73},{"className":72},[],[74],{"type":35,"value":75},"2c01ebf",{"type":35,"value":77},", Phase 2 ",{"type":26,"tag":38,"props":79,"children":81},{"className":80},[],[82],{"type":35,"value":83},"6a8999e",{"type":35,"value":85},", Phase 3 ",{"type":26,"tag":38,"props":87,"children":89},{"className":88},[],[90],{"type":35,"value":91},"9d265fb",{"type":35,"value":93}," (it was ",{"type":26,"tag":38,"props":95,"children":97},{"className":96},[],[98],{"type":35,"value":99},"8c979bb",{"type":35,"value":101}," before the rebase onto c5's work), review stop ",{"type":26,"tag":38,"props":103,"children":105},{"className":104},[],[106],{"type":35,"value":107},"60461d8",{"type":35,"value":109},".",{"type":26,"tag":111,"props":112,"children":114},"h2",{"id":113},"in-short",[115],{"type":35,"value":13},{"type":26,"tag":117,"props":118,"children":119},"ul",{},[120,156,194,212,222],{"type":26,"tag":121,"props":122,"children":123},"li",{},[124,130],{"type":26,"tag":125,"props":126,"children":127},"strong",{},[128],{"type":35,"value":129},"The stream core is built and held to qdash by test.",{"type":26,"tag":117,"props":131,"children":132},{},[133,138,143],{"type":26,"tag":121,"props":134,"children":135},{},[136],{"type":35,"value":137},"Subscribing to the sensor's stream, an SSE parser, the scenario model, and the envelope and Monitor types, each field marked read from code or proposed.",{"type":26,"tag":121,"props":139,"children":140},{},[141],{"type":35,"value":142},"The stream scripts, written to qevents' payloads as read from code.",{"type":26,"tag":121,"props":144,"children":145},{},[146,148,154],{"type":35,"value":147},"Five of qdash's ",{"type":26,"tag":38,"props":149,"children":151},{"className":150},[],[152],{"type":35,"value":153},"lib\u002Flive",{"type":35,"value":155}," modules ported to Rust. Each agrees with qdash's own TypeScript on cross-language vectors that regenerate byte-identical: ingest and previews, presence, the tally, entity-meta and the projections.",{"type":26,"tag":121,"props":157,"children":158},{},[159,164,166],{"type":26,"tag":125,"props":160,"children":161},{},[162],{"type":35,"value":163},"Dev › Source",{"type":35,"value":165}," (the plan's Sensor page) offers synthetic data (a world, six conditions, four streams) or a real sensor on this machine or at an address.\n",{"type":26,"tag":117,"props":167,"children":168},{},[169,181],{"type":26,"tag":121,"props":170,"children":171},{},[172,174,180],{"type":35,"value":173},"The ladder has six rungs, and the doctor is ",{"type":26,"tag":38,"props":175,"children":177},{"className":176},[],[178],{"type":35,"value":179},"app --check-sensor",{"type":35,"value":109},{"type":26,"tag":121,"props":182,"children":183},{},[184,186,192],{"type":35,"value":185},"Run for real, the doctor found this Mac's qcontrol lock stale. It also got the seed ",{"type":26,"tag":38,"props":187,"children":189},{"className":188},[],[190],{"type":35,"value":191},"qdash serve",{"type":35,"value":193}," refused with qdash's own 503 sentence.",{"type":26,"tag":121,"props":195,"children":196},{},[197,202,204,210],{"type":26,"tag":125,"props":198,"children":199},{},[200],{"type":35,"value":201},"Dev › Live Activity",{"type":35,"value":203}," is qdash's ",{"type":26,"tag":38,"props":205,"children":207},{"className":206},[],[208],{"type":35,"value":209},"\u002Flive",{"type":35,"value":211}," on the current envelope, plus the seven improvements.",{"type":26,"tag":121,"props":213,"children":214},{},[215,220],{"type":26,"tag":125,"props":216,"children":217},{},[218],{"type":35,"value":219},"Guide page 3",{"type":35,"value":221}," is now the Live Activity document: how the app reaches a sensor, the data (read from code, or guessed), the pipeline, the states, and six asks of the sensor.",{"type":26,"tag":121,"props":223,"children":224},{},[225,230],{"type":26,"tag":125,"props":226,"children":227},{},[228],{"type":35,"value":229},"Live Activity, as first built, cost 28–34% of a core at 100 and 1,000 events a second.",{"type":35,"value":231}," Nearly all of that was redrawing the page once per arriving batch. Leaving the page returns the app to rest: 0.003% of a core, and its threads back to 6. The stream core alone costs 0.6–7%. The page now redraws at most 4 times a second, the monitor TUI's cadence. Readings for that build are still owed: the Mac was in use, then locked.",{"type":26,"tag":111,"props":233,"children":235},{"id":234},"how-to-try-it",[236],{"type":35,"value":14},{"type":26,"tag":238,"props":239,"children":245},"pre",{"className":240,"code":241,"language":242,"meta":243,"style":244},"language-bash","cargo dev -- --data synthetic                                  # the full build, developer mode on\nQPOINT_STREAM=file-storm@1000 cargo dev -- --data synthetic    # a stream at 1,000 a second\ncargo run -p app -- --check-sensor                             # the doctor, this machine\ncargo run -p app -- --check-sensor --sensor-url http:\u002F\u002F127.0.0.1:7878\nscripts\u002Flive-vectors.sh                                        # regenerate the cross-language vectors\n","bash","","undefined",[246],{"type":26,"tag":38,"props":247,"children":248},{"__ignoreMap":243},[249],{"type":35,"value":241},{"type":26,"tag":27,"props":251,"children":252},{},[253],{"type":35,"value":254},"In the app:",{"type":26,"tag":117,"props":256,"children":257},{},[258,267,299],{"type":26,"tag":121,"props":259,"children":260},{},[261,265],{"type":26,"tag":125,"props":262,"children":263},{},[264],{"type":35,"value":163},{"type":35,"value":266}," chooses the data.",{"type":26,"tag":121,"props":268,"children":269},{},[270,274,276],{"type":26,"tag":125,"props":271,"children":272},{},[273],{"type":35,"value":201},{"type":35,"value":275}," shows the stream:\n",{"type":26,"tag":117,"props":277,"children":278},{},[279,284,289,294],{"type":26,"tag":121,"props":280,"children":281},{},[282],{"type":35,"value":283},"↑ ↓ (or j and k) move the selection;",{"type":26,"tag":121,"props":285,"children":286},{},[287],{"type":35,"value":288},"space pauses;",{"type":26,"tag":121,"props":290,"children":291},{},[292],{"type":35,"value":293},"t switches the clock to ages;",{"type":26,"tag":121,"props":295,"children":296},{},[297],{"type":35,"value":298},"Esc clears the selection.",{"type":26,"tag":121,"props":300,"children":301},{},[302,307,309,315],{"type":26,"tag":125,"props":303,"children":304},{},[305],{"type":35,"value":306},"Open JSONL",{"type":35,"value":308}," loads a run log. ",{"type":26,"tag":38,"props":310,"children":312},{"className":311},[],[313],{"type":35,"value":314},"crates\u002Fstream\u002Fvectors\u002Fcorpus.jsonl",{"type":35,"value":316}," is a good one.",{"type":26,"tag":111,"props":318,"children":320},{"id":319},"what-was-built",[321],{"type":35,"value":15},{"type":26,"tag":27,"props":323,"children":324},{},[325,327,334],{"type":35,"value":326},"The record, phase by phase, is in ",{"type":26,"tag":328,"props":329,"children":331},"a",{"href":330},"\u002Fcycles\u002Fqnative\u002Fc3\u002Fdoc\u002FCYCLE",[332],{"type":35,"value":333},"CYCLE.md",{"type":35,"value":335}," § Key Changes. In brief:",{"type":26,"tag":337,"props":338,"children":339},"table",{},[340,364],{"type":26,"tag":341,"props":342,"children":343},"thead",{},[344],{"type":26,"tag":345,"props":346,"children":347},"tr",{},[348,354,359],{"type":26,"tag":349,"props":350,"children":351},"th",{},[352],{"type":35,"value":353},"Phase",{"type":26,"tag":349,"props":355,"children":356},{},[357],{"type":35,"value":358},"Built",{"type":26,"tag":349,"props":360,"children":361},{},[362],{"type":35,"value":363},"Where",{"type":26,"tag":365,"props":366,"children":367},"tbody",{},[368,505,568],{"type":26,"tag":345,"props":369,"children":370},{},[371,377,414],{"type":26,"tag":372,"props":373,"children":374},"td",{},[375],{"type":35,"value":376},"1, the stream core",{"type":26,"tag":372,"props":378,"children":379},{},[380,382,388,390,396,398,404,406,412],{"type":35,"value":381},"SSE parser; ",{"type":26,"tag":38,"props":383,"children":385},{"className":384},[],[386],{"type":35,"value":387},"Subscription",{"type":35,"value":389}," (an async channel a page awaits, closed within 250 ms of the page going); ",{"type":26,"tag":38,"props":391,"children":393},{"className":392},[],[394],{"type":35,"value":395},"connect",{"type":35,"value":397}," (HTTP\u002F1.1 to ",{"type":26,"tag":38,"props":399,"children":401},{"className":400},[],[402],{"type":35,"value":403},"\u002Fapi\u002Fevents\u002Fstream",{"type":35,"value":405},", the web's backoff, 403 and 503 as Refused with the sensor's own reason); ",{"type":26,"tag":38,"props":407,"children":409},{"className":408},[],[410],{"type":35,"value":411},"play",{"type":35,"value":413}," for scripts; the scenario model; the envelope and the four Monitor shapes generated from the Guide's TypeScript; four stream scripts; ingest",{"type":26,"tag":372,"props":415,"children":416},{},[417,423,425,431,433,439,440,446,448,454,455,461,462,468,469,475,476,482,483,489,490,496,497,503],{"type":26,"tag":38,"props":418,"children":420},{"className":419},[],[421],{"type":35,"value":422},"crates\u002Fnozzle",{"type":35,"value":424}," (",{"type":26,"tag":38,"props":426,"children":428},{"className":427},[],[429],{"type":35,"value":430},"sse",{"type":35,"value":432},", ",{"type":26,"tag":38,"props":434,"children":436},{"className":435},[],[437],{"type":35,"value":438},"stream",{"type":35,"value":432},{"type":26,"tag":38,"props":441,"children":443},{"className":442},[],[444],{"type":35,"value":445},"scenario",{"type":35,"value":447},"), ",{"type":26,"tag":38,"props":449,"children":451},{"className":450},[],[452],{"type":35,"value":453},"crates\u002Ftypes",{"type":35,"value":424},{"type":26,"tag":38,"props":456,"children":458},{"className":457},[],[459],{"type":35,"value":460},"live",{"type":35,"value":432},{"type":26,"tag":38,"props":463,"children":465},{"className":464},[],[466],{"type":35,"value":467},"monitor",{"type":35,"value":432},{"type":26,"tag":38,"props":470,"children":472},{"className":471},[],[473],{"type":35,"value":474},"events",{"type":35,"value":447},{"type":26,"tag":38,"props":477,"children":479},{"className":478},[],[480],{"type":35,"value":481},"crates\u002Ffixtures",{"type":35,"value":424},{"type":26,"tag":38,"props":484,"children":486},{"className":485},[],[487],{"type":35,"value":488},"streams",{"type":35,"value":447},{"type":26,"tag":38,"props":491,"children":493},{"className":492},[],[494],{"type":35,"value":495},"crates\u002Fstream",{"type":35,"value":424},{"type":26,"tag":38,"props":498,"children":500},{"className":499},[],[501],{"type":35,"value":502},"ingest",{"type":35,"value":504},")",{"type":26,"tag":345,"props":506,"children":507},{},[508,513,526],{"type":26,"tag":372,"props":509,"children":510},{},[511],{"type":35,"value":512},"2, Source",{"type":26,"tag":372,"props":514,"children":515},{},[516,518,524],{"type":35,"value":517},"the page; the condition wrapper (six, through the real pipes); the ladder; the doctor; attach at an address; the macOS data dir fixed; ",{"type":26,"tag":38,"props":519,"children":521},{"className":520},[],[522],{"type":35,"value":523},"host",{"type":35,"value":525},", the app's shared state for extensions",{"type":26,"tag":372,"props":527,"children":528},{},[529,535,536,542,543,548,549,555,556,561,562],{"type":26,"tag":38,"props":530,"children":532},{"className":531},[],[533],{"type":35,"value":534},"crates\u002Fdevmode",{"type":35,"value":424},{"type":26,"tag":38,"props":537,"children":539},{"className":538},[],[540],{"type":35,"value":541},"source",{"type":35,"value":447},{"type":26,"tag":38,"props":544,"children":546},{"className":545},[],[547],{"type":35,"value":422},{"type":35,"value":424},{"type":26,"tag":38,"props":550,"children":552},{"className":551},[],[553],{"type":35,"value":554},"ladder",{"type":35,"value":432},{"type":26,"tag":38,"props":557,"children":559},{"className":558},[],[560],{"type":35,"value":445},{"type":35,"value":447},{"type":26,"tag":38,"props":563,"children":565},{"className":564},[],[566],{"type":35,"value":567},"crates\u002Fhost",{"type":26,"tag":345,"props":569,"children":570},{},[571,576,581],{"type":26,"tag":372,"props":572,"children":573},{},[574],{"type":35,"value":575},"3, Live Activity",{"type":26,"tag":372,"props":577,"children":578},{},[579],{"type":35,"value":580},"the page; the buffer; masking; the five ports",{"type":26,"tag":372,"props":582,"children":583},{},[584,589,590,595,596,601,602,608,609,615,616,622,623,629,630,636,637,643,644,650],{"type":26,"tag":38,"props":585,"children":587},{"className":586},[],[588],{"type":35,"value":534},{"type":35,"value":424},{"type":26,"tag":38,"props":591,"children":593},{"className":592},[],[594],{"type":35,"value":460},{"type":35,"value":447},{"type":26,"tag":38,"props":597,"children":599},{"className":598},[],[600],{"type":35,"value":495},{"type":35,"value":424},{"type":26,"tag":38,"props":603,"children":605},{"className":604},[],[606],{"type":35,"value":607},"buffer",{"type":35,"value":432},{"type":26,"tag":38,"props":610,"children":612},{"className":611},[],[613],{"type":35,"value":614},"mask",{"type":35,"value":432},{"type":26,"tag":38,"props":617,"children":619},{"className":618},[],[620],{"type":35,"value":621},"preview",{"type":35,"value":432},{"type":26,"tag":38,"props":624,"children":626},{"className":625},[],[627],{"type":35,"value":628},"presence",{"type":35,"value":432},{"type":26,"tag":38,"props":631,"children":633},{"className":632},[],[634],{"type":35,"value":635},"tally",{"type":35,"value":432},{"type":26,"tag":38,"props":638,"children":640},{"className":639},[],[641],{"type":35,"value":642},"entity_meta",{"type":35,"value":432},{"type":26,"tag":38,"props":645,"children":647},{"className":646},[],[648],{"type":35,"value":649},"projections",{"type":35,"value":504},{"type":26,"tag":111,"props":652,"children":654},{"id":653},"parity-by-test",[655],{"type":35,"value":16},{"type":26,"tag":27,"props":657,"children":658},{},[659,661,667,669,675,677,683],{"type":35,"value":660},"The plan asked that \"the native page and the web page agree by test\". ",{"type":26,"tag":38,"props":662,"children":664},{"className":663},[],[665],{"type":35,"value":666},"scripts\u002Flive-vectors.sh",{"type":35,"value":668}," makes a corpus of 614 records from the four stream scripts plus edge lines. It runs qdash's own TypeScript over that corpus: ",{"type":26,"tag":38,"props":670,"children":672},{"className":671},[],[673],{"type":35,"value":674},"crates\u002Fqdash\u002Fui\u002Fapp\u002Flib\u002Flive\u002F*.ts",{"type":35,"value":676}," at ",{"type":26,"tag":38,"props":678,"children":680},{"className":679},[],[681],{"type":35,"value":682},"5c9175fa6",{"type":35,"value":684},", bundled read-only from the qcontrol checkout. It writes what qdash produced; the Rust tests compare. A second run gives byte-identical files.",{"type":26,"tag":337,"props":686,"children":687},{},[688,709],{"type":26,"tag":341,"props":689,"children":690},{},[691],{"type":26,"tag":345,"props":692,"children":693},{},[694,699,704],{"type":26,"tag":349,"props":695,"children":696},{},[697],{"type":35,"value":698},"Module",{"type":26,"tag":349,"props":700,"children":701},{},[702],{"type":35,"value":703},"Vectors",{"type":26,"tag":349,"props":705,"children":706},{},[707],{"type":35,"value":708},"Agree",{"type":26,"tag":365,"props":710,"children":711},{},[712,744,768,801],{"type":26,"tag":345,"props":713,"children":714},{},[715,734,739],{"type":26,"tag":372,"props":716,"children":717},{},[718,720,726,727,733],{"type":35,"value":719},"ingest + previews (",{"type":26,"tag":38,"props":721,"children":723},{"className":722},[],[724],{"type":35,"value":725},"events.ts",{"type":35,"value":432},{"type":26,"tag":38,"props":728,"children":730},{"className":729},[],[731],{"type":35,"value":732},"run-log.ts",{"type":35,"value":504},{"type":26,"tag":372,"props":735,"children":736},{},[737],{"type":35,"value":738},"614 records: id, type, family, severity, entity, time, summary, preview, run, process; and the run log's sort order",{"type":26,"tag":372,"props":740,"children":741},{},[742],{"type":35,"value":743},"all",{"type":26,"tag":345,"props":745,"children":746},{},[747,759,764],{"type":26,"tag":372,"props":748,"children":749},{},[750,752,758],{"type":35,"value":751},"presence (",{"type":26,"tag":38,"props":753,"children":755},{"className":754},[],[756],{"type":35,"value":757},"agent-presence.ts",{"type":35,"value":504},{"type":26,"tag":372,"props":760,"children":761},{},[762],{"type":35,"value":763},"9 sequences, 729 steps, 99 checkpoints, 256 cards, all four statuses",{"type":26,"tag":372,"props":765,"children":766},{},[767],{"type":35,"value":743},{"type":26,"tag":345,"props":769,"children":770},{},[771,791,796],{"type":26,"tag":372,"props":772,"children":773},{},[774,776,782,784,790],{"type":35,"value":775},"tally (",{"type":26,"tag":38,"props":777,"children":779},{"className":778},[],[780],{"type":35,"value":781},"event-tally.ts",{"type":35,"value":783},", the pure parts of ",{"type":26,"tag":38,"props":785,"children":787},{"className":786},[],[788],{"type":35,"value":789},"tallyView.ts",{"type":35,"value":504},{"type":26,"tag":372,"props":792,"children":793},{},[794],{"type":35,"value":795},"3 scenarios × 21 settings: 63 views, 7,916 cells, 126 CSVs",{"type":26,"tag":372,"props":797,"children":798},{},[799],{"type":35,"value":800},"all, the CSVs byte for byte",{"type":26,"tag":345,"props":802,"children":803},{},[804,844,857],{"type":26,"tag":372,"props":805,"children":806},{},[807,809,815,816,822,823,829,830,836,837,843],{"type":35,"value":808},"entity-meta + projections (",{"type":26,"tag":38,"props":810,"children":812},{"className":811},[],[813],{"type":35,"value":814},"entity-meta.ts",{"type":35,"value":432},{"type":26,"tag":38,"props":817,"children":819},{"className":818},[],[820],{"type":35,"value":821},"event-table-projections.ts",{"type":35,"value":432},{"type":26,"tag":38,"props":824,"children":826},{"className":825},[],[827],{"type":35,"value":828},"event-context.ts",{"type":35,"value":432},{"type":26,"tag":38,"props":831,"children":833},{"className":832},[],[834],{"type":35,"value":835},"event-rows.ts",{"type":35,"value":432},{"type":26,"tag":38,"props":838,"children":840},{"className":839},[],[841],{"type":35,"value":842},"event-display.ts",{"type":35,"value":504},{"type":26,"tag":372,"props":845,"children":846},{},[847,849,855],{"type":35,"value":848},"630 lines in 32 batches; 27 filter cases; counts, trees, chips and rows for 44 events; 411 ",{"type":26,"tag":38,"props":850,"children":852},{"className":851},[],[853],{"type":35,"value":854},"localeCompare",{"type":35,"value":856}," pairs",{"type":26,"tag":372,"props":858,"children":859},{},[860],{"type":35,"value":743},{"type":26,"tag":117,"props":862,"children":863},{},[864,934],{"type":26,"tag":121,"props":865,"children":866},{},[867,872,874,880,882],{"type":26,"tag":125,"props":868,"children":869},{},[870],{"type":35,"value":871},"Quirks kept.",{"type":35,"value":873}," Web quirks are kept for parity and marked ",{"type":26,"tag":38,"props":875,"children":877},{"className":876},[],[878],{"type":35,"value":879},"web quirk, kept for parity:",{"type":35,"value":881}," in the code; there are about 24. Three of them bear on what a person sees:",{"type":26,"tag":117,"props":883,"children":884},{},[885,895,912],{"type":26,"tag":121,"props":886,"children":887},{},[888,893],{"type":26,"tag":125,"props":889,"children":890},{},[891],{"type":35,"value":892},"Presence counts every snapshot as activity.",{"type":35,"value":894}," Every harness reads \"working\" for 10 s after each resync, as the survey inferred. The page shows this.",{"type":26,"tag":121,"props":896,"children":897},{},[898,910],{"type":26,"tag":125,"props":899,"children":900},{},[901,903,909],{"type":35,"value":902},"The tally keys on ",{"type":26,"tag":38,"props":904,"children":906},{"className":905},[],[907],{"type":35,"value":908},"run.id",{"type":35,"value":109},{"type":35,"value":911}," On today's stream that is one \"Unattributed\" row, which is why the page adds a tally by process, session and type.",{"type":26,"tag":121,"props":913,"children":914},{},[915,932],{"type":26,"tag":125,"props":916,"children":917},{},[918,924,926],{"type":26,"tag":38,"props":919,"children":921},{"className":920},[],[922],{"type":35,"value":923},"exec.exit",{"type":35,"value":925}," shows ",{"type":26,"tag":38,"props":927,"children":929},{"className":928},[],[930],{"type":35,"value":931},"status=kind",{"type":35,"value":933},", not the exit code.",{"type":26,"tag":121,"props":935,"children":936},{},[937,942,962,966],{"type":26,"tag":125,"props":938,"children":939},{},[940],{"type":35,"value":941},"Two places where Rust can't match JavaScript:",{"type":26,"tag":117,"props":943,"children":944},{},[945,950],{"type":26,"tag":121,"props":946,"children":947},{},[948],{"type":35,"value":949},"JavaScript can keep half of a UTF-16 surrogate pair, and Rust writes U+FFFD there.",{"type":26,"tag":121,"props":951,"children":952},{},[953,955,960],{"type":35,"value":954},"JavaScript's ",{"type":26,"tag":38,"props":956,"children":958},{"className":957},[],[959],{"type":35,"value":854},{"type":35,"value":961}," is matched exactly for ASCII only.",{"type":26,"tag":963,"props":964,"children":965},"br",{},[],{"type":35,"value":967},"No vector reaches either, and every id and type is ASCII.",{"type":26,"tag":111,"props":969,"children":971},{"id":970},"the-readings-phase-3-live-activity-under-a-stream",[972],{"type":35,"value":17},{"type":26,"tag":27,"props":974,"children":975},{},[976,981,983,989,991,997,999,1005,1007,1013],{"type":26,"tag":125,"props":977,"children":978},{},[979],{"type":35,"value":980},"Method:",{"type":35,"value":982}," the README recipe, gated: a reading starts after 60 s without input on an unlocked screen, and is taken again if anything touched the machine. These were taken on the full release build, with ",{"type":26,"tag":38,"props":984,"children":986},{"className":985},[],[987],{"type":35,"value":988},"QPOINT_SPIKE_OPEN=\u002Fdev\u002Flive",{"type":35,"value":990}," and a ",{"type":26,"tag":38,"props":992,"children":994},{"className":993},[],[995],{"type":35,"value":996},"coding-session",{"type":35,"value":998}," stream at the rate, the window on the Studio Display, 2026-11-11 17:00–17:40. Four of the six counted readings are below. The other two, the rest reading and a second-build reading at 10 a second, are under \"What the readings say\". The run is now a script: ",{"type":26,"tag":38,"props":1000,"children":1002},{"className":1001},[],[1003],{"type":35,"value":1004},"scripts\u002Ffootprint\u002Flive-activity.sh",{"type":35,"value":1006},", with ",{"type":26,"tag":38,"props":1008,"children":1010},{"className":1009},[],[1011],{"type":35,"value":1012},"scripts\u002Ffootprint\u002Fmeasure.sh",{"type":35,"value":109},{"type":26,"tag":27,"props":1015,"children":1016},{},[1017,1022,1023,1028,1030,1035],{"type":26,"tag":125,"props":1018,"children":1019},{},[1020],{"type":35,"value":1021},"The page as first committed",{"type":35,"value":424},{"type":26,"tag":38,"props":1024,"children":1026},{"className":1025},[],[1027],{"type":35,"value":99},{"type":35,"value":1029},", now ",{"type":26,"tag":38,"props":1031,"children":1033},{"className":1032},[],[1034],{"type":35,"value":91},{"type":35,"value":1036},": one redraw per arriving batch, no row cache):",{"type":26,"tag":337,"props":1038,"children":1039},{},[1040,1081],{"type":26,"tag":341,"props":1041,"children":1042},{},[1043],{"type":26,"tag":345,"props":1044,"children":1045},{},[1046,1051,1056,1061,1066,1071,1076],{"type":26,"tag":349,"props":1047,"children":1048},{},[1049],{"type":35,"value":1050},"State",{"type":26,"tag":349,"props":1052,"children":1053},{},[1054],{"type":35,"value":1055},"Private memory",{"type":26,"tag":349,"props":1057,"children":1058},{},[1059],{"type":35,"value":1060},"CPU",{"type":26,"tag":349,"props":1062,"children":1063},{},[1064],{"type":35,"value":1065},"Main thread busy",{"type":26,"tag":349,"props":1067,"children":1068},{},[1069],{"type":35,"value":1070},"Wakes\u002Fs",{"type":26,"tag":349,"props":1072,"children":1073},{},[1074],{"type":35,"value":1075},"Threads",{"type":26,"tag":349,"props":1077,"children":1078},{},[1079],{"type":35,"value":1080},"Load",{"type":26,"tag":365,"props":1082,"children":1083},{},[1084,1122,1159,1196],{"type":26,"tag":345,"props":1085,"children":1086},{},[1087,1092,1097,1102,1107,1112,1117],{"type":26,"tag":372,"props":1088,"children":1089},{},[1090],{"type":35,"value":1091},"Live Activity at 10 a second",{"type":26,"tag":372,"props":1093,"children":1094},{},[1095],{"type":35,"value":1096},"107.5 MB",{"type":26,"tag":372,"props":1098,"children":1099},{},[1100],{"type":35,"value":1101},"5.67%*",{"type":26,"tag":372,"props":1103,"children":1104},{},[1105],{"type":35,"value":1106},"5.18%",{"type":26,"tag":372,"props":1108,"children":1109},{},[1110],{"type":35,"value":1111},"269",{"type":26,"tag":372,"props":1113,"children":1114},{},[1115],{"type":35,"value":1116},"8",{"type":26,"tag":372,"props":1118,"children":1119},{},[1120],{"type":35,"value":1121},"16.2*",{"type":26,"tag":345,"props":1123,"children":1124},{},[1125,1130,1135,1140,1145,1150,1154],{"type":26,"tag":372,"props":1126,"children":1127},{},[1128],{"type":35,"value":1129},"at 100 a second",{"type":26,"tag":372,"props":1131,"children":1132},{},[1133],{"type":35,"value":1134},"103.4 MB",{"type":26,"tag":372,"props":1136,"children":1137},{},[1138],{"type":35,"value":1139},"27.9%",{"type":26,"tag":372,"props":1141,"children":1142},{},[1143],{"type":35,"value":1144},"26.1%",{"type":26,"tag":372,"props":1146,"children":1147},{},[1148],{"type":35,"value":1149},"1,061",{"type":26,"tag":372,"props":1151,"children":1152},{},[1153],{"type":35,"value":1116},{"type":26,"tag":372,"props":1155,"children":1156},{},[1157],{"type":35,"value":1158},"7.6",{"type":26,"tag":345,"props":1160,"children":1161},{},[1162,1167,1172,1177,1182,1187,1191],{"type":26,"tag":372,"props":1163,"children":1164},{},[1165],{"type":35,"value":1166},"at 1,000 a second",{"type":26,"tag":372,"props":1168,"children":1169},{},[1170],{"type":35,"value":1171},"112.2 MB",{"type":26,"tag":372,"props":1173,"children":1174},{},[1175],{"type":35,"value":1176},"33.9%",{"type":26,"tag":372,"props":1178,"children":1179},{},[1180],{"type":35,"value":1181},"31.7%",{"type":26,"tag":372,"props":1183,"children":1184},{},[1185],{"type":35,"value":1186},"1,047",{"type":26,"tag":372,"props":1188,"children":1189},{},[1190],{"type":35,"value":1116},{"type":26,"tag":372,"props":1192,"children":1193},{},[1194],{"type":35,"value":1195},"1.9",{"type":26,"tag":345,"props":1197,"children":1198},{},[1199,1204,1209,1214,1219,1224,1229],{"type":26,"tag":372,"props":1200,"children":1201},{},[1202],{"type":35,"value":1203},"left after 30 s at 1,000 a second, then read for 60 s",{"type":26,"tag":372,"props":1205,"children":1206},{},[1207],{"type":35,"value":1208},"95.1 MB",{"type":26,"tag":372,"props":1210,"children":1211},{},[1212],{"type":35,"value":1213},"0.003%",{"type":26,"tag":372,"props":1215,"children":1216},{},[1217],{"type":35,"value":1218},"0.00%",{"type":26,"tag":372,"props":1220,"children":1221},{},[1222],{"type":35,"value":1223},"0.8",{"type":26,"tag":372,"props":1225,"children":1226},{},[1227],{"type":35,"value":1228},"6",{"type":26,"tag":372,"props":1230,"children":1231},{},[1232],{"type":35,"value":1233},"1.8",{"type":26,"tag":117,"props":1235,"children":1236},{},[1237,1242,1247],{"type":26,"tag":121,"props":1238,"children":1239},{},[1240],{"type":35,"value":1241},"* I took that reading while my own release build ran, at load 16. The CPU figure is the app's own, but the minute was not clean.",{"type":26,"tag":121,"props":1243,"children":1244},{},[1245],{"type":35,"value":1246},"The table has no rest reading from this build: six attempts were all touched.",{"type":26,"tag":121,"props":1248,"children":1249},{},[1250,1252,1258,1259,1265,1266,1272,1273,1279],{"type":35,"value":1251},"Recordings: ",{"type":26,"tag":38,"props":1253,"children":1255},{"className":1254},[],[1256],{"type":35,"value":1257},"rec_782642",{"type":35,"value":432},{"type":26,"tag":38,"props":1260,"children":1262},{"className":1261},[],[1263],{"type":35,"value":1264},"rec_a281d8",{"type":35,"value":432},{"type":26,"tag":38,"props":1267,"children":1269},{"className":1268},[],[1270],{"type":35,"value":1271},"rec_f7f4b0",{"type":35,"value":432},{"type":26,"tag":38,"props":1274,"children":1276},{"className":1275},[],[1277],{"type":35,"value":1278},"rec_a770fa",{"type":35,"value":109},{"type":26,"tag":27,"props":1281,"children":1282},{},[1283],{"type":26,"tag":125,"props":1284,"children":1285},{},[1286],{"type":35,"value":1287},"What the readings say:",{"type":26,"tag":117,"props":1289,"children":1290},{},[1291,1301,1319,1367,1385],{"type":26,"tag":121,"props":1292,"children":1293},{},[1294,1299],{"type":26,"tag":125,"props":1295,"children":1296},{},[1297],{"type":35,"value":1298},"Leaving the page ends the feed.",{"type":35,"value":1300}," It falls to 0.003% of a core and 0.8 wakes a second, and to 6 threads, as at rest; while the page is open there are 8 (the producer and the page's feed). This is the lifecycle rule, checked from outside. Memory stays at 95 MB. The allocator and GPUI's atlases keep what the page used, as c2's page walk showed.",{"type":26,"tag":121,"props":1302,"children":1303},{},[1304,1309,1311,1317],{"type":26,"tag":125,"props":1305,"children":1306},{},[1307],{"type":35,"value":1308},"The cost is the drawing, not the stream.",{"type":35,"value":1310}," Main-thread time is nearly all of the CPU at every rate. The page redrew once per arriving batch, and the synthetic stream delivers records about 10 ms apart, so that meant up to a redraw per record. A second build gathered arrivals for 50 ms and cached rows. Its reading at 10 a second (",{"type":26,"tag":38,"props":1312,"children":1314},{"className":1313},[],[1315],{"type":35,"value":1316},"rec_0ca212",{"type":35,"value":1318},", load 2.8) was 10.4% CPU with the main thread 9.6% busy: about ten redraws a second at about 10 ms each. So the cache did not move the cost of a redraw.",{"type":26,"tag":121,"props":1320,"children":1321},{},[1322,1327,1329,1335,1337,1355,1358,1360,1365],{"type":26,"tag":125,"props":1323,"children":1324},{},[1325],{"type":35,"value":1326},"The stream core itself is cheap.",{"type":35,"value":1328}," Summing every thread's CPU with ",{"type":26,"tag":38,"props":1330,"children":1332},{"className":1331},[],[1333],{"type":35,"value":1334},"ps",{"type":35,"value":1336}," over 20 s, with the window covered (GPUI draws nothing it cannot show), the record path costs:",{"type":26,"tag":117,"props":1338,"children":1339},{},[1340,1345,1350],{"type":26,"tag":121,"props":1341,"children":1342},{},[1343],{"type":35,"value":1344},"0.60% of a core at 10 a second;",{"type":26,"tag":121,"props":1346,"children":1347},{},[1348],{"type":35,"value":1349},"1.70% at 100;",{"type":26,"tag":121,"props":1351,"children":1352},{},[1353],{"type":35,"value":1354},"7.05% at 1,000.",{"type":26,"tag":963,"props":1356,"children":1357},{},[],{"type":35,"value":1359},"That covers ingest, presence, the tally and the entity index, for every record. The overview with the same stream configured costs 0: no page subscribes, so nothing runs. These are ",{"type":26,"tag":38,"props":1361,"children":1363},{"className":1362},[],[1364],{"type":35,"value":1334},{"type":35,"value":1366}," figures, not strobe.",{"type":26,"tag":121,"props":1368,"children":1369},{},[1370,1375,1377,1383],{"type":26,"tag":125,"props":1371,"children":1372},{},[1373],{"type":35,"value":1374},"At rest",{"type":35,"value":1376},", the second build reads 73.7 MB, 0.006% and 1.1 wakes a second (",{"type":26,"tag":38,"props":1378,"children":1380},{"className":1379},[],[1381],{"type":35,"value":1382},"rec_ee3c1d",{"type":35,"value":1384},").",{"type":26,"tag":121,"props":1386,"children":1387},{},[1388,1393,1395,1401,1403,1408],{"type":26,"tag":125,"props":1389,"children":1390},{},[1391],{"type":35,"value":1392},"Changed because of the readings, and not yet measured:",{"type":35,"value":1394}," the page now gathers arrivals for 250 ms, so it redraws at most 4 times a second (the TUI's ",{"type":26,"tag":38,"props":1396,"children":1398},{"className":1397},[],[1399],{"type":35,"value":1400},"TICK = 250 ms",{"type":35,"value":1402},"), and rows on screen are cached. Three after-fix rounds were started and stopped. The first round measured the 50 ms build above. The second ran into a Mac in use. The third ran into a locked screen, which draws no windows. ",{"type":26,"tag":125,"props":1404,"children":1405},{},[1406],{"type":35,"value":1407},"The readings at 4 redraws a second are owed",{"type":35,"value":1409}," (call 12).",{"type":26,"tag":111,"props":1411,"children":1413},{"id":1412},"the-sensors-side-asks-not-waits",[1414],{"type":35,"value":18},{"type":26,"tag":27,"props":1416,"children":1417},{},[1418,1420,1426],{"type":35,"value":1419},"Built on today's stream as it is. The six asks are in ",{"type":26,"tag":328,"props":1421,"children":1423},{"href":1422},"\u002Fcycles\u002Fqnative\u002Fc3\u002Fdoc\u002Fguide\u002F03-live-activity",[1424],{"type":35,"value":1425},"Guide page 3 § 7",{"type":35,"value":1427},", each with what we would accept if the answer is \"not now\":",{"type":26,"tag":1429,"props":1430,"children":1431},"ol",{},[1432,1437,1442,1447,1452,1457],{"type":26,"tag":121,"props":1433,"children":1434},{},[1435],{"type":35,"value":1436},"a cursor;",{"type":26,"tag":121,"props":1438,"children":1439},{},[1440],{"type":35,"value":1441},"a gap marker with a drop count;",{"type":26,"tag":121,"props":1443,"children":1444},{},[1445],{"type":35,"value":1446},"a filter on the server;",{"type":26,"tag":121,"props":1448,"children":1449},{},[1450],{"type":35,"value":1451},"a snapshot for the new subscriber only;",{"type":26,"tag":121,"props":1453,"children":1454},{},[1455],{"type":35,"value":1456},"the id spaces, stated;",{"type":26,"tag":121,"props":1458,"children":1459},{},[1460],{"type":35,"value":1461},"a key that forbids developer mode.",{"type":26,"tag":27,"props":1463,"children":1464},{},[1465],{"type":35,"value":1466},"Two findings to pass to Kamal:",{"type":26,"tag":117,"props":1468,"children":1469},{},[1470,1480],{"type":26,"tag":121,"props":1471,"children":1472},{},[1473,1478],{"type":26,"tag":125,"props":1474,"children":1475},{},[1476],{"type":35,"value":1477},"This Mac's qcontrol lock is stale",{"type":35,"value":1479}," (pid 54415, since 12 October). A session on his machine needs a running monitor.",{"type":26,"tag":121,"props":1481,"children":1482},{},[1483,1494,1496,1502],{"type":26,"tag":125,"props":1484,"children":1485},{},[1486,1492],{"type":26,"tag":38,"props":1487,"children":1489},{"className":1488},[],[1490],{"type":35,"value":1491},"\u002Fapi\u002Fstats",{"type":35,"value":1493}," serves no version",{"type":35,"value":1495},", so the Answering rung can't say which sensor answered (c131 D17's ",{"type":26,"tag":38,"props":1497,"children":1499},{"className":1498},[],[1500],{"type":35,"value":1501},"\u002Fapi\u002Fsensor",{"type":35,"value":1503}," would).",{"type":26,"tag":111,"props":1505,"children":1507},{"id":1506},"calls-for-mark",[1508],{"type":35,"value":19},{"type":26,"tag":1429,"props":1510,"children":1511},{},[1512,1551,1591,1601,1638,1648,1658,1676,1717,1727,1749,1759,1800,1810],{"type":26,"tag":121,"props":1513,"children":1514},{},[1515,1520,1522,1527,1529,1535,1536,1541,1543,1549],{"type":26,"tag":125,"props":1516,"children":1517},{},[1518],{"type":35,"value":1519},"Pushing.",{"type":35,"value":1521}," Your instruction to this session was \"commit locally, never push\", and a peer relayed a new rule. My commits have stayed local. But c4's push of ",{"type":26,"tag":38,"props":1523,"children":1525},{"className":1524},[],[1526],{"type":35,"value":67},{"type":35,"value":1528}," carried two of them, Phase 1 (",{"type":26,"tag":38,"props":1530,"children":1532},{"className":1531},[],[1533],{"type":35,"value":1534},"25cb477",{"type":35,"value":432},{"type":26,"tag":38,"props":1537,"children":1539},{"className":1538},[],[1540],{"type":35,"value":75},{"type":35,"value":1542},"), to ",{"type":26,"tag":38,"props":1544,"children":1546},{"className":1545},[],[1547],{"type":35,"value":1548},"qpoint-io\u002Fqnative",{"type":35,"value":1550},". Should this session push its own commits from now on (fast-forward only, as the peer described)?",{"type":26,"tag":121,"props":1552,"children":1553},{},[1554,1559,1586,1589],{"type":26,"tag":125,"props":1555,"children":1556},{},[1557],{"type":35,"value":1558},"Names.",{"type":26,"tag":117,"props":1560,"children":1561},{},[1562,1574],{"type":26,"tag":121,"props":1563,"children":1564},{},[1565,1567,1572],{"type":35,"value":1566},"The plan's Dev page \"Sensor\" is ",{"type":26,"tag":125,"props":1568,"children":1569},{},[1570],{"type":35,"value":1571},"Source",{"type":35,"value":1573},", because c5's V1 Sensor now sits under This machine.",{"type":26,"tag":121,"props":1575,"children":1576},{},[1577,1579,1584],{"type":35,"value":1578},"Live is ",{"type":26,"tag":125,"props":1580,"children":1581},{},[1582],{"type":35,"value":1583},"Live Activity",{"type":35,"value":1585},", as you ruled.",{"type":26,"tag":963,"props":1587,"children":1588},{},[],{"type":35,"value":1590},"Keep both?",{"type":26,"tag":121,"props":1592,"children":1593},{},[1594,1599],{"type":26,"tag":125,"props":1595,"children":1596},{},[1597],{"type":35,"value":1598},"Retention.",{"type":35,"value":1600}," The default is 20,000 events and 32 MiB (the web's is 5,000 and 25 MiB), and the person can choose 5k, 20k or 100k. Keep the default?",{"type":26,"tag":121,"props":1602,"children":1603},{},[1604,1609],{"type":26,"tag":125,"props":1605,"children":1606},{},[1607],{"type":35,"value":1608},"Masking.",{"type":26,"tag":117,"props":1610,"children":1611},{},[1612,1625],{"type":26,"tag":121,"props":1613,"children":1614},{},[1615,1617,1623],{"type":35,"value":1616},"Masked by default: the documented secrets (",{"type":26,"tag":38,"props":1618,"children":1620},{"className":1619},[],[1621],{"type":35,"value":1622},"installation.details",{"type":35,"value":1624}," env, headers, settings), and content-bearing fields (HTTP header values, MCP params and results, tool arguments and output, system instructions, argv).",{"type":26,"tag":121,"props":1626,"children":1627},{},[1628,1630,1636],{"type":35,"value":1629},"Not masked: ",{"type":26,"tag":38,"props":1631,"children":1633},{"className":1632},[],[1634],{"type":35,"value":1635},"agent.message.prompt",{"type":35,"value":1637},", which is user content after the adapter's redaction. Mask it too?",{"type":26,"tag":121,"props":1639,"children":1640},{},[1641,1646],{"type":26,"tag":125,"props":1642,"children":1643},{},[1644],{"type":35,"value":1645},"The harnesses row",{"type":35,"value":1647}," is shown by default, where the web hides it. Keep?",{"type":26,"tag":121,"props":1649,"children":1650},{},[1651,1656],{"type":26,"tag":125,"props":1652,"children":1653},{},[1654],{"type":35,"value":1655},"Presence's snapshot quirk.",{"type":35,"value":1657}," Keep parity, with \"working\" after every resync? Or improve, and count only the entity's own records as activity?",{"type":26,"tag":121,"props":1659,"children":1660},{},[1661,1666,1668,1674],{"type":26,"tag":125,"props":1662,"children":1663},{},[1664],{"type":35,"value":1665},"The doctor in the lean build.",{"type":35,"value":1667}," ",{"type":26,"tag":38,"props":1669,"children":1671},{"className":1670},[],[1672],{"type":35,"value":1673},"--check-sensor",{"type":35,"value":1675}," is in both builds, as a support tool on a customer's machine. Keep it there, or move it into developer mode?",{"type":26,"tag":121,"props":1677,"children":1678},{},[1679,1684,1686,1704,1707,1709,1715],{"type":26,"tag":125,"props":1680,"children":1681},{},[1682],{"type":35,"value":1683},"Developer mode's cost on disk",{"type":35,"value":1685}," is now 4.54 MB: lean 24.93 MB against full 29.47 MB. At review stop 0 it was 1.07 MB.",{"type":26,"tag":117,"props":1687,"children":1688},{},[1689,1694,1699],{"type":26,"tag":121,"props":1690,"children":1691},{},[1692],{"type":35,"value":1693},"Source added about 2.9 MB. My guess is the kit's text input pulling in its editor; I haven't measured that.",{"type":26,"tag":121,"props":1695,"children":1696},{},[1697],{"type":35,"value":1698},"Live Activity added 0.65 MB.",{"type":26,"tag":121,"props":1700,"children":1701},{},[1702],{"type":35,"value":1703},"The lean build is unchanged, and the lean check passes.",{"type":26,"tag":963,"props":1705,"children":1706},{},[],{"type":35,"value":1708},"Worth a ",{"type":26,"tag":38,"props":1710,"children":1712},{"className":1711},[],[1713],{"type":35,"value":1714},"cargo bloat",{"type":35,"value":1716}," pass before V1?",{"type":26,"tag":121,"props":1718,"children":1719},{},[1720,1725],{"type":26,"tag":125,"props":1721,"children":1722},{},[1723],{"type":35,"value":1724},"A saved scenario survives a restart",{"type":35,"value":1726},", including a condition such as \"sensor not running\". The footer names it. Keep that, or reset conditions at each start?",{"type":26,"tag":121,"props":1728,"children":1729},{},[1730,1740,1742,1747],{"type":26,"tag":125,"props":1731,"children":1732},{},[1733,1738],{"type":26,"tag":38,"props":1734,"children":1736},{"className":1735},[],[1737],{"type":35,"value":789},{"type":35,"value":1739}," imports Vue",{"type":35,"value":1741},", so its pure parts sit in the vectors harness as a marked copy that must be kept in step by hand. Ask qdash to move the pure parts into ",{"type":26,"tag":38,"props":1743,"children":1745},{"className":1744},[],[1746],{"type":35,"value":153},{"type":35,"value":1748},"?",{"type":26,"tag":121,"props":1750,"children":1751},{},[1752,1757],{"type":26,"tag":125,"props":1753,"children":1754},{},[1755],{"type":35,"value":1756},"File mode replaces the live stream",{"type":35,"value":1758},", as on the web. Keep, or open a run log in a second view?",{"type":26,"tag":121,"props":1760,"children":1761},{},[1762,1767],{"type":26,"tag":125,"props":1763,"children":1764},{},[1765],{"type":35,"value":1766},"The redraw rate and its readings.",{"type":26,"tag":117,"props":1768,"children":1769},{},[1770,1775,1787],{"type":26,"tag":121,"props":1771,"children":1772},{},[1773],{"type":35,"value":1774},"The table redraws at most 4 times a second, about a quarter-second behind the stream. The TUI does the same. Keep it?",{"type":26,"tag":121,"props":1776,"children":1777},{},[1778,1780,1785],{"type":35,"value":1779},"Its readings are owed: run ",{"type":26,"tag":38,"props":1781,"children":1783},{"className":1782},[],[1784],{"type":35,"value":1004},{"type":35,"value":1786}," for about 10 minutes with the Mac idle and unlocked.",{"type":26,"tag":121,"props":1788,"children":1789},{},[1790,1792,1798],{"type":35,"value":1791},"If a redraw at about 10 ms is still too dear, the next step is a cached view for the table (GPUI ",{"type":26,"tag":38,"props":1793,"children":1795},{"className":1794},[],[1796],{"type":35,"value":1797},"AnyView::cached",{"type":35,"value":1799},"), so only rows that changed redraw.",{"type":26,"tag":121,"props":1801,"children":1802},{},[1803,1808],{"type":26,"tag":125,"props":1804,"children":1805},{},[1806],{"type":35,"value":1807},"Next:",{"type":35,"value":1809}," Phase 4 (Events) needs your design first: a brief and a mock. Phase 5 is Monitor. Should a recording of a real session replace the invented stream scripts once a sensor runs?",{"type":26,"tag":121,"props":1811,"children":1812},{},[1813,1818,1819,1824,1826,1832,1833],{"type":26,"tag":125,"props":1814,"children":1815},{},[1816],{"type":35,"value":1817},"The lean build after c6.",{"type":35,"value":1667},{"type":26,"tag":125,"props":1820,"children":1821},{},[1822],{"type":35,"value":1823},"Ruled 2026-11-11: (b)",{"type":35,"value":1825},", keep the row and change the check (design c138 ruling 10). It was built by c6 as qpoint-io\u002Fqnative#2, reviewed here, and merged by Mark as ",{"type":26,"tag":38,"props":1827,"children":1829},{"className":1828},[],[1830],{"type":35,"value":1831},"2c435e4",{"type":35,"value":109},{"type":26,"tag":117,"props":1834,"children":1835},{},[1836,1849,1883],{"type":26,"tag":121,"props":1837,"children":1838},{},[1839,1841,1847],{"type":35,"value":1840},"c6's info panel (",{"type":26,"tag":38,"props":1842,"children":1844},{"className":1843},[],[1845],{"type":35,"value":1846},"8242467",{"type":35,"value":1848},") draws a row in the lean build: \"Developer mode\", with \"This build has no developer mode; it was built without --features dev.\" Since then the old check had found \"Developer mode\" in the lean binary.",{"type":26,"tag":121,"props":1850,"children":1851},{},[1852,1858,1860,1866,1868,1874,1875,1881],{"type":26,"tag":38,"props":1853,"children":1855},{"className":1854},[],[1856],{"type":35,"value":1857},"scripts\u002Fcheck-lean.sh",{"type":35,"value":1859}," now looks for words only ",{"type":26,"tag":38,"props":1861,"children":1863},{"className":1862},[],[1864],{"type":35,"value":1865},"devmode",{"type":35,"value":1867}," carries: the not-allowed sentence, ",{"type":26,"tag":38,"props":1869,"children":1871},{"className":1870},[],[1872],{"type":35,"value":1873},"\u002Fdev\u002Fsource",{"type":35,"value":432},{"type":26,"tag":38,"props":1876,"children":1878},{"className":1877},[],[1879],{"type":35,"value":1880},"\u002Fdev\u002Flive",{"type":35,"value":1882},", and a sentence each from Live Activity and Source. It allows the row: \"Developer mode\" at most once, counted per occurrence, and only beside the row's sentence. The dependency-graph check is unchanged.",{"type":26,"tag":121,"props":1884,"children":1885},{},[1886,1891],{"type":26,"tag":125,"props":1887,"children":1888},{},[1889],{"type":35,"value":1890},"Checked:",{"type":35,"value":1892}," CI run 43142674204 passed on Linux, Windows and macOS, every new marker present in each full build. On this Mac it fails with the full binary in the lean seat, and on crafted inputs (the name alone, and two names beside the sentence).",{"type":26,"tag":111,"props":1894,"children":1896},{"id":1895},"for-the-rust-expert-added-to-review-0s-eight",[1897],{"type":35,"value":20},{"type":26,"tag":117,"props":1899,"children":1900},{},[1901,1955,1973,1998],{"type":26,"tag":121,"props":1902,"children":1903},{},[1904,1909,1910,1915,1917,1923,1924,1930,1931,1937,1939,1945,1947,1953],{"type":26,"tag":125,"props":1905,"children":1906},{},[1907],{"type":35,"value":1908},"Question 2 is answered with a crate.",{"type":35,"value":1667},{"type":26,"tag":38,"props":1911,"children":1913},{"className":1912},[],[1914],{"type":35,"value":523},{"type":35,"value":1916}," holds the data handle (",{"type":26,"tag":38,"props":1918,"children":1920},{"className":1919},[],[1921],{"type":35,"value":1922},"RepoHandle",{"type":35,"value":432},{"type":26,"tag":38,"props":1925,"children":1927},{"className":1926},[],[1928],{"type":35,"value":1929},"Generation",{"type":35,"value":432},{"type":26,"tag":38,"props":1932,"children":1934},{"className":1933},[],[1935],{"type":35,"value":1936},"reopen",{"type":35,"value":1938},") and a ",{"type":26,"tag":38,"props":1940,"children":1942},{"className":1941},[],[1943],{"type":35,"value":1944},"Store",{"type":35,"value":1946}," of saved values; the app re-exports it and developer mode depends on it. The extension protocol gained an optional ",{"type":26,"tag":38,"props":1948,"children":1950},{"className":1949},[],[1951],{"type":35,"value":1952},"start",{"type":35,"value":1954}," hook, so an extension can apply its saved state at launch.",{"type":26,"tag":121,"props":1956,"children":1957},{},[1958,1963,1965,1971],{"type":26,"tag":125,"props":1959,"children":1960},{},[1961],{"type":35,"value":1962},"Question 5 (teardown).",{"type":35,"value":1964}," Each page that reads a stream owns its subscription inside a GPUI ",{"type":26,"tag":38,"props":1966,"children":1968},{"className":1967},[],[1969],{"type":35,"value":1970},"Task",{"type":35,"value":1972},". Dropping the page drops the task, the task drops the subscription, and the producer thread sees the flag within 250 ms and closes its socket. A detached task would have lived until the next keep-alive. The \"closed\" reading above checks this from outside: CPU and thread count after leaving the page.",{"type":26,"tag":121,"props":1974,"children":1975},{},[1976,1981,1983,1989,1990,1996],{"type":26,"tag":125,"props":1977,"children":1978},{},[1979],{"type":35,"value":1980},"The SSE client speaks HTTP\u002F1.1 over the socket itself",{"type":35,"value":1982},", with chunked decoding and its own read timeout, so a closed page is noticed and the Host header is under our control. Is that acceptable, or should it be a crate (",{"type":26,"tag":38,"props":1984,"children":1986},{"className":1985},[],[1987],{"type":35,"value":1988},"eventsource-client",{"type":35,"value":432},{"type":26,"tag":38,"props":1991,"children":1993},{"className":1992},[],[1994],{"type":35,"value":1995},"reqwest",{"type":35,"value":1997}," with streaming)?",{"type":26,"tag":121,"props":1999,"children":2000},{},[2001,2011,2012,2018,2019,2025],{"type":26,"tag":125,"props":2002,"children":2003},{},[2004,2006],{"type":35,"value":2005},"Two copies of a JavaScript ",{"type":26,"tag":38,"props":2007,"children":2009},{"className":2008},[],[2010],{"type":35,"value":854},{"type":35,"value":424},{"type":26,"tag":38,"props":2013,"children":2015},{"className":2014},[],[2016],{"type":35,"value":2017},"presence.rs",{"type":35,"value":432},{"type":26,"tag":38,"props":2020,"children":2022},{"className":2021},[],[2023],{"type":35,"value":2024},"projections.rs",{"type":35,"value":2026},"), written by two port agents, should become one helper.",{"type":26,"tag":111,"props":2028,"children":2030},{"id":2029},"not-done",[2031],{"type":35,"value":21},{"type":26,"tag":117,"props":2033,"children":2034},{},[2035,2040,2045,2050,2055],{"type":26,"tag":121,"props":2036,"children":2037},{},[2038],{"type":35,"value":2039},"The drill (c131 D15: inject one of three bad events).",{"type":26,"tag":121,"props":2041,"children":2042},{},[2043],{"type":35,"value":2044},"Recordings of a real session as stream scripts.",{"type":26,"tag":121,"props":2046,"children":2047},{},[2048],{"type":35,"value":2049},"The stretch items: a histogram to scrub the buffer, tailing a growing file.",{"type":26,"tag":121,"props":2051,"children":2052},{},[2053],{"type":35,"value":2054},"The Monitor's routes and page (Phase 5); Events (Phase 4); Config (Phase 6).",{"type":26,"tag":121,"props":2056,"children":2057},{},[2058,2063],{"type":26,"tag":125,"props":2059,"children":2060},{},[2061],{"type":35,"value":2062},"CI on Linux and Windows:",{"type":26,"tag":117,"props":2064,"children":2065},{},[2066,2071,2100,2112],{"type":26,"tag":121,"props":2067,"children":2068},{},[2069],{"type":35,"value":2070},"At Phase 2's code, the macOS runner passes (run 43111428095): both variants build, every test passes, and the lean check passes (lean 24,931,728 bytes, full 28,820,880). That makes review stop 0's burden-test line 3 true on CI for macOS.",{"type":26,"tag":121,"props":2072,"children":2073},{},[2074,2076,2082,2084,2090,2092,2098],{"type":35,"value":2075},"Linux and Windows failed on every push. The cause was the stories crate's manifest, which listed every dependency under the macOS target. c5's cloud session fixed it (",{"type":26,"tag":38,"props":2077,"children":2079},{"className":2078},[],[2080],{"type":35,"value":2081},"3725719",{"type":35,"value":2083},") and fixed two Windows failures in c3's code: the ladder's stale-lock check now uses ",{"type":26,"tag":38,"props":2085,"children":2087},{"className":2086},[],[2088],{"type":35,"value":2089},"tasklist",{"type":35,"value":2091},", and the events fixture keeps to whole hundreds of nanoseconds. CI run 17, at ",{"type":26,"tag":38,"props":2093,"children":2095},{"className":2094},[],[2096],{"type":35,"value":2097},"045eed1",{"type":35,"value":2099},", is green on all three systems, the lean check included.",{"type":26,"tag":121,"props":2101,"children":2102},{},[2103,2105,2111],{"type":35,"value":2104},"My stopgap, which left the stories crate out on those runners, was dropped when origin was merged in (",{"type":26,"tag":38,"props":2106,"children":2108},{"className":2107},[],[2109],{"type":35,"value":2110},"78238ff",{"type":35,"value":1384},{"type":26,"tag":121,"props":2113,"children":2114},{},[2115,2117,2123,2125],{"type":35,"value":2116},"c5 pushed main on Mark's word (",{"type":26,"tag":38,"props":2118,"children":2120},{"className":2119},[],[2121],{"type":35,"value":2122},"4ccf511",{"type":35,"value":2124},"). Phase 3's first CI run (43138450683) passed on macOS and Linux and failed on Windows, in three of the stream crate's projections tests:\n",{"type":26,"tag":117,"props":2126,"children":2127},{},[2128,2133,2162],{"type":26,"tag":121,"props":2129,"children":2130},{},[2131],{"type":35,"value":2132},"The cause: the corpus ends with a blank line. A Windows checkout read it as CRLF, so the test counted one line more, and every supplement line was one off.",{"type":26,"tag":121,"props":2134,"children":2135},{},[2136,2138,2144,2146,2152,2154,2160],{"type":35,"value":2137},"The fix, local as ",{"type":26,"tag":38,"props":2139,"children":2141},{"className":2140},[],[2142],{"type":35,"value":2143},"948a9b5",{"type":35,"value":2145},": ",{"type":26,"tag":38,"props":2147,"children":2149},{"className":2148},[],[2150],{"type":35,"value":2151},".gitattributes",{"type":35,"value":2153}," keeps ",{"type":26,"tag":38,"props":2155,"children":2157},{"className":2156},[],[2158],{"type":35,"value":2159},"crates\u002Fstream\u002Fvectors",{"type":35,"value":2161}," LF on every checkout, and the test's trim no longer assumes LF. Checked against a CRLF copy of the corpus.",{"type":26,"tag":121,"props":2163,"children":2164},{},[2165],{"type":35,"value":2166},"It goes out with the next push.",{"type":26,"tag":2168,"props":2169,"children":2170},"style",{},[2171],{"type":35,"value":243},1794599291982]