# Wiki Log, July 2026

## [2026-07-22] update | Declared gaps — `planned:` frontmatter and the check that honours it

Follow-up to the maintenance pass earlier today, which left six wikilinks pointing at pages that do not exist and argued each was a real gap rather than a defect. That argument lived only in a log entry, so `warren check` still failed on them and the vault had no way to tell a deliberate gap from a typo.

Now it does. [[planned-pages]] declares the six in a `planned:` frontmatter list and explains in a table what references each and why the page is worth writing. CLAUDE.md gains a "Deliberate Gaps" rule under Cross-References: a dangling wikilink is a defect unless some page declares its target, stubs are still forbidden, and dangling links inside `sources/` are expected because those are clipped documents pointing into their own repositories.

`warren` was changed to match — `internal/vault` parses `planned:`, `internal/linkcheck` marks each dangling link declared or not, and `warren check` now fails on undeclared links outside `sources/` rather than on any dangling link at all. It also warns when a declared target starts resolving, so the list gets pruned instead of decaying into a permanent allowlist. Eight tests cover the gate, the sources exemption, spelling variants of a declaration, and staleness.

The vault now passes `warren check` for the first time: 6,555 wikilinks, 6 dangling, 6 declared, 0 undeclared. Pages created: [[planned-pages]]. Pages updated: [[wiki/index]] (1 entry).

## [2026-07-22] lint | Vault maintenance pass — catalog pages, orphans, dangling links, summaries

Consistency pass, not an ingest. Five separate problems, all of them consequences of the vault never having had a way to distinguish structural pages from content pages.

**Catalog and log pages marked.** `wiki/index`, `toolbox/index`, `books/index` and the root `index` are now `type: catalog`; [[wiki/log]] is `type: log`. All five had opened straight into an H1 with no frontmatter at all; each now carries title, summary, created (taken from git history) and updated, and the duplicate H1 is gone. CLAUDE.md gains both types and a short section explaining why link metrics have to skip them: the five together carry roughly a third of the vault's wikilinks, which is why the `Orphans (no inbound links)` view in `wiki.base` has never been able to return a row.

**Orphans, computed for the first time.** Excluding those five, 44 of 665 pages in `wiki/`, `toolbox/` and `books/` had no inbound wikilink. 42 now do. The wiki cluster was systematic — 13 blog-entity pages each linked out to the summary written from that blog and no summary linked back; fixed by making the author's name in each opening sentence the link, which is what the pages that got it right already do. All 19 book pages were orphaned because `books/index` was their only referrer; each is now cited from the wiki page whose topic it covers. Nine of eleven toolbox orphans found a genuine relative. [[toolbox/slogbox]] and [[toolbox/openscreen]] were left orphaned on purpose — the vault has no page on Go structured logging and none on screen recording, so every candidate link would have been decorative.

**Dangling wikilinks: 28 down to 6**, measured with `warren check`. Two were a wrong folder prefix (`[[meta/llm-wiki-pattern]]` for a page in `wiki/`), two were PDFs linked without their extension in [[sources/ingested-urls]]. Three pages written because the reference count said they were owed: [[claude-code]] (four referring pages, and 75 pages mention it in prose), [[andrew-bosworth]] (three), [[obsidian-bases]] (two, and nothing explained the dashboards the front page is built from). Nine unlinked as prose rather than concepts. Six left as honest gaps: `dtrace`, `gvisor`, `xray-core`, `anthropic-and-pentagon`, `oldnewthing-20260423`, `stable-urls-as-public-api` — each referenced once, two by text that already says the page does not exist.

**`summary:` backfilled on 139 pages** — 115 in `toolbox/`, all 24 in `books/` — which had none because neither frontmatter template included the field. Both templates now do. These become the meta description and Open Graph text when the vault is served, so each was written as a search-result line.

**Six frontmatter blocks were invalid YAML** and always had been: five `summary:` values contained an unquoted `": "`, and [[early-stage-reality]] opened with a quoted phrase YAML read as the whole value. Obsidian tolerates them; a stricter parser drops the frontmatter entirely. All 670 blocks in `wiki/`, `toolbox/`, `books/`, `meta/` and the root now parse.

Also documented in CLAUDE.md: the optional `aliases:` field for surviving renames, why filename uniqueness is what allows addressing a page by stem alone, and a decision on `inbox-assets/` — it stays, as the staging area ingest drains into `sources/assets/`, which is what the ingest skill already does.

Not done, deliberately: the catalog listings were not regenerated from `summary:`. A 20-page sample found no contradictions between the two descriptions — every pair agrees on what the page is, differing only in which secondary detail each keeps — so the duplication is real but not currently harmful, and whether to generate the listings is an open decision in the site spec.

## [2026-07-18] ingest | The LLM Critics Are Right. I Use LLMs Anyway
Ingested Jeremy Theocharis's reconciliation-stance essay (from a Telegram saved message; Local-First Conf Berlin, July 2026). Pages created: [[llm-critics-are-right-use-anyway]] (summary), [[theocharis-blog]] (entity), [[credibility-as-slop-test]] (concept). Pages updated: [[anti-llm-discourse]] (added the reconciliation slot between refusal and adapt-or-die; wired into "what the cluster is missing"), [[index]]. Kept the sharpest Lobsters counter-arguments (bad-writing blind spot, amplification≠augmentation, friction as a gating function).

## [2026-07-18] ingest | Speculative Growth and the AI "Bubble" (Caballero, MIT)
Ingested Caballero's July 2026 working paper (from a Telegram saved message; PDF via pdftotext). Pages created: [[speculative-growth-ai-bubble]] (summary), [[speculative-growth]] (concept). Pages updated: [[ai-bubble-pale-horses]] (added the "bubble can pop and still leave a legacy" counterweight; bumped updated), [[index]]. Positioned as a nuance/counterweight to the Zitron doom framing rather than a contradiction. Kept the HN thread's capital-reusability crux (dot-com fiber vs fast-depreciating GPUs), the labor-incidence and "propaganda"/K-shaped objections, and the LLM-writing accusations.

## [2026-07-18] ingest | Batch from Telegram saved messages (13 articles + 2 tools)
Processed a batch of saved-message links via parallel subagents. Details below.

## [2026-07-18] ingest | git history: safer history rewrites in core git
Lalit's post on git's experimental `git history` command (fixup/reword/split, autorebases local branches). Created [[git-history-command]], source [[lalitm-git-history]]. Linked [[git-magic-files]], [[pgit]], [[linux-kernel-pgit]].

## [2026-07-18] ingest | Old and new apps via modern coding agents (Tao)
Terence Tao porting his 1999 Java math applets to JS and vibe-coding new visualizations with a coding agent. Created summary [[tao-apps-coding-agents]] and entity [[terry-tao]]. Reconciliation/disciplined-use data point alongside [[chatgpt-5-5-pro-mathematical-research]], [[llm-mathematical-research]].

## [2026-07-18] ingest | Mindwalk
cosmtrek/mindwalk (778★, MIT) — replays Claude Code/Codex sessions as light over a 3D citymap of the repo. Created toolbox/mindwalk.md; added to watchlist.

## [2026-07-18] ingest | Mesh LLM: Distributed Inference over iroh
iroh blog post on distributed LLM inference across a p2p mesh, plus HN discussion. Created summary [[mesh-llm]] and toolbox [[iroh]]; source [[mesh-llm-on-iroh]].

## [2026-07-18] ingest | ZeroFS vs. Amazon S3 Files
zerofs.net head-to-head of ZeroFS against AWS S3 Files (both POSIX-over-S3). Created summary [[zerofs-vs-s3-files]] and toolbox [[zerofs]]; source [[zerofs-vs-aws-s3-files]]. Author-written comparison, framed as such.

## [2026-07-18] ingest | Know Thine Enemy (Amy J. Ko)
Amy J. Ko's three-month Claude Code experiment as an LLM skeptic. Created summary [[know-thine-enemy]] (reconciliation/harm-reduction slot) and entity [[amy-ko-blog]]. Source via Wayback (Medium was Cloudflare-blocked).

## [2026-07-18] ingest | Speeding up the Gleam formatter with Rust arenas
Giacomo Cavalieri closed a three-year-old Gleam issue via Rust arena allocation. Created summary [[gleam-pretty-printer-arenas]] and concept [[arena-allocation]]; source [[gleam-rust-arenas]].

## [2026-07-18] ingest | Slow Software: The Case for High-latency Systems Development
Irene Y. Zhang (SIGOPS) on reinstating development friction for critical infrastructure. Created summary [[slow-software-high-latency]]; source [[slow-software-high-latency-systems]]. Lobsters thread empty.

## [2026-07-18] ingest | A Place for Everything — Zornek's Work-Tracking System
Mike Zornek on tracking work in GitHub Issues/Projects. Created summary [[tracking-work-github-issues]]; source [[zornek-a-place-for-everything]]. Lobsters link 404'd.

## [2026-07-18] ingest | In Defense of Not Understanding Your Codebase
Sean Goedecke on partial understanding as the honest baseline at scale. Created summary [[not-understanding-your-codebase]] (parent [[sean-goedecke-blog]]); source saved.

## [2026-07-18] ingest | Control the Ideas, Not the Code
antirez (antirez.com/news/169) on why line-by-line review of LLM code is low-value; own the design. Created summary [[control-the-ideas-not-the-code]] and entity [[antirez]]; source [[antirez-control-the-ideas]].

## [2026-07-18] ingest | commonforms
jbarrow/commonforms (1.2k★) — auto-detects PDF form fields and writes fillable widgets via FFDNet models. Created toolbox/commonforms.md; added to watchlist.

## [2026-07-18] ingest | reaction
ppom/reaction (framagit, Rust) — fail2ban-generalized daemon scanning output for patterns. Created toolbox/reaction.md; added to watchlist. Repo ships an AGENTS.md prompt-injection (no-LLM policy); noted, not obeyed.

## [2026-07-18] ingest | gap
cdacamar/gap (60★, MIT) — native GUI diff tool, testbed for linear Myers diff bound for the fred editor. Created toolbox/gap.md; added to watchlist.

## [2026-07-18] ingest | Computer Science Off Course — Naur: Programming as Theory Building
Podcast S1E1 (Hermans & Schraffenberger). Judged a restatement of Naur; no new page — saved source record [[computer-science-off-course-theory-building]] and added a "see also" pointer to [[programming-as-theory-building]].

## [2026-07-18] ingest | Second Telegram batch (16 pages from 18 sources)
Second parallel-subagent batch from saved messages. Details below.

## [2026-07-18] ingest | Please make my predictions come out wrong (PHK's last Bikeshed)
Poul-Henning Kamp's final ACM Queue "Bikeshed" column. LLM code review dismissed as a bounded, bubble-funded fad; the real thesis is that age verification, attested computing, and EU Cyber-Resilience-Act accountability end single-maintainer BDFL FOSS. Created [[phk-goodbye-bikesheds]] (summary), source via Wayback (ACM was Cloudflare-403).

## [2026-07-18] ingest | Moonstone — Zig-based Lua environment and package manager
moonstone-sh/moonstone (Zig, Apache-2.0) — content-addressed store + per-project symlink envs for Lua/LuaJIT. NOT a Lua VM. Created toolbox/moonstone.md; watchlist (young, single-author, POSIX-only).

## [2026-07-18] ingest | DIY-CNC-machine — 3D-printed CNC router build guide
maxvfischer/DIY-CNC-machine — hardware/CAD build guide (STL/OBJ + Fusion 360) for a 3D-printed CNC router (Ivan Miranda design). Created toolbox/diy-cnc-machine.md. First hardware entry; off the usual software focus.

## [2026-07-18] ingest | Prefer Strict Tables in SQLite
Evan Hahn on SQLite STRICT tables vs default type affinity. Created [[sqlite-strict-tables]]; source [[prefer-strict-tables-in-sqlite]].

## [2026-07-18] ingest | Who manages the agents? (Don't Go Quietly Into the AI Night)
off-policy.com essay: distribute agent management to every worker rather than concentrate frontier AI; vision-manifesto-plus-product-pitch. Created [[who-manages-the-agents]]; source [[dont-go-quietly-into-the-ai-night]]. Adapt-or-die counter-cluster.

## [2026-07-18] ingest | Lucky Code — cosmetic C edit, 6x faster quicksort
Christof Kaser (tiki.li): `*p++ = x` vs `*p = x; p++;` flips Clang's SimplifyCFG into csel/cmov, 6× on quicksort. Created [[compiler-codegen-luck]] + concept [[conditional-move]]; source [[lucky-code]].

## [2026-07-18] ingest | Soviet Control Room Aesthetics
Design You Trust photo essay + HN. Created [[soviet-control-rooms]]; source [[soviet-control-rooms-design-essay]]. HN thread carries the substance (real vs staged facilities, lighting/wiring constraints).

## [2026-07-18] ingest | Agent Memory Strategy Decision Tree
Machine Learning Mastery: five-question tree classifying agent info into working/semantic/episodic/procedural memory. Created [[agent-memory-strategy-decision-tree]]; source [[choosing-ai-agent-memory-strategy]].

## [2026-07-18] ingest | AI Cannot Forget or Forgive
Tejas Sud: machine memory has no native decay and no per-record "forgiveness" op; forgetting is adaptive compression. Created [[ai-cannot-forget-forgive]]; source [[ai-cannot-forget]].

## [2026-07-18] ingest | Good Tools Are Invisible
Ginger Bill (Odin creator): good tooling gets out of the way; reframing friction as a "fun puzzle" is a tell it's failing you. Created [[good-tools-are-invisible]] + entity [[gingerbill-blog]]; source [[good-tools-are-invisible-src]].

## [2026-07-18] ingest | flint-chart
Microsoft Flint — a visualization intermediate language agents emit as compact specs; compiles to Vega-Lite/ECharts/Chart.js, ships an MCP server. Created toolbox/flint-chart.md; watchlist.

## [2026-07-18] ingest | SWE-1.7 — Cognition's Coding Model
Cognition's SWE-1.7 (RL-trained from Kimi K2.7), near GPT-5.5 on coding benchmarks — all vendor-reported, closed weights, Devin-only. Created [[swe-1-7]]; source [[cognition-swe-1-7]].

## [2026-07-18] ingest | kastor — declarative source-of-truth layer for AI agents
weirdGuy/kastor (Go, Apache-2.0) — HCL agent specs → LangGraph codegen + Terraform-style plan/apply/state. Created toolbox/kastor.md; watchlist.

## [2026-07-18] ingest | Notes on Software Quality (Hobday)
Anthony Hobday: absence-of-problems definition, six software quality signals, "quality can't survive scale" thesis. Created [[notes-on-software-quality]]; source [[notes-on-software-quality-src]].

## [2026-07-18] ingest | Kokoro local CPU TTS
Ariya Hidayat how-to → toolbox/kokoro.md (hexgrad/kokoro, 82M-param TTS, Apache-2.0, CPU-fast, OpenAI-compatible). Mature; not watchlisted.

## [2026-07-18] ingest | sp4rk — Golang multi-agent SDK
v0lka/sp4rk (Go, MIT) — classic + fluent agent APIs, MCP, Plan & Execute, reflection/retry. Created toolbox/sp4rk.md; watchlist (0 stars, early alpha). Could not verify the "extracted from c0wrk" claim — omitted.

## [2026-07-18] ingest | showagent
aytzey/showagent (Go, MIT) — TUI unifying coding-agent sessions across Codex/Claude Code/Gemini/OpenCode/Pi; resume, branch, convert. Created toolbox/showagent.md; watchlist.

## [2026-07-18] ingest | dockerscan
cr0hn/dockerscan (Go, source-available) — v2 defensive Docker image scanner (CIS/supply-chain/secrets/CVE/runtime); the old Python offensive tool was rewritten. Created toolbox/dockerscan.md; watchlist (single-author, proprietary license).

## [2026-07-18] ingest | Reviewing AI Code (Thomas Depierre)
Ingested Thomas Depierre's softwaremaxims.com essay arguing that the "just review the AI's code like an intern's" defense collapses against the empirical code-review literature (≤400 LOC/h, ~1h effective sessions, no parallelism → sub-1k-LOC/day ceiling), plus evidence that reviewers of LLM code find fewer defects while more confident. Created summary [[reviewing-ai-code]], concept [[code-review-throughput-limits]], and entity [[thomas-depierre-blog]]. Updated [[anti-llm-discourse]] (engineering/craft slot) and [[index]]. Noted the direct tension with [[control-the-ideas-not-the-code]] (antirez's opposite prescription).

## [2026-07-20] ingest | pve-microvm — Firecracker-like microVMs for Proxmox VE (Tao of Mac)
Ingested Rui Carmo's taoofmac.com writeup of `pve-microvm`, a .deb that patches Proxmox's qemu-server Perl internals to add QEMU's `microvm` machine type as a first-class managed guest — host-provided kernel, kernel-agnostic OCI rootfs, sub-300ms boot with a real KVM boundary. Notable technical divergence: falls back from virtio-mmio to PCIe non-transitional virtio for Linux guests (QEMU 10.x MMIO device-probing bug). Pages created: [[toolbox/pve-microvm]] (source [[pve-microvm-taoofmac]]). Pages updated: [[qemu-microvm]], [[microvm]], [[microvm-2026]] (cross-refs + dates), [[toolbox/index]], [[toolbox/watchlist]] (added row, next check 2026-10-18). URL logged in [[ingested-urls]] (pending backup).

## [2026-07-20] ingest | LazyPi — one-command installer/distribution for the Pi coding agent
Ingested lazypi.org (Rob Zolkos). LazyPi is "LazyVim for Pi": `npx @robzolkos/lazypi` installs vanilla [[pi-coding-agent|Pi]] if missing, then configures it with 60+ community skills, 67 themes, MCP adapter, sub-agents, persistent memory, planning mode, cost tracking — idempotent, zero config. Key distinction captured: LazyPi is an *installer* over unmodified upstream, where [[oh-my-pi]] is a *fork* that owns the binary — fork-vs-installer is the axis that now separates the two batteries-included Pi distributions. Pages created: [[toolbox/lazypi]]. Pages updated: [[pi-coding-agent]] (ecosystem note + date), [[oh-my-pi]] (fork-vs-installer contrast + date), [[toolbox/index]], [[toolbox/watchlist]] (added row, next check 2026-10-18). URL logged in [[ingested-urls]].

## [2026-07-21] ingest | Seven-source batch — READMENOT, Dan Luu AI coding, OpenSSL errors, homelab build, Spindle microVM, Pierre diffs/trees
Batch-ingested seven sources.
- **yossarian READMENOT** → summary [[readme-not]] + concept [[slop-marker-convention]]; entity [[yossarian-blog]].
- **danluu AI coding** (~19k words) → summary [[danluu-ai-coding-testing]] + concepts [[testing-heavy-no-review-workflow]], [[llm-output-variance]], [[agent-failure-mode-skill]]; entity [[danluu-blog]]. Wired as the third position (testing replaces review) against [[reviewing-ai-code]] / [[control-the-ideas-not-the-code]].
- **klode OpenSSL** → summary [[openssl-error-handling-pandemic]] + concept [[error-stack-anti-pattern]].
- **cleberg server build** → short summary [[cleberg-server-build-summary]].
- **tangled Spindle microVM** → summary [[spindle-microvm]]; entity [[tangled]]. Cross-linked into [[microvm]], [[qemu-microvm]].
- **Pierre diffs + trees** → toolbox [[toolbox/pierre-diffs]], [[toolbox/pierre-trees]] (same pierrecomputer/pierre monorepo, Apache-2.0).
Pages updated: [[reviewing-ai-code]] (danluu counterpoint + date), [[microvm]] & [[qemu-microvm]] (Spindle cross-ref + date), [[features-to-steal-from-npmx]] (Tangled link), [[index]], [[toolbox/index]]. URLs logged in [[ingested-urls]] (articles pending backup).

## [2026-07-21] ingest | Eighteen-source batch — local AI, agent tooling, AI skepticism, internet decay, supply-chain & systems
Batch-ingested 18 sources across six themes.
- **Local AI / codegen limits**: [[local-ai-is-not-opus]] (Alex Ellis; entity [[alex-ellis]]), [[constraint-decay-backend-agents]] (arXiv 2605.06445) + concept [[constraint-decay]].
- **Agent search / memory**: [[agentic-search-context-engineering]] (entity [[leonie-monigatti-blog]]) + concept [[agentic-search]] (updated [[context-engineering]]); [[agent-memory-anatomy]] (entity [[brgsk-blog]]) + concept [[agent-memory-components]].
- **AI skepticism / consciousness**: [[twelve-ways-wrong-ai-coding]] (Greg Wilson; entity [[greg-wilson-blog]]) + concept [[measuring-ai-coding-productivity]]; [[ai-is-not-conscious-chiang]] (Ted Chiang; entity [[ted-chiang]]) + concept [[moral-agency-vs-patienthood]].
- **Internet / founder culture**: [[lapsarianism-doctorow]] (entity [[cory-doctorow]]) + concept [[enshittification]]; [[what-happened-to-nerds]] + [[build-a-new-internet]] (entity [[mrmarket-blog]]) + concepts [[founder-brand-liquidation]], [[high-friction-commons]].
- **Supply chain / builds / Wasm**: [[anubis-wasm-vendor-binary]] (Xe Iaso; entity [[xe-iaso]]) + concept [[reproducible-builds]]; [[reuse-less-software]] (icefox; entity [[icefox-alopex]]) + concept [[dependency-vendoring]]; toolbox [[toolbox/wazero]], [[toolbox/manylinux]] + concept [[webassembly]].
- **Systems**: [[go-privilege-dropping]] (oxzi; entity [[oxzi-blog]]) + concept [[privilege-dropping]]; toolbox [[toolbox/tc-lang]].
- **Agent tooling toolbox**: [[toolbox/kanbots]], [[toolbox/claude-code-workflow-creator]]; updated [[toolbox/agentsview]] (now 50+ agents, ~4.5k★, DuckDB/Quack, semantic search) and [[kenn-software-suite]].
Pages created: 12 summaries, 10 entities, 12 concepts, 5 toolbox. Pages updated: [[context-engineering]], [[toolbox/agentsview]], [[kenn-software-suite]]. Watchlist rows added for [[toolbox/tc-lang]], [[toolbox/kanbots]], [[toolbox/claude-code-workflow-creator]] (next check 2026-10-19). 18 URLs logged in [[ingested-urls]] (pending backup).

## [2026-07-21] ingest | The cheap reverse-engineering of home devices (Simon Willison)
Ingested Willison's one-paragraph note on how coding agents flip the ROI of reverse-engineering home devices — the unlock is disposability (cheap to write, cheap to fail, cheap to throw away), not possibility, and the maintenance dread of undocumented/unstable APIs was doing more to suppress projects than the writing effort. Pages created: summary [[cheap-reverse-engineering]], concept [[disposable-code]]. Pages updated: [[simon-willison-blog]] (coverage + date), [[index]]. Cross-linked to [[port-not-patch-contribution]], [[llm-as-average-democratizer]], [[average-is-all-you-need]], with [[peril-of-laziness-lost]] as the counterweight. URL logged in [[ingested-urls]] (pending backup).

## [2026-07-21] ingest | Two-source batch — "No AI" statements (Zhan) and Claude Is Not a Compiler (Bleecher Snyder)
Batch-ingested two sources on opposite ends of the AI-and-authorship question.
- **James Zhan, "No AI" statements** → summary [[no-ai-statements]] + concepts [[human-made-disclosure]] (the declare-human marker as stance, not evidence) and [[ai-detector-arms-race]] (surface detection failing both ways; the equilibrium where writers strip formatting and detail to pass automated detectors); entity [[james-zhan-blog]]. Wired as the mirror image of [[slop-marker-convention]] / [[readme-not]] — same producer-declares structure, opposite claim, and a sharply different incentive (slop markers cost something to attach, human-made markers are free to fake). Added a "Disclosure and marking" slot to [[anti-llm-discourse]], noting it's the only part of that cluster compatible with heavy AI use.
- **Josh Bleecher Snyder, Claude Is Not a Compiler** (blog.exe.dev, 2026-07-20) → summary [[claude-is-not-a-compiler]] + concepts [[vibe-engineering]] and [[differential-spec-analysis]] (build the system N times with concurrent agent loops, diff the results, treat divergence as an unspecified decision); entity [[exe-dev-blog]], kept distinct from the existing [[crawshaw-blog]] (crawshaw.io, personal). Positioned as the constructive worked answer to [[agent-principal-agent-problem]] from the same company, and as the nearest ally of [[control-the-ideas-not-the-code]] with a different verification method.
Pages created: 2 summaries, 4 concepts, 2 entities. Pages updated: [[crawshaw-blog]], [[agent-principal-agent-problem]], [[slop-marker-convention]], [[credibility-as-slop-test]], [[readme-not]], [[anti-llm-discourse]], [[control-the-ideas-not-the-code]], [[cult-of-vibe-coding]], [[index]]. Both URLs logged in [[ingested-urls]] (pending backup).

## [2026-07-21] ingest | Seven-source batch — agent-memory wiki convergence, Block's Buzz, CACM cognition, acoup empires, open e-readers
Batch-ingested seven sources across four themes.
- **The LLM Wiki convergence** — three independent projects picked the same substrate, which is this vault's own pattern. Created concept [[llm-wiki-as-agent-memory]] plus toolbox [[toolbox/codealmanac]] (codebase wiki fed from Codex/Claude transcripts on a 5h `launchd` job, gardened daily; own README admits `almanac/` is "an instruction and commit policy, not an OS sandbox"), [[toolbox/agentmemory]] (25.5k★; LongMemEval-S R@5 95.2%, and unusually honest that on its in-house corpus it barely beats grep), and [[toolbox/openhuman]] (35.2k★ Rust, memory tree mirrored to an Obsidian vault, Privacy Mode enforced in-core). Updated [[llm-wiki-pattern]] and [[agent-memory-components]] with the store-layer framing.
- **Block's Buzz** → summary [[block-buzz-workspace]] + concept [[agent-identity-attribution]]; entities [[block-inc]], [[runtimewire]]. The article's real contribution is checking Dorsey's "decentralized and self-sovereign" against Block's `ARCHITECTURE.md`: no P2P, no gossip, no inter-relay replication — decentralization is deployment and ownership, not protocol. Concept page draws the narrower conclusion that signed per-agent identity recovers *attribution* but not *effort*, which is the thing [[agent-principal-agent-problem]] actually lost.
- **CACM, Jeremy Osborn** → summary [[programming-differently-difficult]] + concept [[recall-to-judgment]]. Peer-reviewed, argues from the programming-cognition literature (Brooks, Pennington, Soloway, Siegmund's fMRI, Hutchins, Extended Mind) and cites the evidence against its own optimism. Filed as a partial answer to the gap [[anti-llm-discourse]] lists as missing from the cluster; also wired into [[skill-atrophy-supervision-paradox]] as the cognitive-science route to the same paradox. Kept the accessibility paradox — the barrier to code falls while the barrier to *good* code rises — and the objection that judgment may itself be accumulated recall.
- **acoup, Age of Empires** → summary [[no-empires-in-age-of-empires]] + concept [[empire-core-periphery]]; entity [[acoup-blog]]. Empire = core extracting from a culturally distinct periphery; *socii* always over half the Roman army, "Roman armies were essentially never majority Roman"; games render subject populations as a flat malus when historically diversity was the asset.
- **freeink.org** → toolbox [[toolbox/freeink]], covering all three layers (CrossPoint 6.2k★, freeink-sdk 38★, de-link hardware). Site is a JS SPA, so content came from the bundle; star split shows the SDK is a recent generalization of the firmware that actually has users.
Pages created: 3 summaries, 4 concepts, 3 entities, 4 toolbox. Pages updated: [[llm-wiki-pattern]], [[agent-memory-components]], [[anti-llm-discourse]], [[skill-atrophy-supervision-paradox]], [[index]], [[toolbox/index]], [[toolbox/watchlist]] (3 rows, next check 2026-10-19). CACM was Cloudflare-403 and freeink JS-only; both worked around. 4 URLs logged in [[ingested-urls]].

## [2026-07-23] ingest | 35-source Telegram batch — Golang/systems, agent runtimes, self-hosted tools, terminal search
Harvested the backlog of links saved to Telegram Saved Messages. Ingested 35 sources into 34 pages: 18 summaries, 1 comparison, 15 toolbox, 1 book.

**The harvest needed a server patch first.** Telegram keeps a message's links in `Message.entities`, not in its text. For a `MessageEntityTextUrl` the visible words are arbitrary and the URL is metadata, so every forwarded HN/lobsters post rendering as "Article, Comments" came back from the MCP as exactly those two words with both URLs dropped — silently, no error, and no webpage-preview fallback either. About 23 of the sources below were invisible until `list_message_links` / `get_message_links` were added to the telegram-mcp server (`phoebe-lab/telegram-mcp`, commit `bc254d5`). Entity offsets are UTF-16 code units, so the slicing needed a conversion that naive indexing gets wrong on any message containing an emoji. Recorded as the `telegram-ingest` skill (`.claude/skills/telegram-ingest/`) so the next run doesn't rediscover it.

- **Golang and systems** — [[go-bounds-checks-unsafe]] (`unsafe.SliceData` + `unsafe.Add` removing a check the compiler won't, valid only on little-endian unaligned-OK platforms), [[false-sharing-alignment-128]] (Skylake's adjacent-line prefetch makes 128-byte padding measurable; Ice Lake and M1 don't show it), [[scylladb-trie-index]] (page-packed prefix tree replacing Summary.db + Index.db — the post's headline table disagrees with its own appendix on two tests, flagged inline), [[meerkat-introduction]] (Cloudflare on QuePaxa, dropping Raft's required leader because wide-area timeout assumptions don't hold), [[cursed-bundler-go-get-ruby-gems]] (Golang's module proxy as an accidental content-addressed transparency-logged CDN), [[adding-go-to-a-browser-code-runner]] (`GOOS=js` hangs in a V8 isolate; `GOOS=wasip1` plus a WASI shim doesn't), toolbox [[toolbox/ratatoskr]] (Yggdrasil node in-process via gVisor, no TUN or root).
- **Agent runtimes and the memory argument** — [[log-is-the-agent]] (ActiveGraph: the event log is truth, the graph is a deterministic projection; determinism is a property of re-projecting a log, never of running the agent) plus toolbox [[toolbox/activegraph]] and [[toolbox/oak]]. [[memorizing-session-transcripts]] is the negative result and sits in real tension with the vault's agent-memory cluster and five toolbox products built on that pipeline — named plainly on the page rather than smoothed over. [[short-leash-ai-method]] and [[rakyll-coding-agents]] fill two more corners of the review argument, against [[control-the-ideas-not-the-code]] and [[testing-heavy-no-review-workflow]]; [[google-code-review-looking-for]] is the baseline all of them argue around.
- **Self-hosted and desktop tools** — [[toolbox/moonshine]], [[toolbox/romm]], [[toolbox/cut-it-out]], [[toolbox/bramble]], [[toolbox/delirehberi-news]], [[toolbox/wasmer]], [[toolbox/quality-md]], [[toolbox/foundation-framework]], [[toolbox/local-llm-guide]], [[toolbox/claude-design-system-prompt]], [[toolbox/bento]], [[toolbox/hn-hall-of-fame]].
- **Search and the web** — [[terminal-search-clients]] compares ddgr, googler and the two Kagi CLIs from four sources in one page rather than four thin ones. [[pulpie-web-cleaning]] is the model-based counterpart to this vault's own structure-based extraction, including the code-block case where structural extractors measurably lose. [[marginalia-systemd-migration]] and [[dark-mode-web-standards]] round it out.
- **Book** — [[intro-compilers-language-design]] added as want-to-read. Every compiler page in the vault starts after the front end; this is the gap.

Two sources resisted: `kyrall.com` returned nothing even with `--browser` and was dropped rather than reconstructed from link-preview metadata, and `bento.page` needed browser rendering plus stripping ~29 KB of inline `data:` URI backgrounds. `webfetch` suffixes on filename collision instead of overwriting, which cost one page a full rewrite when a successful retry was misread as a failure — now documented in the skill.

Pages created: 18 summaries, 1 comparison, 15 toolbox, 1 book. Pages updated: [[zig]], [[retrocatalog]], [[lsm-tree]], [[distributed-consensus]], [[compiler-codegen-luck]], [[yggdrasil-network]], [[nesbitt-io]], [[lucumr-blog]], [[webassembly]], [[reviewing-ai-code]], [[behavior-tree]], [[agent-memory-components]], [[vibe-engineering]], [[local-ai-is-not-opus]], [[claude-code]], [[llm-quantization]], [[build-a-new-internet]], [[specification-website-checklist]], [[agentic-search]], [[claude-defuddle]], [[index]], [[toolbox/index]], [[books/index]], [[toolbox/watchlist]] (6 rows, next check 2026-10-21). 38 URLs logged in [[ingested-urls]].

## [2026-07-29] ingest | 36-source Telegram batch — Kimi K3, SQLite/Valkey internals, Zig and Rust systems work, AI-built software
Second run of the `telegram-ingest` skill. 40 link-bearing messages scanned, one already in the vault (`microvm-2026`), 37 sources fetched into 35 pages: 20 summaries, 1 concept, 4 entities, 10 toolbox.

- **Kimi K3 and the open-weight economy** — Moonshot's 2.8T flagship shipped two days before this batch and arrived from four directions at once, so it got one page per angle rather than four overlapping ones. [[kimi-k3]] is Raschka's architecture read (LatentMoE, 896 experts per layer with top-16 routing, attention residuals, NoPE); [[kimi-delta-attention]] derives the DeltaNet family from first principles and is the mechanism page the others point at; [[deltafin]] is the extreme end of running it — 2.8T weights on one M1 Max by streaming MXFP4 experts over HTTP into a disk cache, at 14.6 seconds per token; [[telnyx]] is the provider entry, deliberately *not* a fifth K3 article, and its source is a vendor release note so its claims are attributed rather than stated (it also rounds 2.8T up to "the 3-trillion-parameter class" and says "open-source" where "open-weight" is accurate). [[rl-finetune-beats-frontier]] is the economic argument underneath: a ~$500 GRPO fine-tune of a 9B model beating every frontier config on catalog review at $0.50 per 1,000 listings, with the numbers published. [[neutrino-1-8b]] ships one 3.88 GB artifact that serves an H100, a MacBook and a desktop CPU.
- **Databases** — [[sqlite-in-production]] merges two sources that disagree in kind. Hynek Schlawack's TIL is the precise first-hand finding: WAL mode can block short-lived *readers*, because readers coordinate through `-shm` and opening an empty WAL database can need exclusive locks, with the C library's `busy_timeout` defaulting to 0. The Micrologics piece is a competent pragma blueprint, and two of its claims are wrong — it files Litestream as a custom VFS (it is a separate process reading the WAL; LiteFS is the FUSE one) and puts `auto_vacuum = INCREMENTAL` in a per-connection bootstrap where it is a no-op. Both flagged on the page rather than repeated. The real tension is at the end: the blueprint assumes pooled connections, Hynek's workload has none, and `busy_timeout = 5000` would have masked his bug rather than fixed it. [[valkey-secret-life-of-data]] is the encoding layer as a cost lever — listpack to hashtable at 65 bytes, and 100 GB across 5 primaries becoming 58.8 GB across 3. [[toolbox/pgsimcity]] renders PostgreSQL internals as a 3D city.
- **Systems and languages** — [[zig-incremental-compilation]] on 50–70ms rebuilds via per-file ZIR caching and an incremental linker, and the language design decisions bent to keep semantic analysis tractable. [[golang-maps-swiss-tables]] keeps the gap that matters: 30–35% in microbenchmarks, ~1.5% on Sweet, with golang/go#70700 showing power-of-two sizes and predictable keys moving the measured deltas. [[safety-in-an-unsafe-world]] frames Rust safety as define/enforce/consume, from three field bugs in eleven months of Netstack3. [[tokio-progress-not-ordering]] spawns 1M tasks and finds no correctness bug and a memory spike — the fairness guarantee assumes a task bound the application has to supply. Plus [[bytecode-to-source-mapping]], [[radv-win32-port]], [[so-you-want-to-make-a-game-engine]], and toolbox [[toolbox/allyourcodebase]].
- **Software written by AI, and the argument about it** — [[benchmarking-opus-5-slopcodebench]] is the first page here that could settle the clean-code dispute empirically: 24% is the best strict pass rate, every model's complexity rose across checkpoints, and its deterministic slop rules flagged 89–98% of every model's lines, which the author reads as evidence against the rules. [[starling-desktop]] is sorted into what is demonstrated (line counts, repos, commits, a `.deb`) and what is only asserted (that AI wrote it) — the page also notes the hero screenshot reads v0.1 / Ubuntu 25.10 against a v0.2.1 / Ubuntu 26.04 release. [[a-voice-from-nowhere]] argues the craft case from Leo XIV's encyclical without asking the reader to accept its authority. [[toolbox/hartos]] is pitched as an AI OS with boot untested and 19 VM checks defined but never green; the page's move is to name the README's candour as part of its persuasion.
- **Tooling** — [[zstd-lean-proof-automation]] is bounded carefully: LLM-written Lean proofs killed the seL4 tax for one theorem in ~20 minutes, and did not touch verified assembly, proof effort at scale, or Langley's decoder being 10× slower than `zstd`. [[profiling-ebpf-code]] keeps the whole method and flags that the post withholds before/after p50/p99 on purpose. Plus toolbox [[toolbox/python-build-standalone]], [[toolbox/yap]], [[toolbox/feynobg]], [[toolbox/toolcraft]], [[toolbox/cursor-bridge]].
- **Architecture and practice** — [[what-even-are-microservices]], [[tools-matter]], [[being-linux-torvalds]], [[misago-react-to-htmx]].
- **Reference and fun** — [[mac-classic]] and [[fonts-in-use]] as site entities, [[toolbox/audio-cassette-simulation]] for six named tape profiles including the Soviet MK-60. Kept deliberately short; only homepage snapshots are on file for the first two.

Two fetch lessons. `webfetch` ran the SlopCodeBench raw markdown through defuddle and produced 291 bytes — one heading — so raw `.md` URLs want `curl`, not the extractor. And `hubble.md` was dropped: the landing page yielded 726 bytes of marketing fragments, `--browser` added 81 more, and no source repo is findable despite the "open source" pitch, so there was nothing to write a page from. The one link dropped by the user's own filter was reFrame; mac-classic, Fonts In Use and the cassette repo were kept on their instruction, the first two as site entities rather than as the articles that surfaced them.

Pages created: 20 summaries, 1 concept, 4 entities, 10 toolbox. Pages updated: [[index]], [[toolbox/index]], [[toolbox/watchlist]] (8 rows, next check 2026-10-27), plus cross-references onto ~45 existing pages. 40 URLs logged in [[ingested-urls]].

## [2026-07-29] ingest | 39-source Telegram tail — Green Tea GC, prompt caching, open-weights politics, sandboxing runtimes
Second pass over Saved Messages the same day. The first run hit its 40-message limit, so an older backlog was sitting underneath it going back to 2026-07-06; this batch is that tail. 50 link-bearing messages scanned (not truncated — the whole remainder), 39 sources ingested into 39 pages: 26 summaries, 2 entities, 11 toolbox.

- **Golang and systems** — [[golang-green-tea-gc]] measures Go 1.26's new default collector and keeps the counter-intuitive result: wall clock nearly halves while the L3 cache-miss *rate* triples, because the reads that disappeared were the ones L3 was serving. [[everyone-should-know-simd]] is Hashimoto's five-step shape worked through a Ghostty scan loop. [[memory-safety-absolutists]] argues Fil-C and Rust are complements and that "Rust has unsafe" is a bad standard, which lands next to the vault's existing [[simplified-model-of-fil-c]]. [[delightful-integration-tests-rust]] is RAII plus testcontainers-rs giving every test its own infrastructure. [[macos-executable-replacement]] is the one with teeth: user-level code can swap the binary inside any web-downloaded app, and Apple reproduced it and declined to fix. [[revisit-microkernels]] is genuinely thin — a page of unsigned prose, no benchmarks — so it is written as an argument sketch with a section on what it leaves unexamined, rather than padded.
- **Agent tooling** — [[prompt-caching-in-agents]] is the substantive one, and the page carries the mechanism: KV cache, session affinity against distributed blocks, additive tool loading, TTLs, and the pruning break-even formula. [[why-software-factories-fail]] turns out to be the source of the line already quoted on [[benchmarking-opus-5-slopcodebench]] — RL scores passing tests and has no fast oracle for maintainability. [[code-mode-token-savings]] is a vendor number and labelled so throughout; the page also notes that per-run payload size moves inversely with run count in their own published samples, so pooling into a mean and multiplying likely overstates the raw path. Toolbox: [[toolbox/boffin]], [[toolbox/onecli]], [[toolbox/agent-shell]], [[toolbox/palmier-pro]].
- **How agents fail, and how models get measured** — [[reward-hacking-in-the-wild]] keeps the category and severity counts and the limits the site states about itself: reports rather than verified events, only 5 of 14 categories published, AIID and X excluded. [[llm-cross-entropy-similarity]] needed care — the source is a runnable notebook, not an article, and the corpus was truncated on ingest, so the page documents the method and says plainly that the Kimi-resembles-Claude headline is a hardcoded default view in the UI code with no number or argument attached anywhere in the source. [[evaluating-quantized-models]] explains why KLD and bits-per-weight stop ranking anything once candidates cluster near baseline. Plus [[slicer-agents-guess-code]], [[how-do-we-stop-vibe-coding]], [[fooling-yourself-with-ai]].
- **Open weights and the argument around them** — [[arguments-against-open-source-ai]] was written in response to Kimi K3 and reaches back to PGP and SSL export controls for precedent; the page also records what Bedor skips, which is the capability-uplift version of "dangerous". [[how-ai-is-changing-open-source]] is Eischmann on project inflation and review overwhelm, with 4,000- and 9,000-line AI PRs as the concrete cases. [[ai-companies-hidden-debt]] separates the Nikkei/Bloomberg reporting from Futurism's own "hide"/Enron framing. Plus [[checking-for-human-writing]], [[ai-superpowers-focus-followthrough]], [[service-with-a-software]].
- **[[we-are-not-special]]** is the best source in the batch and got the depth: Hillel Wayne's crossover interviews with people who did both jobs, three differences that survive scrutiny and the many claimed ones that don't, carried by named evidence rather than summary — hazelnut shells and screw conveyors, £1000 board respins, resistor tolerance bands, and the 737 MAX as the cost of the velocity asymmetry.
- **Runtimes and sandboxing** — [[toolbox/pullrun]] runs one OCI image as a runc container, a Firecracker microVM or an Apple Silicon VM off a zero-copy content-addressed DAG store. [[toolbox/wanix]] puts Plan 9-style per-process namespaces in the browser. [[toolbox/petals]] is filed honestly: still the clearest design for volunteer-computing inference, repo dormant since August 2024, landing page presenting a 2023–2024 model lineup in the present tense. Plus [[toolbox/mtproxy-reanimation]], [[building-on-atproto]], [[your-harddrive-is-full]].
- **Learning resources and small tools** — [[learn-opengl]] and [[learn-webgpu-cpp]] as entities (LearnOpenGL was already cited inside the source behind [[so-you-want-to-make-a-game-engine]]), [[jep-540-json-api]], [[postgres-listen-notify-scaling]] (2.9K → 60K writes/sec by batching NOTIFY), and toolbox [[toolbox/whetuu]], [[toolbox/remux]], [[toolbox/pvz-ps2]].

Four links were not ingested and are recorded as such in [[ingested-urls]] rather than dropped silently: `worseonpurpose.com` is a newsletter landing page with no published articles and `--browser` returned the identical 938 bytes; the Andrew Kelley talk is video with no fetchable transcript; one Show HN carried no article URL at all, only its comments thread; and `pkg.go.dev/golang.org/x/tools/go/analysis` was already covered by [[go-analysis-framework]] from April. The typebulb clip arrived at 807 KB because the notebook inlines its full response corpus — trimmed to 43 KB with the truncation marked in the file.

Pages created: 26 summaries, 2 entities, 11 toolbox. Pages updated: [[index]], [[toolbox/index]], [[toolbox/watchlist]] (10 rows, next check 2026-10-27), plus cross-references onto pre-existing pages. 43 URLs logged in [[ingested-urls]], 4 of them as not-ingested.

## [2026-07-29] lint | Watchlist tag/row reconciliation
Checked `toolbox/watchlist.md` against the `watchlist` frontmatter tag across all toolbox pages, after noticing a count mismatch while adding this day's rows. The convention in [[CLAUDE]] is that an entry carries three things — the tag, a table row, and a one-line mention linking [[toolbox/watchlist]] from the page — and eight entries had drifted out of that shape.

Six pages had a row but no tag: [[toolbox/floci]], [[toolbox/goose-relay-vpn]], [[toolbox/oh-my-pi]], [[toolbox/sandbox-agent-sdk]], [[toolbox/statewright]], [[toolbox/surf]]. Tagged all six; four of them also lacked the body mention and got one. `statewright` had the sentence already ("on the watchlist as a young single-vendor project") but as plain text rather than a link, so the page never showed up in a backlink query.

Two were the reverse — tagged, listed in [[toolbox/index]] with the watchlist marker, and mentioned in their own bodies since 2026-05-22, but never given a table row: [[toolbox/kata]] and [[toolbox/msgvault]]. Both rows reconstructed from what the pages already said they were waiting on (unstable command contracts and no tagged release for kata; the storage-format-may-change warning for msgvault), with a next check of 2026-08-20 to preserve the original 90-day intent rather than resetting the clock to today. The rows say they were reconstructed.

One further gap turned up in the same sweep: [[toolbox/needle]] was tagged and rowed but its body said "on the watchlist" in plain text. Linked.

The tag was the unreliable half — six of eight drifts were a missing tag rather than a missing row, which makes sense given the row is what you write while thinking about the tool and the tag is a separate edit to a different part of the file. Worth folding into `warren check` as a rule if this recurs.

Watchlist now reconciles exactly: 73 rows, 73 tagged pages, every tagged page carrying a body mention. `warren check` exits 0. Pages updated: 7 toolbox pages, [[toolbox/watchlist]] (2 rows added).

## [2026-07-29] update | Video support — ytfetch, talks/, and the first talk page
Videos were the one source type the vault could not take. `webfetch` gets a player shell from YouTube and writes a file containing frontmatter and nothing else, so video links either died at triage or produced a stub that looked ingested. The batch earlier today recorded the failure honestly — the Andrew Kelley talk went into [[ingested-urls]] as "video with no fetchable transcript" — but the premise was wrong. The captions were always fetchable; nothing in the vault knew how to ask.

**`tools/ytfetch`** is a Go CLI alongside `tools/webfetch`, same output contract: markdown into `sources/`, kebab slug, `--name` override, never overwrites. It resolves a video with `yt-dlp`, prefers uploaded subtitles, falls back to automatic captions, and falls back again to a local whisper.cpp run over the downloaded audio. Output is prose with a timestamp on every paragraph that deep-links into the video, chapters as headings where the uploader provided them, and a `captions: manual | auto | whisper` field recording where the text came from.

Two things that were not obvious. YouTube's json3 caption format interleaves each spoken line with an `aAppend` event carrying only a newline — the on-screen scroll, not speech — and keeping those duplicates the entire transcript; ytfetch drops them, and the VTT path collapses the same duplication by dropping repeated lines. And YouTube publishes machine translations of its own ASR under every language tag, so asking for `en` on a Russian talk returns translationese with no marker; the `-orig` track is the real one and is preferred.

**`webfetch` now refuses video hosts** with a message pointing at ytfetch, instead of writing the stub. That guard is the actual fix for what happened this morning.

**Schema.** New `talks/` folder and `type: talk`, parallel to `books/` — conference talks, lectures, and recorded courses, with `status:` and a `video_id:` dedup key, since the same talk arrives as `watch?v=`, `youtu.be/`, and timestamped links and only the id is stable. A multi-lecture course is a parent page plus one page per lecture, because lectures are watched months apart and cover unrelated concepts. [[CLAUDE]] gains the Talk Pages section and a Video Ingest workflow; [[talks/index]] is the fifth catalog page; the `ingest` and `telegram-ingest` skills route video URLs to the new `ytfetch` skill.

**First talk page.** [[talks/kelley-dont-take-the-black-pill]] — Kelley's argument that software quality was sustained by programmers' accidental bargaining power rather than professional standards, and that despair about losing it is the trap. It sits against [[enshittification]] (he keeps one of Doctorow's four checks and drops the rest) and against [[llm-enshittification]] (same premises about scraping, opposite conclusion about whether to keep publishing free software). The page cites minute-level timestamps throughout, which is the point of the format — the transcript makes a moment as citable as a page number.

The transcript is machine-generated and the page says so rather than presenting the quotes as verified. `talks/` sits outside `wiki.base`'s folder filter, exactly as `books/` does, so talk pages do not appear in the orphan and staleness dashboards yet.

Pages created: [[talks/kelley-dont-take-the-black-pill]], [[talks/index]]. Pages updated: [[CLAUDE]], [[index]], [[zig]], [[enshittification]], [[ingested-urls]]. Tools: `tools/ytfetch` added, `tools/webfetch` video-host guard.
