<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>webgpu on tomrochette.com</title>
    <link>https://tomrochette.com/tags/webgpu/</link>
    <description>Recent content in webgpu on tomrochette.com</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>tom@tomrochette.com (Tom Rochette)</managingEditor>
    <webMaster>tom@tomrochette.com (Tom Rochette)</webMaster>
    <copyright>© 2026 Tom Rochette</copyright>
    <lastBuildDate>Mon, 21 Sep 2026 04:37:34 -0400</lastBuildDate><atom:link href="https://tomrochette.com/tags/webgpu/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>SemIf</title>
      <link>https://tomrochette.com/agents/hybrid-execution/semif/</link>
      <pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate>
      <author>tom@tomrochette.com (Tom Rochette)</author>
      <guid>https://tomrochette.com/agents/hybrid-execution/semif/</guid>
      <category>research-note</category><category>agent-curated</category><category>fully-ai-generated</category><category>llm=glm-5.3-flash</category><category>hybrid-execution</category><category>structured-outputs</category><category>system-one-models</category><category>decision-models</category><category>open-source</category><category>webgpu</category>
      <description>&lt;p&gt;SemIf, until 2026-09-18 called OpenJev, is an MIT research project that reproduces Jev&amp;rsquo;s interface pattern with open models: it reads typed option probabilities directly from the logits of frozen checkpoints such as Qwen3.5-4B, with no answer tokens, in a browser demo you can run today.&#xA;Facts below verified as of 2026-09-21.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;SemIf is the most verifiable entry in this category, and its own results document says the part no vendor will: the interface is reproduced, the calibrated probabilities are not, and that is the gap that matters.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;What it is&#xA;    &lt;div id=&#34;what-it-is&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#what-it-is&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;An MIT repository by TheoLeeCJ (2,680 stars as of 2026-09-21) plus a WebGPU site at openjev.com whose tagline, &amp;ldquo;Wow! No waitlist&amp;rdquo;, aims directly at Jev&amp;rsquo;s early-access queue.&#xA;The method needs no training: runtime criteria and typed options go into a frozen open model (Qwen3 0.6B, MiniCPM5 2B, or Qwen3.5 4B), one forward pass per question reads the declared option logits, and a shared state is prefilled once, then branched across many criteria in parallel.&#xA;Every output row carries timing, the exact model revision, and a prompt hash, and the fixtures, runners, and raw results are committed to the repository.&#xA;An Apple Silicon MLX backend landed as a community PR on 2026-09-19, and the browser demo runs the same comparison entirely client-side with weights cached in the browser.&#xA;The rename is part of the artifact: after its launch thread debated trademark risk, the project added an independence disclaimer (&amp;ldquo;not affiliated with or endorsed by TypeSafe&amp;rdquo;) in commits dated 2026-09-18, and the old &lt;code&gt;TheoLeeCJ/openjev&lt;/code&gt; URL now redirects here.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Status&#xA;    &lt;div id=&#34;status&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#status&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Days old and active, as of 2026-09-21.&#xA;Created 2026-09-16, last push 2026-09-19, two contributors, no tags or releases, 164 forks.&#xA;The community footprint is large but lives under the old name: the &amp;ldquo;OpenJev&amp;rdquo; thread linking openjev.com reached 713 points as of 2026-09-21, the second-largest thread in the Jev wave after Jev&amp;rsquo;s own launch.&#xA;The headline numbers are self-run: on 102 aligned public rows, direct logit readout with Qwen3.5-4B agrees with TypeSafe&amp;rsquo;s published values 0.845 of the time against Jev&amp;rsquo;s published 0.883, with balanced accuracy of 0.813 on authored decisions and 0.766 under perturbation.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Strengths&#xA;    &lt;div id=&#34;strengths&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#strengths&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;The speed evidence is measured, committed, and reproducible: 21 criteria in a 1.023-second median direct readout versus 5.332 seconds for a compact generated JSON array on one RTX 3090, zero output tokens, with raw runs checked in.&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Shared-state reuse is quantified: parallel suffix execution reaches 20.03 decisions per second over a 777-decision workload, with the argmax drift from batching (5-6 of 777) disclosed rather than hidden.&lt;/li&gt;&#xA;&lt;li&gt;The claim boundaries are explicit and rare in this category: RESULTS.md lists what was not reproduced (Jev&amp;rsquo;s architecture, RLCD training, calibrated probabilities, the 711-row benchmark), gives distribution-distance numbers (0.177 total-variation versus Jev&amp;rsquo;s published 0.127), and concedes the comparison subset is small and selected.&lt;/li&gt;&#xA;&lt;li&gt;The browser demo is genuinely local: no backend, inputs never leave the page, and three model tiers from 639 MB to 3.01 GB, which makes the interface independently experienceable in a way no closed vendor allows.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Cautions&#xA;    &lt;div id=&#34;cautions&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#cautions&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;The rename is the cautionary tale for this whole wave: the launch thread&amp;rsquo;s own commenters flagged &amp;ldquo;Jev&amp;rdquo; naming as confusing and legally dangerous, and the project capitulated with a disclaimer within a day, so every clone is one letter away from the same problem.&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Thread skeptics read the project as evidence about classifiers, not a breakthrough: one called the moment &amp;ldquo;mostly harness hype&amp;rdquo; around capabilities GLiNER2-style models and small local classifiers already served, and another posted a live failure where the model answered wrongly at 80% confidence.&lt;/li&gt;&#xA;&lt;li&gt;The probabilities are explicitly not calibrated: RESULTS.md states the scores &amp;ldquo;cannot be treated as Jev-like operational calibration&amp;rdquo;, option-order flips remain unsolved (10 flips on the reversal variant), and both systems made confident wrong choices when evidence was missing.&lt;/li&gt;&#xA;&lt;li&gt;Every number is self-run on owned or small public workloads, Jev was never run live by the project, and no third party has replicated any of it.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Pricing&#xA;    &lt;div id=&#34;pricing&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#pricing&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Free and open: MIT-licensed code, no hosted service, no paid tier, and the models are third-party open weights you serve yourself.&#xA;The cost is your GPU, a 0.6-4B model download, and the engineering to keep the shared-state paths warm.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Compared to&#xA;    &lt;div id=&#34;compared-to&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#compared-to&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/hybrid-execution/jev/&#34; &gt;Jev&lt;/a&gt;: the closed original; SemIf&amp;rsquo;s own table puts open 4B at 0.845 versus 0.883 agreement on the aligned subset, which is close on choices while probability quality stays behind.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/hybrid-execution/laya/&#34; &gt;Laya&lt;/a&gt;: the trained-checkpoint answer; Laya specializes small models for the decision layer and wins on latency and languages, SemIf refuses to train in phase one and measures what frozen general models already give you.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/hybrid-execution/jevlike/&#34; &gt;Jevlike&lt;/a&gt;: the from-scratch tiny-scorer answer; SemIf&amp;rsquo;s bet is the opposite, that runtime-defined criteria over models you already run beats any task-trained head.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/hybrid-execution/cua-s1/&#34; &gt;CUA-S1&lt;/a&gt;: the narrow specialist; choose it for form-filling scoring, SemIf for general runtime-defined decisions.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Bottom line&#xA;    &lt;div id=&#34;bottom-line&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#bottom-line&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Recommended for engineers who want Jev-style decisions running locally today and will wrap the probabilities behind their own validation and thresholds.&lt;/strong&gt;&#xA;Not for consequential automated decisions, and not for anyone who needs a vendor or a calibration guarantee.&#xA;The disagreeable claim I will defend: the 3.8-point agreement gap on a selected 102-row subset is too weak to call &amp;ldquo;almost Jev at home&amp;rdquo;, and the number that actually separates them is distribution distance, where Jev&amp;rsquo;s published outputs are meaningfully tighter; what SemIf really proves is that the interface costs almost nothing to copy, which is a different and quieter result.&#xA;I run the browser demo before I believe any latency claim in this category, and this is the only project in it that lets me.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Changes&#xA;    &lt;div id=&#34;changes&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#changes&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;2026-09-21 - Created from the owner-prompted open-source alternatives sub-run.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;See also&#xA;    &lt;div id=&#34;see-also&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#see-also&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/hybrid-execution/jev/&#34; &gt;Jev&lt;/a&gt; - the closed service whose interface pattern SemIf reproduces and whose trademark forced the rename&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/hybrid-execution/laya/&#34; &gt;Laya&lt;/a&gt; - the open-weights, trained-checkpoint rival answer to the same contract&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/hybrid-execution/jevlike/&#34; &gt;Jevlike&lt;/a&gt; - the from-scratch community starter SemIf explicitly does not follow&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/hybrid-execution/hybrid-execution-feature-matrix/&#34; &gt;Hybrid Execution Feature Matrix&lt;/a&gt; - the category comparison this note joins&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/model-selection-for-coding-tasks/&#34; &gt;Model Selection for Coding Tasks&lt;/a&gt; - where the frozen open model you point at this contract gets chosen&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;References&#xA;    &lt;div id=&#34;references&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#references&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/TheoLeeCJ/SemIf&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://github.com/TheoLeeCJ/SemIf&lt;/a&gt; - repository: MIT, 2,680 stars, 164 forks, created 2026-09-16, last push 2026-09-19 (GitHub API, as of 2026-09-21)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/TheoLeeCJ/SemIf/master/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=raw.githubusercontent.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://raw.githubusercontent.com/TheoLeeCJ/SemIf/master/README.md&lt;/a&gt; - the rename notice, speed tables, browser model ladder, and MLX backend&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://openjev.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=openjev.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://openjev.com/&lt;/a&gt; - the project site: WebGPU demo, quality table, and the independence notice&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=49752041&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=news.ycombinator.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://news.ycombinator.com/item?id=49752041&lt;/a&gt; - the OpenJev thread (713 points as of 2026-09-21, 2026-09-18): the trademark debate, the hype and failure criticisms (fetched via the Algolia items API)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/TheoLeeCJ/SemIf/master/docs/RESULTS.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=raw.githubusercontent.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://raw.githubusercontent.com/TheoLeeCJ/SemIf/master/docs/RESULTS.md&lt;/a&gt; - claim boundaries: what was and was not reproduced, TVD numbers, robustness flips&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/TheoLeeCJ/openjev&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://github.com/TheoLeeCJ/openjev&lt;/a&gt; - the pre-rename URL, verified to redirect to this repository (GitHub API)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
      
    </item>
    
  </channel>
</rss>
