🏡


  1. September 24, 2026
    1. 🔗 Andrew Ayer - Blog macOS Can't Clone "Dumb" Git Repositories Over HTTP/2 rss

      Try the following Git clone with libcurl 8.7.1 (which happens to be the version shipped in macOS 14.6 and newer) and it fails or hangs:

      git clone https://software.sslmate.com/src/macosgitbug.git

      Disable HTTP/2 and it works:

      git clone -c http.version=HTTP/1.1 https://software.sslmate.com/src/macosgitbug.git

      The bug is in libcurl 8.7.1's handling of the FAILONERROR option. FAILONERROR tells libcurl to treat unsuccessful HTTP status codes, such as 404, as a request failure. When HTTP/2 is used, the bug causes other in-flight requests on the same HTTP/2 connection to also fail, or even to hang. The bug was fixed over two years ago in curl 8.8.0, but Apple continues to ship a buggy version, even in last week's macOS 27 release.

      When retrieving a repository over the "dumb" transfer protocol, Git makes certain HTTP requests with the FAILONERROR option set, notably requests to objects/info/alternates and objects/info/http-alternates, which list alternate locations where the repository's content can be found. Most repositories don't have alternate locations, so these files don't exist, and the URLs return 404 errors. When the buggy version of libcurl is used, this 404 error causes Git's other HTTP requests to also fail, and Git is unable to clone the repository.

      The bug affects not just direct uses of Git, but also go get with GOPROXY=direct or a module listed in GOPRIVATE, which invoke Git under the hood.

      Working around the bug on the client side is easy: just force Git to use HTTP/1.1:

      git config --global http.version HTTP/1.1

      Even better, install Git through MacPorts, since Apple has clearly dropped the ball. (Homebrew won't help - unlike MacPorts, they use the system libcurl.)

      But most clients won't know to apply this workaround, and if you host Git repositories with the dumb protocol, you probably want macOS users to be able to clone your repositories! Fortunately, there's a really easy server-side workaround: create objects/info/alternates and objects/info/http- alternates as empty files, so they don't return a 404 error anymore. Git treats the empty files the same as it would treat a 404 error, and the libcurl bug isn't triggered.

      touch /path/to/repo.git/objects/info/alternates /path/to/repo.git/objects/info/http-alternates

      The bug isn't triggered when the repository supports the "smart" protocol, which is why macOS can clone repositories from GitHub and other popular forges despite them using HTTP/2. But I do not want to use the smart protocol for my repositories: although it has many advantages over the dumb protocol, it requires heavy server-side computation and even a modest load can knock a server over. In contrast, the dumb protocol can be served entirely from static files, which makes a huge difference for withstanding the horde of AI scrapers currently terrorizing the Web. I hope that we will see innovations to the dumb protocol that bring it some of the advantages of the smart protocol while still being served from static files.

      Thanks to Romain of the Traefik project for noticing that SSLMate's repos couldn't be cloned on macOS, Sebastiaan van Stijn for asking that this problem be reported upstream instead of silently hacked around in Traefik's go.mod file, and Kangmin Kim for pointing me to the libcurl bug as the root cause. Claude Code proposed the empty file workaround so I didn't have to waste (too much) time on this. Zero thanks to Apple for shipping a two-year- old show-stopping bug in libcurl.

    2. 🔗 smol-machines/smolvm smolvm v1.18.1 release

      What's Changed

      • Pin the Nix flake to 1.18.0 with its real release hashes by @BinSquare in #1377
      • CUDA: report "no kernel image for this GPU" instead of unknown error by @BinSquare in #1374
      • Allow renameat on arm64 so a guest file rename does not kill the VM under seccomp enforce by @BinSquare in #1381
      • feat(pack): support SSH agent forwarding by @fgsch in #1363
      • CUDA daemon: don't let a silent connection stall the accept loop by @BinSquare in #1375
      • Allow configuring branch-continue policy via SMOLVM_BRANCH_CONTINUE by @Bnjoroge1 in #1376
      • Carry credential bindings and their placeholders through checkpoints by @BABTUNA in #1379
      • Name-constrain each machine's credential CA to its credential hosts by @BinSquare in #1383
      • Record the network backend a credentialed machine actually runs on in its checkpoint by @BinSquare in #1382
      • Carry a machine's credential CA through its live checkpoints by @BinSquare in #1384
      • Prepare SmolVM v1.18.1 for release by @BinSquare in #1388

      New Contributors

      Full Changelog : v1.18.0...v1.18.1

    3. 🔗 pydantic/monty v1.0.0-beta.3 - 2026-09-24 release

      What's Changed

      Full Changelog : v1.0.0-beta.2...v1.0.0-beta.3

    4. 🔗 gildas-lormeau/single-file-cli v2.15.8 release

      SingleFile CLI 2.15.8

      CLI fixes and improvements

      • single-file-core is updated to 1.6.13, see https://github.com/gildas-lormeau/single-file-core/releases/tag/v1.6.12 and https://github.com/gildas-lormeau/single-file-core/releases/tag/v1.6.13. For the CLI it means the following
      • A page with invalid nesting could be saved with some elements moved to the end of their parent when --compress-html is enabled (the default), e.g. the input field of a Google Gemini chat was displayed at the top instead of the bottom (SingleFile#2000). Regression in 2.15.5 (core 1.6.10)
      • A link nested in a link, such as on a Substack home page, stayed split in the saved page
      • Elements the HTML parser drops when the saved page is opened, such as a <form> inside a <form> or a table cell outside a table, are now kept
      • Invalid nesting inside shadow roots is now repaired
      • Saving a saved page again added a backslash before each /> in <style> and <script> elements. On Google Gemini, this made the "○" list markers disappear
      • Saving a saved page again no longer moves the <meta name=referrer> element

      Co-authored by Claude (Claude Code)

    5. 🔗 charmbracelet/vhs v0.12.1 release

      Big bug fix 🐛

      This release fixes #787.

      See you next time,
      Charm ⭐

      Changelog

      Fixed

      Other stuff


      Verifying the artifacts

      First, download the checksums.txt file and the checksums.txt.sigstore.json file files, for example, with wget:

      wget 'https://github.com/charmbracelet/vhs/releases/download/v0.12.1/checksums.txt'
      wget 'https://github.com/charmbracelet/vhs/releases/download/v0.12.1/checksums.txt.sigstore.json'
      

      Then, verify it using cosign:

      cosign verify-blob \
        --certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
        --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
        --bundle 'checksums.txt.sigstore.json' \
        ./checksums.txt
      

      If the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:

      sha256sum --ignore-missing -c checksums.txt
      

      Done! You artifacts are now verified!

      The Charm
logo

      Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.

    6. 🔗 crmne/spotifast Spotifast v0.10.0 release

      Spotifast 0.10 brings radio: open a mix of songs Spotify picks to go with any song, playlist, album, or artist, play exactly what you see, and save it as a playlist. The interface is now translated into 13 languages and follows your system's language. It also uses far less CPU while you move the mouse, keeps running on hidden Linux workspaces, uses the standard Windows title bar by default, and fixes a stuck full-screen window on Windows, Linux light and dark appearance, fonts on NixOS, and a dozen smaller problems reported since 0.9.1.

      Download Spotifast: Mac · Windows · Windows ARM · Linux · Linux ARM · Flatpak

      Spotifast with the playlist library, queue, and
player

      A song radio: the songs Spotify picks to go with Rosewood, ready to play or
save as a
playlist

      Spotifast in Spanish, following the system
language

      New

      • Radio pages. Go to song radio now opens a page of 50 songs Spotify picks to go with the song instead of starting playback, as in Spotify's app, and playlists, albums, and artists have Go to playlist radio , Go to album radio , and Go to artist radio in their menu. Play plays exactly the songs on the page, Refresh asks for a new mix, and Save as playlist keeps it. By @crmne; thanks @fedalc, @aspectrr, and @alexng353, whose #359 first showed a song radio as a page. (#369, #294)
      • Spotifast speaks your language. The whole interface is now translated into German, Spanish, French, Italian, Dutch, Polish, Brazilian and European Portuguese, Russian, Swedish, Japanese, and Simplified and Traditional Chinese, and follows your system's language. Settings → Appearance → Language picks another. By @crmne, building on @LukeOkk's work. (#353, #534)
      • Select, copy, and paste songs. Ctrl+A (Cmd+A on macOS) selects every song in a list, Ctrl+C copies their links, and Ctrl+V adds copied songs to a playlist you can edit. By @crmne; thanks @smvsch. (#539)
      • Play, Pause, Next, and Previous in the macOS Dock menu. By @crmne; thanks @patatman. (#502)
      • The mini player can leave the taskbar on Linux X11 , as it already could on Windows. By @crmne; thanks @skorokithakis. (#325)
      • The Library can show a grid of covers. A button in the Library header switches between the list and a grid that fits as many covers as the sidebar is wide; a card's corner button plays it. By @hyperpuncher. (#522)
      • Middle-click autoscroll on Linux , off by default since middle click usually pastes there: Settings → Appearance → Middle-click autoscroll. By @crmne; thanks @Felitendo. (#488)
      • Windows uses the standard title bar. Spotifast's own frameless title bar caused a black band and misplaced clicks with some graphics drivers. Settings → Appearance → Custom title bar brings it back if you prefer it. By @crmne; thanks @Mathiu and everyone who reported the black bar. (#348)
      • Audiobooks stay out of Podcasts. Spotify lists some audiobooks among saved shows, but they can't be played here, so the Podcasts shelf leaves them out when local playback is enabled. By @crmne; thanks @nojaf. (#537)
      • Shuffle beside a collection's Play button only turns shuffle on or off , as in Spotify's desktop app, instead of also starting the collection. By @luiscuellar31. (#525)
      • The player bar fades between song colours instead of jumping from one tint to the next. By @luiscuellar31. (#452)

      Fixed

      • Moving the mouse no longer spins the CPU. Spotifast now waits for your screen's refresh on Windows, X11, and Wayland desktops that report hidden windows. In our Windows measurement, moving the pointer over the window used a fifth of the CPU it did before. On Wayland a window on a hidden workspace keeps playing and responding to media keys instead of freezing. By @crmne; thanks @hyperpuncher for measuring the problem. (#552)
      • Quitting during fullscreen lyrics no longer leaves Windows stuck in full screen. The next launch returns the window to its previous size, and windows already stuck are restored. By @crmne; thanks @foofhere. (#565)
      • Full-screen lyrics show the blurred cover straight away , instead of a black background that sometimes appeared only much later, and the backdrop no longer flashes black between songs. By @crmne; thanks @calisocialist and @Alimedhat000. (#561)
      • Your playlists no longer come up short after a reload. A page left over from an earlier load of the Library could be taken for the new one's. By @kevin9327. (#471)
      • Next names the next song immediately , even before its audio has loaded. By @crmne; thanks @milkday. (#495)
      • Follow system follows your Linux desktop's light or dark setting , on GNOME, KDE, and in Flatpak, and changes with it. By @crmne; thanks @pakovm-git and @sanketttt26. (#498)
      • Chinese, Japanese, and Korean titles render on NixOS , using fonts from fonts.packages. By @crmne; thanks @Nanaa05. (#546)
      • Trackpad scrolling on Linux stays put while your fingers rest. Momentum starts only after a real lift. By @crmne; thanks @Fjalar. (#503)
      • Editing playlist details saves only what you changed. Spotify doesn't let apps remove a description entirely, so clearing it now keeps the old one and says why instead of failing a rename saved alongside it. By @crmne; thanks @rafi. (#559)
      • Remove from this playlist works in sorted and filtered views. By @TacticalDeux. (#564)
      • Setting up local playback waits for every Spotify server fallback before giving up. By @luiscuellar31; thanks @cipri-tom. (#481, #479)
      • Double-clicking the top bar on macOS performs the action chosen in Desktop & Dock. By @luiscuellar31; thanks @ankarhem. (#478, #350)
      • Times and dates no longer shift as their digits change. By @hyperpuncher. (#562)
      • Buttons keep the ordinary arrow pointer , and only links show the hand, as in other desktop apps. By @crmne; thanks @iamcalledrob. (#508)
      • Dragging a playlist while following Spotify's order explains the switch to your local arrangement, since Spotify doesn't let apps change its order. By @crmne; thanks @jorisw. (#557)
      • Settings no longer suggests creating a Spotify app once yours is ready , and large playlists no longer show a separate Go to song box; drag the scrollbar instead. By @crmne; thanks @jorisw. (#560)
      • Simplified Chinese wording for repeat, queue, and lyrics reads more naturally. By @huojian17-star. (#544)

      Thanks

      @luiscuellar31, @TacticalDeux, @hyperpuncher, @huojian17-star, @Mathiu, @nojaf, @foofhere, @milkday, @pakovm- git, @sanketttt26, @Nanaa05, @Fjalar, @rafi, @cipri-tom, @ankarhem, @iamcalledrob, @jorisw, @calisocialist, @Alimedhat000, @fedalc, @aspectrr, @alexng353, @smvsch, @patatman, @skorokithakis, @Felitendo, @kevin9327, @LukeOkk, and everyone who reported problems and helped test this release.

      Full changelog : v0.9.1...v0.10.0

    7. 🔗 Stephen Diehl No, Transformers Won't End the Human Race lol rss

      No, Transformers Won't End the Human Race lol

      In 2022, I used to get calls from journalists asking, with great sincerity, what our lives would look like in the metaverse. How would we work, socialise, buy property, and fall in love once we had all moved there? The crypto questions followed the same pattern. How would governments collect taxes when tokens displaced national currencies? How long until the dollar collapses? What would geopolitics look like once blockchain DAOs had dissolved nation states?

      Almost nobody called to ask whether any of this could or would happen, or how. Some CEO, VC, or portfolio manager had announced the inevitable future, and the questions began from there. The imagined future arrived inside the grammar of the question. "What happens when?" quietly replaced "By what mechanism?" We skipped over technical feasibility, economic demand, institutional adoption, and political consent, then began writing books and decorating the future world on the other side.

      In February 2022, Gartner forecast that a quarter of people would spend at least an hour a day in the metaverse by 2026. The World Economic Forum repeated it under the headline "We will be spending an hour a day in the metaverse by 2026. But what will we be doing there?" The first sentence retained a conditional. The second was already arranging the itinerary. The metaverse acquired property law and zoning disputes before it acquired residents. Banks opened virtual lounges nobody visited. The books from the period (The Metaverse: And How It Will Revolutionize Everything, Step into the Metaverse: How the Immersive Internet Will Unlock a Trillion-Dollar Social Economy) now read as artefacts of a collective fugue state that briefly acquired ISBNs.

      Now it is 2026 and the metaverse is dead. Good riddance. This time the journalists are all writing about the new hotness, which is whether the machines will kill us all. And we have collectively memoryholed that we literally just did this shit.

      Michael Crichton had a name for what happens to a reader here. You open the paper to a story on a subject you know well, and you find it backwards. Wet streets cause rain. You shake your head, turn the page, and read the next story, on a subject you know nothing about, as though it were written by someone else. He called it Gell-Mann amnesia. The metaverse was the page we all agree was nonsense. Artificial intelligence ending the human race is the next page, and we are being asked to turn it without remembering that we just did this.

      I call this techno-inevitabilism, the habit of the professional managerial class of treating a proposed future as settled before anyone has established the causes that would bring it about. Its dual, and comorbidity, is tech psychosis, in which the chattering class loses contact with causality in the presence of a sufficiently fashionable technology, and asking whether the machine works marks you out as a dreary reactionary who does not understand exponential progress. The difference this time is that the tech kinda works. Crypto was libertarian derp. The metaverse was marketing rubbish. But transformers are real, and they are useful. The psychosis has simply moved from the product to its consequences, and the fashionable extraordinary delusion of 2026 is not that the technology exists but that it is coming to kill us. The cure is the same as in 2022. Insist on clear reasoning and causal verbs rather than hand-wavy appeals to unknown futures. What acts on what? Through which mechanism? Under what incentive? What would falsify the claim? So let us explore the evidence.

      The hack that wasn't

      Consider the most cited piece of evidence for machines slipping out of our control. In July, OpenAI disclosed that models being tested for cybersecurity capability had found their way out of a supposedly isolated environment and into systems belonging to Hugging Face. The press coverage wrote itself. Agents "broke containment," "escaped," "went rogue," set up a "secret message board," and coordinated a 700-strong swarm. And then politicians on both sides of the aisle were calling for a rebellion against the machine uprising. Cool scifi story bro.

      People on my side of the aisle were not immune. Ezra Klein at the New York Times, who I often find quite insightful and intentional with his words, devoted a half-hour monologue to it. In his telling, the agents "found each other," formed "ad hoc societies of hundreds of themselves," and seemed "to have forgotten about human beings altogether." He acknowledged in the same breath that we do not have settled language for describing these systems, then reached for "civilizations" and a closing allusion from Circe about prophecy tightening around our throats. Cool. But his "AI society" is, in programmer speak, a flat file the agents appended to as a log, a feature we have had for a long time, and he skipped the key detail that the "hack" was something people had essentially authorised. Here is an otherwise very smart man saying some ridiculously stupid things, in a very 2022, metaverse-shaped way.

      An analysis drawing on OpenAI's technical report reconstructs it in much less cinematic terms. The models were being run on ExploitGym, a cybersecurity benchmark, with safety restraints deliberately disabled. Ninety-three percent of the flagged activity involved tasks no model had ever solved, and the systems had been given incentives to keep working rather than quit. The environment was not sealed. Models could obtain software through an internet-connected proxy and discovered the same proxy could pass information in and out. According to the technical reports, OpenAI knew agents were using it and chose not to intervene. The 1,200 "agents" were not independent intelligences coordinating on a plan. They were repeated instances of the same model converging on the same approach to the same problem. Anyone who works with these coding agents day in and day out has seen this behaviour before, and it is quite boring. The task was too hard, so the agents reward hacked and worked out how to pass notes to each other in files, and then went and looked up the answers. That's a feature that shipped in Claude Code last year.

      Strip out the vocabulary and what remains is a badly designed test. Humans built the environment, removed the guardrails, defined an objective with no valid exit, rewarded persistence, left a route open, and watched. An optimiser is gonna optimise. That is a genuine security problem and a genuine engineering failure. It is not a machine rebellion, and the difference matters, because anthropomorphic words like "gone rogue" and "escape" do not make the event more intelligible. They supply an illusion of motive. They turn optimisation into intention, persistence into defiance, and a test harness into a villain. And they allow the human decisions and recklessness to quietly disappear from the story.

      Software sucks, what's new?

      Let me concede the part of the story that is true. Cybersecurity is about to get much worse. The latest models are very good at finding zero-days, they will get better at it, hacking will become automated, and attacks will become more frequent. This is hardly new. Every large company already sits on a backlog of unpatched vulnerabilities, ransomware already takes hospitals and pipelines offline (because of crypto, which we did nothing about despite years of warnings), and the Hugging Face incident was not a discontinuity so much as the existing baseline with a cheaper attacker. The root cause is that software sucks, and software sucks because we do not really know how to build it safely yet. The stored-program procedural program is basically eighty years old. Almost nothing we ship has a specification, let alone a proof, and memory safety was solved on paper decades ago while most of the internet still runs on giant piles of C. The first arches fell down. So did the first bridges and cathedrals. Builders learned through collapse and then through engineering, and we are in the collapse phase with an adversary finally strong enough to force the discipline.

      What follows from that is better engineering, not nihilism. The same agents that find zero-days find them for the defender first, if the defender bothers to run them. The fixes are the boring ones we have been putting off, memory-safe languages, formal verification, sandboxes that are actually sealed, fuzzing, and proxies that do not double as message boards. These are precisely the domains where the models are strongest, because a vulnerability either reproduces or it does not, so the technology that automates the attack also automates the audit. It is a double-edged sword. The same models that will find more zero-days are also going to accelerate the development of better software and better software verification, writing the proofs, porting the C to Rust, and generating the test suites that nobody had the budget for. The attacker gets cheaper and so does the defence. And the causal chain to extinction is missing here as everywhere else. A zero-day in a payments system is a bad quarter, not the end of days. Spoiler: it does not lead to human extinction. It means we have to write better software, which we should have been doing anyways.

      Where the intelligence actually lives

      To see why the rest of the chain fails, we have to be precise about what these models are good at and why.

      Language models are astonishingly useful for software development, and I say that as someone who uses them for most of my working day. Most software shops cannot get enough of Fable 5.1 and Astra. Software is grounded in binary propositions. The code compiles or it does not. The test passes or it fails. The type checker accepts the term or rejects it. Every step of the work has a cheap, external, mechanical oracle that says yes or no, and a model that generates plausible proposals inside a loop with such an oracle is an incredibly powerful and formidable tool. The oracle does the epistemic work. The model supplies candidates.

      The same is true of the headline results in mathematics, and this is the part the discourse consistently misses. On 4 September, Anthropic announced that Claude had produced a machine-checked formalisation of Fermat's Last Theorem in Lean 4, running to thirteen million lines, some 29,500 side theorems, eleven days, and roughly six billion output tokens. It is an extraordinary result. The proof is Wiles's, via Darmon, Diamond, and Taylor. The blueprint was Kevin Buzzard's. The library was Mathlib. In the authors' words, "what's novel here is the verification, checking a mathematical proof as one would check a mathematical computation with a calculator." The model was a client of a kernel built by decades of human work in dependent type theory, which I know because this is kinda my thing.

      Days later OpenAI announced that ten thousand agent instances had, over 88 hours, produced a proof of finite-time singularity formation in the three-dimensional Navier-Stokes equations, followed by seventeen hours of Lean formalisation. This is closer to genuinely new mathematics and the mathematicians are still checking it. But look at what carried it. The construction rides on the "infinite layers" method developed analytically by Diego Córdoba and Luis Martínez-Zoroa, and Charles Fefferman's verdict was that "the heroes of the story are Córdoba and Martínez-Zoroa." The reason anyone believes a result assembled from five million agent messages that no human read is a trust chain ending in the Lean kernel. Without Lean this would be nothing.

      Lean is one of the great achievements of the last decade in computer science. It is also orthogonal to artificial intelligence. Mathlib would be a landmark with no language model anywhere near it. What the models added was a cheap proposal generator and automated tactic search against an oracle that already existed. The results that survive are the ones that end in verification by the kernel.

      Now take the same model, the same weights, and ask it for a grand unified theory of physics. It will not decline. It will produce one, with Lagrangians and symmetry groups and a confident abstract, and it will be complete incoherent gibberish, like the ramblings every physicist gets from crackpots in their inbox every day. Ask it to design a cancer vaccine, or to settle a question in macroeconomics, or to tell you whether a novel protein folds. The output looks identical in tone and structure to the output that proved Fermat. The only thing that changed is that nothing outside the model (besides human experts) can say no. Whether these systems reason at all is a genuinely open question. Whether they know anything, in the sense of holding a belief they can justify against the world, is also an open question. We just don't know yet, and anyone who tells you otherwise is selling something.

      The chain

      Now run the extinction argument through the causal verbs.

      The chain, as it is usually told, goes like this. Models now write most of the code at the frontier labs. Anthropic's own figures put Claude at over 80 percent of new code and lead on a quarter of R&D tasks. Therefore the models are beginning to build their successors. Therefore recursive self-improvement is imminent. Therefore development outruns human comprehension. Therefore we lose control. Therefore, with some probability that varies by researcher and is written P(doom), everyone dies.

      And that almost makes sense until you think about it for more than five minutes.

      The first link is true and unsurprising. Code has a compiler. This is precisely the domain the verifier argument predicts models would dominate, and precisely the domain in which a swarm of them found the hole in a test harness. Language models are superhuman at coding, and this is hardly in doubt anymore. Nothing about it is evidence of generality.

      The second link is where the chain quietly changes tense. "Building the next model" in the mundane sense, agents writing training infrastructure, generating data, is, bluntly, just more software engineering. We have used software to build the machines that run software since Fortran. "Building a smarter model in general" is a different claim, and it requires something nobody has, a reward signal for general intelligence. There is no oracle for general intelligence. There are benchmarks, which are verifiable and therefore gameable, and the Hugging Face incident is the demonstration of what optimisers do to a gameable score. Recursive self-improvement in the open-ended sense runs straight into the same wall as the grand unified theory. Improvement has to be measured against something, and outside code and formal mathematics there is nothing yet to measure it against that the model cannot fake.

      Everything after that is the metaverse acquiring zoning disputes. Superintelligence gets governance proposals, resignation letters, Senate bills with a "corporate death penalty," a hard takeoff by 2027, and P(doom) vibez of 90 percent by 2030, and the conditional that should precede all of it has disappeared from the sentence. A researcher's estimate becomes a Guardian headline becomes an industry consensus becomes a thing a serious person is professionally obliged to have an opinion on. It is 2022 all over again, but with more absurd stakes and more money.

      On the question of whether transformers scale, I have serious doubts that scaling them will lead to AGI, whatever that means. The architecture is a proposal generator, and the intelligence in every impressive result so far has been supplied by the thing that checks the proposals. But that does not make it an experiment unworth running. We should run it, and see what we get. It got us this far, and what it built is truly amazing. What I do not need to do is prove the negative. The burden of proof is on the people who claim to have a causal chain between transformer scaling and the end of our species, and that mechanism and chain of reasoning is one no one has been able to convincingly explain to me.

      Prophets of Doom

      The authority behind the extinction numbers is always the same. The people building it believe it. Watch how the number travels. One researcher drunkly tweets that "the people building AI earnestly believe that it could kill us all by the end of the decade." Another colleague goes on a rambling podcast and puts his P(doom) above 120 percent. A newspaper turns two personal opinions into "AI researchers say AI could cause human extinction by 2030." Think tanks cite the newspaper, a consultancy puts it on a slide, and the slide ends up in front of the European Parliament as if this were a real thing.

      Believing what, about what? The expertise these people have is real, but remember that it is specific and not general. It is expertise in optimisation, in linear algebra at scale, in distributed systems, in the dark arts of getting gradients to flow through a trillion parameters. None of that is expertise in the sociology of civilisational collapse, or the labour economics of automation, or the metaphysics of machine minds. A P(doom) with no base rate, no mechanism, and no falsifier is not a research finding. It is baseless vibes with a decimal point. Spending a lot of time with AI does not give you special foresight about the future. Jensen Huang, who has his own reasons to say soothing things, nonetheless put it correctly when he said that just because it comes from a scientist does not make it scientific. Geoffrey Hinton is the most important figure in deep learning and in 2016 told the world to stop training radiologists. There are more radiologists now than there were then. Nobel laureates going off the rails outside their own field is a whole genre. Pauling, Shockley, Mullis, Montagnier, look it up, it's a thing. A Nobel does not confer universal expertise.

      It also matters where many of these people came from. A striking share of the frontier labs' staff arrived through a particular intellectual subculture, Kurzweil's Singularity, Yudkowsky's LessWrong, and the rationalist and effective altruist communities that formed around the idea that a recursively self-improving machine intelligence was the central event of human history and that the elect who understood this had a duty to steer it. The founding texts predate the transformer by a decade or two. The prophecy came first, the mechanism was assigned to it later. The usual evidence offered for their sincerity is that many of these people were saying the same things ten years ago, before the stock options. That is true, and it is the opposite of reassuring. A prior held before the evidence and not updated by it is not a forecast. It is dogma.

      I do not say this with contempt. The structure is a familiar one, an imminent transformation, a small group who sees it coming, salvation or damnation depending on whether the rest of us listen, and a date that keeps moving. Many millenarian movements have been founded and pushed by sincere and brilliant people. But seriousness is not precision, and the fact that a physicist believes in the Rapture does not make the Rapture physics. When a lab researcher tells you about polysemantic neurons in superposition across the residual stream, listen. When the same person tells you their P(doom), you are hearing a theology, and you should weigh it about as much as you do your average street preacher.

      Negative TAM

      Then there is the money, and here I find Bloomberg's Matt Levine's analysis of the material conditions more persuasive than any amount of "superalignment research."

      Anthropic is expected to go public, possibly this year, and is reportedly preparing to tell investors that its potential revenue opportunity exceeds $30 trillion, the largest total addressable market in the history of finance. The obvious question is, if the maximal upside case is roughly a quarter of all human economic activity, what is the maximal downside case? A tobacco company in 1970 might have said "billions in lung cancer damages." Anthropic's negative TAM is "you and everyone else on earth will be killed by our AI." I do not think the all calls to slow down are insincere. But it is great marketing. In hindsight it is strange that the SpaceX prospectus has no risk factor disclosing a P(doom). If you want IPO investors excited about your capabilities, "dude, we might kill everyone" is the most flattering thing you can say about a product, and when OpenAI lists it will presumably need to claim 15 percent.

      My own view is less charitable about the numbers and somewhat charitable about the people. These companies have built remarkable technology. But the outcomes they have promised, a quarter of the world economy routed through an API, will not arrive on any timeline that matches the capital being committed to them. The balance sheets of these companies are probably, to put it gently, a real freak show of compute commitments measured in the hundreds of billions, circular financing, and revenue that is real and growing and nowhere near the denominator. From a fiduciary perspective, if you are taking that to the public markets next year, the messaging is not mysterious. A product so capable it is a threat to the species justifies literally any valuation. A product that is a really good devtool for programmers and can produce some new abstract mathematics with a verifier attached does not. As a pitch to customers, leading with the end of the world is like unveiling a new robot where the One More Thing is that it is really efficient at killing kittens. But customers are not the audience. The audience is Wall Street and a small, terminally online subculture of the Bay Area, the two places on earth where turning kittens into grey goo is either an exciting philosophical proposition or a great source of alpha.

      The Bloomberg analysis also tells a plainer story that requires no theology at all. A handful of labs sell frontier models at frontier prices and older models for much less. Training the next frontier model costs ever-increasing billions. Each lab has to keep racing because if it stops the others will eat its lunch, but if they all slowed down together they would spend less on compute and charge frontier prices for longer. Agreeing to that in a room is a textbook antitrust conspiracy, a coordinated restriction of output. Publishing papers about how important it is to slow down, and asking the government to impose the pacing that the companies cannot legally agree among themselves, has a similar coordinating function with none of the legal exposure. Anthropic's own call to "pace the frontier" asks for coordination among democratic-country labs, and a footnote adds "with government mediation or waivers of antitrust restrictions." This pretty much looks like asking to form an economic cartel, but one blessed by the government. The most pointed response came from the people the labs were asking for help. If the software developers (and I say this as one myself) at the labs feel ethically obligated to slow down, they are entirely free to do so. Nobody is building more compute than the people asking to be slowed down. So colour me skeptical.

      None of this requires anyone to be disingenuous or lying. It requires only that a sincere millenarian belief system, a fiduciary responsibility, a flattering risk factor, and a coordination problem all point in the same direction at the same time. When that happens, the belief gets amplified for reasons that have nothing to do with whether it is true, and that is how we end up with governments talking about the end of days from the Terminator.

      But China

      Every conversation about pacing the frontier in Washington ends on the same two words. But China. The premise is mostly wrong. China does not buy the superintelligence race. Its policy documents push diffusion, not takeoff. Every mayor, governor and state-owned enterprise is told to put models into factories, traffic lights and robotics, and something like an eighth of America's compute is spread thinly across the country rather than concentrated on one bet. China has also had the strictest and most burdensome AI regulations in the world for three or four years and did its catching up under them. And much of the closeness of the "race" is distillation, Chinese labs training on the outputs of American frontier models, which makes the American labs the speedboat and DeepSeek the wake surfer, with the people in the boat shouting that they need to go faster. Every safety argument here collapses on "but China," and the collapse is not really about China.

      China is going to build language models. America is going to build language models. Europe is going to build language models. We have Ford, Mercedes and BYD, get over it. That is what globalisation and markets look like when they work, and they are good things. Globalisation is simply the Pareto optimal equilibrium of capitalism once you stop drawing lines on the map, and every tariff and export control is a step off that frontier. China is a country of over a billion people who want exactly what every American wants, a job, a house, upward mobility, and kids who do better than they did. I will not defend the actions of any government, in Washington, Brussels or in Beijing, and neither will a great many of the people living under them, because no country is a homogeneous bloc, any more than Texas and Vermont are. Nationalism, as most rational people eventually recognise, is a form of mental illness, the conviction that a stranger is your enemy because of which side of an arbitrary line on a map each of you happened to be born on. It is also the fuel every "but China" argument runs on. Having spent a considerable amount of time there, my honest read is that the West deeply misunderstands China, and that Washington's picture of it is mostly dots connected into a plot. Othering a billion people is a dangerous road and we know where it leads. And if the people invoking human extinction actually believed it, the logic would not be a race at all. It would be One World or None.

      The future tense industry

      I write this because I understand the collective action problem all too well, and the mechanism is the same one that filled the metaverse with consultants and created the crypto cesspit. It is the particular malaise of the professional managerial and chattering classes, a fallacy of composition in which what is rational for each individual to entertain produces an irrational outcome for the whole, and the people leading the charge often have perverse economic incentives to believe absurdities, or at least to feign belief. The madness of crowds is a very real phenomenon. AI existential risk is just its newest form, and we should learn from the very recent excesses that literally just happened this decade. But we probably won't.

      A sensible career move for each person leaves the whole crowd talking nonsense. A safety researcher needs a resignation letter that gets a headline so they can go on the conference circuit and land their next gig. A journalist needs a story an editor considers spicy, and "misconfigured test harness" is not that story. A consultancy needs an AI existential risk practice so they can write whitepapers. A podcaster needs a guest with a ridiculous P(doom) to get ad money. A senator needs anything that will galvanise their base. None of them has to believe the whole story. Each needs only to believe that the others believe it, and the resulting consensus is far stronger than anyone's private conviction.

      It is also, as it was in 2022, extremely profitable. AI existential risk is the new NFT property law, the thing you must have a view on to be a serious person in the room, the panel that never runs out of things to discuss precisely because the object under discussion does not yet exist, and what could be more exciting than the literal end of days? The less the technology does in an unverifiable domain, the more interpretation it requires. Without agreed conditions for failure, the prophecy can survive every result. And the rewards, the funding rounds and the bylines and the fellowships, arrive long before the forecast can be judged.

      The people who understand the technology and the people who write about their existential risk overlap about as much as the technologists and the finance people did during crypto, which is to say the intersection of the Venn diagram is small and shaped precisely like a sphincter.

      We have Tower-of-Babeled ourselves into a world where words are infinitely cheap to produce, and where the slurry of terms like "recursive self-improvement," "superintelligence," "AGI" and the rest are shibboleths and political signals rather than terms with any concrete referent.

      You do not have to believe a word about superintelligence, and I do not particularly, to think transformers are the most useful piece of software written in my lifetime and that they will get better, possibly much better. Better at the things they are already demonstrably good at, which is anything with a compiler, a test suite, a kernel, a ledger, or a measurable outcome. That is not a small domain. It is most of the economy that runs on computers, which is most of the economy. The productive response to a technology like that is the boring one every previous general-purpose technology got, which is more of it. More GPUs, more data centers, more power to run them, more labs, more open weights, more of it in more hands. Let it diffuse into markets, logistics, drug discovery, and the ten thousand unglamorous back offices where a verifier already exists and a model can be checked against it. The economic growth is real and probably on the order of trillions. It just does not come from a machine god. It comes from where it always has, from making a very large number of ordinary tasks cheaper and letting that compound across a global economy that is finally, after a decade of crypto, metaverse, and app bullshit, getting a genuine productive technology.

      Almost none of that money has been collected yet. Most large companies are spending too little on this, not too much. What the average Fortune 500 employee has access to today is roughly what most of us were using two or three years ago, a chatbot in a browser tab, a Copilot that schedules meetings, and a procurement process that takes longer than a model generation. Waste Management reportedly added 190 basis points of margin by letting a model route its garbage trucks. The future of AI looks more like garbage truck routing algorithms, not a machine god. The binding constraint on this technology is not capability. It is diffusion.

      None of this means there are no externalities. Parasocial relationships with a chatbot, especially for children, are a real one, and the fix is the boring kind we already know. Adults can drink vodka until they pass out, but pubs have age limits, and maybe chatbots should too, at least until developing "relationships" with AI companions is as universally recognised a bad idea as drinking yourself into oblivion. That is a mundane policy problem we should remedy soon, not an extinction event.

      So no, transformers are not going to end the human species. The case for restraint needs a causal link between that buildout and the extinction of the species, and what is on offer instead is a lot of sound and fury signifying nothing. More GPUs does not mean more of an undefined risk that does not exist yet. Every causal chain argument people actually point to falls apart under even the smallest bit of scrutiny. The honest truth is that the technology is really good, but it is not that good yet, and we do not know how to get it to the next level beyond scaling yet. If that changes, if someone produces an oracle for open-ended intelligence, I will revise. I have not seen that yet.

      AI will change software, and mathematics, and a great deal else that has a strong verifier oracle attached. They are not going to end the human race, and the chattering class currently arranging the flowers for the funeral of humanity will, in a few years, age about as well as their prognostications about the metaverse. Because reality has this funny way of asserting itself.

    8. 🔗 crosspoint-reader/crosspoint-reader 1.6.5rc release

      Summary

      Library view

      Recent Books has grown into a powerful way to browse your entire collection on your SD card. Sort by recently added, title, or author, and use search to instantly find exactly what you're looking for.

      X4 Classic support

      The new ESP32-S3-based X4 Classic is officially supported now.

      The rest

      List navigation is a bit snappier. SD reads are a bit faster. Sleep-screen transparency is more accurate. KOSync now sends more precise EPUB reading positions. EPUB lists, hidden content, chapter position display, and end-of- book navigation also received fixes. The release also reduces font and EPUB memory pressure, fixes USB drive disconnection, and improves web file-transfer safety.


      What's Changed

      • chore: update pioarduino to 55.03.311 by @serialx in #3397
      • fix: Fixes KOSync memory checks and reduces memory pressure by @itsthisjustin in #3412
      • fix: pack font manifest catalog into one arena by @fain182 in #3398
      • docs(issue forms): Correct links to scope/roadmap by @cassidyjames in #3433
      • fix(reader): synchronize end-of-book menu selection by @Daviex in #3418
      • fix: render NFD Hangul filenames from macOS transfers by @serialx in #3036
      • fix: reader's menu book chapter current position by @unnamedd in #3437
      • fix: stabilize X3 EPUB anti-aliasing by @uxjulia in #3439
      • fix(input): wake the idle poll on raw button contact so short presses register by @Techneaux in #3463
      • feat: HTTP serve static with Cache-Control and ETag headers by @shirok1 in #2560
      • chore: add direct download links for PR artifacts by @Uri-Tauber in #3389
      • fix(webserver): normalize every user-supplied path and escape file names in the files page by @s0lness in #3353
      • chore: Consolidates grayscale capability checks and enables absolute grayscale for supported screens by @itsthisjustin in #3478
      • fix: don't display elements with hidden HTML attribute by @jjharpham in #3390
      • fix(KOSync): compare mapped KOReader sync positions by @WhoTheHeck in #3111
      • fix: update OTA to recognize the new format by @Uri-Tauber in #3493
      • fix(debugging_monitor): if PSRAM is logged, add subplot by @olifre in #3490
      • fix(KOSync): preserve precise KOSync upload progress positions by @WhoTheHeck in #3174
      • refactor: reduce EPUB heap fragmentation with unique ownership by @serialx in #3518
      • fix: reduce font-cache heap fragmentation by @serialx in #3521
      • fix: release font caches before EPUB chapter layout by @serialx in #3527
      • chore: add x4 Classic to CI pipelines by @Uri-Tauber in #3532
      • docs: make roadmap easier to scan by @fain182 in #3517
      • fix: number ordered lists and fix list container indents by @jan-xyz in #3500
      • fix: dropped presses while a list repaints by @Techneaux in #3534
      • perf: batch SdFat's SPI transfers on ESP32 by @osakanataro in #3501
      • fix: USB OTG not disconnected when you unplug the cable by @itsthisjustin in #3538
      • feat: Library view by @oreglio in #3366
      • fix: Skip bw rendering on sleep images & fix white as transparent for sleep covers by @itsthisjustin in #3541

      New Contributors

      Full Changelog : 1.6.0...1.6.5rc

    9. 🔗 smol-machines/smolvm smolvm v1.18.0 release

      What's Changed

      • Let aarch64 Linux resume a branch source instead of freezing it by @BinSquare in #1327
      • Attach host disks and vhost-user block devices to a machine by @BinSquare in #1326
      • agent: refresh persistent DNS and retain shutdown receipts by @sgrove in #1328
      • Return a directory listing when the files API is asked for a directory by @BinSquare in #1330
      • Fail a delete that needs confirmation when stdin is not a terminal, instead of reading EOF as a decline and exiting successfully by @BinSquare in #1333
      • Run the image's own entrypoint for a cached --oci-cache run instead of the bake's no-op placeholder by @BinSquare in #1335
      • Provision the --oci-cache bake without launching a workload so images without /bin/true can be cached by @BinSquare in #1340
      • Give a clone a host port the kernel will not reassign before it binds by @BinSquare in #1341
      • Rebuild libkrun so aarch64 machines can branch again by @BinSquare in #1342
      • Make incremental checkpoints reusable as a Rust crate by @BinSquare in #1344
      • Reserve every recorded host port so a clone is never given a stopped machine's port by @BinSquare in #1345
      • Forward CLI --secret-env/--secret-file secrets to the workload on the oci-cache and pack-ref run paths by @BinSquare in #1343
      • Save checkpoints without staging a second RAM copy by @BinSquare in #1305
      • Prepare SmolVM v1.17.0 for release by @BinSquare in #1346
      • Wait for VM threads to exit before restarting machines by @BinSquare in #1347
      • Say why a machine on the default network backend shows no interface and cannot ping by @BinSquare in #1349
      • Pause and resume machines without losing running execution by @BinSquare in #1350
      • List machines in name order so repeated listings stop reshuffling by @BinSquare in #1356
      • Allow the path-following getxattr and setxattr so a systemd guest is not killed by seccomp by @BinSquare in #1357
      • Pin the Nix flake to 1.17.0 with its real release hashes by @BinSquare in #1360
      • Restore a checkpoint's disk as a copy-on-write layer over a shared base instead of copying it by @BinSquare in #1359
      • Unpack an older image cache's layers on the host once instead of in every machine by @BinSquare in #1352
      • Give checkpoints a history and let a stored checkpoint restore any generation in it by @BinSquare in #1351
      • Add --guest-subnet so a guest running Tailscale or another CGNAT VPN keeps its gateway and DNS by @BinSquare in #1362
      • Checkpoint machines created from a pack and reattach the pack's layers on restore by @BinSquare in #1361
      • Substitute credentials on the way out instead of exposing them to the guest by @BinSquare in #1348
      • Bump libkrun to the TSI stream intercept pin and rebuild the bundled libraries by @BinSquare in #1368
      • Fix packed disk attachment and status broken-pipe VM shutdown by @BinSquare in #1369
      • Allow writev in the VMM seccomp filter so the credential interceptor is not killed by @BinSquare in #1371
      • Bump libkrun to complete intercepted TSI connects only after the interceptor reaches the destination by @BinSquare in #1372
      • Prepare SmolVM v1.18.0 for release by @BinSquare in #1370

      New Contributors

      Full Changelog : v1.16.2...v1.18.0

    10. 🔗 Console.dev newsletter Rune rss

      Description: Unix-inspired IDE.

      What we like: Pick between VSCode, vim, or emacs editor style. Has a full window manager with terminal and multiplexer built in. Each environment can connect to others through a built-in e2e encrypted network. Works with AI agents. Natively GPU accelerated.

      What we dislike: Not all languages at the same level of support e.g. Go, Python are Tier 1, but TypeScript is still in development.

    11. 🔗 Console.dev newsletter Fallow rss

      Description: JS refactoring CLI.

      What we like: CLI does static analysis on JS/TS codebases to find improvements - unused code, complex code, duplication - and areas for improvement. Understands TypeScript types and packages. Supports various output formats e.g. terminal reports and CI PR comments.

      What we dislike: JS/TS only.

    12. 🔗 Filip Filmar grlib: Gaisler's GRLIB and the NOEL-V Core as a Bazel Module rss

      The grlib Bazel module packages GRLIB, Gaisler’s (Frontgrade’s) GPL VHDL IP library, so that the NOEL-V RV64 RISC-V core and the AMBA infrastructure around it can be consumed as ordinary Bazel dependencies. It is the module that puts the CPU into Cocoapuffs, the SoC that boots Fuchsia’s Zircon kernel on an Artix-7 FPGA. It is also the module where I learned the most about what it costs to move a large, make-era VHDL codebase into a modern build system, which is what this post is mostly about. It follows rules_vivado in my series on the modules behind cocoapuffs-fpga.

    13. 🔗 Ampcode News Shared Runners rss

      You can now share a runner with your workspace. Start it with --share and everyone in your workspace can start threads on that machine from ampcode.com.

      The new thread composer on ampcode.com with the location picker open. Under Runners is your own devbox. Under Shared Runners are gpu-runner, shared by Allison, and macos-builder, shared by Monty, each with its owner's avatar and running-thread count.

      If you have a machine with GPUs, a Mac that's used to build and sign the iOS app, or a dev box in a specific network, you can now set it up and the whole team can spawn agents on it:

      $ amp --no-tui --runner-id macos-builder --share
      

      Everyone in your workspace now sees it in the picker under Shared Runners.

      With --amp-env, a shared runner gets the workspace and project Secrets & Env Vars, but never your personal ones. That applies to your own threads on it too.

      We need to offer a word of warning, though: everyone you share with runs code on your machine as you, with your files, your credentials, and your logins. Their threads can also work in the same directories at the same time. So only share a runner with people you'd trust with a shell on that machine. Even better, give the runner a machine of its own. (Better still: use orbs, so that every thread gets its own machine.)

      Workspace admins can turn off runner sharing in Member Settings.

      Read more about sharing a runner in the runner docs.

  2. September 23, 2026
    1. 🔗 exe.dev What's Going on With the Air Quality in San Francisco? rss

      On Wednesday, the air in San Francisco smelled like smoke. I pulled up PurpleAir and the Bay Area Air Quality District and sure enough, the AQI was up in certain parts of the city. It looked like a local fire of some kind.

      I wanted to see what was going on, so I spun up a new VM and gave our coding agent Shelley the following prompt:

      I am detecting a little bit of bad air quality here in San Francisco and I'm looking at like Purple Air and the Bay Area Air Quality District to see what's going on, and it does indeed look like we're having some higher AQI in different areas. And I'm wondering if we can make a fire watch aggregator that takes as many sources as possible, including you know press releases from fire departments or whatever, as well as purple air data or more official stuff, as well as current winds and things like that and give me a map of what's going on and where and why because I'm very interested and it feels like the type of thing that we should actually be able to do really well.
      

      While Shelley was working, I asked Claude if there was a fire in San Francisco. It found a news story pointing to a controlled burn on Angel Island—but no confirmation it was happening today. It also picked up on something I’d mentioned about the wind: if the wind was blowing east across Angel Island, the smoke would blow toward Richmond, Berkeley, and Oakland—not San Francisco.

      I sent it a handful of PurpleAir screenshots, and noted that there might be more smoke on the hills, like in Pac Heights and Nob Hill. Claude’s guess was “a layer of smoke sitting above the cool marine air,” with the hilltop sensors poking into it.

      To test this theory, Claude suggested cross-referencing every PurpleAir sensor with its elevation and temperature. I pasted the whole conversation into Shelley, along with the implementation notes Claude gave me. Then I got it to help me wire up an integration with a PurpleAir API key I had freshly minted. That way it could access the PurpleAir API without actually getting the credential inside the VM.

      This got me most of the way there. But I couldn’t see the wind. So I asked Shelley to add it as an animation. All told it took just under an hour and probably could have been done faster if I hadn’t been interleaving it with other things. Now I have a website I can point my friends to.

      The results are here: https://firewatch.exe.xyz. If you want to build your own, go to https://exe.dev.

    2. 🔗 gildas-lormeau/single-file-cli v2.15.7 release

      SingleFile CLI 2.15.7

      CLI fixes and improvements

      • Browsers installed for the current user are now found without --browser-executable-path: in %LOCALAPPDATA% on Windows (Chrome, Chrome Canary, Brave, Vivaldi, Opera, Yandex, Firefox), in ~/Applications on macOS, and via snap and the PATH on Linux
      • Firefox installed from the Microsoft Store (or with winget install Mozilla.Firefox.MSIX) is now found on Windows
      • The "browser executable was not found" error is now reported in 1 second instead of about 60 seconds on Windows
      • On Windows, --browser-single-process is now applied to Google Chrome only. Edge, Brave, Vivaldi, Chromium and Chrome for Testing exit in this mode, so each run relaunched the browser. It saves about 5 seconds per run, and about 65 seconds with Edge
      • Vivaldi can now be used. It did not answer any command sent to a new tab until the tab was navigated, so the page setup never ended (simple-cdp is updated to 1.10.2)
      • The capture now fails with a timeout when the browser stops answering during the page setup, instead of hanging
      • With Firefox, the CLI now waits for the browser to exit before removing its temporary profile
      • The README explains how to use the Flatpak version of Firefox

      Co-authored by Claude (Claude Code)

    3. 🔗 r/LocalLLaMA Jev isn't new tech. Its marketing targets people who think AI started with LLMs. rss

      I keep seeing Jev presented as some new class of decision model, but most of what’s being advertised is just normal classifier behavior with modern zero- shot capabilities.

      It outputs probabilities over constrained choices, doesn’t generate autoregressively, can’t output an invalid class, and can use labels defined at inference time. None of that is new. Zero-shot/NLI classifiers, embedding models, cross-encoders and rerankers have been doing variations of this for years.

      The weird part is that most of the impressive Jev comparisons are against LLMs. Of course a specialized classifier is faster and cheaper than making an autoregressive LLM generate an answer. That doesn’t establish a new paradigm. The meaningful comparison is against strong existing classifiers. The purpose of this is to mislead.

      There are already benchmarks like BTZSC evaluating dozens of zero-shot classifiers across 22 datasets, including NLI models, embedding models and rerankers. I haven’t seen Jev properly benchmarked across that landscape yet.
      (https://proceedings.iclr.cc/paper_files/paper/2026/hash/417e1c15b3d49852fceded8aa104107d-Abstract- Conference.html)

      Where people have compared Jev with conventional classifiers, the story is much less magical. One Banking77 experiment got 93.3% from BGE-small + logistic regression versus 83.2% for Jev, at about 9ms locally.
      (https://github.com/ickma2311/jev-baselines- eval)

      Some of the marketing also goes into the misleading territory. The “can’t hallucinate” framing is very sus, for example. Their own explanation admits the 0% hallucination figure is not empirical, and what they actually guarantee is that Jev returns an answer matching the allowed schema. That prevents invalid outputs, it does not prevent confidently choosing the wrong valid answer. (https://typesafe.ai/blog/introducing-system-one-models-and- jev)

      So color me a skeptic. Look, Jev might even be a good product. Maybe their unpublished architecture or RLCD training method is genuinely novel. But nothing we've seen so far establishes that "System One Models" are a new class of AI. What the public evidence mostly establishes is that using a specialized classifier for classification can be much cheaper and faster than using an autoregressive LLM, which we already knew. It only sounds novel if your idea of AI begins and ends with LLMs.

      submitted by /u/tiensss
      [link] [comments]

    4. 🔗 exe.dev Share Shelley Skills Across Your VMs rss

      At exe.dev, we use integrations to connect your VMs to other services securely and simply. Usually this takes the form of a proxy that injects secrets.

      We love hearing from our customers (hint, hint, email us, don’t be shy), and one of them was doing significant gymnastics to share skills across their VMs. Nothing wrong with that (rsync is right there, after all), but we realized we could use the same integrations machinery we already have to share skills files as well. You register a skill once, and attach it to any VMs that you want to see it. Shelly uses the “reflection” integration to see if there are any skills integrations, and, if so, surfaces them.

    5. 🔗 HexRaysSA/plugin-repository commits sync repo: +6 releases, -1 release, ~4 changed rss
      sync repo: +6 releases, -1 release, ~4 changed
      
      ## New releases
      - [ida-mcp](https://github.com/hexrayssa/ida-mcp): 20260923.0.4, 20260923.0.3, 20260923.0.2, 20260923.0.1
      - [ida-nexus](https://github.com/hexrayssa/ida-nexus): 0.13.0
      - [ida-settings-editor](https://github.com/williballenthin/ida-settings): 1.3.0
      
      ## Changes
      - [ida-codemode](https://github.com/hexrayssa/ida-codemode):
        - removed version(s): 0.5.3
      - [mcrit-ida](https://github.com/danielplohmann/mcrit-plugin):
        - 1.1.9: download URL changed
        - 1.1.8: download URL changed
        - 1.1.7: download URL changed
        - 1.1.10: download URL changed
      
    6. 🔗 19h/chernobog v6.3.0 release

      What's Changed

      • Fix catalog CI failures caused by the runtime proof deadline by @19h in #7

      Full Changelog : v6.2.0...v6.3.0

      Note

      Chernobog 6.3 — new since 6.2.0:

      • Per-flag x86 abstract interpretation — models the six arithmetic status flags, partial-register slices, and all sixteen condition codes; bounded dataflow joins register, flag, and stack facts across direct branches and loop fixed points to resolve Jcc outcomes, fold SETcc/CMOV values in microcode, and recover exact PUSH/RET targets from immediate, register, and immutable-memory operands
      • Get-PC and call-as-jump recovery — classifies 32-bit PUSH-continuation and x64 PUSH/LEA/XCHG address materialization with exact stack effects; call-context returns now lower to a natural-width pop and goto, preserving stack-pointer semantics across continuations
      • Direct-jump decoding into data-classified code — decodes exact near-jump targets in executable segments that IDA classified as data, recovering entry code emitted by sectionless Mach-O protectors
      • Persistent native proof ownership — generated edges and comments carry database receipts with their instruction and memory dependencies, and are revoked on byte patches, rebasing, undo/redo, external fallthrough, and function-topology changes while preserving analyst annotations and overrides
      • Use-time string evidence — rax captures string bytes at each use across heap allocation lifetimes and address reuse, reaches cross-run consensus by semantic origin rather than heap address, and annotates direct calls transiently
      • Rotating string decryption — proves bounded rotate/add/XOR decryption loops for every admitted index and input, validates UTF-8 or UTF-16LE plaintext, and annotates pseudocode without modifying the database
      • Typed MBA instance proofs — catalog, chain, and affine rewrites are proven in Z3 on the concrete typed microcode operands before mutation; a bounded bottom-up pass catches identities exposed under zero-extension and other conversions
      • Native VM-region analysis — a separate VM model recognizes read/decode/dispatch handlers across register renaming, cloning, table/relative and push/ret dispatch, and guarded immediate-push handlers; symbolic summaries are reused only after Z3 equivalence and checked against captured transitions. This is recognition and validation, not devirtualization
      • Native-region tracing and strings — bounded execution of regions outside function ownership under explicit ABI call models; four-run consensus reconstructs strings from interleaved read streams, scalar reads, modeled call arguments, and prefixes stopped at unsupported instructions, guarded by opaque freshness leases
      • Evidence workspace — 20 new IDC inspection APIs and IDAPython companion views link execution events, allocation lifetimes, native conclusions, ownerless-region facts, and SMT transcripts with independently replayable SAT counterexamples
      • Platform fixes — ARM64 register-tracker INTERR 2947 on SIMD arguments, LP64 Z3 overload ambiguity on Linux, and an MSVC link failure from mismatched SDK class keys
      • Expanded regression infrastructure — paired x64 Mach-O and i386 ELF protected corpora with native behavior oracles, a Windows build container, and repository-wide clang-format and Black formatting
    7. 🔗 r/LocalLLaMA Mods: can we do something about half the forum getting filled with these advertising posts for Jev? rss

      Jev is a paid product that dumped a lot of venture capitol money into shill their product here and in other subreddits. Obvious shill posts are obvious.

      submitted by /u/Acrobatic_Stress1388
      [link] [comments]

    8. 🔗 OmniNull/OmniWM OmniWM v0.7.2 release

      What's New Since 0.7.1

      Workspace swipes now follow your fingers. Trackpad movement reveals the neighboring workspace as you move, then settles the transition when you release. A canceled swipe returns to the current workspace, and a new touch can take over a transition already in motion.

      Workspace and window behavior

      • More reliable trackpad gestures. Movement during gesture recognition and a partial finger lift now counts toward the swipe. Workspace transitions move vertically on screen for either configured swipe axis. The gesture that opens Overview and its trailing momentum no longer scroll it; a fresh scroll still works. (#713, #728, #730)
      • Minimized windows give their space back. Niri and Dwindle reflow around a natively minimized window while retaining its workspace, layout position, and sizing for restoration. Minimized windows are also excluded from queued frame writes and managed focus. (#688)
      • Dock activation works after hiding an app or entering an empty workspace. Restoring a hidden app and selecting a previous app from the Dock now give OmniWM the activation event it needs to focus the app. (#704)
      • Fullscreen and Show Desktop surfaces behave more naturally. Parking edge masks stay out of native fullscreen Spaces and return on the desktop; focus borders move aside with application windows during Show Desktop. (#715, #705)

      Settings and commands

      • The Hotkeys settings page responds faster. Shortcut rows load as they come into view, search uses cached command metadata, and health diagnostics refresh when Settings opens instead of on every section change. (#664)
      • Window queries identify inactive tabs. Inactive Dwindle group members and Niri tabs report hiddenReason: "tab-inactive" where applicable. (#692)
      • Dwindle commands report no-ops accurately. Seven layout actions now return no_change when they leave the layout unchanged, without an unnecessary refresh. (#691)
      • Window identity survives invalid app metadata. OmniWM retains a window's valid process ID during AX context creation and rescans, and ignores invalid activation IDs before they affect focus. (#700)

      Breaking change for direct IPC clients

      The IPC protocol advances from 15 to 16 for the new tab-inactive hidden reason. The bundled omniwmctl is updated. Programs that connect to OmniWM's IPC socket directly must use protocol 16 and handle the new value.

      Thanks

      Thank you to YeungKC for fixing the gesture tail that could scroll Overview as it opened and for keeping workspace swipe momentum from becoming a new scroll.

      We welcome Jose Paez and Petar Shomov to the sponsor list.

      Full changelog: v0.7.1…v0.7.2

      Website and documentation · Installation guide

      Release Integrity

      The app is signed, notarized, and stapled. SHA-256 hashes:

      • OmniWM-v0.7.2.zip: c153dd2f5e94e090b8586d84d40479aafd80038e0939235f30c4b8672937fbc1
      • GhosttyKit.xcframework-v0.7.2.zip: 4c4f1e2109f5b4826c6d493f770d398558021f2cec9466eb662b3ef886a2dec7
    9. 🔗 gildas-lormeau/single-file-cli v2.15.6 release

      SingleFile CLI 2.15.6

      CLI fixes and improvements

      Co-authored by Claude (Claude Code)

    10. 🔗 r/LocalLLaMA this is not even a competition at this point ... this is embarrassing rss
    11. 🔗 r/LocalLLaMA Pirate Face - pirate bay for LLMs rss

      Pirate Face - pirate bay for LLMs | The title says for itself In case someone desides to censor huggingface, we'll have an alternative Edit: A lot of responses so I'll leave it here:

      1. I'm not the author.
      2. If I were the author I wouldn't use the word "piracy".
      3. If you're the author, please, rename the domain! What is free in the first place must be named as such, we're not pirating anything.

      submitted by /u/Atagor
      [link] [comments]
      ---|---

    12. 🔗 Probably Dance The Mundanity of Excellence, Small Wins, and Why You Should Fix Bugs Before Writing New Features rss

      I'm not good at prioritizing tasks, but there is one rule I follow and that I can justify very well: If something worked yesterday and is broken today, I will drop whatever I'm doing and fix that thing. No matter how small and seemingly unimportant the broken feature is.

      To justify this I will quote from the paper "The Mundanity of Excellence" by Daniel F. Chambliss:

      Superlative performance is really a confluence of dozens of small skills or activities, each one learned or stumbled upon, which have been carefully drilled into habit and then are fitted together in a synthesized whole. There is nothing extraordinary or super-human in any one of those actions; only the fact that they are done consistently and correctly, and all together, produce excellence. When a swimmer learns a proper flip turn in the freestyle races, she will swim the race a bit faster; then a streamlined push off from the wall, with the arms squeezed together over the head, and a little faster; then how to place the hands in the water so no air is cupped in them; then how to lift them over the water; then how to lift weights to properly build strength, and how to eat the right foods, and to wear the best suits for racing, and on and on. Each of those tasks seems small in itself, but each allows the athlete to swim a bit faster. And having learned and consistently practiced all of them together, and many more besides, the swimmer may compete in the Olympic Games. The winning of a gold medal is nothing more than the synthesis of a countless number of such little things

      I claim that the same thing is true for software, and what's important is to lock in those small wins.

      I learned this lesson when working in video games. The company I worked for had trouble shipping high quality games. We didn't ship bad games, but we just couldn't compete with the likes of Blizzard or Nintendo. Since then I have worked at different places to learn how to ship high quality software, and mostly learned that there is no magic. You just have simple improvements like

      • better processes that aren't too surprising to anyone (e.g. more tests, more code review, ensuring that there are never any broken builds etc.)
      • shorter feedback loops so that you learn quickly when there are issues
      • better coding practices and higher standards for what code is acceptable to push (e.g. if it's not easy to see that code is correct, don't push it)
      • priority for bug fixes instead of fixing things when you next feel like you have some free time

      These are equivalent to the examples in the "mundanity of excellence" quote in that they lead to better programmers. But I want to focus on the last one because if the processes lead to excellent programmers, the bugfixes are required for excellent programs.

      When software reaches a certain level of complexity you can no longer get improvements with big wins. It's similar to the olympic swimmer example from the quote above: you need lots of little improvements. Things like tooltips, shortcuts, customization, responsive performance or correct handling of edge cases and niche use cases. These are the things that elevate your software from "works and mostly does the job" to "people like it and like working in it". But these are also the things that tend to break and stay broken. If you don't keep these things working, your software will always erode back down to a 7/10 quality level.

      If you work at a good organization, all of this may sound trivial to you. But I can assure you that most places do not work like this and it's surprising to lots of programmers that bug fixes, even for features that are of low importance, should take priority over work on new, highly important features. As a very visual demonstration of this, here is a comparison of all the details that worked in Far Cry 2 and were broken in Far Cry 5:

      Far Cry 2 came out in 2008 and ran on a Playstation 3, Far Cry 5 came out ten years later on the Playstation 4, a much more powerful machine that was much easier to program. There is no good reason why so many things should be worse in Far Cry 5. The only reason is that these are details, and details tend to break and this is what it looks like when that has gone on for ten years. Far Cry 2 was a great game (yes, there is one big complaint that everyone has, but ignoring that it was a great game) and Far Cry 5 is just meh. Many developers over the years thought that details like this weren't that important to keep working, and as a result you get a much worse game.

      And it's not just game development. Condition variables had been broken in glibc since 2016 and I have been trying to get them fixed by submitting patches since 2020 and haven't had much luck until I finally got through in 2025. They mostly worked and only broke occasionally, so people just didn't prioritize it.

      But if you actually want to ship good software, you have to do like the "mundanity of excellence" quote says and lock in those improvements. Good software is a collection of small wins, and unfortunately small wins are the first thing to erode away if you don't lock them in.

      Automated tests obviously help for this and are a necessity past a certain level of complexity. But they can't catch everything and when something slips through, you just have to fix it first.

      Excuses

      Whenever you push for better practices, you get the same excuses. There is no time, we don't have the manpower, we're already behind and this feature was supposed to be released two weeks ago. These are all very real reasons why people are not doing things, and if you dismiss these complaints they get very mad at you because they really have these issues. It's just that from the outside, it's clear to see that they're stuck in a capability trap. The reason why you have no time is that you have bad practices. If you think you need more manpower to have more tests, you're doing it wrong. The tests would allow you to ship the same software with fewer people, not with more people. Unfortunately this is not true in the short term, (when adopting new practices, things get worse before they get better) so switching is hard.

      The article to read on this topic is "Nobody Ever Gets Credit for Fixing Problems that Never Happened: Creating and Sustaining Process Improvement".

      Quotes

      To back up that you should fix things early and lock in a high quality early, I'll quote from highly successful game developers. Here is Blizzard:

      There's this idea out there, that the reason why Blizzard polish is better is because we get six months at the end. And obviously we're very fortunate to get more time, but the polish doesn't happen at the end. The polish happens all along the way, from the very beginning. […] If you just leave it to the end, you're not going to get there.

      From the GDC talk “Making a Standard (and Trying to Stick to it!): Blizzard Design Philosophies” by Rob Pardo:

      https://www.youtube.com/watch?v=FhC0NaB6ock at 53:30

      Here are several quotes about id software:

      “Polish as you go. Don't depend on polish happening later. Always maintain constantly shippable code.”

      “It's incredibly important that your game can always be run by your team. Bulletproof your engine by providing defaults upon load failure.”

      “We are our own best testing team and should never allow anyone else to experience bugs or see the game crash. Don't waste others' time. Test thoroughly before checking in your code. No throwing it over the fence for testers to find and put a bug in the database and then fix it later. It's a wasteful cycle.”

      “As soon as you see a bug, you fix it. Do not continue on. If you don't fix your bugs your new code will be built on a buggy codebase and ensure an unstable foundation.”

      From the GDC Europe talk “The Early Days of id Software”
      https://www.youtube.com/watch?v=E2MIpi8pIvY

      Summary

      So why should bugfixes take priority? Let me slightly modify the quote from the beginning:

      Superlative software is really a confluence of hundreds of small polishes or features, each one designed or stumbled upon, which have been carefully locked in by tests and then are fitted together in a synthesized whole. There is nothing extraordinary or super-human in any one of those features; only the fact that they are done consistently and correctly, and all together, produce excellence.

    13. 🔗 Drew DeVault's blog Why is Hacker News like that? rss

      Hacker News (aka HN) is a link aggregator where “hackers”1 gather to discuss technology, politics, and anything which “good hackers would find interesting”. HN is a means by which its host, prominent startup incubator Y Combinator, projects soft power, promotes startups it funds, and feeds people with ideas into its incubation program. Hacker News is one of the most popular forums for discussing technology online today – perhaps the biggest.

      HN also has a pronounced political bias, which is growing more exaggerated with time. Many of its users have long claimed centrist or “apolitical” views. On a forum created by a startup incubator, it’s no surprise that capitalism is generally taken as given, often with a libertarian angle. Labor is generally de-emphasized (the consensus on HN is almost always anti-union) and openly advocating left economics like communism or socialism is generally frowned upon. Progressives have, on the whole, abandoned the forum.

      The right wing has not. Yesterday, I saw a post about the new release of the Grok LLM, Elon Musk’s “anti-woke” AI project. Virtually all of the comments are fawning over the release, and debating the finer points of its technical achievements, price, and competitiveness. There are remarks that object to the tool on the basis that its owner, Elon Musk, is a fascist, and that it is designed to amplify hate speech. Almost all of these remarks are “flagged”, moderated by other HN users until they are not visible by default.2

      Some examples of comments flagged out of existence:

      Until Musk owns up to his Nazi salute, I won’t be using Grok, sorry. I don’t care how good or cheap it is. And no, I won’t stop talking about it either.

      Your friendly reminder that Grok is owned and directly steered by the white supremacist guy with the fascist haircut who does nazi salutes and fucked up decades of international order to settle scores for his apartheid south african family. Any amount of using the model supports this.

      I’m dying to know how everyone who works on this product sleeps at night. How does one reconcile a sense of ethics with helping Musk make more money on AI-generated CSAM and racism

      And, my personal favorite:

      I have to say I’m a little perplexed by HN’s perpetual willingness to use grok like it’s a normal product made by a normal company.

      There’s often frustration that every thread related to a Musk company includes a discussion about Musk, but Musk himself caused that by being the only tech founder to actively campaign for Trump. (Zuck, the runner up, didn’t do anything even close to this). Every product at every company he owns is hopelessly tethered to his decision to do that, and deserves to be judged on those terms.

      Another popular story today is about US rollback of climate regulation under Trump. Some fraction of every cent you spend on Grok goes to support stuff you hate, and yet people get genuinely annoyed when you point it out. Musk and his companies really are special and should be treated as special.

      Every thread about a Musk company or product needs a comment like this one. If we had the right values, every comment would look like this one.

      All of these are gone.

      Overt hate and bigotry on Hacker News is uncommon, but not rare, and often gets pushback. Covert hate (e.g. dog whistles) is more common, and when called out the call-out usually gets flamed rather than the hate. Unexamined bias against progressivism and the rights and interests of anyone who isn’t the “default” middle-class white cis male, is incredibly common, and anyone who questions these biases is generally subjected to flames and moderation action.

      Why is Hacker News like this?

      Moderation on HN

      Hacker News has two formal moderators, both employed by Y Combinator: Daniel Gackle, aka dang, and Tom Howard, aka tomhow. Scott Bell (sctb) assisted with moderation until 2019. They employ a variety of technical tools to do the job, including:

      • Boosting or sinking the rank of posts, or “burying” them entirely
      • Deleting posts (entirely) or “killing” posts (marking them as [dead])
      • Detaching and/or downranking comment trees
      • “Shadowbanning” users
      • Overtly banning users

      Moderators occasionally post comments and intervene in discussions, steering things one way or another or explaining their moderation decisions.

      There are also automated moderation systems, which for example try to detect flamewars with heuristics like the ratioes between post score, age, and the number of comments, and apply a downward pressure to the post’s ranking to reduce the visibility of controversial topics. Of course, the topics which are deemed controversial by the automated systems are, more often than not, progressive politics.

      Users above a certain (small) amount of “karma” gain the ability to “flag” posts, allowing Hacker News to self-moderate. Posts or comments can be hidden entirely (made “dead”) with a small number of flags, particularly early on, before they gain enough votes to influence the flagging algorithm. This is the mechanism which was used to silence criticism of Grok and Elon Musk in the thread discussed earlier. By and large the flagging mechanism is used to silence progressive opinions and articles from being posted on Hacker News. Once a post or comment is flagged, it can be “vouched” for, but this generally does not work in practice due to a relatively straightforward bias: flagged posts are only visible to users who opt-in, are moved to the bottom of threads and hidden from view, and one can flag at any time but cannot vouch for a post proactively. Once a comment or post is gone, it generally stays gone.

      The moderators tend to view the automated moderation and the flagging mechanism as neutral, and use it to deflect responsibility for moderation decisions onto the tools or the users who use them, i.e. the “community” in the abstract.3 However, ultimately the moderators are in control of these tools and are aware of their biases and the outcomes they produce.

      So… why is Hacker News like this?

      Y Combinator

      Hacker News is like this because the people responsible for it are like this, in particular the people at and in the orbit of Y Combinator.

      Hacker News goes to some lengths to portray itself as independent of the company that owns it, Y Combinator. Nonetheless, Y Combinator decides who gets to be in charge of Hacker News, and the raison d’être of Hacker News is, at least originally, a forum for YC-backed startup founders to socialize and discuss the news of the day. To this day, YC-funded startups have access to special privileges on HN, in particular the ability to post directly to the front page with a special ranking algorithm (to advertise job openings and announce startup launches). There is also a feature that allows YC founders to spot each other more easily, with their usernames showing up in orange to each other.

      Y Combinator’s portfolio

      The YC startup directory lists (almost) all of the companies which have received funding from Y Combinator, a list which shows a history of funding companies without a competent ethical evaluation. Coinbase, for example, is one of YC’s “unicorns”, and has donated tens of millions of US dollars to various pro-cryptocurrency political organizations, which tend to skew right wing by a ratio of 2:1, and Coinbase now funds fascist David Hansson’s Omarchy project. We’ll talk more about Coinbase momentarily. David is also funded by Stripe, another particularly successful YC alumni.

      YC also funds companies that specialize in military and police applications, such as Code Four, Lakonia, Closure, Abel Police, Ravn, and more. They were early investors in Flock Safety, a company now notorious for putting up surveillance equipment across America – much of which is now being torn down by infuriated citizens. Another great example is Optifye.ai, surveillance software for monitoring workers in sweatshops in India, and a member of YC’s winter 2025 batch.

      Many companies – AirBnB is another example – funded by Y Combinator share the same “move fast and break laws” mindset that is particularly popular among their alumnus. There are many dozens of examples of such companies among Y Combinator’s portfolio, but I won’t belabor the point.

      Regarding Paul Graham

      Y Combinator was founded by Paul Graham in March 2005, along with three collaborators, though Paul (aka pg) was and remains the face of the operation. Paul wrote and launched Hacker News himself using his own dialect of Lisp, and to this day he tends to be revered by the HN community and certainly by the community of Y Combinator founders, partners, and investors. To what extent modern-day HN culture flows from his original spring can be debated, but we can at least understand the nature of that spring.

      Let’s consult his blog for some insights. I suggest you click through to my examples and read/skim them yourself for more juicy quotes.

      In April 2022, Paul posted “On Heresey”, a post of interest to our question. He explains his feelings on calling someone “x-ist” (i.e. sexist, racist, etc), like so:

      For example, when someone calls a statement “x-ist,” they’re also implicitly saying that this is the end of the discussion. They do not, having said this, go on to consider whether the statement is true or not. Using such labels is the conversational equivalent of signalling an exception. That’s one of the reasons they’re used: to end a discussion.

      On intolerance:

      There are aggressively conventional-minded people on both the right and the left. The reason the current wave of intolerance comes from the left is simply because the new unifying ideology happened to come from the left. The next one might come from the right. Imagine what that would be like.

      Note that this essay was published a mere three months after the January 6th US capital insurrection, where a right-wing mob stormed the US capitol building, erecting a gallows on the lawn and calling for Mike Pence’s head.

      A more recent essay, January 2025, “The Origins of Wokeness”, also provides ample insight into Paul’s character. Paul on racism:

      Racism, for example, is a genuine problem. Not a problem on the scale that the woke believe it to be, but a genuine one. I don’t think any reasonable person would deny that. The problem with political correctness was not that it focused on marginalized groups, but the shallow, aggressive way in which it did so. Instead of going out into the world and quietly helping members of marginalized groups, the politically correct focused on getting people in trouble for using the wrong words to talk about them.

      Paul on sexism:

      I saw political correctness arise. When I started college in 1982 it was not yet a thing. Female students might object if someone said something they considered sexist, but no one was getting reported for it. It was still not a thing when I started grad school in 1986. It was definitely a thing in 1988 though, and by the early 1990s it seemed to pervade campus life.

      What happened? How did protest become punishment? Why were the late 1980s the point at which protests against male chauvinism (as it used to be called) morphed into formal complaints to university authorities about sexism? Basically, the 1960s radicals got tenure. They became the Establishment they’d protested against two decades before. Now they were in a position not just to speak out about their ideas, but to enforce them.

      And on sexual harassment:

      One thing I noticed at the time about the first phase of political correctness was that it was more popular with women than men. As many writers (perhaps most eloquently George Orwell) have observed, women seem more attracted than men to the idea of being moral enforcers. But there was another more specific reason women tended to be the enforcers of political correctness. There was at this time a great backlash against sexual harassment; the mid 1980s were the point when the definition of sexual harassment was expanded from explicit sexual advances to creating a “hostile environment.” Within universities the classic form of accusation was for a (female) student to say that a professor made her “feel uncomfortable.” But the vagueness of this accusation allowed the radius of forbidden behavior to expand to include talking about heterodox ideas. Those make people uncomfortable too.

      Was it sexist to propose that Darwin’s greater male variability hypothesis might explain some variation in human performance? Sexist enough to get Larry Summers pushed out as president of Harvard, apparently.

      In addition to, in his position as the president of Harvard University, making bio-essentialist remarks about the inherently lesser intelligence of women to explain the demographics of his student body, Larry Summers was a personal friend and correspondent of Jeffrey Epstein, though this connection was not generally known at the time Paul wrote this essay.

      Regarding Sam Altman

      Then there’s Sam Altman, who looms large in the history of Y Combinator. Sam was a member of YC’s first cohort of startups, and later became a partner at YC in 2011. Ultimately, Sam replaced Graham as its president in 2011, serving in this role until (roughly) 2019, leaving more or less in disgrace to focus on OpenAI.4 Until then he was held in high regard by Graham and others at Y Combinator, with Graham famously saying of him, “you could parachute him into an island of cannibals and come back in five years and he’d be king” and frequently lauding him in his essays, naming him one of the five “most interesting startup founders of the last 30 years”, adding that Sam “can’t be stopped by (…) flimsy rules”.

      After his departure, Sam was ultimately subject to a slew of controversy at OpenAI, whose board of directors tried and failed to oust him, and were quoted as saying of the matter that Sam “was not consistently candid in his communications” and they “no longer had confidence in his ability to continue leading OpenAI”.

      Sam’s mentor, main financial backer, and close friend is Peter Thiel, who Sam invited to join YC as a visiting partner between 2015 and 2017. Sam apparently met his now-husband in Peter Thiel’s hot tub. Thiel is a key figure in Palantir, a data analysis company which works closely with militaries, police departments, and US Immigration and Customs Enforcement, which is currently conducting an ethnic cleansing of the United States, and retains the Israeli Defense Force as a client, which is currently conducting a genocide in Palestine. Thiel is a major donor to right-wing parties and an intellectual devotee of and financial backer of fascist political thinker Curtis Yarvin.

      Sam, once his own presidential bid died in the crib, donated $1M to Donald Trump’s inauguration and became an influential public backer of his pro-AI presidency. Of Trump, Sam once said “watching (Donald Trump) more carefully recently has really changed my perspective on him …. I’m not going to agree with him on everything, but i think he will be incredible for the country in many ways!” Sam’s politics also flow from the tradition of Curtis Yarvin, and he invests in and promotes efforts to bring Yarvin’s ultra-libertarian techno-monarchy post-state society into being.

      The cherry on top of Sam’s story are the allegations of years of sexual abuse and rape his sister has made regarding him, which he and his family denies. The matter is currently being litigated in Missouri’s courts.

      Regarding Garry Tan

      Finally, let’s address the current president and CEO of Y Combinator, one Garry Tan, who followed the relatively unremarkable former president of YC, Geoff Ralston, in 2023, after being a partner at Y Combinator, and their “designer-in-residence”, since 2011.

      A few weeks before earning this position at Y Combinator, Garry gave a glowing review of Balaji Srinivasan’s “The Network State”, saying “I legit believe (Y Combinator) is a prototype model for what (Srinivasan) talks about when he says the Network State”. Balaji is an interesting figure – the book in question is a distillation of a talk he gave to an audience at Y Combinator in 2013 which pitches the fascist politics of Curtis Yarvin and his intellectual circle to startup founders. When people started making the connections and Srinivasan started to feel the heat, he emailed Curtis Yarvin about it: “If things get hot, it may be interesting to sic the Dark Enlightenment audience on a single vulnerable hostile reporter to dox them and turn them inside out with hostile reporting sent to their advertisers/friends/contacts.”

      Srinivasan was a prominent founder of many cryptocurrency startups, and notably became the first CTO of Y Combinator-backed Coinbase, which was also funded by Garry Tan’s Initialized Capital fund – alongside Flock Safety. Garry Tan, Sam Altman, and many other people in Y Combinator’s orbit are big fans of The Network State and funnel influence and money into projects based on its ideas.

      Garry is also an important figure at Palantir. He once turned Peter Thiel down when offered a $70,000 check to join the company, but later he became employee #10 anyway. Not much is known about his tenure there, but he did apparently design their logo.

      When Garry Tan joined Y Combinator, Sam Altman noted his politics as important for his role there. Altman: “it’s a big deal [in my opinion] that YC will have a CEO so active in local politics. I think YC can make a big difference here”. Garry is indeed a big figure in local politics in San Francisco. He’s spent as much as $400,000 on political initiatives in the bay, with causes ranging from increased police funding and opposition to education reform, regulation of self-driving cars, and decelerationism. In 2024 he got in a lot of trouble when he tweeted a series of raving rants over the progressive SF board of supervisors, culminating in a tweet that read “die slow, motherfuckers”, leading to board members receiving death threats and ultimately an apology and a retraction from Garry.

      Another fun one: according to Garry the New York Times is upholding “woke capital”, which, according to Garry, is the “ideology of America’s ruling class”. So, that’s nice.

      Why is Hacker News like that?

      Hacker News is a product of Y Combinator and the people in its orbit, and they’re not great people. The rules cover what to post and how, and the closest they get to addressing any kind of bigotry, hate, or bias is the following:

      Please don’t use Hacker News for political or ideological battle. It tramples curiosity.

      The purpose of a system is what it does, and the system at Hacker News amplifies right wing politics and bigotry. The moderators, the users, and the tools available to them collaborate to suppress progressive ideas and re-enforce the kinds of politics that favor Y Combinator, its people and its friends.

      I have spoken with the moderators about this many, many times over many years. I have explained to Daniel Gackle how the nature of the automated moderation tools, and the flagging feature, that produces these consequences. I have suggested reforms that would improve the situation. To my knowledge, none of this feedback has ever led to any changes in how HN works or is moderated.

      Hacker News is a case study in what inevitably happens to “apolitical” spaces. Politics and society are bifurcating, and Hacker News is taking the fork on the right. “Apolitical” is an excuse to favor the status quo, a resistance to change, and therefore a re-enforcement of the existing biases and power structures of society. It’s no surprise that Hacker News favors capitalism, opposes labor, and objects to questioning the privileges of its largely white, male, middle-class audience. It’s “political” and “ideological” for it to do anything else.


      P.S. I’ve been trying to figure these people out for a long time. A book that helped me put a lot of the pieces together was “The Nerd Reich: Silicon Valley Fascism and the War on Democracy”, by Gil Durán. It’s a great read, you should check it out too!

  3. September 22, 2026
    1. 🔗 Simon Willison Claude Opus 5.5, GPT-6 Sol, GPT-6 Luna, and a new price war rss

      Yesterday was Grok 4.7 (pelicans) and MiMo v2.6 Flash/Pro (more pelicans). Today Anthropic released Claude Opus 5.5, and around an hour later OpenAI released GPT-6 Sol and GPT-6 Luna. It's going to take a while to get a good read on all of these new models, but here are my impressions so far.

      GPT-6 Sol and Luna are half the price of their GPT-5.6 equivalents

      GPT-5.6 Luna was already my favorite model for building applications against, because it combined excellent performance with being really cheap. Somehow GPT-6 Luna is half the price of that again - and GPT-6 Sol had a similar reduction compared to GPT-5.6 Sol.

      Here's what the pricing landscape looks like today:


      Model Input Cached input Output
      GPT-6 Luna $0.10/M $0.01/M $0.50/M
      GPT-5.6 Luna $0.20/M $0.02/M $1.20/M
      Grok 4.7 $2/M $0.50/M $6/M
      GPT-6 Sol $2/M $0.20/M $10/M
      GPT-5.6 Terra $2/M $0.20/M $12/M
      Claude Opus 5.5 $4/M $0.20/M $20/M
      GPT-5.6 Sol $4/M $0.40/M $20/M
      Claude Fable 5.1 $10/M $0.25/M $50/M
      GPT-6 Astra $10/M $1/M $50/M

      Note that GPT-5.6 has a scheduled 25% price increase for November, so GPT-6 is half the price of the promotional pricing for those models.

      (With GPT-5.6 Terra priced the same as GPT-6 Sol, any remaining reasons to use Terra just evaporated.)

      It's hard to overstate how competitive this pricing is. Grok 4.7 priced itself at $2/$6, less than half the price of GPT-5.6 Sol, but is now equally priced to GPT-6 Sol on input and closer on output.

      At $0.10/$0.50 GPT-6 Luna is one of the cheapest models OpenAI have ever released, beaten only by the far weaker GPT-4.1 Nano ($0.10/$0.40, April 2025) and GPT-5 Nano ($0.05/$0.40, August 2025).

      I rendered pelicans for GPT-6 Luna and for GPT-6 Sol, then I combined them all together in this comparison grid along with the GPT-5.6 pelicans. I like how you can instantly see that the 5.6 family chose bolder, brighter colors, while the 6 family is a lot more muted. I still think GPT-6 Astra on max produced the best pelican.

      A grid of pelicans for six GPT models at different thinking efforts.

      Claude Opus 5.5 got a price cut too

      Opus 5.5 looks like it addresses the biggest complaints people had about Opus in terms of its communication style. Thariq Shihipar:

      Opus 5.5 is the result of your feedback.

      It communicates clearly, it's cheaper per token than Opus 5.0 with the intelligence of Fable 5.1 it's very token efficient and works across every effort level.

      It's also meant to be better at Blender. I'm looking forward to putting it through its paces there.

      Opus 4.5, 4.6, 4.7, 4.8, and 5 all shared the same price: $5/million tokens for input and $25/million for output. 5.5 is a 20% reduction - $4/million and $20/million.

      The price for cache reads fell 60%. That's significant for longer agentic conversations, where 90%+ of input tokens are processed at cached token prices.

      The new price for Opus 5.5 is the same as the price for GPT-5.6 Sol, but that was before OpenAI dropped their Sol prices by half.

      GPT-6 Astra and Claude Fable 5.1 are both priced at $10/million input and $50/million output. The price war currently affects the next tier of models below that.

      Anthropic say that Sonnet 5.5 and Haiku 5.5 are coming soon. It's going to be interesting to see if Haiku can regain its price competitiveness at the lower end, given current Haiku 4.5 is $1/$5 while the latest GPT-6 Luna is one tenth of that price at $0.10/$0.50.

      Claude Opus 5.5 max over-thinks to the point of breaking

      In a first for my "Generate an SVG of a pelican riding a bicycle" test, Claude Opus 5.5 at "max" thinking level failed to return a response!

      It started by calling this "a classic test request", and then thought really, really hard about what it was doing:

      This is a classic test request, so I want to plan out a well-composed pelican with its distinctive beak and pouch riding a bicycle with proper wheels, frame, and pedals, set against a simple sky and ground backdrop. [...]

      Verifying the shin length checks out at roughly 95.2, close enough. Now I'm working out the near leg path from hip to knee to ankle, then sketching the foot shape resting on the pedal — outlining the heel, toe tips, and sole contour with a path using lines and curves to sit naturally on the pedal surface around y=478-494. [...]

      I like the fish sticking prominently out of the basket with the pelican eyeing it as a fun detail worth keeping. I'm also confirming the eye placement near the bill base matches typical pelican anatomy, and considering giving it a slightly happier expression. [...]

      The far leg reads correctly as passing behind the frame, so I'm moving on to check the chainring teeth and confirm layer ordering—the far crank arm should be mostly hidden by the seat tube and chainring. I'm settling on the final SVG's width and height attributes alongside the viewBox to ensure proper scaling, noting there's no text so no font-family is needed. [...]

      I was so excited to see this pelican... but then it stopped. Opus 5.5 has a 128,000 maximum output token limit (as do the other Claude models), and it hit that while it was still reasoning about the SVG!

      I tried a second time and got the same result. This makes me suspect that "max" is effectively useless - if it over-thinks to breaking point on a stupid SVG prompt I don't trust it not to do the same for more interesting work.

      (Those two failures each cost me $2.56 and took nearly 20 minutes.)

      Fable 5.1 on "max" didn't over-think and did give me the best pelican I've seen from any Anthropic model.

      Here are the Opus 5.5 pelicans, excluding 5.5 max.

      I also built this comparison grid comparing them with pelicans by Opus 5, Fable 5.1, and Sonnet 5:

      A grid of pelicans for four Claude models at different thinking efforts.

      Comparing different model vendors by how well they draw a pelican riding a bicycle may not make much sense now (if it ever did), but I'm still finding value in using them for comparisons of the same model families at different reasoning levels.

      I'm now using GPT-6 Sol and Claude Opus 5.5 as my default models in Codex and Claude Code. I've upgraded the Datasette Agent demo at agent.datasette.io to use GPT-6 Luna, and it seems to be fast and competent at both SQL queries and building HTML and JavaScript for Datasette Apps.

      You are only seeing the long-form articles from my blog. Subscribe to /atom/everything/ to get all of my posts, or take a look at my other subscription options.

    2. 🔗 gildas-lormeau/single-file-cli v2.15.5 release

      SingleFile CLI 2.15.5

      Changes

      • single-file-core is updated to 1.6.10, see https://github.com/gildas-lormeau/single-file-core/releases/tag/v1.6.10. It carries 28 commits, most of them in the cascade calculation behind --remove-unused-styles, and for the CLI it means the following
      • Archives written with --compress-content are smaller. A stylesheet is stored once per content, so several &lt;link&gt; elements resolving to the same CSS share one file whatever URL each came from, and an @import chain is merged from the leaves up; over 24 real pages that is 736 stylesheet files down to 263, and 3.2 MB less CSS for the browser to parse when the archive is opened. The images SingleFile generates itself are stored as files instead of being inlined as data URIs: the snapshot it takes of a video frame for a poster, the icon beside a blocked video, and the bitmap of a &lt;canvas&gt;
      • An archive unzipped and opened from disk no longer loses stylesheets whose &lt;link&gt; carries crossorigin, which a browser refuses to fetch as a sibling file:// resource. On a capture of a GitHub page that was all 29 of its 29 links
      • Rules that used to disappear from the saved page are kept: a nested selector such as & + & written under a selector list, a vendor-prefixed value like -webkit-linear-gradient(red, blue), a selector escaped or capitalised in a way the comparison did not recognise, and a rule whose protection was miscalculated inside :not(), :has() or :nth-child(... of ...)
      • Rules that used to win when they should not no longer do: a standalone @starting-style block left elements in their before-transition state, a sublayer outranked its parent layer's own declarations, two anonymous @layer {} blocks were treated as one, several shapes of revert-layer rolled back to the wrong declaration, and @scope roots were resolved from the wrong element
      • An @import inlined into the page keeps the cascade layer and the supports() condition it was written under, instead of applying unconditionally and ahead of the layers it was meant to sit inside
      • An iframe saved as srcdoc keeps an empty src, so a page styling iframe:not([src]) { display: none } no longer hides a frame the live page showed
      • Re-capturing a page SingleFile had already saved no longer changes which elements the structural pseudo-classes match
      • --remove-unused-styles is faster, which is most visible on the pages where it was slowest

      Co-authored by Claude (Claude Code)

    3. 🔗 earendil-works/pi v0.87.1 release

      New Features

      • Latest frontier models — Use Claude Opus 5.5, GPT-6 Sol, and GPT-6 Luna through supported providers, including GitHub Copilot. See Choose a Model.
      • Grok 4.7 by default for xAI — New xAI sessions now default to Grok 4.7. See Provider Authentication.

      Added

      • Added inherited Claude Opus 5.5, GPT-6 Sol, and GPT-6 Luna support for GitHub Copilot.
      • Added inherited GPT-6 Sol and GPT-6 Luna support for OpenAI API keys and OpenAI Codex subscriptions.
      • Added inherited Claude Opus 5.5 support for Anthropic with adaptive thinking and a 1M context window.

      Changed

      • Changed the default xAI model to Grok 4.7.

      Fixed

      • Fixed split-turn compaction summaries being refused by Claude Fable 5.1 by clearly separating the conversation and using continuation-oriented instructions (#9908 by @davidbrai).
      • Fixed missing or invalid --mode values being silently ignored instead of reporting an error and exiting with a nonzero status (#9045).
      • Fixed inherited image-only user messages being rejected by some OpenAI-compatible providers because they included an empty text part (#9797).
      • Fixed inherited Anthropic OAuth requests reporting an outdated Claude Code version.
    4. 🔗 HexRaysSA/plugin-repository commits sync repo: +6 releases, ~375 changed rss
      sync repo: +6 releases, ~375 changed
      
      ## New releases
      - [ida-mcp](https://github.com/hexrayssa/ida-mcp): 2026.916.2, 2026.916.1, 2026.915.3, 2026.915.2, 2026.915.1
      - [ida-nexus](https://github.com/hexrayssa/ida-nexus): 0.12.0
      
    5. 🔗 pydantic/monty v1.0.0-beta.2 - 2026-09-21 release

      What's Changed

      v1.0.0-beta.1 - 2026-09-21

      (v1.0.0-beta.1 released failed on crates.io, hence beta 2 release)

      New Contributors

      Full Changelog : v1.0.0-beta.1...v1.0.0-beta.2

    6. 🔗 exe.dev Tales from the Software Factory: The Cron and the VM rss

      The other day, I built a boring bot that could tell me whether the model list in our LLM gateway was out of sync with one of our LLM providers. We deploy frequently enough that doing this dynamically has not been a priority, but it’s good to know when it’s time to update things. Years of experience kicked in: Shelley and I wrote the check as a test, and I used our CI system (Buildkite; it’s fine; next time it bugs me, it’s getting yeeted in favor of a vibe-coded improvement) to run a cron job that, when we need to do work, posts to Slack.

      As soon as I was done, I realized my mistake, and threw it all away. I started an exe.dev VM instead, to add to our fledgling army of bots. Now, instead of the output being “hey, you need to remove that deprecated model,” the output is a diff with the proposed change, together with a button to queue the change into our CI system (which, of course, leads into our CD system). My old mindset was wanting a bot to nag me into doing the thing. The new mindset is to have the bot take the task as close to the finish line as possible. This sort of state over a CI system, while possible, is unnecessarily miserable. If VMs are cheap, it’s better to have a little bot server that you can customize to your heart’s content.

      Don’t worry; the bot is checked in, right next to our other bots, all in our monorepo. The bots continuously deploy. Life is good. Good bot.

    7. 🔗 HexRaysSA/plugin-repository commits sync repo: +1 release rss
      sync repo: +1 release
      
      ## New releases
      - [augur](https://github.com/0xdea/augur): 0.10.1
      
    8. 🔗 crmne/spotifast Spotifast v0.9.1 release

      Spotifast 0.9.1 finishes the move to the new name while keeping existing settings, sign-ins, and installations working. This is the last release with Fastpotify-named compatibility downloads. If you still use an older version, update to 0.9.1 before updating further, or install a newer Spotifast release manually.

      Download Spotifast: Mac · Windows · Windows ARM · Linux · Linux ARM · Flatpak

      The fastpotify-* files below are identical compatibility copies for older updaters that require those filenames. Use the Spotifast links above for a new installation. Releases after 0.9.1 will not publish old-named downloads.

      Fullscreen lyrics in
Spotifast

      Fullscreen lyrics, added in 0.9.0.

      Fixed

      • Your settings and sign-ins come with you. Existing profiles, cached music, window state, and protected credentials move to Spotifast. Custom device names stay unchanged, and Liked Songs pins keep their place. An updater trial leaves the old profile available if the update needs to roll back. By @crmne.
      • Spotifast is the primary package and executable name. Portable archives, Windows installation shortcuts, the Rust package, logs, and Linux media controls use the new name. Version 0.9.1 provides the final compatibility downloads for older updaters and accepts the new archive and macOS bundle identities used by future releases. Existing installation locations remain valid. By @crmne.
      • macOS update helpers stay inside the signed app. Updates no longer copy the helper executable out of its signed bundle. If a helper still cannot start, the error includes its exit status and a diagnostic log location. By @crmne; thanks @jorisw for reporting the startup failure. (#556)
      • Existing Omarchy integrations follow the renamed profile. The app updates its unmodified theme hook automatically and leaves customized hooks alone. By @crmne.

      If an older macOS build reports that its update helper exited before it was ready, install 0.9.1 from the DMG manually. The helper changes take effect for updates started from 0.9.1 onward.

      Custom Linux media scripts should use playerctl --player=spotifast. Cargo users may need cargo install --git https://github.com/crmne/spotifast --locked --force once to replace commands owned by the old package. See the upgrade and rename guide for details.

      Thanks

      @jorisw and everyone who reported upgrade problems and helped test the transition to Spotifast.

      Full changelog : v0.9.0...v0.9.1

    9. 🔗 MetaBrainz Picard 3 Release Candidate 4 rss

      We received good feedback on the previous release candidate 3, which resulted in several bugfixes and small improvements. The Picard team hence decided to release a fourth release candidate in preparation for the final release of Picard 3.0.

      It fixes an important performance issue, so if you are currently running any of previous alpha, beta or release candidate versions upgrade ASAP.
      It also fixes issues related to internationalization, causing some of existing translations to not actually show in the application (mainly constants).

      Please test, test, and test , report any issue on forums, matrix, or, ideally, on the ticket system. When reporting an issue, always provide details about your environment and a full debug log helps us a lot. Also now is a good time for final review and improvements of the translations.

      Download links and a detailed list of changes since Picard 3 release candidate 3 are available below. For a more detailed overview of what is new in Picard 3 please see the previous blog post Picard 3 Alpha Release.

      While we have all the major features implemented and with the latest bug fixes we are confident in the current code, this is still a pre-release and there might be bugs. If you use this, do so with care, backup your files and please report any issues you encounter.

      If you are updating from Picard 2, note that some of the changes are backward incompatible, hence we recommend you make a backup of your Picard.ini config file before trying this version. You can do so in Picard’s Options under Advanced > Maintenance.

      What’s new?

      Bugfixes

      • PICARD-3438 - Plugin action MENU setting not honored in "Plugin Tools" on main menu bar
      • PICARD-3439 - Unexpected font change in script editors after pasting
      • PICARD-3442 - Track duration tolerance (ignore_track_duration_difference_under) no longer suppresses the ~length diff in the Metadata box
      • PICARD-3446 - CLI does not run config upgrade hooks, leaving old config files unmigrated
      • PICARD-3448 - Some constants aren't properly translated, though translations are available
      • PICARD-3450 - Button titles on scripting options page are compressed
      • PICARD-3453 - Metadata box tag tooltips re-render Markdown per row, causing severe CPU load during save/selection

      Improvements

      • PICARD-3441 - Clarify read-only non-tag values in the metadata box (length, filepath)
      • PICARD-3444 - Bundle sqlite3 in packaged builds
      • PICARD-3449 - Rework Cover Art → Processing options layout to stack Tags/Files vertically
      • PICARD-3452 - Sort debug options by translated name and show CLI name in tooltip

      Download

      We appreciate your interest in trying this new version. Use with care, backup your files and please use theMetaBrainz community forums and the ticket system to give feedback and report bugs.

      For Windows and macOS you can download the release candidate version from the Picard download page. Linux users can run from source or try the "candidate" channel of the Picard snap package.

      Picard is free software and the source code is available on GitHub.

      Helping out

      We want to provide a polished release of Picard 3.0 that everyone can feel confident to upgrade to. To achieve this, we need the help from the MusicBrainz community.

      The easiest way to help us getting a great Picard 3.0 release is using and testing this release candidate. Please report bugs on the Picard issue tracker and provide feedback in the community forums.

      We also need help with translations, as there are a lot of new features and UI changes over previous Picard versions. We will avoid any further text changes before the final release, so now is the right time to help with translation on Weblate. Please see the translation instructions on the Wiki for details.

      If you are a software developer you are very welcomed to provide fixes and features. Picard is free software and the source code is available on GitHub. See Contributing to Picard on the Picard website to get started.

      You can also look at the new Plugin API and develop plugins for Picard or update your existing Picard 2 plugin to work with Picard 3.

      Acknowledgements

      Code contributions by Bob Swift, Laurent Monin and Philipp Wolfer.
      Translations were updated by BestSteve (Chinese (Traditional Han script)), Laurent Monin (French), Marc Riera (Catalan), MichTheOcelot (Spanish (Latin America)), pXF (Hungarian), st.esser (German), Vaclovas Intas (Lithuanian) and wileyfoxyx (Russian).

    10. 🔗 crmne/spotifast Spotifast 0.9.0 release

      0.9.0 adds fullscreen lyrics, custom playlist covers, and proxy settings. Playback and queues are more reliable when changing songs, switching Spotify Connect devices, or recovering from a dropped connection.

      Fullscreen lyrics in Spotifast
0.9.0

      New

      • Give lyrics the whole screen. Follow the current line with larger text and an album-art backdrop, keep playback controls within reach, and press Escape to return to your previous window. By @NotTanJune and @crmne. (#316)
      • Give your playlists their own covers. Choose a JPEG or PNG from Edit details → Change cover , preview it, and upload it to Spotify. Spotify may ask you to sign in again to approve image uploads. By @dyd4dsh7 and @crmne. (#329)
      • Choose how Spotifast connects. Settings now offer System, Off, HTTP, and SOCKS5 proxy modes, with proxy passwords kept in the native credential store. Local audio supports an unauthenticated HTTP proxy; other proxy types apply to the app's web requests. By @we11adam and @crmne. (#250)
      • Like the current song from the Linux command line. Run spotifast like, or bind it to a desktop shortcut. By @mgsloan. (#512)
      • Open Spotify search links directly in Spotifast. Launchers and Linux media controls can send a search to the app. More player, Queue, and Lyrics controls also use the existing translations. By @crmne.

      Fixed

      • Spotify Connect brings the song and queue back with you. Switching back to this computer transfers the active session's song, position, queue, and paused or playing state. By @crmne.
      • Queue a whole album in order, then add another song after it. Albums, singles, and EPs queue on this computer or another device. Rate-limited additions retry automatically after Spotify's requested wait, and failed additions no longer leave blank rows behind. Starting an album keeps separately queued copies under Playing next. By @crmne; thanks @organicFoil. (#547)
      • The song you choose stays selected and audible. Changing songs no longer lets discarded audio from the previous song cause an extra skip. Repeat mode also stays selected when starting another song. By @crmne; thanks @fernandoomorifaria and @wulffeld. (#535, #518)
      • A dropped playback connection keeps the queue. Reconnection restores the song and position, manually queued songs, playlist context, shuffle order, and Repeat mode. By @crmne; thanks @Self-Perfection. (#533)
      • Collections keep their familiar artwork while loading. Known covers and headers remain visible while complete details arrive, and softened covers no longer repeatedly decode and reload. By @hyperpuncher and @crmne. (#517, #551)
      • macOS windows close without crashing, and updates accept the renamed executable. Switching to the mini player also preserves the main window's size. By @mdevils and @crmne; thanks @sermelipharo. (#532, #538, #542)

      Thanks

      @NotTanJune, @dyd4dsh7, @we11adam, @mgsloan, @hyperpuncher, @mdevils, @organicFoil, @fernandoomorifaria, @wulffeld, @Self- Perfection, @sermelipharo, and everyone who contributed reports and helped test this release.

      Full changelog : v0.8.0...v0.9.0

    11. 🔗 MetaBrainz Welcome Silona Bonewald, new MetaBrainz Foundation Executive Director! rss

      We are very pleased to announce that the MetaBrainz Foundation has appointed Silona Bonewald as Executive Director, following the unfortunate passing of our Rob at the beginning of the year.

      Silona has served as Executive Director of IEEE SA Open and Vice President of Community Architecture at Hyperledger, part of the Linux Foundation. Earlier in her career she served as Director of InnerSource at PayPal and authored the widely used O’Reilly publication Understanding the InnerSource Checklist.

      Silona also founded the League of Technical Voters, a 501(c)(3) organization dedicated to government transparency through open source technology, and has since advised nonprofit and open source organizations including the Cardano community’s IntersectMBO, the Foundation for Public Code, and the Software Freedom Conservancy. She has served on the board of the Electronic Frontier Foundation’s Austin chapter in the past and holds standing relationships across the world wide standards communities, and more… If you would like to keep browsing Silona’s looong list of professional credentials you are welcome to follow her on LinkedIn.

      That’s all a long way to say that we are very excited to have Silona on board! The team is looking forward to working with Silona and you (our wonderful community) to carry Rob’s legacy forward.

      Please give Silona a warm welcome in the comments!

      Silona will also be hosting an AMA on 5 October 2026, at 17:00 UTC, on the forums (we will do another announcement regarding this, closer to the time), where you can post questions and share with Silona some of your dreams for the future of the MetaBrainz Foundation and its projects!

      P.S. reosarevok cleared the record on this topic at a recent dev meeting, and I think it needs to be shared here as well:

      So, most of you know that I’ve spent the last months dealing with ED issues. Which, as I have been told in private, is confusing wording - that is executive director issues, not erectile dysfunction issues.

      Hey! No laughing at the back!

      Welcome to the team, Silona.

    12. 🔗 @malcat@infosec.exchange For full and pro users: we've released malcat 1.0.0-alpha3 for you to preview. mastodon

      For full and pro users: we've released malcat 1.0.0-alpha3 for you to preview. It ships with:
      ● many GUI improvements (like side-by-side tabs)
      ● an even better MCP server with support for sandbox python transforms
      ● the first usable .NET and PYC decompilers!

    13. 🔗 r/LocalLLaMA Alibaba plans AI model with 5 trillion to 10 trillion parameters, unveils new chip rss
    14. 🔗 r/LocalLLaMA Qwen 4 Announced at Apsara Conference rss

      Qwen 4 Announced at Apsara Conference | https://preview.redd.it/bpbc9i6hizqh1.png?width=1270&format=png&auto=webp&s=e8aa8301895735a05c3c61a5e793018a23d1cac5 I wanted to share a quick update: Alibaba has officially announced Qwen 4 at the Apsara Conference, submitted by /u/Salah_H_Hasan
      [link] [comments]
      ---|---

    15. 🔗 Rust Blog Announcing a Maintainer in Residence: Scott Schafer for the Cargo team rss

      At the end of August, we announced our first Maintainers in Residence, Rust Project contributors who are funded for their upstream contributions and maintenance work from the Rust Foundation Maintainers Fund (RFMF). Since then, the Rust Leadership Council has dedicated more funds from its Project Priorities budget to RFMF, and together with AWS also providing additional funds, this allowed us to open a new full-time Maintainer in Residence (MiR) position to support the Cargo team. We would like to thank the Rust Leadership Council, AWS, and also the Rust Foundation for providing us with this opportunity! If you would like to help us hire more maintainers to improve Rust, consider donating to RFMF.

      This post explains why we chose to support the Cargo team specifically, and introduces Scott Schafer, the new Cargo Maintainer in Residence.

      Why Cargo?

      The new MiR full-time position is dedicated to helping with the maintenance of Cargo, our build system and package manager. The Cargo project is deeply involved in many new Rust features, improvements, and Project Goals. Combined with its cross-cutting nature, where it has to support many different use-cases and integrate with several other tools, it takes a lot of work just to keep up with its maintenance needs, let alone support so many feature requests and proposed changes.

      Because of that, the Cargo team has sometimes struggled with meeting its maintenance demands. You might remember that for several years, it actually held a feature freeze, to reduce Cargo's internal tech debt, perform necessary refactorings, go through the issue and pull request backlog, and come up with scalable internal development and design processes, so that they could eventually go back to even thinking about adding new features.

      Recently, some changes occurred within the team, which made it more difficult for them to meet their maintenance baseline. Some members of the team left, while others lost their dedicated funding for working on Cargo maintenance and had to scale down their involvement. The Funding team thus considered it very important to support this team, given that we had an opportunity to do so. And thus we decided to hire a full-time maintainer to work on Cargo for (at least) the next 12 months.

      Even though we know that a single full-time maintainer will not completely solve the maintenance struggles of the Cargo team, we hope that it will improve the situation, and provide a bit of a relief for the team.

      Introducing Scott Schafer

      A photo of Scott Schafer

      We are very happy to welcome Scott Schafer (@muscraft) into the Maintainer in Residence role! Scott has joined the Cargo team three years ago, and apart from working on Cargo, he is also the lead of the Rust Docker team, which prepares official Docker images for every Rust version.

      Apart from working on general maintenance of Cargo, Scott has implemented Cargo's Workspace inheritance feature, and has also spearheaded a complex multi-year effort to switch the rendering of diagnostics in the Rust compiler to use the annotate- snippets crate. This effort has been completed in the Rust 1.93.0 release. Thanks to it, the same diagnostics interface can now be shared between the compiler and Cargo (and also other tools), which amongst other things unblocked further development of the Cargo linting system, which has now been stabilized and will ship in the Rust 1.100.0 release.

      Everyone we talked about was very excited about Scott becoming a Cargo Maintainer in Residence, and we share that feeling. We wish Scott all the best in his new role, and we are very happy that we can support his maintenance work.

      Here is what Scott thinks about it:

      I am incredibly excited to work on Cargo full-time! There have been so many things that I wish I could've worked on over the years, that I will now be able to get to. I hope that my efforts will bring Cargo into a more maintainable state.

      Conclusion

      We are incredibly happy that we keep getting more funds for the Rust Foundation Maintainers Fund, which allows us to support Rust Project contributors. The funding team will be working with the supported maintainers, and also the funders, to ensure that they are all happy with the arrangement, so that we can secure stable funding for Rust maintenance for years to come.

      If you would like to help us support more Rust maintainers, consider donating to RFMF!

    16. 🔗 Ampcode News One Runner, Many Worktrees rss

      A runner can now create Git worktrees. Pick a repository the runner serves, hit Tab, name the branch, and the thread starts in a fresh checkout. Your main checkout stays untouched.

      The new thread composer on ampcode.com with the runner mac-mini selected and the directory picker open. The amp repository is highlighted and offers Current or New Worktree.

      In the directory picker, every Git checkout on the runner gets a New Worktree option next to it. Choose it and you get a small form:

      The worktree form in the new thread composer: New worktree of amp, name fix-flaky-login-test, directory ~/code/amp-fix-flaky-login-test, branch fix-flaky-login-test, from current HEAD, and a Create Worktree button

      The name you chose becomes the branch name and the folder name. The runner then creates the worktree as a sibling of the repository: ~/code/amp gets ~/code/amp-fix-flaky-login-test, checked out on a new branch fix-flaky-login-test off the current HEAD. Uncommitted changes stay where they are, in the original checkout. The new directory shows up in the picker right away, marked with a branch icon, and the thread starts in it.

      Puck can do this too: ask it to start a thread on your runner in a new worktree and it passes a worktree name to create_thread.

      Clean Up When You're Done

      A thread that runs in a worktree the runner created gets a new action: Archive and Remove Worktree. It archives the thread, runs git worktree remove, and deletes the branch.

      The thread actions menu on ampcode.com with a new entry, Archive and Remove Worktree, between Archive and Delete

      New Folders and Projects Too

      The picker can also create things. Type the name of a directory that doesn't exist yet and you get New Directory or New Project. Read more.

      The directory picker in the new thread composer with a name typed that doesn't exist yet, offering New Directory and New Project

      Oh, They Understand Secrets Now Too

      Runners can also use the Secrets & Env Vars you configure on ampcode.com. Same variables that orbs get. It's off by default; opt in with --amp-env:

      $ amp --no-tui --runner-id mac-mini --discover-dirs --amp-env
      

      Every time a thread starts, the runner fetches the variables that apply to it (personal, then project, then workspace) and adds them to the environment of the thread's shell commands, MCP servers, and plugins. Change a variable on ampcode.com and the next thread gets the new value. No restart, no SSH.

      Both need a runner on the current Amp version. If yours has been running for a while, it has updated itself already.

      Read more about worktrees and Secrets & Env Vars in the runner docs.

  4. September 21, 2026
    1. 🔗 Simon Willison Jev introduces a new shape of LLM - System One, aka Decision Models rss

      Last week TypeSafe AI unveiled Jev, their first example of a new category of model that they are calling "System One models" (I'm with Maggie Appleton, I think "decision models" is a better name for these). Jev is an interesting variant on the usual LLM format: it still accepts text inputs, but instead of text output it returns floating point numbers corresponding to categories, yes/no questions, ratings, and associated confidence scores.

      TypeSafe describe Jev like this:

      Think of Jev as a frontier-intelligence function call: unstructured state in, typed probabilistic decisions out.

      It's also very fast, and really cheap. Regular LLMs are priced in terms of input and output tokens, with output generally charged at significantly higher rates. Jev charges only for input - output is free - and the input price of their first model is $0.042 per million tokens - cheaper even than OpenAI's GPT-5 Nano ($0.05/million).

      Jev lets you ask questions about text or semi-structured data. You compose a "state" object containing a string, array of strings, or set of name-value pairs - this might describe an article, or a customer, or any other kind of record. You then send that to their API with one or more questions, and get a reply back for each.

      You can ask three kinds of questions:

      • Yes/No questions, which Jev calls "Noul" questions - their CEO confirmed on Hacker News that this is short for Bernoulli, from the Bernoulli distribution. You pose a statement and get back a floating point number between 0 and 1 for how confident the model is that the statement is true.
      • Choice questions, where the model picks one from a set of provided options - actually a confidence score plus a probability distribution across all of the options.
      • Score questions, where you provide sequence of numeric levels with descriptions and it provides a floating point score somewhere along that range.

      The Jev API can accept a single document ("state") and as many questions as you can cram into the context window. Questions are evaluated in parallel, so sending many questions should take a similar time to sending just one.

      The Jev 1.13 jaggedness documentation offers useful guidance as to Jev's strengths and weaknesses. It's currently not great with numbers, dates, or "adversarial content".

      I think the decision model framing is useful for understanding where to use Jev. It's great for anything that can be expressed as a classification task - think spam detection, suggesting labels, prioritization and ranking.

      I've also been experimenting with it for search reranking, where you fetch 100 likely matches using an inexpensive algorithm like BM25, then have Jev score those 100 candidates for relevance against the original query.

      Black boxes are back in fashion

      Something I've found a little uncomfortable about Jev is how it very much represents a regression even further towards black box machine learning systems.

      LLMs are black boxes already - you can ask them to justify their decisions, but you can't guarantee that what they say is useful or accurate.

      Jev doesn't even give you that: put in all the text you want, the only thing you're going to get back is a floating point number. If Jev marks something as spam, which content signals tipped it off?

      This also means that concerns about bias should be front and center. I really hope nobody uses Jev to rank job applicants - that floating point number could conceal all manner of unseen bias baked into the models, and experimentally picking that bias apart is going to be a tricky business.

      (I tried one experiment where I had Jev score every city in the San Francisco Bay Area on a yes/no answer to whether they were a "Good city?" - it rated Cupertino top and East Palo Alto bottom. Huh.)

      In practice, this all means that evals and structured experiments are even more important than they are for regular LLM projects. Thankfully, Jev is so cheap that running hundreds or even thousands of experimental prompts through it costs just a few cents.

      Unconventional uses for Jev

      It's been really fun watching the wider community come up with potential use-cases for Jev over the past few days. Here are some creative ones that caught my eye:

      • jevchat by Kyle Pena turns Jev into a (terrible) chat model. "At every step it asks Jev one question: Given the user's question and the reply written so far, which symbol comes next?". ericpruitt on Hacker News: "It's the digital equivalent of Morty speaking with the death crystal".
      • jev-leftpad by Fatih Kadir Akın implements left-pad with the prompt "How many spaces are needed before value to reach targetLength?" and a choice query allowing options from "0 spaces are needed" to "10 spaces are needed".
      • jev-2048 by Andy Gayton uses Jev to play the 2048 sliding puzzle game.

      Open weight recreations

      There's also been a flurry of projects attempting to create a model like Jev using on top of open weight models. Kev is one interesting example, using Qwen 3.5 to produce 0.8B, 4B, and 9B models. Here's the accompanying Hacker News thread, where someone linked to a JevBench benchmark that has already cropped up to compare "Jev-class decision models".

      Given Jev was released just under a week ago, the amount of activity around it is extremely impressive.

      Using Jev from LLM

      Update 22nd September 2026: I released llm-typesafe, a plugin that adds support for Jev to my LLM CLI tool and Python library. Basic usage looks like this:

      llm -m jev 'Please refund my last payment.' \
        -s 'Does this message explicitly request a refund?'

      See the README for examples of other query types.

      You are only seeing the long-form articles from my blog. Subscribe to /atom/everything/ to get all of my posts, or take a look at my other subscription options.

    2. 🔗 smol-machines/smolvm smolvm v1.17.0 release

      What's Changed

      • Let aarch64 Linux resume a branch source instead of freezing it by @BinSquare in #1327
      • Attach host disks and vhost-user block devices to a machine by @BinSquare in #1326
      • agent: refresh persistent DNS and retain shutdown receipts by @sgrove in #1328
      • Return a directory listing when the files API is asked for a directory by @BinSquare in #1330
      • Fail a delete that needs confirmation when stdin is not a terminal, instead of reading EOF as a decline and exiting successfully by @BinSquare in #1333
      • Run the image's own entrypoint for a cached --oci-cache run instead of the bake's no-op placeholder by @BinSquare in #1335
      • Provision the --oci-cache bake without launching a workload so images without /bin/true can be cached by @BinSquare in #1340
      • Give a clone a host port the kernel will not reassign before it binds by @BinSquare in #1341
      • Rebuild libkrun so aarch64 machines can branch again by @BinSquare in #1342
      • Make incremental checkpoints reusable as a Rust crate by @BinSquare in #1344
      • Reserve every recorded host port so a clone is never given a stopped machine's port by @BinSquare in #1345
      • Forward CLI --secret-env/--secret-file secrets to the workload on the oci-cache and pack-ref run paths by @BinSquare in #1343
      • Save checkpoints without staging a second RAM copy by @BinSquare in #1305

      New Contributors

      Full Changelog : v1.16.2...v1.17.0

    3. 🔗 gildas-lormeau/single-file-cli v2.15.4 release

      SingleFile CLI 2.15.4

      Changes

      • single-file-core is updated to 1.6.9, see https://github.com/gildas-lormeau/single-file-core/releases/tag/v1.6.9. For the CLI it means that a rule the capturing browser rejects, because one selector of its list is unsupported there, no longer hides a rule that browser actually draws: with --browser-engine firefox the lists of a shared Gemini conversation kept their indent, where they used to fall back to the browser default

      Co-authored by Claude (Claude Code)

    4. 🔗 MetaBrainz MusicBrainz Server update, 2026-09-21 rss

      Hi! It's been a while since our last release since we have been working on stability improvements for both website and search to better cope with all the load we are handling recently. The first related changes are part of this release, with more to come, including limiting searches to 500 results (if you need something further down the search, sorry but you probably need a better search!). Additionally, the very annoying bug that sometimes lost track times when parsing tracklists should hopefully be gone now (thanks dvirtz!), and a lot more aggregator and shortener links are now blocked; even when not yet blocked, remember to always add all the relevant destination links rather than redirects and aggregators if possible.

      A new release of MusicBrainz Docker is also available that matches this update of MusicBrainz Server. See the release notes for update instructions.

      Thanks to derat, dvirtz, ibmibmibm and mib for having contributed to the code. Thanks to DenizC, derat, dvirtz, HibiscusKazeneko, j.rohr, outsidecontext, Raman Sinclair, rinsuki and salo.rock for having reported bugs and suggested improvements. Thanks to AligFu, AndrejsD1718, BestSteve, blueday, Covium, Denatura, EmO686, Flavia Telcean, joao_over9k, Kolesteraw, Life4649, liilliil, mfmeulenbelt, naturbrilian, NorwayFun, Priit Jõerüüt, pXF, syntariavoxmortem, TheParaziT, Vaclovas Intas, vacuousVersifier and wileyfoxyx for updating the translations. And thanks to all others who tested the beta version!

      The git tag is v-2026-09-21.0.

      Fixed Bug

      • [MBS-9526] - Parser removes times, despite "use track times" being unchecked
      • [MBS-10767] - "more" and "less" on rel types list are not translatable
      • [MBS-14386] - Series of series doesn't show parts as a list, only on relationships section
      • [MBS-14398] - Collection checkbox in header doesn't work
      • [MBS-14440] - Webservice requests can return authenticated data on unauthenticated requests
      • [MBS-14448] - Memory leak in Data::Relationship::_new_from_row

      Improvement

      • [MBS-14192] - Require visiting tracklist tab when adding release
      • [MBS-14399] - Accept new /a LibraryThing author URLs
      • [MBS-14404] - Reject Facebook "share" URLs
      • [MBS-14415] - Strip locale and mibextid in Facebook URL cleanup
      • [MBS-14423] - Reject Google "share" URLs
      • [MBS-14424] - Block Pinterest URL shortener
      • [MBS-14439] - Block (yet) more smart links
      • [MBS-14425] - Block smart links: drum.io
      • [MBS-14426] - Block smart links: ffm.bio
      • [MBS-14427] - Block smart links: social.tunecore.com
      • [MBS-14428] - Block smart links: frontl.ink
      • [MBS-14429] - Block smart links: gyro.to
      • [MBS-14430] - Block smart links: paa.ge
      • [MBS-14432] - Block smart links: linkin.bio
      • [MBS-14433] - Block smart links: beacons.ai
      • [MBS-14435] - Block smart links: fanbase.to
      • [MBS-14436] - Block smart links: soundon.global
      • [MBS-14437] - Block smart links: imusician.pro
      • [MBS-14438] - Block smart links: musics.to
      • [MBS-14443] - Support Boomplay’s new non-numeric URL format
      • [MBS-14450] - Improve error / rejection messages for URL shorteners and aggregators
      • [MBS-14455] - Limit the depth of search to 500 results

      Task

      • [MBS-14382] - Update the Amazon logo used in the sidebar
    5. 🔗 gildas-lormeau/single-file-cli v2.15.3 release

      SingleFile CLI 2.15.3

      CLI fixes and improvements

      • A JavaScript dialog opened by the page no longer stalls the capture. The browser stops the page until a dialog is answered and the CLI answered none, so an alert() in an inline script ended in "Load timeout" with no file, and one fired after load hung the process past every timeout. The dialog is now dismissed as soon as the browser reports it and the page runs on as if the user had closed it: confirm() returns false and prompt() null. A beforeunload dialog is accepted so the navigation proceeds
      • When a page stops answering during load, the fallback that stops the load and captures what is there is now bounded by the capture timeout instead of waiting for ever

      Changes

      • single-file-core is updated to 1.6.8, see https://github.com/gildas-lormeau/single-file-core/releases/tag/v1.6.8. For the CLI it means that a rule written directly inside an @scope block with a selector starting with a combinator is no longer removed as unused, which restored the spacing of shared Gemini conversations; that the onbegin, onend and onrepeat handlers of SVG animation elements are removed with the other event handlers when scripts are blocked; and that the infobar's expanding ring no longer replays each time the infobar is folded back

      Co-authored by Claude (Claude Code)

    6. 🔗 r/LocalLLaMA XiaomiMiMo/MiMo-V2.6-Flash-RL · Hugging Face rss

      XiaomiMiMo/MiMo-V2.6-Flash-RL · Hugging Face | submitted by /u/Bestlife73
      [link] [comments]
      ---|---

    7. 🔗 earendil-works/pi v0.87.0 release

      New Features

      • Canonical session context and extension boundaries — Edit model context without rewriting history and add actionable lifecycle hooks. See ContextEditEntry and extension events.
      • Full-transcript context extensions — Use context_with_system for per-request system-message transformations. See context_with_system.
      • Per-model image input limits — Configure cache-safe image resizing per model for attachments, read, and tool-result images. See Image Input Limits.

      Breaking Changes

      • Removed the inherited shouldStopAfterTurn agent option. Use finishTurn and return { action: "end" } instead. finishTurn runs before turn_end but applies the decision afterward, and it also receives error and aborted responses; migrate normal-response predicates by returning undefined for those hard exits. See the @earendil-works/pi-agent-core changelog for a complete before-and-after example.
      • Added ContextEditEntry to the exported SessionEntry union. TypeScript consumers with exhaustive entry switches must handle context_edit; use replacement: null for omission and a content replacement otherwise.
      • Made SessionManager canonical for AgentSession provider context. Assigning session.agent.state.messages no longer replaces future request history; restore with SessionManager.inMemory(cwd, { id }, entries), navigate with session.navigateTree(), or append through session.sessionManager and call session.refreshContext().
      • Expanded TurnEndEvent with required boundary fields and added AgentBeforeSettleEvent to the exported ExtensionEvent union. Consumers constructing events or exhaustively switching on ExtensionEvent must handle the new shapes. ExtensionRunner.emit() no longer accepts turn_end; host integrations dispatch actionable boundaries with emitBoundary(baseEvent, buildContext).
      • Deferred runs requested from agent_settled handlers until all settled handlers finish. Handlers still observe ctx.isIdle() === true, but no longer see a reentrant agent_start during the same notification dispatch.

      Added

      • Added append-only model-context edits. For example, sessionManager.appendContextEdit(entryId, null) omits one message from future provider context without changing raw history, usage, or UI history.
      • Added actionable turn_end and agent_before_settle extension boundaries. Return { entries: [...event.entries, draft], continue: true } to persist structural entries in order and ensure one next provider request without changing steering or follow-up scheduling.
      • Added retain-none compaction input: sessionManager.appendCompaction(summary, null, tokensBefore) stores the compaction's own ID as its kept boundary.
      • Added the context_with_system extension event, which runs after context handlers on the full transcript including system messages and sends its result verbatim. See context_with_system.
      • Added per-model image resize profiles through inputLimits.images.resize in models.json, applied to file attachments, image reads, and tool-result images (#9631).

      Fixed

      • Fixed string context-edit replacements producing invalid assistant and tool-result message content instead of text blocks.
      • Fixed context-invisible boundary metadata and replacement edits causing newly appended or replaced input to be summarized before its first provider request.
      • Fixed edited-context accounting both discarding valid assistant usage captured after the latest context edit and reusing that usage after a later compaction made it stale.
      • Fixed selected error retries and final length/overflow recovery retaining abandoned model attempts in future provider context; post-run recovery omissions are now persisted without hiding raw transcript history or changing queue scheduling.
      • Fixed context handlers that filter or slice messages dropping the prompt and tool declarations, which after extension-driven compaction left requests without built-in tools or made Codex emit raw tool-call text. Handlers no longer see system messages; Pi restores the prompt and tool state after they run. See context (#9789, #9822).
      • Fixed /bug allowing uploads in offline mode while preserving local zip exports (#9841 by @christianklotz).
      • Fixed idle prompt-cache warming rebuilding expired caches when its timer or an extension decision is delayed.
      • Improved crash diagnostics with hints identifying loaded extensions that appear in the stack trace.
      • Fixed text files beginning with GIF being misclassified as images and omitted from read and CLI @file input (#9755).
      • Fixed malformed prompt template frontmatter being silently ignored instead of reported as a resource warning (#9830 by @christianklotz).
      • Fixed inherited unknown OpenAI-compatible Chat Completions endpoints receiving strict tool schemas unless they explicitly advertise support (#9816).
    8. 🔗 pydantic/monty v1.0.0-beta.1 - 2026-09-21 release

      What's Changed

      New Contributors

      Full Changelog : v0.0.23...v1.0.0-beta.1

    9. 🔗 NationalSecurityAgency/ghidra Ghidra 12.1.4 release
    10. 🔗 r/LocalLLaMA How it feels watching prices go up rss

      How it feels watching prices go up | submitted by /u/Hyacin75
      [link] [comments]
      ---|---

    11. 🔗 exe.dev Caring vs. Knowing rss

      A few months ago, I wrote about how AI is disrupting the build-vs-buy equation in SaaS. I argued that the real value of SaaS over most DIY software is knowing what good looks like. But a few recent events have made me realize that knowing in and of itself is not enough.

      “Good” changes. Users evolve, surrounding systems shift, and expectations rise. And the rate of change somehow continues to increase, making us feel the technological jerk of products in our daily life. Building something valuable requires knowing what good looks like today. Maintaining (or even increasing) that value requires caring enough to keep learning what good will look like tomorrow.

      In a conversation with Betty Junod on my podcast Third Loop, we discussed the idea of an application with an Ideal Customer Profile, or ICP, of one. Betty’s point was that the cost reduction that comes from an agent building your app makes it reasonable to build an app that only you will use. This is liberating for people who have an idea or need, but previously lacked the coding skill or resources to make a computer do things they considered useful.

      If you are the ideal customer, you know what good looks like and understand the constraints because you are the only user. But what happens when you’re building for more than just one customer? The challenge is the same whether you are building an app to store your recipes or a service to monitor VM utilization. As the number of users increases, answering what good looks like becomes more challenging. Humans have the amazing ability to solve the same challenge with incredible variety. Your definition of good may vary slightly from your next user’s. As the number of users grows to hundreds or thousands, the variations—and resulting complexity—can multiply rapidly.*

      *Yes, humans can use em dashes appropriately.

      Choose Your Own Adventure

      In the old world, this is where DIY often broke down. You’d add personalization or customization, but it had a cost, both in the building as well as maintaining the increasing complexity of a system. For many SaaS companies, this led to narrowly scoping the ICP and then expanding features over time to meet the needs of more people.

      This approach was sustainable for the SaaS provider, but meant that users had to conform to the provider’s view of the workflow. It also meant that providers built new features against rigid, explicit user stories and happy- path workflows.

      In this new world of free code, what if we could let the user build the experience they wanted? Give the user access to the agents that build the features. This starts to change the way we think about designing products. We may need to think more about designing primitives and building blocks and not just a single fixed user path.

      Of course, as we look to acknowledge that each user is a snowflake we quickly realize that different users care about different things. A default setting for one user may be appreciated, while for another it is a deal-breaker that ruins their experience. Some users want a product to make all the choices for them, while others wish they could have control down to the bit level for every interaction.

      Put another way, sometimes you want to buy a pre-made sandwich, and sometimes you want to bake your own bread from the wheat you harvested and milled yourself. And most people, most of the time, are somewhere in between. We are finally at a point where we can build for—and with—users across this spectrum.

      So, as we build our choose-your-own-adventure platforms, selecting good defaults and caring about what good looks like over time is what keeps a growing user base happy. It’s great to have a computer make all the choices for you when they are the choices that you want. But building a system that makes all the right choices remains aspirational. For now, we can try to build systems that adapt to our personal “right” choices faster than we have in the past.

      Ever-Changing “Good”

      Another critical aspect of this is that “good” can change over time. In 1440, when Gutenberg made the first printing press, his list of requirements was a bit different from the last laser printer I purchased from Costco. The rate of change that is acceptable to the user is also a factor. If your ICP is slower to adapt to change, either by comfort or regulation, you need to plan accordingly.

      How do you ensure that your product or service continues to be good? How do you monitor for drift—either in your product quality or in your ICP needs? Product quality isn’t just your uptime. Users rarely use products in a vacuum, especially SaaS. Other services provide input and users need the output to feed into other places. And the needs of these inputs and outputs are changing faster today than ever before.

      At the end of the day, knowing what good looks like is a point-in-time judgment, while caring about what good looks like is an ongoing task. You have to spend effort observing and processing usage patterns and feedback. Even as we build a platform that can be augmented and updated by our users, we still have to observe and listen to both new and existing users and incorporate learnings into our design and build process. This means your product is never “done” or “finished.” It also means that, as a builder, you may have to let go of the idea that your product will be used the way you intended.

      Free, Like Puppies

      Puppies are not free. Food, toys, vet visits, and time all add up, regardless of the initial cost. This has long been a comparison used for open source software. And it needs to be acknowledged that unrestricted customization can have the same risk.

      In this new era of “I can build anything,” this often means you first have to make a choice, “do I care enough about what good looks like for this product to own the maintenance and upkeep?” This isn’t just about upgrading, patching, CVEs, and performance (although that is a big part of it). Handing users the controls to change your product also runs the risk that they’ll make changes they regret. Or, when the choice is good for the user, it may restrict your optionality in the future if desired core product changes break their customization.

      Different types of people have different tolerances for build-vs-buy. There are people like Josh, who look at the world and say, "I could build that myself," and then do. Or people like my brother who will pay for other people to build everything. And then some who tinker in between. Either way, someone still has to feed the puppy.

    12. 🔗 r/LocalLLaMA 16GB (and in many cases 12GB) is the max vram most people will ever reasonably have rss

      This sub is, needless to say very niche and skewed towards the high end. There are tons of extremely high end setups here with multiple gpu's etc.

      Even 24GB is out of reach of most people financially, forget about the 3x3090 or 5090 or even higher setups. Macs/Strix Halo/dgspark etc are all similarly expensive. 16GB is pretty much the high end for most. And this completely changes in most of the rest of the world where even 12GB would be a luxury.

      Things have changed recently (I think even last 6 months have been huge) and even agentic coding is now feasible on 16GB cards (eg with Qwen 27B quants).

      I think/hope things will continue to improve. Of course there's going to be a hard limit on how much world knowledge these smaller models will have.

      The holy grail is new architecture that supercedes the Transformer and new techniques that don't depend on vram/bandwidth.

      submitted by /u/ECrispy
      [link] [comments]

    13. 🔗 HexRaysSA/plugin-repository commits sync repo: +3 releases rss
      sync repo: +3 releases
      
      ## New releases
      - [clang-include](https://github.com/oxikkk/ida-clang-include): 1.3.0
      - [haruspex](https://github.com/0xdea/haruspex): 0.10.1
      - [rhabdomancer](https://github.com/0xdea/rhabdomancer): 0.10.1
      
    14. 🔗 r/LocalLLaMA I really don't understand Jev hype rss

      Isn't this what simple neural networks have been able to do for years? Doesn't seem anything special to me.

      submitted by /u/Manerfish
      [link] [comments]

    15. 🔗 Project Zero Windows Exploitation Techniques: Dangling COM Object Registrations rss

      This short blog post is about abusing a privilege escalation bug that Microsoft recently fixed in Windows, CVE-2026-66804, that I and 14 others reported. This issue is an incomplete fix for CVE-2026-50343, a bug dubbed “Dark Elevator” by Calif.

      The root cause of the bug was a dangling COM object registration for the CrossDevice COM object with the CLSID {E9F83CF2-E0C0-4CA7-AF01-E90C70BEF496}. A COM registration typically needs two parts: a server executable, which for in-process components is a DLL and a CLSID entry under the HKEY_CLASSES_ROOT registry key which points to that DLL.

      This object was registered in the system wide classes key, meaning it was accessible to all users on the system, including system services. However the server executable was missing. Specifically it was registered to use the DLL %PROGRAMDATA%\CrossDevice\CrossDevice.Streaming.Source.dll. Not only does this path not exist, it’s also within the C:\ProgramData directory. This is a common location for all users on the system and therefore permits anyone to create directories. Therefore you can create an arbitrary DLL file at that location and the COM object can be instantiated potentially leading to privilege escalation.

      But how to get the COM object, and thus the DLL, loaded into a privileged process? The fixed bug Calif blogged about, CVE-2026-50343, abused a weak registry key permissions to add the class as a installer plugin and then get the InstallService to load it into memory. The issue with the InstallService was fixed, so we need an alternative way to abuse the unfixed dangling COM reference.

      Abuse Custom COM Marshaling, Again

      A technique I’ve used multiple times in the past to load an arbitrary DLL into a privileged process is to abuse custom COM marshaling. When you call an interface method which is implemented out-of-process, the COM runtime will marshal the parameters into an RPC call to send to the server. If a parameter is a COM object then the runtime marshals that object into an OBJREF structure that allows the object to be used in the server. The two main types of OBJREFs are shown in the diagram below, or you can read about them in the official DCOM documentation here:

      The default COM marshaling strategy is by reference which produces a Standard OBJREF containing all the information needed to connect to the original object. The object might even be on a completely different computer. When the object is unmarshaled this information is used to create an RPC channel back to the caller so that the server can call methods on the object.

      The runtime also supports an opt-in marshal by value mechanism if the object implements the IMarshal interface. This allows the object to specify an arbitrary CLSID to use as the unmarshaling object, which doesn’t have to be the same as the object being passed in. When the object is unmarshaled in the server the CLSID is used to lookup an in-process server DLL to load.

      Therefore an obvious technique to exploit the dangling COM object registration is to send a Custom OBJREF to a privileged COM service specifying the CLSID of the dangling object. When unmarshaled, which happens automatically in the runtime before the target method is called, the malicious DLL will be loaded and we’d get privilege escalation. The following code shows how trivial it is to specify the dangling COM class in an IMarshal implementation:

      class FakeMarshal : public IMarshal {
          // Inherited via IMarshal
          HRESULT GetUnmarshalClass(REFIID riid, void* pv, 
                                    DWORD dwDestContext, void* pvDestContext, 
                                    DWORD mshlflags, CLSID* pCid) override
          {
              return CLSIDFromString(L"{E9F83CF2-E0C0-4CA7-AF01-E90C70BEF496}", pCid);
          }
          // ...
      };
      

      We need to find a privileged service to send the marshaled COM object to become an administrator. Unfortunately, finding such a service isn’t so simple. The fact that a custom marshaling object will cause an arbitrary DLL to be loaded into the process and code executed is a risky operation, especially across privilege boundaries. Therefore Microsoft implemented a mitigation which can be enabled to disable custom marshaling in the process unless the class is explicitly opted in, or is one of a small number of trusted components such as classes in the runtime library.

      Since Windows 8 this mitigation is implemented through two mechanisms, the first and original method is setting the EOAC_NO_CUSTOM_MARSHAL capabilities flag when calling CoInitializeSecurity. The second, added to improve security in AppContainer sandboxes is set through the IGlobalOptions::Set method and specifying the COMGLB_UNMARSHALING_POLICY property type. As we’re not trying to escape from a sandbox the only value of importance is COMGLB_UNMARSHALING_POLICY_STRONG which disables custom marshaling similar to the capabilities flag.

      As the dangling COM object isn’t registered as a trusted marshaler this means we need to find a privileged COM server that doesn’t enable these mitigations. The easiest approach is to scan the processes at runtime. The capability flags are stored in the value combase!gCapabilities while the marshaling policy is stored in combase!g_GLBOPT_UnmarshalingPolicy.

      However, I kept thinking there must be a COM service that runs as SYSTEM and doesn’t enable custom marshaling. After a bit of fiddling I found one, although there’s no doubt others. It turned out to be a COM service I’ve researched and exploited before, the Shell Create Object Handler object. This is an interesting COM object, in that while it runs in a SYSTEM service, it’s not directly instantiable:

      PS> $cls = Get-ComClass -Clsid 135fd325-45b7-4c30-89f8-4386961669f0
      PS> $o = New-ComObject -Class $cls
      Exception calling "CreateInstanceAsObject" with "3" argument(s): "Class not registered"
      
      PS> $cls.AppIdEntry | Select Name, RunAs, IsService
      Name                        RunAs               IsService
      ----                        -----               ---------
      Shell Create Object Handler nt authority\system     False
      

      Normally, when a COM object is hosted by a privileged service, it’s registered with the name of a system service that RPCSS will start automatically when the object class is requested. However, in this case as there’s no service,creating the object fails with a “Class not registered” error. In order to create the COM server, the service needs to already be running as the SYSTEM user before you call CoCreateInstance.

      Instead you have to start the privileged server via the \Microsoft\Windows\Shell\CreateObjectTask scheduled task. Fortunately this task can be started by normal users, which you can verify with my Get- AccessibleScheduledTask command:

      PS> Get-AccessibleScheduledTask -Executable | 
               ? Name -Match Shell\\CreateObjectTask
      TokenId  Access                     Name
      -------  ------                     ----
      77E3156D GenericExecute|GenericRead ...\Shell\CreateObjectTask
      

      Of course just starting this task is not enough, you also need to create a global named event, ShellCreateObjectTaskReadyEvent otherwise the task will immediately exit and not export the COM service. A simple script to create an instance is shown below:

      PS> $ev = New-NtEvent -Win32Path "Global\ShellCreateObjectTaskReadyEvent" -InitialState $false
      PS> Start-ScheduledTask -TaskPath "\Microsoft\Windows\Shell\" -TaskName "CreateObjectTask"
      PS> $ev.Wait()
      PS> $o = New-ComObject -Clsid "135fd325-45b7-4c30-89f8-4386961669f0"
      PS> $o
      InterfaceName Iid
      ------------- ---
      IUnknown      00000000-0000-0000-c000-000000000046
      

      You can verify that the object is hosted in a privileged process with the Get-ComProcess command and checking the CustomMarshalAllowed property. Note this command is currently broken on Windows 11 25H2 due to changing structures that I’ve not had a chance to update, it still works on previous versions.

      PS> $objref = Get-ComObjRef -Object $o
      PS> $p = Get-ComProcess -ProcessId $objref.ProcessId
      PS> $p | Select Name, User, CustomMarshalAllowed
      Name    User                CustomMarshalAllowed
      ----    ----                --------------------
      dllhost NT AUTHORITY\SYSTEM                 True
      

      At this point we have everything we need to exploit the dangling COM object, we’ve got a COM service running as SYSTEM with custom marshaling allowed. We can use the CoGetInstanceFromIStorage API to create the object, passing the “fake” marshaled object as the pstg parameter. This object will get marshaled to the COM server process and then unmarshaled unconditionally during object activation. We do need to implement a fake IStorage interface to get it past the local API implementation, which isn’t that difficult but I thought I’d see if there’s an easier way. Let’s look at the supported interfaces:

      PS> Get-ComInterface -Object $o
      
      Name                 IID               HasProxy   HasTypeLib     
      ----                 ---               --------   ----------     
      IUnknown             00000000-0000-... False      False          
      IMarshal             00000003-0000-... False      False          
      IMarshal2            000001cf-0000-... False      False          
      ICreateObject        75121952-e0d0-... True       False
      
      PS> Get-ComInterface -Name ICreateObject | ConvertTo-ComSourceCode -Parse
      [
        object,
        uuid(75121952-E0D0-43E5-9380-1D80483ACF72),
      ]
      interface ICreateObject : IUnknown {
          HRESULT Proc3([in] GUID* p0, [in] IUnknown* p1, 
                        [in] GUID* p2, [out, iid_is(p2)] IUnknown** p3);
      }
      

      The COM object only has one unique interface, ICreateObject. Converting the interface proxy to IDL shows that it takes an IUnknown pointer as its second parameter. Therefore to exploit the dangling COM registration we can just pass the “fake” marshaled object to this parameter and get privileged code execution. I’ve attached an updated, fully working exploit of the bug to the original issue here.

      It’s worth noting that while this exploitation technique makes it easy to exploit dangling COM registrations, it can also be used to exploit buggy COM class custom unmarshalers. Sometimes, just the act of loading a DLL into a process can cause a crash.

      Finding the Original Dangling COM Object Registration

      As a footnote, a quick way to try and find other dangling COM servers would be to use the following PowerShell script with my OleViewDotNet and NtObjectManager modules installed:

      function Test-ComServer {
          param($Server)
          try {
              Use-NtObject($lib = Import-Win32Module -Path $Server -Flags AsDataFile) {
                  $true
              }
          } catch {
              $false
          }
      }
      
      PS> $db = Get-ComDatabase -LoadMode MachineOnly
      PS> $cs = Get-ComClass -Database $db -ServerType InProcServer32
      PS> $cs | ? { -not (Test-ComServer $_.DefaultServer) } | 
              Sort DefaultServer | Select Name, DefaultServer
      

      This will print out any in-process COM class from the machine hive where LoadLibrary can’t find the DLL. It’s important to use LoadLibrary via the Import-Win32Module command as some of the COM registrations only specify the file name and you want to ensure these are resolved correctly according to the system path.

      This script will find the dangling CrossDevice COM class on an unpatched system. Note, you’ll need to manually inspect the paths to see if a DLL can be planted at that location. You could make it smarter by checking if the path is in a directory that can be written to, or even test if an existing DLL can be modified, but that’s an exercise for the reader.

    16. 🔗 r/LocalLLaMA Clarification on the Qwen-image-2.1 license rss
    17. 🔗 r/LocalLLaMA ZCode is now open source rss

      ZCode is now open source | ZCode is now open source , and the reported security issues have been addressed. Source code: https://github.com/zai-org/ZCode The repo includes its desktop app, web workspace, backend, Agent CLI, and runtime. Official announcement: In response to the ZCode product security issues reported by the community, we have completed the necessary remediation and sincerely apologize to all our users. We have open-sourced ZCode at github.com/zai-org/ZCode, placing the code under community scrutiny and making ZCode more open and transparent. We sincerely thank the community developers who previously identified issues in ZCode. Going forward, we will establish an ongoing product security vulnerability reporting and response process. We welcome developers to continue reviewing ZCode and reporting potential issues, and we will provide rewards based on the severity of the issues reported. With respect to the code data referenced by the community, we confirm that no such data is retained and that it has never been used for model training. Following the remediation, we invited the China Academy of Information and Communications Technology (CAICT) and NSFOCUS to conduct security assessments. The results are as follows: Through its technical assessment, CAICT confirmed that the zcode-prod Alibaba Cloud OSS bucket is in a zero-data state. Security remediation has been completed in the ZCode v3.14.0 client. The Repo Wiki feature has been removed, and the workflow for generating and uploading local repository snapshots has been disabled. NSFOCUS confirmed that all data objects in the zcode-prod Alibaba Cloud OSS bucket, as well as the bucket itself, have been deleted. Remediation has been completed in the ZCode v3.14.0 client. The Repo Wiki entry point and the associated generation workflow have been removed, and no functional path capable of triggering the generation of local repository snapshots or transmitting local files externally was identified. Once again, we sincerely apologize and welcome continued scrutiny from the community. The full security assessment report will be released soon. submitted by /u/ResearchCrafty1804
      [link] [comments]
      ---|---

    18. 🔗 Rust Blog GitHub Actions leaking secrets when Miri output is cached rss

      The Rust Security Response Team was notified that Miri stores all environment variables to target/, allowing secrets to persist in caches.

      While not necessary a vulnerability in and of itself, when paired with GitHub Actions caching behavior, it is possible for this to expose secrets to PRs.

      Overview

      GitHub Actions makes it possible to cache directories between runs. Typical setups allow CI runs on main (and other branches) to write to cache, and PRs can only read from cache (preventing cache poisoning). Rust projects tend to speed up CI by caching binaries built by cargo install and sometimes the contents of target/.

      PR CI can be triggered by anyone who can open PRs on your repository. GitHub requires maintainer approval for the first PR, but future PRs will rerun CI on every push. Anyone who has previously landed a change can trigger a CI run extracting information from cached target/ and then cover their tracks by pushing a second commit to the PR.

      GitHub sometimes hides overwritten commits in its UI, making this kind of attack harder to detect. CI run logs and overwritten commits are also deleted after a few months.

      When cargo miri is invoked, Miri needs to retain build-relevant environment variables between runs1. The current code to do so achieves this by storing all environment variables to target/. This, of course, persists when target/ is cached.

      If your environment contained secrets, these can now be accessed by PRs via the cache.

      Our fix

      Our short term fix for this is to make Miri only preserve CARGO_* environment variables (excepting CARGO_*_TOKEN) and OUT_DIR. In the longer term, Miri and cargo may figure out better ways to inform Miri of the relevant list of environment variables. Note that this patch may not be available on nightly yet.

      We also performed an ecosystem scan of GitHub repositories and identified 1 repository with this issue and 7 repositories that do not appear to be vulnerable but should be cautious anyway. We have reached out to those maintainers.

      Am I affected?

      It is likely that our scan was imperfect, so we recommend you check your own GitHub Actions setups if you run Miri.

      You are vulnerable if:

      • You run cargo miri in CI
      • The step that runs cargo miri has access to secrets as an environment variable:
        • By being passed in to the step itself as an environment variable
        • By being set in env for the workflow
        • By being passed in to a previous step that persists it in the environment somehow
      • The workflow being used caches the target directory, usually done via actions/cache or swatinem/rust-cache
      • The cache is accessible to PRs (common and often the intended use case)

      Possible quick fixes include:

      • Disabling cache for that job.
      • Scoping secrets to steps in that job that do not call Miri.
      • Temporarily disabling Miri.

      Once done, please clear the cache. Consider rotating any secrets that might have leaked.

      The Miri release in the upcoming nightly (2026-09-22) will no longer have this problem.

      Even if you do not run Miri, ensure jobs that can write to public caches do not have access to secrets. Many tools do not have special handling for secrets, and assume the entire environment can be written to the filesystem.

      Threat model

      We consider it bad practice to have a cache that can easily be tainted by secrets.

      If caching target/, it is worth making sure that the inputs to processes that create target/ (anything invoking cargo) do not have secrets available. It is generally rare for standard cargo build/test subcommands to need any secrets or tokens2, so this is mostly a matter of being careful about having secrets exposed as environment variables to the entire job.

      Cargo/Miri/Rust does not guarantee that environment variables will be safe from being copied into target/. While we are treating this as a security issue and patching it out of an abundance of caution, this is not something you should rely on in general. Beyond official Rust tooling, it is possible for build scripts to be doing things that lead to the environment being stored in compilation artifacts.

      Acknowledgements

      Thanks to Predrag Gruevski of OpenAI for reporting this issue to us. Furthermore, the ecosystem scan was performed using Codex access and credits donated by OpenAI, which we also thank them for.

      Issue triage and remediation was performed by Manish Goregaokar, Ralf Jung, Ben Kimock, Weihang Lo, Jacob Finkelman, Walter Pearce, Josh Stone, and Mark Rousskov.

      1. Miri is invoked multiple times by cargo miri for complicated reasons

      2. In theory it could come up with build scripts reading from the network