🏡


  1. November 02, 2026
    1. 🔗 HexRaysSA/plugin-repository commits sync repo: +1 release rss
      sync repo: +1 release
      
      ## New releases
      - [idalib-rust-bindings](https://github.com/idalib-rs/idalib): 0.11.0
      
    2. 🔗 idalib-rs/idalib Release v0.11.0 release

      Features:

      • Compatibility with IDA 9.5.
      • Use IDA's official license management API for validity, ID, and decompiler availability queries.
      • Enable batch mode on Windows.
      • Support Linux and Windows ARM64 targets and host-to-target cross-compilation (contributor: @0xdea).

      Bugfixes:

      • Ensure correct drop order of objects borrowed from the IDB (contributor: @0xdea).
      • Keep c_char conversions internal so public byte-oriented APIs remain portable.
      • Generate processor-specific instruction constants with the same u16 type as InsnType.
  2. November 01, 2026
    1. 🔗 backnotprop/plannotator v0.28.44 release

      Follow @plannotator on X for updates

      Missed recent releases? Release | Highlights
      ---|---
      v0.28.43 | Voice dictation, combine and rename projects, Mark unread, full-screen threads, Q for open questions, search by type
      v0.28.42 | Choose how your Inbox list looks, contents for long documents, link the Inboxes on two computers, clearer search, documents outside the project open from your own machine
      v0.28.40 | Update works with update checks off, the thread bar shows the thread's name, agents before the project in list rows
      v0.28.39 | Reply from full screen, thread names lead the Inbox list, one project per Claude Code session, a redesigned code review sidebar, Call flow as cards
      v0.28.38 | Attach files to a reply in the Inbox, swipe through a question's picture choices, easier-to-read list rows, code on hover in Call Flow and Semantic Changes
      v0.28.37 | DeepSeek Harness support, save plans to Notion, AsciiDoc in annotate, browse the whole repository in code review, Go to File and Go to Definition, Tidy and hand-offs in the Inbox
      v0.28.36 | Qwen Code support, plans open in the Clean look, live HTML and diagrams in Inbox messages, a Feedback button, plannotator inbox status, stop and restart
      v0.28.35 | Updates check the download against checksums Plannotator fetches itself, a failed check changes nothing
      v0.28.34 | Start a Grok Build session from the Inbox, action items in your reply, a tidier Board, Settings → Capabilities, a failed feedback send is shown
      v0.28.33 | Pi updates no longer get stuck on 0.28.31
      v0.28.32 | A security update (built on Bun 1.4.4, eMudhra certificates), the Inbox Board, custom Inbox prompts, hover cards for issue and PR links, rich-text Copy
      v0.28.31 | An onboarding tour for the Inbox, pinned threads, picture choices in questions, palettes in Inbox Settings, tailnet reviews from the plugin tool

      What's New in v0.28.44

      A patch for phones: the iPhone keyboard no longer moves the Inbox around, and pictures stay clear of the option card. 15 PRs, 3 of them from outside contributors, including a first-time contributor.

      Plannotator Inbox

      iPhone keyboard

      The Inbox now stays in place while you type on an iPhone, with no gap or sliding page. #2427

      Pictures on phones

      A picture you're choosing stays clear of the option card, and you can still zoom and pan it. #2455

      Smaller changes

      • What's new opens over your tailnet when you're the owner. #2457
      • A plain reply now reaches your agent titled with the thread's short name, so it can tell threads apart. #2468
      • Attachment tiles no longer jump when you hover them. #2473
      • A new optional debug log records stuck requests, with no message words in it. Set PLANNOTATOR_INBOX_DEBUG to turn it on. #2465

      Plannotator

      Smaller changes

      • Ask AI cleans up answers more strictly, and a badly formed answer no longer crashes the page. #2458
      • Select all works again in chat and comment boxes in VS Code. #2431
      • Contents stays in sync in annotate after long scrolls and file switches. #2403
      • Ask AI with OpenCode 2 no longer times out waiting for the server to start. #2449

      Install / Update

      macOS / Linux:

      curl -fsSL https://plannotator.ai/install.sh | bash
      

      Windows:

      irm https://plannotator.ai/install.ps1 | iex
      

      Claude Code Plugin: The plugin and the plannotator binary update separately, so run the install script above as well. In a terminal:

      claude plugin marketplace update plannotator
      claude plugin update plannotator@plannotator
      

      Then restart Claude Code. Inside Claude Code, run /plugin marketplace update plannotator, then open /plugin → Installed → plannotator → Update now.

      Pi:

      pi update npm:@plannotator/pi-extension
      

      OpenCode: Re-run the install script above. It also clears the OpenCode 2 plugin cache.

      What's Changed

      • feat(inbox): Ask AI step 1, the conversation file and routes (off by default) by @backnotprop in #2456
      • fix(vscode): restore select-all in chat and comment inputs by @utpalsinghdev in #2431
      • fix(ui): stricter sanitizing of Ask AI output, no crash on badly formed answers by @backnotprop in #2458
      • fix(annotate): keep Contents in sync after scrolling and file switches by @utpalsinghdev in #2403
      • fix(inbox): keep the app fixed on iPhone while typing by @backnotprop in #2427
      • fix(ai): accept the new opencode server listening line by @fixfon in #2449
      • Fix a race in the linked machines test by @backnotprop in #2463
      • Inbox: let the owner read What's new over the tailnet by @backnotprop in #2457
      • fix(inbox): a phone's picture keeps clear of the option card by @backnotprop in #2455
      • feat(inbox): Ask AI's live answers, Inbox side, behind PLANNOTATOR_INBOX_ASK_AI by @backnotprop in #2460
      • feat(inbox): title a plain reply with the thread's short name by @backnotprop in #2468
      • feat(ui): generate inbox-thread.css for hosts of the thread parts by @backnotprop in #2470
      • fix(inbox): attachment tiles no longer jump on hover by @backnotprop in #2473
      • feat(inbox): optional debug log for stuck requests by @backnotprop in #2465
      • feat(ui): move the first Inbox thread leaves into @plannotator/ui by @backnotprop in #2453

      New Contributors

      Community

      Full Changelog : v0.28.43...v0.28.44

    2. 🔗 crmne/spotifast Spotifast v0.16.0 release

      Spotifast 0.16 brings Windows Media Player skins, alongside the Winamp ones. Artist pages gain monthly listeners and upcoming releases, Settings shows what your storage holds, and other devices' changes appear as Spotify pushes them. Soloist is also sturdier: it reconnects after a dropped connection, stops when you quit, and a leftover copy no longer blocks the next start.

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

      New

      • Windows Media Player skins. Spotifast can now wear a Windows Media Player skin as well as a Winamp one. By @davorb. (#1030)
      • See an artist's monthly listeners on their page. By @Espaye. (#1148)
      • Upcoming releases on artist pages, with a countdown to the day they arrive. By @imafreakandyalldontknowit67. (#1129)
      • Sort an album's songs by plays. By @DoWhileGeek. (#1111)
      • See your storage sizes and clear cached audio in Settings. By @dyd4dsh7. (#1113)
      • Copy a song's details from a new submenu in the song menu. By @spinfal. (#1133)
      • Links in a playlist's description are clickable. By @Espaye. (#1150)
      • Other devices' changes appear as Spotify pushes them, without waiting for the next check. By @Espaye. (#902)
      • Clearer top bar for screen readers and keyboards, with focus rings on its controls. By @EnricoNSilva. (#1114)

      Fixed

      • Soloist reconnects after its connection drops, instead of giving up. By @caeksec. (#1160)
      • A Soloist left running no longer blocks the next start. Spotifast stops it first. By @xpepper. (#1158)
      • Cmd+Q stops Soloist on Mac, so music no longer keeps playing after you quit. By @crmne; thanks @xpepper. (#1157)
      • Soloist's volume follows the slider while you drag, in the player bar and in skins. By @YelovSK and @crmne. (#1162, #1136)
      • Windows Soloist visualizers keep their level as the volume falls, and keep working after pause and resume. By @YelovSK and @gyarisuta. (#1165, #1156, #1153)
      • When Soloist stops unexpectedly, what it printed is kept in soloist-output.log, with your key removed, so the cause can be found. By @crmne.
      • Soloist's EQ and visualizers work in the Flatpak. By @crmne; thanks @Leo-G20. (#1167)
      • Linux playback no longer dies when rtkit grants real-time priority. By @crmne; thanks @Ashur-D. (#1105)
      • A window left full screen by the compositor opens as a window again, with its title bar. By @crmne; thanks @WhatTFF. (#1127)
      • MilkDrop's Time per preset keeps the time it says. By @crmne; thanks @geofou. (#1120)
      • A portable copy keepsapp.ron in its own folder. By @crmne; thanks @d4k0. (#1144)
      • A command reaches a device the Web API refuses as restricted, by going over Connect. By @Espaye. (#1146)
      • A remote volume holds through a device that reports it late. By @Espaye. (#1147)
      • A song added from the player bar keeps its album and cover. By @Espaye. (#1145)
      • A lagging playlist snapshot is waited for instead of being reported as an error. By @Espaye. (#1149)
      • Hidden songs are marked in rows that load after the first page. By @sabrimete; thanks @LaurinSorgend. (#1061, #1049)
      • Shuffling from a header starts at a random row of the songs shown. By @luuccaaaa. (#1125)
      • An artist's Popular songs retry once the Spotify session is ready. By @imafreakandyalldontknowit67. (#1130)
      • Home leaves out recommendations Spotify refuses instead of showing them empty. By @imafreakandyalldontknowit67. (#1131)
      • The artist page stays scrolled when a discography category loads. By @reedpen. (#991)
      • Filtering By You keeps the folder structure. By @syurima. (#1143)
      • Update checks and downloads share one connection. By @dyd4dsh7. (#1086)

      Thanks

      @davorb, @Espaye, @imafreakandyalldontknowit67, @DoWhileGeek, @dyd4dsh7, @spinfal, @EnricoNSilva, @caeksec, @xpepper, @YelovSK, @gyarisuta, @Ashur-D, @WhatTFF, @geofou, @d4k0, @Leo-G20, @sabrimete, @LaurinSorgend, @luuccaaaa, @reedpen, @syurima, and everyone who reported problems since 0.15.0.

      Full changelog : v0.15.0...v0.16.0

    3. 🔗 MetaBrainz Picard 3.0.4 released rss

      Picard 3.0.4 is a maintenance release for the recently released Picard 3.0 with fixes for reported issues and updated translations. This release fixes crashes on macOS with some language settings as well as a potential crash when updating the plugin list. It also addresses a regression where the match indicator for files would indicate a low score for newly tagged files and an issue where Picard would detect a WebP file as a WAVE audio file.

      The latest release is available for download on the Picard download page.

      The detailed changes for this maintenance release are below. For an overview of the new features since Picard 2.13 please see our detailed release announcement for Picard 3.0.

      Thanks a lot to everyone who gave feedback and reported issues.

      What’s new?

      Bugfixes

      • [PICARD-3479] - Crash on macOS everytime you switch app focus
      • [PICARD-3533] - Crash when closing options during plugin refresh
      • [PICARD-3534] - Picard mistakenly treats .webp files as WAV
      • [PICARD-3537] - Track match indicator shows bad match on newly ripped files

      Download

      Picard 3.0.4 is available for download from the download page of the Picard website. For Windows 10 and 11 users installing from the Microsoft Store and Linux users using the Snap Store will receive the update soon. The Linux Flatpak package is maintained separately and will also be updated soon.

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

      Get in touch

      Please use the MetaBrainz community forums and the ticket system to give feedback, suggest new features or report bugs.

      Acknowledgements

      Code contributions by Laurent Monin and Philipp Wolfer.

    4. 🔗 backnotprop/plannotator v0.28.43 release

      Follow @plannotator on X for updates

      Missed recent releases? Release | Highlights
      ---|---
      v0.28.42 | Choose how your Inbox list looks, contents for long documents, link the Inboxes on two computers, clearer search, documents outside the project open from your own machine
      v0.28.40 | Update works with update checks off, the thread bar shows the thread's name, agents before the project in list rows
      v0.28.39 | Reply from full screen, thread names lead the Inbox list, one project per Claude Code session, a redesigned code review sidebar, Call flow as cards
      v0.28.38 | Attach files to a reply in the Inbox, swipe through a question's picture choices, easier-to-read list rows, code on hover in Call Flow and Semantic Changes
      v0.28.37 | DeepSeek Harness support, save plans to Notion, AsciiDoc in annotate, browse the whole repository in code review, Go to File and Go to Definition, Tidy and hand-offs in the Inbox
      v0.28.36 | Qwen Code support, plans open in the Clean look, live HTML and diagrams in Inbox messages, a Feedback button, plannotator inbox status, stop and restart
      v0.28.35 | Updates check the download against checksums Plannotator fetches itself, a failed check changes nothing
      v0.28.34 | Start a Grok Build session from the Inbox, action items in your reply, a tidier Board, Settings → Capabilities, a failed feedback send is shown
      v0.28.33 | Pi updates no longer get stuck on 0.28.31
      v0.28.32 | A security update (built on Bun 1.4.4, eMudhra certificates), the Inbox Board, custom Inbox prompts, hover cards for issue and PR links, rich-text Copy
      v0.28.31 | An onboarding tour for the Inbox, pinned threads, picture choices in questions, palettes in Inbox Settings, tailnet reviews from the plugin tool
      v0.28.30 | An Artifacts view in the Inbox, comments on part of an image, diagrams in code review, Ask AI keeps its conversation in annotate

      What's New in v0.28.43

      Dictate your replies, combine and rename projects, and mark a thread unread in the Inbox. 23 PRs.

      Plannotator Inbox

      Voice dictation

      Press the mic to record, or hold it and let go, and your words land in the box. Nothing sends until you press Send. It works with the ChatGPT login in Codex or your own API key. It's off until you turn it on in Settings → Voice.

      Codex users signed in with ChatGPT see a one-time dialog that offers it.

      Combine and rename projects

      Combine projects that are really one, so their threads sit together, and undo it at any time. Nothing moves on disk. Tidy suggests projects to combine, and an agent can do it for you with plannotator inbox projects, combine and undo. You can also give a project a new name.

      Mark unread

      Put a thread back as unread when you want to come back to it.

      Full-screen threads

      A thread can fill the window, and Expand all is now a chevron.

      Faster keys

      Q opens the thread's open questions, and Mod+Enter sends from anywhere in a thread.

      Search by type

      Filter search results to one type of thing.

      Smaller changes

      • Every list row now shows its agents on grey tiles. They sit before the project on wide rows, and four agents fit without cutting any off. #2435, #2441
      • The Inbox note in your agent's rules file updates itself and now names the :::question block, as does the hook line. Your own text around it stays. #2447
      • If the live connection to the window dies, the Inbox catches up when it's back. #2428
      • A question's choices keep their natural order. Only the Recommended line marks the pick. #2436
      • Board cards have a right-click menu. #2426
      • Smaller thread names is a new list option, and the list options dialog can show over an open thread. #2424
      • The pin mark always sits on the right of a row. #2429
      • A new thread's row lights up after you send it from New message. #2440
      • Quick labels no longer appear when you select text in an attachment. 👍 stays. #2443
      • The phone sidebar no longer shows Copy prompt. #2444
      • File feedback in a reply reads at text size. #2432
      • The Holds up card grows to fit its items. #2423
      • Tailscale is found on a Mac that has only the app, not the command-line tool. #2433

      Install / Update

      macOS / Linux:

      curl -fsSL https://plannotator.ai/install.sh | bash
      

      Windows:

      irm https://plannotator.ai/install.ps1 | iex
      

      Claude Code Plugin: The plugin and the plannotator binary update separately, so run the install script above as well. In a terminal:

      claude plugin marketplace update plannotator
      claude plugin update plannotator@plannotator
      

      Then restart Claude Code. Inside Claude Code, run /plugin marketplace update plannotator, then open /plugin → Installed → plannotator → Update now.

      Pi:

      pi update npm:@plannotator/pi-extension
      

      OpenCode: Re-run the install script above. It also clears the OpenCode 2 plugin cache.

      What's Changed

      Full Changelog : v0.28.42...v0.28.43

    5. 🔗 crosspoint-reader/crosspoint-reader 2.0.0 release

      Summary

      What a busy month. A lot of new features landed in CrossPoint, and we're eager to hear what you think.

      New devices

      This release adds support for four ESP32-S3-based devices: the Metalio E-Ink 4, the EEGO A4 (standard and Lite versions), and the BOOX Picco. If you're thinking of buying one, you'll find links at https://crosspointreader.com/devices. That page uses our affiliate links, so buying through it helps support CrossPoint.

      SD card plugins

      CrossPoint now supports plugins installed on the SD card. A plugin can add book catalogs and downloads to the reader, or tools to the device's web interface. To show the Plugins entry on Home, enable Plugins under Settings → Connectivity.

      Plugins are not apps that run arbitrary code on the reader. On-device plugins use the screens and operations the firmware already provides, such as sign-in, catalogs, downloads, and supported reading events. They can't replace the reading engine, install hardware drivers, or add unsupported document formats.

      Some plugins include JavaScript, but that code runs in a browser on your phone or computer, so the browser page has to stay open while it works. For example, a browser plugin can turn articles or RSS feeds into an EPUB, which you then read on the device.

      The plugin system will stay focused on reading and book services. It won't become a platform for on-device games, calculators, notepads, writing apps, web browsers, or PDF rendering. Those remain outside CrossPoint's scope, plugins included.

      Bluetooth page turners

      Bluetooth page turners now work on all devices. Go to Settings → Connectivity → Bluetooth Page Turner to scan for a remote, pair it, and map its buttons. Short and long presses can trigger different actions: page turns, chapter navigation, the reader menu, and clipping selection. Touch devices get a Bluetooth toggle in the Control Center.

      Highlights and clippings

      You can now select text in EPUBs, highlight passages, and save excerpts as clippings. On button devices, use the reader menu. On touch devices, hold a word and drag the selection handles. Selected text also works for dictionary lookup, including multi-word phrases. If you turn on Sync Clippings, clippings can sync through a compatible CrossPoint Sync server.

      EPUB formatting and reading controls

      EPUB rendering now handles more of what books actually contain: drop caps, small caps, mixed text sizes, borders, and shaded blocks. Tables take column content, cell padding, and borders into account. Headings stay attached to the text that follows them, and paragraph indentation has its own setting. EPUBs can also show non-interlaced GIF images, covers included.

      Noto Serif is now optional

      To free up space for all of this, Noto Serif moved from a built-in font to an optional SD card font. If you use it, install NotoSerif through Manage Fonts before or after upgrading. Without it, a Noto Serif selection falls back to Noto Sans.
      Libron also available for direct download from the font manager.

      Everything else

      • OPDS, the catalog format used to browse and download books, now supports version 2.0 alongside existing catalogs.
      • The device web interface has a new look and more consistent dialogs.
      • Settings are grouped into a cleaner layout that's easier to extend.
      • Touch devices get swipe-to-delete in the file browser and a few other places.
      • More line-spacing choices. Seven options, from 0% to +75% added spacing, replace Tight/Normal/Wide.
      • Black-and-white EPUB images. A new Images option draws images with black-and-white dithering, avoiding the full refresh on image pages.
      • Azerbaijani is now available as a UI language.

      We also added a device comparison page to the website, for anyone who wants a CrossPoint device but can't decide which one: https://crosspointreader.com/device-comparison.


      What's Changed

      /

      New Contributors

      Full Changelog : 1.6.5...2.0.0


      Downloads

      X4 and X3
      X4 classic
      X4 Pro
      Eegoread A4
      Metalio Eink4
      M5Papermono
      Boox Picco
      Sticky

    6. 🔗 r/LocalLLaMA Heretic 2.0 released: Model modification for everyone rss

      Dear fellow Llamas,

      after almost 5 months of development, I finally have the pleasure of announcing to you the immediate availability of the biggest Heretic release ever, Heretic 2.0:https://github.com/p-e-w/heretic

      Heretic is the leading software for removing censorship from language models. It now boasts 37k GitHub stars and more than 8,500 models on Hugging Face, with 88 million(!!!) total model downloads.

      With Heretic 2.0, the project is entering a new era. Heretic is expanding from a purpose-built tool for censorship removal to a general-purpose model modification tool that can do amazing things. Besides removing censorship, it can suppress slop, reduce sycophancy, alter emotional alignment, and pretty much anything else that you can think of. Of course, censorship removal remains the primary and default function, and in fact works much, much better than ever before. Heretic 2.0 is the most advanced refusal suppression system ever built.

      Your time is precious, so here's the TL;DR for this release:

      • Directional abliteration is replaced by Arbitrary-Rank Ablation (ARA) , a novel steering method that I developed from scratch for Heretic. It's vastly superior to abliteration, and has been used with great success by enterprising testers for several months. Now it is the default (classic abliteration remains available as an option).

      • Heretic has been completely rebuilt around plugins. Scorer plugins define what Heretic optimizes for. Modifier plugins implement the actual steering method. Plugins are easy to write, can be loaded directly from a simple Python file, and have a well-defined API.

      • Heretic can now run non-interactively, which among other things has enabled us to implement full end-to-end tests for much tighter quality control. Model support has been expanded to include models with hyper-connections, and support for thinking models has been substantially improved.

      • Heretic 2.0 is not backwards compatible with Heretic 1.x configurations. See the migration guide for what you need to change in order to make your old configurations work.

      What hasn't changed is that removing censorship from a model remains as simple as running

      heretic Qwen/Qwen3.5-4B
      

      See the default configuration file for what Heretic has to offer beyond that.

      Now for some details...

      ARA: Heretic's new steering method

      Directional ablation, or "abliteration", is based on the assumption that refusals (or whatever else you are trying to suppress) are represented by a single direction (that is, a rank-1 subspace) in residual space. That this is the full picture has been doubted in research for a while, and there are now several papers exploring alternatives such as multi-directional ablation or "representation cones".

      At the beginning of this year, I started experimenting with a method that completely abandons the idea that the ablation transformation must be restricted to a fixed-rank subspace. In March, I published the initial version of Arbitrary-Rank Ablation in this pull request (which was later closed as I re-implemented ARA on top of the plugin system in this PR).

      ARA steers model behavior by modifying matrices based on an objective function that encodes the basic properties of the change we want: Harmful prompts should be represented in residual space in a way that's similar to harmless prompts, while the representations of harmless prompts should change as little as possible. This objective is used with the L-BFGS optimizer to modify matrices one-by-one, a kind of micro-training that steers representations without any rank restriction.

      ARA has been extensively tested and refined with the help of the community. Notably, kabachuha made it compatible with Heretic's LoRA system, and varunbln found a substantial performance improvement.

      I intend to post an article explaining ARA in more detail soon.

      Using scorer plugins to make Heretic do what you want

      Heretic operates by finding modification parameters that optimize scores , values that measure the quality of the resulting model. Ever since the 1.0 release, Heretic has used two hardcoded scores: Refusal count to measure decensoring strength, and KL divergence to measure quality retention.

      With Heretic 2.0, you can freely define your own scores by writing and loading scorer plugins. Arbitrarily many scorer plugins can be loaded and optimized for simultaneously, and each score can be either minimized or maximized during optimization. See the default configuration file for how to do this.

      The scorer plugin system is the result of months of effort by red40maxxer, with whom I exchanged hundreds of messages over dozens of review cycles to figure out the best possible design. This is a monumental contribution that has changed how Heretic works from the ground up.

      Besides the keyword (refusal) count and KLD scorer plugins, which remain the default, Heretic ships with two other scorers: A benchmark scorer, which can compute scores for many standard benchmarks, and a BERT classifier.

      The BERT classifier, developed by long-time Heretic contributor Vinay Umrethe, can use an arbitrary ModernBERT-type model to classify LLM responses, and score them based on which labels the classifier produces. Vinay also trained a refusal classifier model (used by default with this plugin), which experiments have shown to be substantially more accurate at identifying model refusals than the naive keyword matching method that Heretic employs by default. While the plugin is slower than keyword matching, the greater accuracy can steer Heretic towards producing a higher-quality modified model. An alternative configuration, which uses an emotion classifier, is also provided in the Heretic repository.

      The plugin system is well-documented in both the README and the code. If you are interested in experimenting with custom plugins, an agent should have no difficulty cooking up a plugin and a matching configuration file that together do what you want, after ingesting the Heretic repository.

      Well, I hope you like it!

      Cheers :)

      submitted by /u/-p-e-w-
      [link] [comments]

    7. 🔗 Register Spill Joy & Curiosity #104 rss

      Friends (and foes, of course)! No intro this week, for I do need to clean up the aftermath of a Halloween party and sneaking into my office and saying "I have to write my newsletter, people are waiting for it" can only work for so long. So, without further ado: here's a bag of links to things that spark joy or feed my sense of curiosity.

      • We don't usually hire, but now we are: we're looking for exceptional engineers to join Amp Labs in Sydney. I asked Oz, who is part of Amp Labs, what it's like working there and he said: "It's honestly the most fun I've ever had. The problems are big and hairy and frankly feel impossible some times... unless, maybe, we point the agent in just the right way? I wanted to work with exceptional people, and to test the limits of this new way of working in highly consequential ways, and that's exactly what's happening here!"

      • New Raising An Agent! This is, in a way, a follow-up to the previous episode about the Company of the Future. We respond to a lot of the questions we received since publishing that one: "How do you avoid slop if everyone can push to main? How do you do big architectural changes if you don't have PRs or RFCs? What do you think about unit tests? And can't you only do all of this because you have so many tokens and are only 21 people?" It's all in there. Plus a bit where I explain that I count pizzas in pizzas (that's right). Someone said it might be the best episode so far.

      • "Our companies made strange bedfellows." from building slack: Salesforce - Part one and two. I can't believe someone finally did it and wrote an honest account about what an acquisition of this magnitude looks like from the inside. If you ever worked at a startup, I think you'll enjoy reading this.

      • You need to read this one. Yes, it's long. But still, if you're even the tiniest bit interested in computers and engineering, or writing, you need to read this: Computer Chips Are the Most Magnificient Things We've Ever Made. There are so many things to quote. Here's one: "The spell hasn't been broken. The phone in your pocket is several orders of magnitude more sophisticated than the computers used for the Apollo mission. One AirPod could easily calculate a path to the moon. A car-key fob would suffice. An electric toothbrush. There are Rolls-Royces that we do, in fact, routinely throw away. The Apollo mission's chips were less powerful than those currently inside a digital pregnancy test. We squander moon-landing capability to display a plus sign." Or this: "ASML runs on the belief that if you recruit people who don't know enough to recognize that the job before them is hopeless, they might surprise you." Or this: "The collaboration produced mirrors that are the smoothest man-made objects in the known universe. If you blew one up to the size of the planet, the highest mountain would have the elevation of a face-down playing card." Okay, I'll stop there. Read it!

      • Wow: "A senior colleague hears I'm not happy with my team fit and asks me to go on a walk. I know him a bit from a past life - one of the kindest and most civic-minded people I've met. He says he might be starting a new special team that will train dangerous bio and cyber and nuclear models and show scary demos to governments in order to get them to take AI risk seriously. I politely decline."

      • There are some interesting, or: fascinating?, snippets in there: Why Is Tech Billionaire Marc Andreessen So Mad?

      • Karri Saarinen's wrote Someone behind the software. I love this: "So eventually the products develops a character through what its makers pay attention to, what they decide not to do and what they keep working on after it technically works. I sometimes think of this as the soul of a product. You feel that someone cares about how the whole thing comes together." I wrote something with a similar tiltle -- Someone on the Other End -- three years ago and, comparing the two, it's funny how it's the same sentiment at heart, but mine is more about software developed by a single person and Karri's is about much more than yet. And this here is a very hard problem: "Recently, many products are starting to feel messy to me, including products from very successful companies. There seems to be more thought going into what the technology can do and what can be added than the form it should take. The product changes are primarily additive, not improving the core problem."

      • The Mythical Man-Month in the age of AI. Very interesting thought! I was working on something yesterday, a new big feature, and I had 8 agents running at the same time, doing different things. At multiple times they blocked each other. "Oh I can't do this yet because we need to wait for X to land." So that is a thing, but I wonder how much it matters in practice. Agents aren't humans. Infinite patience combined with ability to react in milliseconds and to run on a schedule and to never tire -- those might make a difference.

      • Beautiful little piece by Phil Eaton about leaving New York: "I think mostly I learned not to wait around for other people to do the stuff I thought was obvious to do. Which can be especially scary in New York since there are so many people so much smarter and farther along than you. It turns out there's just very few people, experienced or not, who want to write or organize. And the smarter and more experienced people are often happy enough that someone else roped them in to speak, or that someone wrote about something they just haven't yet gotten to. Whatever the case, I've always shown up as 'here to learn' and I think it resonated with folks both more and less experienced than me."

      • Prestructured WYSIWYG. Made me wonder whether that is the reason (or one of them, at least) why I like Apple Notes so much.

      • How I Built the Most AI-Pilled Company in the World. I'm not sure how much of this is true. Meaning: would I say the same things after observing the same things? But it's certainly very interesting and there are some thought-provoking lines in there: "So what do five people do? It's a very different job now. Last year, and even earlier this year, each of our engineers owned a system and understood it deeply. Today they're closer to paratroopers. […] Wherever we land, there are two new jobs. […] The second is entropy, asking the models for things they wouldn't have suggested on their own. Ambition is one kind. Creative entropy is another." Entropy!

      • Felix Rieseberg at Anthropic killed the coding interview for his team: "This month, I laid the traditional coding interview to rest. As a hiring manager at Anthropic, I stopped asking candidates to do them."

      • Attention is all you have: "When you let someone else dictate what appears on your screen, it's the same as giving them the key to your brain." Yes. Words affect you, even if you don't agree with them. Spend all day with people who are cynical, snarky, gossipy and you'll end up more negative than at the start of the day. Mute and ignore as much as you can. Be conscious of what you let hit your eyeballs and into your ears.

      • The CEO of Proton, in a memo to the company: "The second reason we have not been able to take full advantage of the Al revolution is that we have been almost completely stuck at phase 1 -- using LLMs to speed up tasks as part of existing workflows. But writing code is not the only part of the software development lifecycle, and what happens when you eliminate a bottleneck? Another takes it is place. Maybe it is the speed and capacity of the Cl. Maybe it is design, approvals, specifications, and code reviews (yes, we need to and will get to a point where most human code review will end). Maybe the workflow does not change much but LLMs allow us to finally invest in automation which was cost-prohibitive before. If we do not look at all of our processes holistically and ruthlessly eliminate bottlenecks, we will not achieve our full potential. Often eliminating these bottlenecks will not only involve optimization of parts of our existing workflows but reworking and rethinking them altogether. This is phase 2, and we need to get there now." Yes, 100%. Rethink everything. I opened that article to read the memo and only then did I read the surrounding the text and wow, I was pretty surprised by the employees reactions, calling the memo "fear-based", for example. Sure, CEO seems harsh. But also: the memo is at least a year too late and if even then employees don't get it then, well, I guess you need to be direct?

      • "A comprehensive database of Cormac McCarthy's personal library. Browse records for each of his approximately 20,000 books"

      • Simon Willison on the October inflection point for games: "The thing I find both exciting and shameful about this is that I have got interesting results from so little creative input. The projects I've described here are loosely ordered by how much effort I've put into them. Not a single project represents more than four hours of my work (plus many more hours of Claude Code churning away by itself). Now imagine what could be achieved by anyone who takes this seriously, invests significant creative time, applies better taste in game design, and then playtests and iterates on the result until it's as good as they can make it."

      • "code used to arrive one drop at a time. soon, if not already, code will be written as if it were a continuous stream, like a violent river twisting and turning as it pleases."

      • I really, really, really enjoyed listening to Robert Caro on the Dwarkesh podcast. I recommend first listening/watching this short video essay he published a day before.

      • "When I was running travel at The Daily Beast, I created a series on underrated destinations called It's Still a Big World. […] when I wrote one about Boise back in 2018, I got a screed from a local. I'm paraphrasing, but the man essentially told me go f*ck myself for trying to ruin his nice small city with obnoxious out of towners. I thought he was nuts then. Now, I think he was prescient."

      • Sean Goedecke: "Writing is no longer evidence of anything. LLM-produced writing makes evidence of compliance even more vacuous than it already is. It totally destroys evidence of effort: if you need a hundred-page report, you can generate one with an hour and a few dollars in inference tokens. Evidence of learning is likewise broken, since I can produce a detailed status report full of information that never passed through my mind at all (and certainly was never retained)." That's the main point but I found the other explanations of when writing was evidence enlightening too.

      Want to help clean up after the Halloween party? Sign up here:

    8. 🔗 r/LocalLLaMA Memdoor: A team of 5 Qwen3.8-27B models beats Fable 5 on LiveCodeBench Hard rss
    9. 🔗 smol-machines/smolvm smolvm v1.33.0 release

      What's Changed

      • chore(nix): bump flake to 1.32.2 by @github-actions[bot] in #1983
      • Require that no commit, commit author or PR text credits an AI tool by @BinSquare in #1991
      • Expose the VM's DMA-BUF heaps to containers so Android can allocate graphics buffers by @BinSquare in #1992
      • Bump libkrunfw with the Android kernel options and the TSI socket fixes by @BinSquare in #1993
      • Seed private registry images whose credentials arrive with the start by @BinSquare in #1984
      • Give a checkpoint started during another one its share of workers by @BinSquare in #1990
      • Bump zstd to 0.14.3 to clear four security advisories by @BinSquare in #1997
      • Run the macOS CI job on our own Mac mini and keep its target/ between runs by @BinSquare in #1999
      • Fix Docker socket forwarding into workload namespaces by @horjulf in #1998
      • Remove an ephemeral machine run's data directory when the run fails before its VM starts by @RitikaxG in #1996
      • Let a frozen branch source stop once every branch of it is stopped by @BinSquare in #2003
      • Run the Linux x86_64 CI job on our own MS-A2, keeping target/ between runs by @BinSquare in #2005
      • Make the usage journal and engine-binary tests independent of tests running beside them by @BinSquare in #2007
      • Cache per-VMM PSS samples so the machine list stays fast by @BinSquare in #2015
      • Add a live fractional CPU limit on a running machine and a per-machine open-flow summary to the machine list by @BinSquare in #2011
      • Let API machine create request disk volumes by @BinSquare in #2018
      • Agent rootfs to alpine 3.24 by @nwp90 in #2017
      • Clear the per-VM egress counter at VMM launch so a restarted machine never reports the previous run's total by @BinSquare in #2016
      • Grow a stopped machine's grown disks online at boot so the next start keeps its storage mounted by @BinSquare in #2019
      • Bump libkrun to 2b0b86da so overlayfs copy-up origins from an earlier boot no longer alias another file by @BinSquare in #2020
      • Run the Linux x86_64 CI job on smol machines and restore the cargo cache on cold smol runners by @BinSquare in #2022
      • ci: restore the cargo cache on every smol run instead of skipping it on SMOL_WARM by @BinSquare in #2023
      • Bump libkrunfw so a virtio NIC's rx-checksumming can be switched off by @BinSquare in #2026
      • Keep a machine's /tmp on its root filesystem by @BinSquare in #2025
      • Intercept a range reopened with --allow-private and archive a layer named twice once by @BinSquare in #2030
      • Boot a restored or resumed machine on the agent rootfs it was captured with by @BinSquare in #2031
      • Boot a branch on the rootfs its golden runs after a roll installs a new one beside it by @BinSquare in #2032
      • Bump libkrunfw to the linux-6.18.60 guest kernel for CVE-2026-98432 by @BinSquare in #2033
      • Describe where /tmp lives, what a rename out of it can reach, and that it never enters a pack by @BinSquare in #2034
      • Move a boot's previous /tmp aside in one rename, keep the tmpfs when the fresh one cannot be made opaque, and test that a pack leaves /tmp behind by @BinSquare in #2035
      • Prepare SmolVM v1.33.0 for release by @BinSquare in #2021

      New Contributors

      Full Changelog : v1.32.2...v1.33.0

  3. October 31, 2026
    1. 🔗 IDA Plugin Updates IDA Plugin Updates on 2026-10-31 rss

      IDA Plugin Updates on 2026-10-31

      New Releases:

      Activity:

      • augur
        • c17295e5: ci: fall back to uncached builds when sccache fails to start
        • b66d8d34: Merge pull request #16 from 0xdea/dependabot/github_actions/actions-d…
      • haruspex
        • a1f7a1c3: ci: fall back to uncached builds when sccache fails to start
      • idamcp
        • b22ef6fd: Accept queries and sqls as aliases for sql in sql_query
      • rhabdomancer
        • 10dd2bd7: ci: fall back to uncached builds when sccache fails to start
    2. 🔗 r/LocalLLaMA Well, my local AI addiction officially got out of hand tonight. rss

      Well, my local AI addiction officially got out of hand tonight. | Met a guy off Facebook Marketplace and scored 2x RTX 3090 Founders Editions for €1,700. The problem? I already had one 3090 FE. I am now sitting in my room looking at three 3090 FEs (72 GB GDDR6X VRAM) , and my current case barely fits one card, and that was only after I literally took pliers and bent the inner metal bracket to shove it in. My motherboard is just a standard B760. I clearly can't put three 3-slot cards in this PC. What is the cheapest, most sensible way forward to run all three (or two) for LLMs?

      1. Open-air mining frame + PCIe 4.0 risers + dual PSU?
      2. Get a giant full-tower case?
      3. Just sell the 3rd card for €1,100, keep 48 GB VRAM, and fund a proper dual-GPU build?

      Any chassis/frame or PSU recommendations for handling ~1,100W+ of 3090s would be appreciated. submitted by /u/AnouarRifi
      [link] [comments]
      ---|---

    3. 🔗 crmne/spotifast Spotifast v0.15.0 release

      Spotifast 0.15 adds Spotify Soloist, Spotify's own player for listening outside the Spotify app, with lossless support. Setup guides you through downloading it from Spotify, adding your personal Soloist key and pairing once. Spotifast keeps it updated, and the built-in player remains available. Soloist may avoid the "Spotify refused the audio key" problem with the built- in player.

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

      Windows installs now use the .msi only. If you are on 0.12.x or earlier, download and run it once to keep receiving updates. Portable ZIPs remain available.

      New

      • Listen through Spotify Soloist. New listeners and people updating are guided through setup, with a built-in-player option at every step. Soloist appears as This computer and renews its expiring builds automatically while inactive. Spotify Premium and your own Soloist key are required. Spotify currently supplies Soloist for Linux, Apple Silicon Macs and x64 Windows. Setup and platform details. By @crmne; thanks @krolebord and @mrcego. (#1050, #283)
      • EQ and visualizers with Soloist on Linux and Mac. Linux uses PipeWire; macOS 14.2 or newer uses a private audio route after you allow System Audio Recording. Only Spotifast's player is captured, and no audio is saved. Spectrum, oscilloscope and MilkDrop follow the EQ and keep moving when you mute inside Spotifast. On Mac, Soloist stays at 100% and Spotifast controls the output; phone volume changes adjust that output, then the phone's indicator returns to 100%. By @crmne.
      • Soloist visualizers on Windows 11. Spectrum, oscilloscope and MilkDrop follow Soloist's audio. Windows still plays directly through Soloist: audible EQ is unavailable, and lowering volume lowers the visualizers too. By @crmne.
      • Spotify features stay available with Soloist. Settings → Account → Spotify access lets you authorize Made for you, listening activity and Spotify lyrics while keeping Soloist as your player. By @crmne.
      • See an album's full release date on hover, or its year when that is all Spotify supplies. By @BerkeBat. (#1008)
      • Signed Windows downloads. The executable and installer are signed as PlentyLabs UG (haftungsbeschränkt) & Co. KG. Windows may still show SmartScreen while the publisher builds reputation. By @crmne. (#1062)

      Soloist does not expose a delivered-format indicator or audio-quality preferences. Local files and full queue editing still use the built-in player. Older Macs and Windows versions without process capture retain ordinary Soloist playback where Spotify supports it. See Soloist's current limits.

      Fixed

      • Lyrics recover from LRCLIB overloads. Temporary errors are retried, search provides another lookup, and cached lyrics stay available during outages. Failed requests are no longer remembered as missing lyrics. By @crmne.
      • Liked Songs plays the whole collection, instead of stopping at the songs loaded so far, and marks the playing row correctly. By @krolebord. (#1085)
      • Local song names show spaces and accents correctly, including in cached playlists. By @nikankad. (#1091, #1076)
      • Turkish titles keep the Winamp skin's pixel font instead of falling back to overlapping text. By @crmne.
      • The app reports the version on its download. Release checks now reject a mismatch between the tag and the built application. By @rahul05ranjan. (#1095, #1080)

      Thanks

      @krolebord, @mrcego, @BerkeBat, @nikankad, @rahul05ranjan, and everyone who reported problems or tried Soloist since 0.14.2.

      Full changelog : v0.14.2...v0.15.0

    4. 🔗 r/LocalLLaMA Betelgeuse: Running Qwen 3.8 Flash Next at 22 tok/s sustained (spiking to 48 tok/s) on an RTX 3060 12GB + 16GB DDR4 RAM 100% bit-exact! rss

      Betelgeuse: Running Qwen 3.8 Flash Next at 22 tok/s sustained (spiking to 48 tok/s) on an RTX 3060 12GB + 16GB DDR4 RAM 100% bit-exact! | About two months ago I posted here about trying to predict which MoE experts get used on the next token to speed up CPU/GPU offload on Qwen 3.6 35B. Quick confession on that older post before anything else: I ended up throwing that prototype away. To get the big numbers I was seeing back then, I was basically cheating with gate pruning (dropping cold experts when their router weights were low). It made the tok/s counter go brrr, but on an already low-bit quant it quietly degraded output quality and reasoning. I didn't want to ship something that lobotomizes the model just to look fast in a screenshot, so I scrapped it. When Qwen 3.8 Flash Next dropped, I wanted to see if we could actually run the 68GB GSQ-RCO-IQ2_XS build at real usable speeds on a normal budget gaming PC—without dropping a single expert. For context, here is the exact box I tested this on (I actually pulled my extra RAM sticks out specifically to test what a regular 16GB PC gets):

      • GPU: RTX 3060 12GB
      • RAM: 16GB DDR4, single-channel (~19 GB/s)
      • OS: CachyOS / Arch Linux (tested inside a strict MemoryMax=12G cgroup)
      • Storage: Consumer PCIe NVMe SSD (~2.1 GB/s)

      If you try to load a 68GB MoE on 12GB VRAM + 16GB RAM in stock llama.cpp, you already know what happens: mmap thrashes the OS page cache to death, you get ~1,500 major page faults per token, and generation crawls at 1.47 tok/s. Then I tested Strata. Strata is super cool and hits 40+ tok/s if you have 48GB–64GB of RAM to mlock 24GB+ of experts in system memory. But on a 16GB RAM setup, it refuses to load unless you force --low-ram mmap, where it drops down to 8.11 tok/s because it's bound by cold SSD reads. So over the last week I built Betelgeuse (bel-cli / bel-server, a fork of llama.cpp, and I'm also opening a clean upstream PR for llama.cpp even if it probably won't get merged lol).

      What it actually does under the hood:

      • Zero gate pruning / 100% bit-exact: Every single one of the 10 routed experts per layer across all 48 layers is computed at full precision. We verified 28,080 router records and 576 generated tokens byte-for-byte against golden stock output (0.000e+00 diff).
      • Arrival-Slack VRAM Slot Pool (~5,000 slots in VRAM): All 49 dense layers + GDN + QSA + LM head stay in ~3.2 GB of VRAM. The remaining VRAM holds ~5,000 expert slots distributed non-uniformly (240 slots/layer on early layers 0–4 where there is 0ms of compute slack, 92 on middle layers, 60 on tail layers).
      • In-Stream GPU Doorbell + 1-Split CUDA Graph Replay: Instead of ggml_backend_sched splitting the graph 48 times per token to ask the CPU which experts missed (which burns ~360ms/token in cudaStreamSynchronize), a custom in-stream CUDA kernel resolves hits in ~2 µs on-device and only rings a mapped host doorbell when an expert is missing. Per-layer token embeddings (per_layer_token_embd) are also staged to CUDA0 so the entire decode pass runs as 1 single CUDA Graph replay.
      • RAM Victim Cache + io_uring Pager: When an expert gets evicted from the VRAM pool, it moves into a dedicated host RAM victim cache instead of getting thrown away.VRAM and RAM stay 100% exclusive instead of duplicating the same hot experts in the OS page cache. Physical NVMe reads drop from ~71 MB/token down to 12.43 MB/token.
      • No duplicate 35GB expert bloat on disk: Instead of keeping 35GB of dead expert tensors inside Shard 1 .gguf AND another 35GB in experts.bin, we stripped the expert payloads out of Shard 1 so the main GGUF is only 3.2 GB (Dense.gguf) + 35.3 GB (experts.bin, 4KB-aligned single-read blobs) + 26.8 GB (PLE.gguf n-gram shard).

      Measured Results (RTX 3060 12GB + 16GB DDR4, MemoryMax=12G)

      | Engine | Cold Decode (Run 1) | Warm Decode (Run 2) | Peak Bursts | Prompt Processing (PP) | Physical SSD Reads | Output Parity
      ---|---|---|---|---|---|---
      Stock llama.cpp (mmap) | 1.47 tok/s | 1.63 tok/s | ~2 tok/s | 14–20 tok/s | 208–312 MiB/tok | Baseline
      Strata (--low-ram mmap) | 8.11 tok/s | 8.11 tok/s | ~9 tok/s | 34.6 tok/s | ~105 ms pool wait | ~0.022 KL
      Betelgeuse (bel-server) | 16.80 tok/s | 22.03 tok/s | Up to 48 tok/s | 16.2 – 19.3 tok/s | 12.43 MiB/tok | 100% Byte-Exact

      On warm runs it holds 21.8–22.03 tok/s sustained across long coding prompts, and when generation hits stretches where all 10 routed experts are resident in the VRAM/victim pools, it spikes up to 48 tok/s.

      Links & What's Next

      • GitHub (Betelgeuse Engine — bel-cli & bel-server): [https://github.com/Betelgeuse-AI/Betelgeuse]
      • HuggingFace (Pre-packed Alpha-Orionis-XS 3.2GB Dense + Experts bundle): https://huggingface.co/Betelgeuse-AI/Alpha-Orionis-XS
      • Upstream llama.cpp PR: [https://github.com/ggml-org/llama.cpp/pull/31469]

      • Even on the massive Q8_K_XL quant (~190GB total), bel-server runs at 8 tok/s cold and 12 tok/s warm (with bursts up to 21 tok/s) on the exact same 12GB 3060 + 16GB DDR4 box, where stock llama.cpp immediately OOMs or crawls at <0.1 tok/s.

      • Zero experts are dropped or thresholded (0.000e+00 diff across 28,080 router records and 576 tokens vs unmodified stock). The speedup comes from eliminating the 48 per-layer CPU/GPU scheduler splits (KICK/WAIT doorbell around the shared expert), keeping the RAM victim cache strictly exclusive of VRAM (MOE_DROP_MMAP), and pre-staging cold misses via the upgraded oracle + 4KB-aligned io_uring pack.

      What I'm working on next:
      We're currently bringing this exact streaming + victim-cache architecture over to DeepSeek V4.1 Flash (1017) —early testing under development is already sitting around ~25 tok/s on the same hardware class.

      Happy to answer any questions or have people poke holes in the benchmarks! Leave us a Star :)

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

    5. 🔗 backnotprop/plannotator v0.28.42 release

      Follow @plannotator on X for updates

      Missed recent releases? Release | Highlights
      ---|---
      v0.28.40 | Update works with update checks off, the thread bar shows the thread's name, agents before the project in list rows
      v0.28.39 | Reply from full screen, thread names lead the Inbox list, one project per Claude Code session, a redesigned code review sidebar, Call flow as cards
      v0.28.38 | Attach files to a reply in the Inbox, swipe through a question's picture choices, easier-to-read list rows, code on hover in Call Flow and Semantic Changes
      v0.28.37 | DeepSeek Harness support, save plans to Notion, AsciiDoc in annotate, browse the whole repository in code review, Go to File and Go to Definition, Tidy and hand-offs in the Inbox
      v0.28.36 | Qwen Code support, plans open in the Clean look, live HTML and diagrams in Inbox messages, a Feedback button, plannotator inbox status, stop and restart
      v0.28.35 | Updates check the download against checksums Plannotator fetches itself, a failed check changes nothing
      v0.28.34 | Start a Grok Build session from the Inbox, action items in your reply, a tidier Board, Settings → Capabilities, a failed feedback send is shown
      v0.28.33 | Pi updates no longer get stuck on 0.28.31
      v0.28.32 | A security update (built on Bun 1.4.4, eMudhra certificates), the Inbox Board, custom Inbox prompts, hover cards for issue and PR links, rich-text Copy
      v0.28.31 | An onboarding tour for the Inbox, pinned threads, picture choices in questions, palettes in Inbox Settings, tailnet reviews from the plugin tool
      v0.28.30 | An Artifacts view in the Inbox, comments on part of an image, diagrams in code review, Ask AI keeps its conversation in annotate
      v0.28.29 | Plan review opens on OpenCode 2, a DOMPurify security update, closing a review stops the agent everywhere

      What's New in v0.28.42

      Choose how your Inbox list looks, find your place in a long document from its contents, and link the Inboxes on two computers. Plannotator's servers now keep files outside the session's folders away from other sites and remote readers. 33 PRs, 8 of them from @utpalsinghdev, @BenNewman100 and @juanibiapina, who makes a first contribution.

      Plannotator Inbox

      Choose how your list looks

      The list's ⋮ menu has three new options: Highlight thread subject, Compact rows (two lines per row) and Hide agent icons. All three are off by default, and each browser keeps its own choice.

      Existing Inbox users see a one-time "Choose how your list looks" dialog that previews the options. It shows only on the list, never over an open thread. Keep as it is, or Escape, changes nothing.

      Contents for long documents

      A plan or Markdown file with 4 or more headings shows a column of ticks in its right margin. Click one to open the contents and go to that section. On a phone, a Contents button sits at the top right. In Side by side on a laptop, the text column is a little narrower to make room.

      Link your machines

      Link the Inboxes on two computers with a code from Settings → Machines (or plannotator inbox link), and each Inbox shows the threads of both. An answer to a machine that is asleep waits and is sent once when it wakes. Linking uses Tailscale. Until you link a machine, the new Machines section in Settings is the only change.

      Clearer search

      Each search result starts with a 20 px mark: the agent's mark for a message, a person for your reply, a speech bubble for a thread, and an icon for a file, a guided review or a project. The panel is solid, matched words are underlined, the selected row is easier to see, and on a desktop a footer lists the keys. Results and their order do not change.

      Action items you can act on

      The thread foot's button counts open action items as well as questions ("3 questions, 2 action items"), and its list takes you to each one. Agents now put each command in its own code block, so every command has a copy button. Text you select in an action or question card stays selected.

      Smaller changes

      • Unread thread names in the list are bigger and bolder, and go back to normal once read. #2396
      • A relative link to a .md file in an attachment opens that document in the viewer, not the Inbox's front page. By @utpalsinghdev, closing #2230 from @zane668. #2363
      • Toasts fit long names and errors on phones, tablets and desktop, and on a phone they sit above the reply bar. Agent names longer than 40 characters are shortened with "…". #2409
      • On a phone, full-screen files, sheets and Decision mode end above the keyboard, so the reply and comment boxes stay in view. #2388
      • On a phone, no dark band shows between the composer and the keyboard. #2386
      • New message's To row stays on one line, and the phone's picker shows when each session started. #2400
      • In Side by side, the viewer's Download button is an icon. #2399

      Plannotator

      Documents outside the project

      A document in a folder you added in Settings → Files, or one that a document links outside the project, now opens instead of failing with "Access denied". Code and data files, such as .json or .yaml, stay inside the session's folders for every reader.

      Another site's page, or a remote reader (remote mode,--tailscale, a proxy), can no longer list or read files outside the session's folders, in the Files sidebar and Obsidian vaults too. For a remote reader, the vault browser opens only the vaults Obsidian lists on the machine running Plannotator.

      Find the data folder

      plannotator data-dir prints the folder where Plannotator keeps plans, history and settings. The skills now ask for it instead of naming ~/.plannotator, so an agent no longer makes a stray folder that hides your data.

      When~/.plannotator holds no data and $XDG_DATA_HOME/plannotator does, Plannotator now uses the XDG folder.

      Uninstall finds every hook

      plannotator uninstall now finds hooks with options, such as plannotator --browser Safari, and leaves your other hooks alone.

      If a Claude Code, Codex, Gemini or Vibe hook still runs Plannotator, uninstall keeps the binary, stops, and names the file, the field and the fix. Edit that file and run uninstall again.

      Smaller changes

      • After a reload in annotate, Draft Recovered offers the saved comments of every document in the session, not only the open one, and Send clears only what that page saw. By @BenNewman100. #2393
      • Code review no longer breaks when Expand unchanged is on. By @utpalsinghdev, closing #2264 from @thomasaull. #2361
      • A new dark theme: Tokyo Night Moon. By @juanibiapina. #2336
      • The repository and branch chips above a plan or document use the room they have, and on Windows the file chip shows the file's name. By @BenNewman100. #2389
      • On Windows, relative images and links in an annotated document load from the document's folder. By @BenNewman100. #2390
      • On Windows, Guided Review with Pi starts. Closing #2372 from @Mathias-Givskov. #2406
      • On Windows, the review app builds from source. By @BenNewman100. #2385
      • On Team and Enterprise accounts, Claude Code no longer says Plannotator's prompt.context or classic.SessionStart hook was skipped. Part of #2243 from @sshevlyagin. #2413
      • The plannotator tool accepts the empty optional fields that GitHub Copilot's Responses models send. Closing #2292 from @alexshpunt. #2405

      Install / Update

      macOS / Linux:

      curl -fsSL https://plannotator.ai/install.sh | bash
      

      Windows:

      irm https://plannotator.ai/install.ps1 | iex
      

      Claude Code Plugin: The plugin and the plannotator binary update separately, so run the install script above as well. In a terminal:

      claude plugin marketplace update plannotator
      claude plugin update plannotator@plannotator
      

      Then restart Claude Code. Inside Claude Code, run /plugin marketplace update plannotator, then open /plugin → Installed → plannotator → Update now.

      Pi:

      pi update npm:@plannotator/pi-extension
      

      OpenCode: Re-run the install script above. It also clears the OpenCode 2 plugin cache.

      What's Changed

      • Inbox: paint the phone page canvas with the composer's colour (no dark band above the keyboard) by @backnotprop in #2386
      • references: @plannotator/references, the open read side of reference integrations by @backnotprop in #2387
      • Inbox: the Workspaces contents rail, moved into @plannotator/ui, for documents by @backnotprop in #2384
      • Inbox: full-screen reply and comment boxes stay above the phone keyboard by @backnotprop in #2388
      • Inbox: unread thread names bigger in the list by @backnotprop in #2396
      • Inbox: thread foot counts open action items by @backnotprop in #2394
      • Inbox: action-item commands get copy buttons; selecting text in a card sticks by @backnotprop in #2395
      • Inbox: the viewer header's Download becomes icon-only by @backnotprop in #2399
      • Inbox: compose To row stays one clean line on phones by @backnotprop in #2400
      • Inbox: link machines (server engine, Tailscale) by @backnotprop in #2375
      • Inbox: list options in the ⋮ menu (highlight, compact, hide agents) by @backnotprop in #2401
      • Inbox: link machines, the window (stack 2/2) by @backnotprop in #2382
      • fix(plannotator-tool): read empty optional fields as absent (Copilot Responses, #2292) by @backnotprop in #2405
      • fix(review): prevent partial diffs from crashing code review by @utpalsinghdev in #2361
      • fix(skills): find the data dir with plannotator data-dir; a stray ~/.plannotator no longer hides an XDG install by @backnotprop in #2411
      • fix(review): build the diagram engine on Windows by @BenNewman100 in #2385
      • fix(annotate): resolve relative images and links from the document's folder on Windows by @BenNewman100 in #2390
      • feat(ui): add the Tokyo Night Moon palette by @juanibiapina in #2336
      • fix(annotate): a reload offers every document's saved comments, and a send clears only what that page saw by @BenNewman100 in #2393
      • Inbox: a one-time dialog that introduces the list options by @backnotprop in #2404
      • fix(inbox): open relative Markdown links in attachments by @utpalsinghdev in #2363
      • fix(inbox): keep the tailnet door until an unreached unlink is heard by @backnotprop in #2410
      • fix(agent-jobs): Guided Review with Pi on Windows: start .cmd shims as Ask AI does (#2372) by @backnotprop in #2406
      • fix: close uninstall host integration recovery gaps by @utpalsinghdev in #2226
      • Inbox toasts: fit long data on phones, tablets and desktop by @backnotprop in #2409
      • fix(ui): the document card's chips name the file on Windows and use the room they have by @BenNewman100 in #2389
      • Contents rail: keep a picked heading marked after the scroll snaps to a whole pixel by @backnotprop in #2419
      • fix(mod): no prompt.context or classic.SessionStart hook, so a guard has nothing to skip (#2243) by @backnotprop in #2413
      • Skills: fall back when plannotator data-dir prints nothing by @backnotprop in #2420
      • Open documents outside the project root from this machine (#2291) by @backnotprop in #2415
      • Gate the Files sidebar and Obsidian routes by reader by @backnotprop in #2418
      • Inbox search: a mark on every row, a solid panel, a visible selected row by @backnotprop in #2417
      • Inbox: show the list options intro only on the list by @backnotprop in #2421

      New Contributors

      Contributors

      Community

      Full Changelog : v0.28.40...v0.28.42

    6. 🔗 backnotprop/plannotator v0.28.41 release

      chore: bump version to 0.28.41

    7. 🔗 r/LocalLLaMA Fable 5.gguf when? rss

      Fable 5.gguf when? | submitted by /u/speedb0at
      [link] [comments]
      ---|---

    8. 🔗 Filip Filmar Linux on a Simulated Rocket Core, over Ethernet rss

      Linux 6.18 now boots on FireSim’s Rocket design on an Alinx AX7A200B board. The host reaches the board over an Ethernet cable, as in the last post. The whole run takes 4 min 36 s: 4 min 22 s to load the software, and 13 s from the firmware’s banner to a shell that shows the machine and powers off.

      Count the layers. The FPGA runs a simulator. The simulator runs a RISC-V core, cycle by cycle. The core runs Linux, and Linux runs a shell. We must go deeper. The shell is the bottom level of this dream, and it stays there: it powers off, and FireSim’s host program exits with *** PASSED ***.

  4. October 30, 2026
    1. 🔗 IDA Plugin Updates IDA Plugin Updates on 2026-10-30 rss

      IDA Plugin Updates on 2026-10-30

      New Releases:

      Activity:

      • augur
        • 5da3c282: ci: bump the actions-dependencies group with 2 updates
      • capa
        • 00240199: fix: skip unreadable ELF symbol names instead of aborting (#3207)
      • dial
        • 9473305d: Merge remote-tracking branch 'origin/main'
        • 1c822450: test: run the Rust suite under cargo-nextest and drop slow test waits
        • 62b208ba: feat: add preflight script for local CI checks
        • bebba6f8: Merge pull request #4 from KiidxAtlas/release-packaging/v0.2.9
        • 8322c164: release: update package metadata for 0.2.9
        • 001af892: ci: gate releases before tagging and stop cold macOS rebuilds
        • 401d23a7: test: settle the parent request count before the worker restore check
        • ef869938: test: canonicalize macOS temp paths in voice and hashline tests
        • 7019715c: test: read the worker pool id from the model-facing task summary
        • 3f6827cb: test: use unique markers for extension context privacy assertions
        • 78fbc702: fix: build the PTY wrapper's TIOCSCTTY ioctl on musl
        • 90882550: release: v0.2.9
        • 6e9a0c1a: fix: voice input, retry waits, pickers and overlay fixes for 0.2.9
        • 4e9ee51e: Merge origin/main into main, preserving local features and remote rel…
        • d7b5917d: feat: Add ProviderBatch command and related functionality
      • freelumina
        • b26d44a5: Fix Windows CI: link FreeBASIC startup, parse PE exports across binut…
        • 537955f5: yolo
      • haruspex
        • 94fe994b: Merge pull request #20 from 0xdea/dependabot/github_actions/actions-d…
        • 1c9ca8da: ci: bump the actions-dependencies group with 2 updates
      • ida-hcli
        • c1d8eeab: Fix ida switch suggestion quoting
      • idamcp
        • 07409d9d: Replace strings rebuild prompt with rebuild_strings_on_data_patch
        • 42b2d5b4: Accept integer addresses in MCP tool parameters
      • oh-my-pi
        • a1901b56: Merge pull request #17508 from can1357/feat/codex-daybreak-setting
        • 442231fc: fix(coding-agent): size the image clamp's body room per Factory wire
        • cef4a452: fix(coding-agent): scope the Daybreak opt-out to each session's settings
        • c391fc2a: Merge PR #17492: fix(catalog,coding-agent): keep Anthropic inline ima…
        • 81ab6d08: feat(coding-agent): add providers.openai-codex.daybreak setting to op…
        • e6eba3dc: fix(agent,coding-agent): size the image clamp's body room against wha…
        • 95082085: fix(coding-agent): stringify tool arguments for the body measurement …
        • 6b257369: fix(coding-agent): measure tool arguments as the string the Responses…
      • oh-my-pi
        • a0d0eec9: fix(prompt-cache): mount MCP routes through the notice; default title…
        • 2516e1d6: v18.14.0 upstream source
      • rhabdomancer
        • 0445494f: Merge pull request #20 from 0xdea/dependabot/github_actions/actions-d…
        • 9acba156: ci: bump the actions-dependencies group with 2 updates
    2. 🔗 backnotprop/plannotator v0.28.40 release

      Follow @plannotator on X for updates

      Missed recent releases? Release | Highlights
      ---|---
      v0.28.39 | Reply from full screen, thread names lead the Inbox list, one project per Claude Code session, a redesigned code review sidebar, Call flow as cards
      v0.28.38 | Attach files to a reply in the Inbox, swipe through a question's picture choices, easier-to-read list rows, code on hover in Call Flow and Semantic Changes
      v0.28.37 | DeepSeek Harness support, save plans to Notion, AsciiDoc in annotate, browse the whole repository in code review, Go to File and Go to Definition, Tidy and hand-offs in the Inbox
      v0.28.36 | Qwen Code support, plans open in the Clean look, live HTML and diagrams in Inbox messages, a Feedback button, plannotator inbox status, stop and restart
      v0.28.35 | Updates check the download against checksums Plannotator fetches itself, a failed check changes nothing
      v0.28.34 | Start a Grok Build session from the Inbox, action items in your reply, a tidier Board, Settings → Capabilities, a failed feedback send is shown
      v0.28.33 | Pi updates no longer get stuck on 0.28.31
      v0.28.32 | A security update (built on Bun 1.4.4, eMudhra certificates), the Inbox Board, custom Inbox prompts, hover cards for issue and PR links, rich-text Copy
      v0.28.31 | An onboarding tour for the Inbox, pinned threads, picture choices in questions, palettes in Inbox Settings, tailnet reviews from the plugin tool
      v0.28.30 | An Artifacts view in the Inbox, comments on part of an image, diagrams in code review, Ask AI keeps its conversation in annotate
      v0.28.29 | Plan review opens on OpenCode 2, a DOMPurify security update, closing a review stops the agent everywhere
      v0.28.27 | Jump to open questions, files side by side or full screen, image zoom in the Inbox, empty To field, text size for plan review and annotate
      v0.28.26 | Action items and reply drafts in the Inbox, one decision button for plan review, Enter to save a comment, a custom code font

      What's New in v0.28.40

      v0.28.40 is a patch on v0.28.39. It repeats v0.28.39's notes and adds three Inbox fixes, listed first under Smaller changes.

      Reply to an agent without leaving full screen, thread names lead the Inbox list, and a Claude Code session keeps its messages in one project. In code review, the sidebar is redesigned and Call flow shows its paths as cards. 29 PRs.

      Plannotator Inbox

      Reply from full screen

      An image, video or HTML file in full screen has a card at its foot with two tabs: comment on the file, or reply to the agent. The reply is the thread's own draft, files included, and Send keeps you in full screen. Minimize the card to a small pill, or hide it.

      Thread names lead

      A list row's title is now the thread's name, shown in full. The agents' icons sit beside the project. A pinned thread and an open thread show the name too.

      One project per Claude Code session

      A Claude Code session now files its messages under the folder it started in, so acd no longer makes a new project. Claude Code's own /cd still moves the session. Projects that were split before stay as they are; Archive all hides them.

      Open the files your reply commented on

      In your sent reply, each file named under "Feedback on the attached files" is a link that opens the file beside the thread. If the file has since moved or been deleted, the link opens the version you sent.

      Pinned and Projects fold like folders

      Click the Pinned or Projects heading in the sidebar to close or open it. A closed Pinned still shows how many pinned threads wait on you.

      Smaller changes

      • Update works with update checks off. When a newer version is known, the Inbox still offers Update, and clicking it checks once before installing. Automatic install stays off while checks are off. #2380
      • The thread's top bar always shows the thread's name, or its subject when it has none. #2379
      • Beside an open thread and on a phone, list rows show the agents first, then the project on one line. #2383
      • Pin thread moved from the thread header into its ⋯ menu. #2352
      • Open actions show as a small box with a count, and open questions as a speech bubble with a count. #2348
      • Projects show their folder name, adding a parent folder only when two listed projects share a name. #2349
      • One project's list header shows the name without the folder path. The path is in its tooltip. #2355
      • The thread header on a phone fits on one line, with nothing cut. #2357
      • An agent's inline image from a hidden folder in a project, such as .ops, now shows, as it does when attached. #2343
      • Picture choices in full screen keep the letter from their own label. #2350
      • The What's new link and its images retry after a quit or a failed fetch, and the link stays until you have seen it. #2345, #2346
      • Agents are told to keep one thread per work stream, unless you say otherwise. #2367
      • An agent that lists threads from a folder with none is told which projects inside that folder have threads. #2368
      • New thread no longer says when the agent will take the message. #2351
      • The agent logos on Copy prompt tilt apart on hover. #2347

      Plannotator

      A new code review sidebar

      Go to file is a field at the top of the sidebar, and Tree, Git status and Commits are tabs. Progress reads in words ("0 of 12 viewed · 1 staged"), and line counts line up in columns. The settings from Tree controls, and Copy all diffs, are now in the "…" menu.

      Call flow as cards

      In code review, each entry point in Call flow's Paths view is a card. Dots mark new, removed and unchanged calls, and one line sums up the changes.

      Smaller changes

      • Call flow (opt-in) now needs CallDiff 0.6.0 and Node 22.18 or newer. Trees are more accurate, and CUDA files are read as C++. If Call flow is on, the new version installs once, automatically. CallDiff is by @tanishqkancharla. #2365
      • Updates recover from killed or overlapping installs. #2342
      • Agents started by Ask AI, code review, Code Tour and Guided Review no longer post to your Inbox or wait on a plan review. #2366, #2369, #2371

      Install / Update

      macOS / Linux:

      curl -fsSL https://plannotator.ai/install.sh | bash
      

      Windows:

      irm https://plannotator.ai/install.ps1 | iex
      

      Claude Code Plugin: The plugin and the plannotator binary update separately, so run the install script above as well. In a terminal:

      claude plugin marketplace update plannotator
      claude plugin update plannotator@plannotator
      

      Then restart Claude Code. Inside Claude Code, run /plugin marketplace update plannotator, then open /plugin → Installed → plannotator → Update now.

      Pi:

      pi update npm:@plannotator/pi-extension
      

      OpenCode: Re-run the install script above. It also clears the OpenCode 2 plugin cache.

      What's Changed

      • Updates: recover from killed or overlapping installs (F5, F6, F7) by @backnotprop in #2342
      • Inbox: an agent's inline image in a project's hidden folder shows, as its attachment does by @backnotprop in #2343
      • fix(whats new): retry abandoned and failed notes fetches; keep the link across restarts by @backnotprop in #2345
      • Inbox: full screen's composer (comment or reply without leaving full screen) by @backnotprop in #2339
      • fix(whats new): retry release images abandoned mid-fetch after 15 minutes by @backnotprop in #2346
      • Inbox: Copy prompt logos tilt apart on hover by @backnotprop in #2347
      • Inbox: drop the 'takes it as its next turn' line from New thread by @backnotprop in #2351
      • Inbox: Pin thread moves from the thread header into its ⋯ menu by @backnotprop in #2352
      • Inbox: picture choices keep the letter in their own label in full screen by @backnotprop in #2350
      • Inbox: action count as a box pill, question count with a speech-bubble icon by @backnotprop in #2348
      • Inbox: an open thread shows its name before the message count by @backnotprop in #2354
      • Inbox: show a project's folder name, adding the parent only when two listed projects share it by @backnotprop in #2349
      • Inbox: Pinned and Projects open and close like folders by @backnotprop in #2353
      • Inbox: link the files your sent reply commented on by @backnotprop in #2358
      • chore: take the AIContext type from core, not the AI package by @backnotprop in #2360
      • test: let the list-resize drag finish before the last sample by @backnotprop in #2362
      • fix(inbox): phone thread header fits one line with nothing cut by @backnotprop in #2357
      • fix(inbox): drop the folder path from a project's list header by @backnotprop in #2355
      • Inbox: a pinned thread shows its name by @backnotprop in #2359
      • Code review: Call flow as cards by @backnotprop in #2364
      • Call flow: update CallDiff to 0.6.0 by @backnotprop in #2365
      • fix(pi): keep the Inbox off inside Ask AI's RPC runs by @backnotprop in #2366
      • Inbox: read_thread names the projects inside a folder with no threads by @backnotprop in #2368
      • Inbox guidance: one thread per work stream by @backnotprop in #2367
      • Code review sidebar: aligned Halftone layout (E) by @backnotprop in #2370
      • Ask AI: agents it starts never load Plannotator's Inbox, agent tool or plan hooks by @backnotprop in #2369
      • Agent jobs: Review, Code Tour and Guided Review agents never load Plannotator's Inbox or plan hooks by @backnotprop in #2371
      • Inbox list rows: thread name as the title, agent icons beside the project by @backnotprop in #2374
      • Inbox: a Claude Code session files under the folder it started in by @backnotprop in #2344
      • Inbox window: every API URL through one helper by @backnotprop in #2377
      • Inbox: Update stays available when update checks are off by @backnotprop in #2380
      • Inbox: the thread bar shows the thread's name, not its first line by @backnotprop in #2379
      • AGENTS.md: test agent-facing instructions clean room by @backnotprop in #2381
      • Inbox: agent marks before the project, thread name on its own line by @backnotprop in #2383

      Community

      Full Changelog : v0.28.38...v0.28.40

    3. 🔗 backnotprop/plannotator v0.28.39 release

      Follow @plannotator on X for updates

      Missed recent releases? Release | Highlights
      ---|---
      v0.28.38 | Attach files to a reply in the Inbox, swipe through a question's picture choices, easier-to-read list rows, code on hover in Call Flow and Semantic Changes
      v0.28.37 | DeepSeek Harness support, save plans to Notion, AsciiDoc in annotate, browse the whole repository in code review, Go to File and Go to Definition, Tidy and hand-offs in the Inbox
      v0.28.36 | Qwen Code support, plans open in the Clean look, live HTML and diagrams in Inbox messages, a Feedback button, plannotator inbox status, stop and restart
      v0.28.35 | Updates check the download against checksums Plannotator fetches itself, a failed check changes nothing
      v0.28.34 | Start a Grok Build session from the Inbox, action items in your reply, a tidier Board, Settings → Capabilities, a failed feedback send is shown
      v0.28.33 | Pi updates no longer get stuck on 0.28.31
      v0.28.32 | A security update (built on Bun 1.4.4, eMudhra certificates), the Inbox Board, custom Inbox prompts, hover cards for issue and PR links, rich-text Copy
      v0.28.31 | An onboarding tour for the Inbox, pinned threads, picture choices in questions, palettes in Inbox Settings, tailnet reviews from the plugin tool
      v0.28.30 | An Artifacts view in the Inbox, comments on part of an image, diagrams in code review, Ask AI keeps its conversation in annotate
      v0.28.29 | Plan review opens on OpenCode 2, a DOMPurify security update, closing a review stops the agent everywhere
      v0.28.27 | Jump to open questions, files side by side or full screen, image zoom in the Inbox, empty To field, text size for plan review and annotate
      v0.28.26 | Action items and reply drafts in the Inbox, one decision button for plan review, Enter to save a comment, a custom code font

      What's New in v0.28.39

      Reply to an agent without leaving full screen, thread names lead the Inbox list, and a Claude Code session keeps its messages in one project. In code review, the sidebar is redesigned and Call flow shows its paths as cards. 29 PRs.

      Plannotator Inbox

      Reply from full screen

      An image, video or HTML file in full screen has a card at its foot with two tabs: comment on the file, or reply to the agent. The reply is the thread's own draft, files included, and Send keeps you in full screen. Minimize the card to a small pill, or hide it.

      Thread names lead

      A list row's title is now the thread's name, shown in full. The agents' icons sit beside the project. A pinned thread and an open thread show the name too.

      One project per Claude Code session

      A Claude Code session now files its messages under the folder it started in, so acd no longer makes a new project. Claude Code's own /cd still moves the session. Projects that were split before stay as they are; Archive all hides them.

      Open the files your reply commented on

      In your sent reply, each file named under "Feedback on the attached files" is a link that opens the file beside the thread. If the file has since moved or been deleted, the link opens the version you sent.

      Pinned and Projects fold like folders

      Click the Pinned or Projects heading in the sidebar to close or open it. A closed Pinned still shows how many pinned threads wait on you.

      Smaller changes

      • Pin thread moved from the thread header into its ⋯ menu. #2352
      • Open actions show as a small box with a count, and open questions as a speech bubble with a count. #2348
      • Projects show their folder name, adding a parent folder only when two listed projects share a name. #2349
      • One project's list header shows the name without the folder path. The path is in its tooltip. #2355
      • The thread header on a phone fits on one line, with nothing cut. #2357
      • An agent's inline image from a hidden folder in a project, such as .ops, now shows, as it does when attached. #2343
      • Picture choices in full screen keep the letter from their own label. #2350
      • The What's new link and its images retry after a quit or a failed fetch, and the link stays until you have seen it. #2345, #2346
      • Agents are told to keep one thread per work stream, unless you say otherwise. #2367
      • An agent that lists threads from a folder with none is told which projects inside that folder have threads. #2368
      • New thread no longer says when the agent will take the message. #2351
      • The agent logos on Copy prompt tilt apart on hover. #2347

      Plannotator

      A new code review sidebar

      Go to file is a field at the top of the sidebar, and Tree, Git status and Commits are tabs. Progress reads in words ("0 of 12 viewed · 1 staged"), and line counts line up in columns. The settings from Tree controls, and Copy all diffs, are now in the "…" menu.

      Call flow as cards

      In code review, each entry point in Call flow's Paths view is a card. Dots mark new, removed and unchanged calls, and one line sums up the changes.

      Smaller changes

      • Call flow (opt-in) now needs CallDiff 0.6.0 and Node 22.18 or newer. Trees are more accurate, and CUDA files are read as C++. If Call flow is on, the new version installs once, automatically. CallDiff is by @tanishqkancharla. #2365
      • Updates recover from killed or overlapping installs. #2342
      • Agents started by Ask AI, code review, Code Tour and Guided Review no longer post to your Inbox or wait on a plan review. #2366, #2369, #2371

      Install / Update

      macOS / Linux:

      curl -fsSL https://plannotator.ai/install.sh | bash
      

      Windows:

      irm https://plannotator.ai/install.ps1 | iex
      

      Claude Code Plugin: The plugin and the plannotator binary update separately, so run the install script above as well. In a terminal:

      claude plugin marketplace update plannotator
      claude plugin update plannotator@plannotator
      

      Then restart Claude Code. Inside Claude Code, run /plugin marketplace update plannotator, then open /plugin → Installed → plannotator → Update now.

      Pi:

      pi update npm:@plannotator/pi-extension
      

      OpenCode: Re-run the install script above. It also clears the OpenCode 2 plugin cache.

      What's Changed

      • Updates: recover from killed or overlapping installs (F5, F6, F7) by @backnotprop in #2342
      • Inbox: an agent's inline image in a project's hidden folder shows, as its attachment does by @backnotprop in #2343
      • fix(whats new): retry abandoned and failed notes fetches; keep the link across restarts by @backnotprop in #2345
      • Inbox: full screen's composer (comment or reply without leaving full screen) by @backnotprop in #2339
      • fix(whats new): retry release images abandoned mid-fetch after 15 minutes by @backnotprop in #2346
      • Inbox: Copy prompt logos tilt apart on hover by @backnotprop in #2347
      • Inbox: drop the 'takes it as its next turn' line from New thread by @backnotprop in #2351
      • Inbox: Pin thread moves from the thread header into its ⋯ menu by @backnotprop in #2352
      • Inbox: picture choices keep the letter in their own label in full screen by @backnotprop in #2350
      • Inbox: action count as a box pill, question count with a speech-bubble icon by @backnotprop in #2348
      • Inbox: an open thread shows its name before the message count by @backnotprop in #2354
      • Inbox: show a project's folder name, adding the parent only when two listed projects share it by @backnotprop in #2349
      • Inbox: Pinned and Projects open and close like folders by @backnotprop in #2353
      • Inbox: link the files your sent reply commented on by @backnotprop in #2358
      • chore: take the AIContext type from core, not the AI package by @backnotprop in #2360
      • test: let the list-resize drag finish before the last sample by @backnotprop in #2362
      • fix(inbox): phone thread header fits one line with nothing cut by @backnotprop in #2357
      • fix(inbox): drop the folder path from a project's list header by @backnotprop in #2355
      • Inbox: a pinned thread shows its name by @backnotprop in #2359
      • Code review: Call flow as cards by @backnotprop in #2364
      • Call flow: update CallDiff to 0.6.0 by @backnotprop in #2365
      • fix(pi): keep the Inbox off inside Ask AI's RPC runs by @backnotprop in #2366
      • Inbox: read_thread names the projects inside a folder with no threads by @backnotprop in #2368
      • Inbox guidance: one thread per work stream by @backnotprop in #2367
      • Code review sidebar: aligned Halftone layout (E) by @backnotprop in #2370
      • Ask AI: agents it starts never load Plannotator's Inbox, agent tool or plan hooks by @backnotprop in #2369
      • Agent jobs: Review, Code Tour and Guided Review agents never load Plannotator's Inbox or plan hooks by @backnotprop in #2371
      • Inbox list rows: thread name as the title, agent icons beside the project by @backnotprop in #2374
      • Inbox: a Claude Code session files under the folder it started in by @backnotprop in #2344

      Community

      Full Changelog : v0.28.38...v0.28.39

    4. 🔗 The Pragmatic Engineer The Pulse: Time to rethink software security because of AI? rss

      Hi, this is Gergely with a bonus, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover Big Tech and startups through the lens of senior engineers and engineering leaders. Today, we cover one out of four topics from last week 's issue of The Pulse . Full subscribers received the article below eight days ago. If you 've been forwarded this email, you can subscribe here .

      It's been an absolutely wild few days, with security breaches and major security vulnerabilities being exposed worldwide across tech. Many incidents took place on Tuesday and Wednesday of this week. We'll start with a brief summary, then look closer at three of them:

      1. Intermediate CA certificate compromised : eight private 384-bit keys issued by eMudhra - which is an intermediate Certificate Authority (CAs) - leaked, meaning that servers in server-to-server communication can face man-in-the-middle (MITM) attacks. Any internet communication not going through modern browsers (that already patched this) could be risky.
      2. PHP : Unpatched servers risk remote code execution (RCE) and opening up access for attackers. Around 70% of all websites run on PHP and unpatched systems are at risk. Two critical security patches have been released.
      3. Railway : customer secrets stored on the service were leaked and some have been decrypted. Secrets exposed can include access to production systems, enabling attackers to potentially access customer systems.
      4. GitLab : Unpatched GitLab servers are at risk of an attacker gaining full access. A critical security patch for RCE has been released.
      5. Node.js : Unpatched servers are vulnerable to remote execution attacks. A new release fixes 10 critical vulnerabilities (CVEs), including one that allows for RCE, and another fix revokes the compromised eMudhra intermediate certificate.
      6. Go : a new release is out, adding a mitigation for the compromised eMudhra intermediate certificate.
      7. TiDB : attackers gained near-total access to the complete control plane systems of the managed TiDB provider, PingCAP, for a whole month (!!). The attacker released 10TB of customer-sensitive data, including from Booking.com, Airbnb, Pinterest, Databricks, and more such as SQL queries that customers ran, billing, contacts, and source code for PingCAP's systems The breach lasted from 9 Sept until 7 Oct, but was only disclosed this week.__ PingCAP claims no customer data stored inside TiDB was accessed, but I find it hard to see how the company will avoid losing security-conscious customers. This incident shows that the absence of adequate access monitoring and alerting can be an open invitation for attacks lasting weeks.

      With that, let's get into the first three incidents in the list.

      eMudhra CA compromise

      Certificate authorities (CAs) are organizations that vouch for identity on the internet. When a browser, phone, or server pings a site like chase.com or revolut.com, intermediate CAs and digital signatures verify that you really are talking with the bank's server, and not a fake one set up by an attacker with the purpose of stealing users' credentials. This is where the HTTPS protocol comes into play, with root CAs, intermediate CAs and the TLS handshake.

      The whole system is built on a chain of trust and verification: we trust the root CAs and their certificates, and so we can trust the signatures of the intermediate CAs. The assumption is that both the root CA and intermediate CAs are trustworthy and verifiable.

      But eMudhra broke this trust in the most blatant way: its private keys turned out to be single-digit numbers. A private key is a 384-bit key, which means that it would be a number between 0 and 2^384, (a number with 116 digits!)

      Except, the key turned out to be the number "4." Yes, that's right: the number four. What on earth was eMudhra doing?! It's as if they chose random numbers between 0 and 384, not 0 and 2^384! It is quite literally comical: in 2007, an XKCD comic described exactly this choice:

      altProphecy foretold? An XKCD comic from 2007

      And the other keys were also not that much better: 56, 66, 115, 156, 230 and 237! It's as if eMudhra generated an 8-bit private key, not a 384-bit one.

      eMudhra explaining how these keys were generated (emphasis mine):

      "We have done some preliminary assessment, there appears to be a flaw in the KGC [Key Generation Ceremony] script that was used on that specific day to create these ECC issuers. As for these ECC keys [elliptic-curve cryptography key pairs], our review of the KGC, assessment of the code and view of HSM [Hardware Security Module] keys so far indicate that a) a set of original ECC keys were created onboard as expected b) an approved deviation to our usual KGC to test a wrap/unwrap was introduced as these keys were meant for export for this instance c) a flaw in the code resulted in the second pair of keys being created onboard which were weaker d) these second pair of weaker keys were used by mistake to create the CSR [Certificate Signing Request] (because the key labels were similar) and signed by our root e) the CSR from these weaker keys were also sent over to Sectigo for cross signing (we verified the files sent over to Sectigo)

      The RSA issuers went through a different path as per our assessment of the code and are therefore not impacted.

      Some additional context - these issuers were meant for export to our US and European data centers to solve data sovereignty issues for some of our customers (but never ended up operationally in production except for one).

      We are still assessing the code to see steps where this process went wrong."

      I have so many questions:

      • How does eMudhra test generated keys? There seems to have been no automated testing of the key in place at all, in order to discover that these numbers were not "random" from a flaw in the key generation ceremony
      • How did eMudhra not notice this on day one, when the Key Generation Ceremony went wrong? If this was an automated process, the script would've changed from one day to the next, which would raise questions. If the process was fully manual, it explains how the mistake would be missed. And if it was manual, then why? Also, where are the detailed audits for such an important process?
      • The certificates with the easy-to-guess private keys were generated on 30 April 2025, so why did eMudhra not spot the mistake for 18 months?

      Carelessness in the creation of intermediate certificates risks reputational damage to eMudhra 's business as a certificate authority. Google Chrome announced it is evaluating whether to continue with the company:

      "Due to the seriousness of this incident, the Chrome Root Program is closely investigating the ongoing inclusion of eMudhra's remaining CA certificates in the Chrome Root Store and will share further updates in public forums (e.g., the Common CA Database Public list) as our evaluation progresses."

      Given eMudhra's sole business is in issuing digital certificates, being dropped by Chrome as a CA could be crippling. eMudhra is a publicly traded company on the Indian stock market, and two days before the breach was revealed its market cap was close to $500M. After details of its incompetence in creating certificates emerged, the company lost 40% of its value in two days.

      **PHP exploit: AI model beats attackers to finding critical

      vulnerability**

      The PHP situation is interesting because the "good guys" in this case (the security researchers) found a critical vulnerability in the framework before attackers did. From OpenAI:

      "Over the past two months, we led a coalition of maintainers, researchers, and security providers to address critical vulnerabilities in PHP, an open- source programming language used to run websites and web applications. Calif [a respected security team] identified a critical flaw using GPT‑5.6 Sol as part of our Patch the Planet⁠(opens in a new window) initiative, with Wiz [a security company] also independently discovering and reporting both vulnerabilities. PHP's maintainers led the fixes and release, with our teams and partners like Wiz, Cloudflare, and others contributing research, technical support, and coordination to prepare protections ahead of disclosure."

      On the surface, this is great news! Critical vulnerabilities were found and can now be patched, thereby closing the door before attackers can exploit them. Right..?

      The problem of critical vulnerabilities for open source software is that systems which aren 't immediately patched can be exploited. When the PHP team released the fix for these two vulnerabilities, attackers got details about the vulnerabilities: the code itself shows where the attack can be inititiated! In the case of PHP, that means attackers can now easily execute remote code on any PHP server that is as yet unpatched.

      Around 70% of all websites run PHP servers, which is a massive attack surface. We can be confident that many sites won't update their PHP versions for days, weeks, months, or even years.

      This particular vulnerability was so severe that before the security patch, the National Security Agency (NSA) in the US issued guidance urging websites to immediately patch upon release, or take applications fully offline until patched.

      Exploits began hours before the fix was announced. It was known in advance that a major vulnerability fix was coming for PHP, and somehow, the vulnerability leaked from the group that disclosed and fixed it. Cloudflare was in the group that worked on this problem and created tooling to monitor and block exploit attempts. From Cloudflare CEO Matthew Prince:

      altAttackers jumped on the exploit before it was officially announced. Source:Matthew Prince

      Amazon detected exploit attempts days before the fix. From AWS:

      "Amazon Threat Intelligence identified a PHP2Shell exploitation attempt dating to Oct. 17, 2026, in MadPot telemetry, four days before public disclosure of CVE-2026-109618 and CVE-2026-109619. The exploit attempt originated from an IP address associated with a commercial anonymization network. While the vulnerability was under embargo, the targeting of a honeypot from an anonymized IP address suggests the activity was conducted by a threat actor, though it remains unclear how the actor acquired exploit information prior to disclosure."

      Attackers now have AI agents to automate and speed up attacks. Now that the vulnerability is known, attackers can simply spin up agents, instructing them to attempt to exploit servers that have not applied the patch. This probably explains why Cloudflare saw millions of exploit attempts just a few hours after the patch was released.

      Railway 's customer secrets leak

      Elsewhere on the same day, developer-first cloud provider Railway was hacked and the environment variables (secrets) of its customers were exposed. From the company:

      "Our investigation to date indicates that an unauthorized third party may have accessed encrypted environment variables and, for some of them, obtained the decrypted contents. Environment variables may contain secrets such as API keys or database and registry credentials."

      Immediately after detecting the breach, Railway took decisive action by notifying customers and the public, and pausing all deployments.

      Pausing deployments created a huge headache for customers, who could not rotate their keys without crashing their systems running on Railway. Also from Railway:

      "We strongly recommend that you immediately roll all environment variables, including any API keys, stored in Railway, as well as any private registry credentials, and review logs for those services for unusual activity.

      All deployments are paused while we investigate. Until builds are restored, you will not be able to roll out new versions. We apologize for this inconvenience. Follow this incident to be notified when builds resume."

      This is contradictory: rotating environment variables - say, a database access token - means that the application using the old variable stops working until a redeploy. However, Railway has paused deploys! So, customers of Railway had two choices:

      • Rotate keys (the responsible step) and deliberately crash their application or take it offline (irresponsible)
      • Don't rotate and hope their key was not leaked - (irresponsible) - and let their application continue to operate (responsible)

      Of course, it's clear why Railway is pausing deployments after the environment variables leaked, and the team must ensure that new variables added by customers do not leak.

      In the end, it took Railway close to 20 hours to resolve the problem and allow deployments again. During that time, they unfortunately gave security-conscious customers an impossible choice of bricking their service while rotating keys, or ignoring security best practices to keep services running.

      Can we expect future 'deluges' of security incidents?

      AI labs did warn of a looming "security tsunami" fueled by the technology in May 2026, as per CNBC:

      "Dario Amodei warned Tuesday [5 May 2026] that artificial intelligence has created a narrow window for the world's tech firms, governments and banks to fix tens of thousands of software vulnerabilities found by his company's latest model.

      That AI model, Mythos, was previewed last month along with the disclosure that it had unearthed decades-old vulnerabilities in crucial software.

      Since AI models from geopolitical adversary China are "maybe six to 12 months" behind the Anthropic product, there is "roughly that amount of time" to fix these issues, Amodei said.

      "The danger is just some enormous increase in the amount of vulnerabilities, in the amount of breaches, in the financial damage that's done from ransomware on schools, hospitals, not to mention banks," Amodei said.

      Anthropic has limited Mythos to a few partner companies because of concerns about what criminals or adversarial nations could do with it."

      Around that time, I talked with "AI-pilled" devs - some with access to the Mythos model - who told me the same: they expect the security landscape to become very bad in the coming months, with record numbers of systems being breached. One engineer said he's moving many of his secrets like 2FA backup phrases off cloud storage services and onto paper because he expects cloud storage services to also be breached.

      This week, it has seemed like the prediction in May has come to fruition, much of it done with AI's help. A few days ago, on 17 October, OpenCode was breached and its customer secrets - AI API keys - stolen. Cofounder, Dax Raad, shared that the company has been under constant attack, in his reply to Railway:

      altOpenCode under constant attack by bad actors. Source:Dax Raad

      Attacks much easier & defense much harder with AI

      I sense the balance of power between the good and bad actors in this space is shifting because of AI. Let's see what it took for an attacker to get access to a system before AI existed, via a critical vulnerability exposure (CVE) - disclosed or not:

      altDefense and attack before AI

      With AI, finding critical vulnerabilities is easier for everybody, including bad actors who can automate attacks as well, and do so easily. The change:

      altAI gives attackers of systems advantages over defenders

      It gets worse: before AI, it took quite some skill to be an effective attacker: you needed to be a good-enough coder, understand concepts like buffer overflows, and also learn techniques for executing remote code execution attacks. With AI, none of that applies. Venture capitalist, Deedy Das, described it as scary that nontechnical people now have the tools to easily exploit known CVEs like the PHP one:

      altSource:Deedy Das

      So, let me update the diagram to account for the drastic lowering of the bar to becoming an effective attacker:

      altAI makes it easier than ever to breach systems, for much more people than before

      And we see all of this playing out in practice, starting with publicly disclosed CVEs skyrocketing:

      altThe number of CVEs is skyrocketing. Source:CVE tracker by 0xosprey.com

      We may need to urgently rethink software security for all systems:

      • Automated patching : manual monitoring for patches on a daily/weekly basis will become as irresponsible as applying patches months or years after release. Of course, automatic patching has its own risks, such as if a vendor providing a patch is breached, or a patch causes an outage, etc.
      • Expect attackers to use day-zero CVEs. Attackers will increasingly have access to undisclosed vulnerabilities and will access systems externally, or even execute code remotely.
      • Ongoing automated security monitoring to be non-negotiable. To detect security breaches, you need a decent level of automated logging and monitoring. This needs to be in place sooner rather than later. The TiDB incident this week shows what happens when a company allows an attacker to freely access their system for a month.
      • Defenders will have to use more AI. Attackers are gaining advantage by using AI agents, so defenders will have to do the same. There are no best practices in this field, but there are likely to be lessons in how companies like OpenCode, Railway, and PingCAP are responding - if they share their approaches.
      • Securing services and software will become more expensive. Continuously running AI agents to monitor for and mitigate breaches costs money, as do security engineers who are "AI-native." This all increases the cost of security engineering. We previously covered security engineering basics and did a podcast on code security .

      ... and the security incidents continue

      Since publishing the original article on 22 October, there have been more:

      • The Brotli remote execution CVE: Brotli is a compression library used at Node.js, Bun, Envoy, and others. The flaw allows an attacker to take over a service. Details
      • Another PHP remote code execution CVE. Just two days after the high-impact PHP2Shell patches, PHP warned of another important CVE, for which a fix is coming. PHP versions will need to be updated fast again.
      • Linux CVEs posted publicly. Several unpatched Linux kernel vulnerabilities were accidentally posted on the public kernel mailing list. Details.
      • Python Pillow CVE : a vulnerability inside the Python Pillow image library lets an attacker issue OS commands. Details
      • … and others I've doubtless missed.

      At this rate, we might start getting "vulnerability fatigue" and become numb to critical security vulnerabilities unless they affect frameworks our applications use. To avoid that, it'll be necessary for the industry to improve at coming up with and implementing security practices which work in a security environment where AI speeds up the discovery, publication, and exploitation of vulnerabilities.


      Read the full issue of The Pulse this is from, or check out this week 's The Pulse. This week's issue covers:

      1. Anthropic kills its coding interview. A team at the leading frontier AI company gets zero signal from DSA interviews and so has removed it from the engineering recruitment process. The rest of the company, and other AI-native startups, could follow.
      2. Details on incident.io 's AI spend and ROI. The resiliency startup has slashed the amount it spends on AI; down from $4,500 per dev, per month, in August, to $1,600 now.
      3. Amazon formally incorporates AI usage into SDE and SDM expectations. AI has been placed at the heart of software engineering after the company found a correlation between AI usage and productivity. Also, software development engineers (SDEs) and managers (SDMs) must be close to customers.
      4. Microsoft issues new exit offers to engineers. The tech giant has offered 60,000 employees the opportunity to quit by the end of the year. But the exit package is not particularly tempting, and so the number of people who take it will surely be in the thousands, not tens of thousands.
    5. 🔗 r/LocalLLaMA Another reason to own your own compute. Your account may get banned in a sneaky update. rss
    6. 🔗 HexRaysSA/plugin-repository commits sync repo: +1 plugin, +1 release rss
      sync repo: +1 plugin, +1 release
      
      ## New plugins
      - [freelumina](https://github.com/c8c78cf6c6/freelumina) (1.0.0)
      
    7. 🔗 Filip Filmar filmil's Auto Reload: a tab reloader with two permissions rss

      filmil’s Auto Reload is a Chrome extension that reloads a tab every few seconds, minutes or hours, and can do nothing else. It asks for two permissions, shows no warning when you install it, and cannot read the pages it reloads. This post explains why I wrote one more reload extension, how it counts down on its icon, and how a release goes from a commit to the Chrome Web Store without anyone typing a password.

    8. 🔗 New Music Releases Queens of the Stone Age - Perfecth rss

      Queens of the Stone Age - a new release is available:

      • 2026-10-30: Perfecth (Album)

      Amazon: Canada | Deutschland | France | United Kingdom | United States

      Visit muspy for more information.

    9. 🔗 New Music Releases Northlane - Anemoia rss

      Northlane - a new release is available:

      • 2026-10-30: Anemoia (Album)

      Amazon: Canada | Deutschland | France | United Kingdom | United States

      Visit muspy for more information.

    10. 🔗 Baby Steps 'Trust but verify'; or, 'the correctness ratchet' rss

      The name of the game in agentic development is figuring out how to clearly tell agents what you want- and then how to be sure they follow through. Lately I've been tinkering with an interesting technique around this that I'd like to share.1 I call it "trust but verify"2.

      The basic idea is that sometimes you have things you want to "verify" but they can't really be mechanistically checked. In that case, you let your agent do its best. But you also have it create an evidence file that contains the inputs it drew on to make that decision along with its rationale. Then you gate your CI on checking that these evidence files exist and that the inputs are accurate. Those checks are deterministic and cheap. The rationale itself is natural language and can't be checked.

      Doing this "trust but verify" technique on its own is helpful. It creates a kind of hill-climbing towards correctness that is stronger than (e.g.) tests alone. It helps to check meta-reasoning like "is the set of tests sufficient to show this requirement is true". Documenting the input also means that if any input should change, the CI check will start to fail, and the agent will be forced to revalidate its reasoning.

      What I find most interesting though is that "trust but verify" can be used to create a kind of correctness ratchet over time. The idea is that, now that the inputs + rationale are documented, you can have other agents come back and double-check that reasoning, even when the inputs have not otherwise changed. As agents naturally improve, or just due to the randomness inherent in how agents work, they will naturally find things the original rationale overlooked, and you'll be able to address them.

      When you say "hill climbing towards correctness", what do you mean by

      "hill-climbing"?

      Agents are none too smart, but they can be awfully dogged and persistent. If you ask them to climb a hill, they are going to find a way to do it. The tricky bit of course is that they don't always climb that hill in the way you intended. Also, they may not exactly climb it so much as find a route to the top: they may be persistent, but they are also lazy f!@#kers4, and they love to take shortcuts.

      What if the hills are propositions about your program?

      The fact that agents are good at climbing hills has got a lot of people in the automated reasoning community5 very excited. After all, what better way could there be to make sure your program does what you expect than to formally prove that it is true? And we've seen that when you set a model loose with a Lean theorem, it can be quite adept at proving things6.

      But there are a few caveats…

      Myself, I'm quite excited about tools like Lean but also Verus, Aeneas, and Creusot. I think we're going to be using them a lot more. And yet, I also think that proving propositions is not the end of the story.

      Who writes those propositions?

      Let's start with the obvious problem. An agent may be good at proving a proposition, but who is actually writing it? Even when something can be formalized, doing that formalization is a fair bit of work. Consider this random example of a requirement from a project I am working on7:

      A Fleet using Functionality A must be attributed to every Functionality reachable through any number of recorded deprecation steps, while being counted only once when routes converge.

      This is part of a project that is analyzing fleets across Amazon and looking at how much DRAM they consume. Our goal is to make sure that every large fleet at Amazon has Rust versions of every library it would need to be rewritten into Rust. We want to be able to go to the maintainers of those libraries and say, "there are fleets accounting for X% of Amazon's total DRAM consumption that use your library; you should make a Rust version".

      The point is, while the concept of this DRAM accounting is not complex, formulating it in a precise, mathematical way is not at all trivial. You have to have some notion of transitive closure, talk about the graph of dependencies, etc. There is no way that the lazy, spoiled programmers of the future are going to write a formula like that by hand.

      Much more likely is that they are going to give high-level direction to the agent and ask it to connect the dots. After all, this is what agents are good for! And in this case, I would trust an agent to get it right. As I said, it's not really complex , just… tedious.

      Can they say what you want?

      And of course this leaves aside that there are many things that are just plain hard to formalize. Consider a requirement like, "a warning must be displayed on every relevant form in a prominent fashion". Checking this requirement requires a notion of what is "prominent", which is unlikely to be a mathematical property one can write down. And while I would not trust an agent's judgment over an actual graphic designer, it is also the kind of thing where the agent can likely do a "good enough" job to catch many failures.

      And what does it cost to do the proof?

      The other point is that while agents are good at authoring proofs, it still takes them tokens - and more importantly, time - to do it. And sometimes quite a bit. If developers have to wait a while for the agent to find a proof to a complex property, that better be worth it. If the property you are proving is key to your system, it probably is. But if the cost of a mistake is less than the cost of a proof, people won't bother, so it's worth thinking about leaner, easier ways to gain confidence.

      And what about when you are iterating?

      One final point is that applying too much rigor too early in the process can be a real problem. This one is tricky because rigor can surface problems earlier, too. But it's often helpful to start by defining your requirements and things at a higher level and gradually get more precise as you go, tolerating a bit of "looseness" early on when you know there are details you have to nail down, but it's not important to do so yet.8

      A key point for me is that just because you haven't formalized your requirement all the way to a mathematical proposition doesn't mean that you've got nothing at all. You can often phrase a high-level version of what you want, perhaps one that is overly simplified. In fact, it's pretty useful to do so, because when you find that your rule doesn't quite work, that helps you figure out how to refine it into the more precise rule you actually want.

      Evidence and "trust but verify"

      The key idea of the "trust but verify" technique is that leaning on agentic reasoning is good, fine actually. But when you do so, you should have the agent explain itself and also have it lay out what inputs and evidence it used to reach that conclusion. Basically, leave yourself a trail so that you (or another agent…) can come back and audit what decisions were reached and on what basis.

      Following this approach helps in two ways:

      1. In the short term, it forces the agent to at least acknowledge your requirement, which generally means they will do a better job at meeting it.
      2. In the long term, it lets you go back and double-check the agent's reasoning, leading to a kind of "correctness ratchet" in which you are generally improving the alignment of "what you have" with "what you asked for".

      One example: Habeas Codicem

      Probably the simplest example of this "trust but verify" technique is Habeas Codicem. This is a small project I made in part as an experiment. The idea is that you write requirements into your docs and then Habeas Codicem adds a test into your system that can only be passed if an agent has written an explanation of why each of those requirements is satisfied. Those explanations are recorded as evidence files that are committed into your repository along with the code.

      The interesting bit about Habeas Codicem is that the evidence files contain not only the agent's rationale and judgement, but also a list of the inputs it used to reach that conclusion. And these inputs have to have certain contents. For example, if you have a function that is labeled as part of the requirement's implementation, or a test that is tied to a requirement, then the agent must include that function or that test in its evidence.

      The final part of Habeas is some skills that instruct the agent to always check with you, the human, before editing requirements, and to confirm agreement on requirements before implementing.

      Another example: an internal data store

      Early in the post I mentioned an internal project I am working on at Amazon to analyze which missing dependencies might block fleets from migrating to Rust. This system involves a lot of agent-driven investigation. For example, perhaps there is a Rust version of a Java library, but it only handles some of the features (this is pretty common). Then we need to know whether the fleet's code cares about those features that aren't included.

      My early attempts at gathering this data were pretty crude. I basically just sat there telling Amazon Quick "try harder, make no mistakes". Not great. I didn't really trust the result.

      My newer attempts are much more thorough. I ask the agents to produce an evidence record of what data points they looked at and to include a written rationale for how those data points connect. I then test that the data points hold. For example, to determine if the method convertData in some library is called, the agent might register specific lines from .java files showing a call like value.convertData(). Or it might show the results from a grep that show no matches for convertData.

      The interesting bit is that while the rationale from the agent can't really be evaluated in an automated fashion, the evidence can be. So before we accept any agent-created conclusion, we run a deterministic checker that ensures the evidence is valid (those lines really do appear where the agent said they would) and then records a receipt that the check was done. So the agent cannot just hallucinate evidence.

      What we are asserting: the agent has done work

      Habeas Codicem does not prove your code obeys its requirements; nor does my inventory system prove that a given Java feature is used. But it does prove that the agent actually considered the question enough to write out some evidence + a justification. And assuming your agent is not actively malicious, that's actually quite a bit.

      One thing that we've seen is that agents often "lie" about what work they did. They'll claim to have carefully read through a document when an examination of their tool invocations shows that they've just looked at a few random bytes.

      Tightening and revalidating rationale

      One of the ideas I find most interesting in this space is the idea of revalidating rationale. Now that we have evidence files committed to git, we can absolutely have another adversarial agent that periodically pulls up those files and gives them another look. That agent can go looking for holes in the original logic and produce modified and improved proofs or counterexamples. I find this particularly compelling when you think about new and better models that might be more adept at finding holes.

      Applying this idea to propositions

      I think this technique suggests how we can begin to tackle the problem of converting "high-level requirements" into formal theorems. Instead of expecting humans to write and review logical formulae, we can ask an agent to do the conversion - and to record its thinking process (with verifiable evidence). Then we keep that evidence around and we periodically revisit it, looking for potential edge cases. We wind up with a kind of 'confidence score' - the more reviews that have approved a given "requirement->formula" translation, the more likely it is to be accurate.

      The risk of ping-ponging and what it means

      That said, I've not really put this into practice yet, and I anticipate it may be tricky to get it working right. People have told me to expect that agents may ping-pong a bit: for example, maybe one of them translates your plain English into logic, and then another says "that translation doesn't look right" and takes a new approach. But then yet another agent reverts that and goes back to the original. This seems very plausible- I suspect it can be resolved by adding enough history to recognize that it actually reflects ambiguity in your original statement, and to surface the problem up to you.


      1. I do not claim this technique is novel. I am quite sure people have been doing variants of it forever. But it's novel to me, and I don't think I've heard people talk about some of the potential long-term implications around "the correctness ratchet". ↩︎

      2. I know this phrase from Reagan, of course, but when I started reading into its background I found it had a more interesting history than I expected. Apparently it is a Russian proverb and was suggested to Reagan as a way to communicate with Gorbachev in familiar idioms. As with "less is more", it's always had that delightfully contradictory feeling ("if you have to verify, are you really trusting?") - and at least the way I interpret it, it's really more like "trust through verification". In other words, I know I can trust you because we've set up the means for me to verify your logic. ↩︎

      3. I had written, "I don't usually curse at computers", but my daughter (reading over my shoulder) told me, " That is not true, you curse at computers all the time". And she's right! But I realized that it feels different. When I am using some restaurant website that seems purposefully designed not to tell me their opening hours or show me a menu, I certainly say " oh f!@#k you!", but in that case, I am actually cursing at the person who designed that website. I am not cursing at the website itself ; it's just an inert vessel. In contrast, when I curse at a model, I am not cursing at the people who trained it. I am cursing at the dang model, because it just seems to be going out of its way to be annoying. Anthropomorphizing is a pain. ↩︎

      4. God, agents have gotten me so frustrated lately. I'm not usually prone to cursing when sober3 but more than once lately I've found myself typing, " I have no idea what the f!#! you are talking about". This seems to happen slightly more often with Claude than GPT. Claude really likes to develop a kind of cryptophasic shorthand where it drops random words that I used 3 weeks ago as if that will mean anything to me now. "You still have to handle the first-cut case!" ↩︎

      5. Automated reasoning is the same thing as formal methods , just more appealingly branded. As an aside, lately I've been hearing people talk about Neurosymbolic AI , which I believe is a shameless (and brilliant) way for your SAT solver to jump on the LLM hype train. I suppose it's also a reasonable way to push back against "AI scope creep". While I'm on the topic: it seems to me that John McCarthy's quip (" as soon as it works, no one calls it AI anymore") has been proven false. I would rather people stopped saying "AI" and just said "LLM", but nobody really cares what I want, do they? ↩︎

      6. Even if they aren't actually true. ↩︎

      7. I did not actually write this text, of course, an agent did. It's pretty convoluted. Sigh. ↩︎

      8. This feels reminiscent of Terry Tao's classic post outlining how an experienced mathematician leans on instinct informed by rigor rather than just one or just the other. ↩︎