28 entries · append-only

log

refactor

Audit round 3: dedup site styles, single-read lint, doc consolidation

  • Single-sourced the category key: new --category-{concept,entity,source,note} tokens in color.css plus a shared category-dot.css rule now feed the backlink chips, the graph legend, and the graph canvas (which resolves the same variable names through its probe node) — three hand-synced copies of the same four colors collapsed to one, with TYPE_BY_CATEGORY exported from contract.ts so the legend derives from the contract instead of hardcoding it.
  • Extracted entry-list.css from the category listings and the per-tag pages, which carried ~45 lines of byte-identical CSS; each page now keeps only its own deltas (tag pages’ ellipsis clipping, the entity source-count and letter-group rules).
  • Unified the two listing branches in [category]/index.astro behind a single group shape (an ungrouped listing is one unlabelled group). Fixes a latent bug: the letter-grouped branch omitted entry-count, so entity (sources: N) badges would have silently vanished had Entities ever passed 24 pages.
  • wiki_lint.py now reads each page once — frontmatter and [[links]] are parsed at collection time and carried on Page — instead of re-opening every file in four separate checks. Measured on this repo: 330 file reads → 82, 4–5 reads per page → 1. No behavior change; 59 Python tests still pass.
  • Removed dead code: skeleton.css (18 lines, unreferenced, describing Music/Movies/Mastodon feeds this repo doesn’t have), an unused Node type re-export in remark-wiki-links.ts, and the unused --primary / --primary-foreground / --destructive / --red-9 / --red-11 / --aspect-video tokens. The gray/space/radius/blur scales were left whole on purpose — a scale is a system, not a per-use token.
  • Docs: the lint check catalog lived in five places (script docstring, scripts/README.md table, CLAUDE.md Lint Layer 1, CLAUDE.md Ingest step 9, root README). The scripts/README.md table is now canonical and the other four point at it; CLAUDE.md shed ~1.1K chars with no loss of workflow instruction.
  • Verified: wiki_lint clean, 59 Python tests, 45 Bun tests, astro check 0 errors, 214 pages built (unchanged), Biome clean. Listing/legend/backlink rendering checked against computed styles in a real browser — pixel-identical.
  • pages touched: none (site + scripts + docs only).
refactor

Audit round 2: literal-code guard, strict MIME, dev-fresh snapshot

  • rehost_images.py now treats image syntax inside fenced code blocks, inline code, and HTML comments as literal text: a shared protected-span pass (line-based fence tracking, then inline/comment scan over fence-masked text) gates both the URL scanner and the rewriter, so protected occurrences are neither downloaded nor rewritten.
  • Content-Type is authoritative in rehost_images.py: a declared non-image type (e.g. text/html on a .png URL) is rejected outright; the URL-suffix fallback applies only when the server declares nothing useful (missing or octet-stream).
  • Garden snapshot memo is now production-only; astro dev rebuilds per request. Verified against the audit repro: edit index.md → the next /search.json response reflects it without a restart; site/README.md dev caveat rewritten (content edits reload live; only brand-new pages still need a restart).
  • Tests: Python 43 → 59 (protected-region matrix, _ext_for matrix, masquerading-HTML and missing-content-type fetch cases); Bun 45, astro check 0 errors, build 214 pages — all green.
  • pages touched: none (scripts + site infrastructure only).
refactor

Contract-driven lint + hardened rehoster + index cleanup (audit follow-up)

  • Added garden.config.json — root-level contract for categories (slug + type), search order, wiki-link grammar (incl. table-escaped [[slug\|alias]]), raw filename grammar, and the 100-char index summary budget; consumed by scripts/wiki_lint.py at runtime and site/src/lib/contract.ts at build time (six previously drifting definition sites collapsed to one).
  • Rewrote wiki_lint.py as a contract validator: exits 1 on findings (--report-only keeps exit 0), sees escaped-pipe links, flags cross-category duplicate slugs, and newly checks index format / section membership / alphabetical order / summary length / entity (sources: N) counts, frontmatter type-vs-category, and raw-file naming; 28 stdlib unit tests plus a Python↔TS link-grammar consistency corpus (tests/link-grammar.json).
  • Hardened rehost_images.py: URL rewrites now happen inside image nodes only (a plain link to the same URL stays untouched); downloads follow redirects manually with per-hop public-IP validation, reject non-image content-types before reading the body, and stream under a 25 MiB cap with timeouts; 15 mock-transport unit tests.
  • index.md cleanup driven by the new lint: 3 Concepts sort inversions fixed; all 52 over-budget summaries rewritten to ≤ 100 chars; claude-code count corrected 4 → 5; openai count 7 made verifiable by linking the entity at first mention in the two source pages that only named it in prose.
  • Site: garden data layer now builds one memoized snapshot per build (pages + link graph + canvas/search datasets) instead of re-deriving per route; pure modules link-graph.ts / index-summaries.ts extracted; buildSlugMap throws on duplicate slugs; 32 new bun tests (45 total).
  • raw/ narrowed to markdown-only in CLAUDE.md (was: PDFs/images allowed that the site couldn’t render); enforced by the lint’s raw-naming check.
  • CI: wiki_lint gates via exit code (grep hack removed), Python tests run under uv, actions pinned by SHA, Bun pinned via .bun-version.
  • pages touched: 2026-04-27-agent-principles-architecture-engineering, 2026-06-04-llm-powered-autonomous-agents
refactor

Canonicalize source→raw pointers; site derives the link from the slug

  • Problem surfaced by the human: 2026-07-07-harness-engineering-self-improvement wrote its raw pointer as bare inline code (Raw file: ...) instead of the linked form the other 10 source pages use, so the site’s relative-raw-link rewrite never fired and the page rendered with no route to /raw/.
  • Fixed the page to the canonical form: Source file: [`raw/<slug>.md`](../../raw/<slug>.md).; updated: bumped.
  • Site hardening so the affordance no longer depends on prose format: /sources/<slug> pages now always render an “Ingested copy” link in the header callout, derived from the source page and raw file sharing a slug (mirror of the existing reverse pointer on /raw/<slug>). All 11 source pages verified carrying it in the built output.
  • Documented the canonical Source file: line in CLAUDE.md (Ingest step 5) and the slug-derived callout in site/README.md.
  • Verification: wiki_lint.py clean; site bun test 13 pass, astro check 0 errors, build 214 pages.
  • pages touched: 2026-07-07-harness-engineering-self-improvement
query

"New understanding of Harness after the RSI survey + recent ingests?"

  • Synthesized the harness thread across the Jul 2026 ingests: Weng RSI survey (Jul 7) + first-party vendor batch (Jul 12: Codex Windows sandbox, loop engineering, model & effort level).
  • Added Postscript 2 (2026-07-18): from thesis to product surface to harness-why-it-matters-now; intro reframed (6-of-11 sources, two postscripts); Postscript 1 retitled with its date.
  • New claims filed: four-part frame now has a shipped primitive per row; cost/token budget as a harness dimension the Q1–Q2 sources lacked; effort dial as early internalization evidence (marked inference); Weng’s evaluator-outside-the-loop prescription already shipped as sandbox write carve-outs.
  • Tracker updates recorded: cross-domain portability moved partially; 10×/6× decompositions and the counter-example still missing; new watch item — /goal’s unspecified evaluator model as a reward-hacking surface.
  • index.md note summary refreshed; wiki_lint.py clean.
  • pages touched: harness-why-it-matters-now
refactor

Source-title cleanup + mobile nav tweak

refactor

Site refinements

  • Site round-2 polish per human review: production URL set to wiki.lkwplus.com; title/subtitle/footer reworded as “a naive frontend for the LLM Wiki”; source pages surface the original-article link as a callout above the prose (header separator-underline glitch fixed); backlinks redesigned as type-keyed chips; homepage stats restyled after lkwplus.com/tokens “All-time patterns”; astro-erudite credited in the footer and site/README.md.
refactor

Static site frontend (site/) + repo hardening

  • Added site/ — an Astro + Bun static frontend rendering the garden read-only. Wiki links ([[slug]], [[slug|alias]], table-escaped [[slug\|alias]]) resolved by a custom remark plugin matching wiki_lint.py’s grammar; backlinks computed and shown on every page; index.md one-liners reused verbatim for listings, the ⌘K search palette and hover previews; log.md parsed into an activity timeline (also the RSS feed); math rendered to MathML via Temml; force-directed canvas graph of all pages and links. Design tokens mirror lkwplus.com (Radix gray light-dark() scale, Geist fonts, Utopia scales, 1px-border surfaces).
  • Site is a display layer only: it owns no content and normal Ingest/Query/Lint never touches it. Documented in site/README.md; coupling points recorded in CLAUDE.md (Layout section).
  • Rehosted the one remaining third-party image URL in raw/ (2026-04-27-harness-engineering-codex-agent-first.md, Contentful → R2, 4ba6c70266181619.webp); the original ingest had reported “1 image rehosted” while this second one slipped through. All 115 image references in raw/ now point at R2.
  • Added .github/workflows/ci.yml: wiki lint (non-clean report fails) + site format/test/check/build under Bun.
  • Updated README.md (Site + CI sections) and CLAUDE.md (site/ layer in Layout).
  • pages touched: none (wiki content untouched; raw/ byte-change limited to the sanctioned image-URL rewrite).
ingest

Anthropic — Loop engineering + Model & effort level (2 sources)

  • Ingested raw/2026-07-12-loop-engineering-getting-started.md (Delba de Oliveira & Michael Segner, claude.com blog, Jun 30 2026) and raw/2026-07-12-claude-model-effort-level.md (Lydia Hallie, claude.com blog, Jul 7 2026). The two posts cross-reference each other; ingested together.
  • Renamed both from dropped filenames; frontmatter curated (authors filled from bylines, tags replaced, descriptions rewritten).
  • Markdown fixes at intake (human-requested format repair): loop post — 8 escaped-backtick spans (\ + backtick artifacts) unescaped to real inline code; effort post — “andresults” typo split, missing ## restored on the “Fable vs. Opus vs. Sonnet” heading.
  • 13 images rehosted to R2 (3 + 10), 0 failed; all read. Diagram-only evidence captured: turn-based loop exits “or the effort budget runs out”; /goal evaluator-model cycle; proactive-loop cloud composition (schedule → goal+check → PR → second-agent review → human merges); ~400 vs ~2,800 token low/high-effort comparison; raise-effort-vs-switch-model decision tree; converging/diverging quality-vs-tokens curves.
  • Created 2 source pages: 2026-07-12-loop-engineering-getting-started, 2026-07-12-claude-model-effort-level.
  • Created 2 concept pages: loop-engineering (four-type taxonomy, hand-off ladder, mapping onto existing loop pages), model-and-effort-selection (two dials, failure-triage heuristic, token economics).
  • Updated 8 existing pages: claude-code (loop primitives section + two-dials bullet; sources 2→4), anthropic (first-party operating guidance + model lineup; sources 3→5), agent-loop (loop-engineering added to named variants), verifier-loop (verification skills + /goal as productized verifiers), ralph-wiggum-loop (Anthropic’s fresh-context-reviewer corroboration), reasoning-models (effort as the user-facing dial over trained budget allocation), claude-skills (verification-skill archetype + scripts-for-deterministic-work), context-engineering (steering-not-teaching mechanism paragraph).
  • Back-scan: no existing open questions resolved by these posts (the mid-session model-switch cost example on 2026-04-27-claude-code-architecture-governance-engineering remains open — the effort post covers switching guidance but no numbers).
  • New open questions flagged: /goal’s evaluator model unspecified (graded channel → reward-hacking surface); “effort budget runs out” in the loop diagram vs “effort shapes but doesn’t cap” in the effort post — same mechanism or not; effort-level enumeration (low/medium/high/max) and per-model defaults not in the body.
  • index.md: 4 new entries; refreshed 8 summaries. wiki_lint.py clean on first run.
  • No contradictions surfaced between the two posts and the existing wiki; the diagram-vs-prose “effort budget” tension is noted as an open question, not a contradiction.
  • pages touched: 2026-07-12-loop-engineering-getting-started, 2026-07-12-claude-model-effort-level, loop-engineering, model-and-effort-selection, claude-code, anthropic, agent-loop, verifier-loop, ralph-wiggum-loop, reasoning-models, claude-skills, context-engineering, index.md.
ingest

OpenAI — Building the Codex Windows sandbox

  • Ingested raw/2026-07-12-codex-windows-sandbox-engineering.md (David Wiesen, OpenAI engineering blog, May 2026; Chinese translation of the English original). Renamed from the dropped filename; frontmatter curated (author/published filled, tags replaced, description kept).
  • Markdown fixes at intake (allowed mutations only + human-requested format repair): 3 broken nested-list indentations, 1 broken inline-code span ([Everyone, Logon, Synthetic]), removed trailing “Keep reading” navigation fragments left by the clipper.
  • 7 diagrams rehosted to R2 via uv run --with boto3 --with httpx --with python-dotenv; all 7 read (rendered SVG→PNG locally via ImageMagick). Diagram-only evidence captured: named-pipe JSON IPC protocol and sandbox control plane paths (~/.codex/.sandbox, .sandbox-secrets, cap_sid).
  • Verified key claims against the English original (fetched from openai.com) — translation is faithful.
  • Created source page: 2026-07-12-codex-windows-sandbox-engineering.
  • Created concept page: agent-sandboxing — sandbox as OS-enforced execution boundary; per-OS primitives table; design axes from the Windows case.
  • Updated 4 pages: codex (new The sandbox (shipped product surface) section; sources 2→3), openai (third OpenAI-authored source listed; sources 6→7), harness (execution-boundary row + relation entry now link agent-sandboxing), prompt-injection (sandbox as OS-enforced sink-cutting; env-var suppression as cautionary case).
  • Back-scan: marked the internal-vs-external Codex open question on codex partially resolved (this is the first shipped-surface source).
  • index.md: 2 new entries; refreshed codex, openai, prompt-injection summaries.
  • No contradictions surfaced.
  • pages touched: 2026-07-12-codex-windows-sandbox-engineering, agent-sandboxing, codex, openai, harness, prompt-injection, index.md.
refactor

Lint-fix pass + schema upgrades (per lint entry above)

lint

Full health-check (Layer 1 + Layer 2)

ingest

Lilian Weng — Harness Engineering for Self-Improvement

  • Ingested raw/2026-07-07-harness-engineering-self-improvement.md (Lil’Log, Jul 2026). Comprehensive survey on harness engineering as the near-term path to recursive self-improvement.
  • Created source page: 2026-07-07-harness-engineering-self-improvement.
  • Created 3 new concept pages: recursive-self-improvement, evolutionary-search-llm, self-improving-harness.
  • Updated 6 existing pages: harness (RSI substrate + coding-agent harness convergence), meta-harness (algorithm pseudocode + RSI placement), context-engineering (ACE + MCE sections), reward-hacking (self-improvement loop concerns), lilian-weng (second source), agent-loop (loop as optimization target).
  • Updated index.md with new pages + updated entity summary.
  • Image rehosting: 17 images rehosted to R2 via uv run --project scripts; 0 failed.
  • wiki_lint.py passed clean.
  • No contradictions surfaced; the new source extends and formalizes concepts already present in the wiki (harness, meta-harness, context-engineering) rather than contradicting them.
refactor

Drop (sources: N) from Concepts in index.md (align with schema)

  • Resolves the schema-vs-file drift flagged in the ingest entry above. CLAUDE.md specifies the (sources: N) suffix is entity-only; index.md had drifted to carry it on every concept line. Stripped it from all 44 Concepts lines; the 14 Entities lines keep it.
  • Decision made in the PR #7 review thread: align the file to the schema (drop from concepts) rather than loosen CLAUDE.md. CLAUDE.md unchanged — it already says entity-only.
  • Pages touched: index.md.
refactor

R2 rehost succeeded — supersedes the "rehosting FAILED" note in the ingest entry above

  • Correction to the ingest entry above. The R2 403 Forbidden was a token-permission/bucket issue on the configured .env. After the human fixed it, uv run rehost_images.py ../raw/2026-06-04-llm-powered-autonomous-agents.md --env ../.env rehosted all 13 images successfully (13 rehosted, 0 skipped, 0 failed).
  • The raw file’s image embeds now resolve to obsidian-r2.lkwplus.com/digital-garden/<digest>.png; 0 ![](...) embeds remain on lilianweng.github.io. The residual lilianweng.github.io strings in the file are prose cross-links + the citation block — not images, not rehosted by design.
  • This supersedes the prior entry’s “R2 rehosting FAILED” paragraph and its closing “images NOT rehosted — R2 403” note. Per the never-rewrite-history rule the prior entry is left intact. (Surfaced by the PR #7 review.)
  • Also in this PR: the human reformatted the GPT-Engineer code-writing system-prompt block in the raw body into a single fenced text block (a markdown-rendering fix for a broken nested lang fence). This means the ingest entry’s “body byte-identical” claim held at ingest time but no longer describes the current file — noted here so the discrepancy isn’t mistaken for an error.
  • Pages touched: raw/2026-06-04-llm-powered-autonomous-agents.md (13 images rehosted; system-prompt code-fence fix).
ingest

Lilian Weng's "LLM Powered Autonomous Agents"

  • Source: Lilian Weng, LLM Powered Autonomous Agents (https://lilianweng.github.io/posts/2023-06-23-agent/, published 2023-06-23). The canonical 2023 survey defining the agent anatomy LLM brain + Planning + Memory + Tool use. Treated as the wiki’s conceptual ancestor — most agent vocabulary in the 2026 sources traces back here. Oldest source ingested so far (2023 vs. the 2025–2026 cluster).
  • Pre-ingest prep: dropped at repo root LLM Powered Autonomous Agents.md, untracked. Plain mv (not git mv) into raw/2026-06-04-llm-powered-autonomous-agents.md (date = ingest date, today). Curated frontmatter: replaced tags: ["clippings"] with 6 topical tags (llm-agent, planning, memory, tool-use, react, self-reflection); replaced the clipper’s ~1500-char description: (first-paragraph dump, with stray tabs + curly quotes) with a 150-char English one-sentence summary of what the source is about. Body left byte-identical (verified by a frontmatter-only rewrite that asserted the post-fence bytes were unchanged).
  • R2 rehosting FAILED — flagged to human. scripts/rehost_images.py --keep-local .tmp-imgs/ downloaded all 13 images from lilianweng.github.io fine, but every R2 upload hit 403 Forbidden on HeadObject — a credential/permission/bucket problem on the configured R2 token, not a network issue. Consequence: the raw/ file’s image URLs still point at lilianweng.github.io (not rewritten to R2). Local copies were written before the failing S3 call, so image-reading was unaffected. Needs: fix .env R2 token perms (Object Read/Write on the bucket) + R2_BUCKET name, then re-run the (idempotent) rehoster. Also: the project’s scripts run under uv, which wasn’t installed; PEP 668 blocked system pip, so a scripts/.venv was created with the three deps (httpx, boto3, python-dotenv) to run the rehoster.
  • Image-reading: all 13 figures viewed and identified by content digest. Two are load-bearing for new pages — agent-overview.png (the four-spoke anatomy: Agent → Tools/Action/Memory/Planning, with Planning = Reflection/Self-critics/Chain-of-thoughts/Subgoal-decomposition) and memory.png (the human-memory taxonomy tree). Others confirmed details: reflexion.png (ReAct band + Reflect band w/ heuristic h), algorithm-distillation.png (cross-episode histories → causal transformer), generative-agents.png (Perceive→Memory Stream→Retrieve→Plan/Reflect→Act), hugging-gpt.png (4-stage controller loop), mips.png (ScaNN leads the recall@10/speed Pareto front), api-bank-process.png (search→call→refine pseudocode). sea-otter.png decorative (skipped for content).
  • Editorial decisions, surfaced to the human first via a structured question (CLAUDE.md step 3): rich new-page scope chosen (6 concept pages) over lean/minimal; POC systems mentioned only (no entity pages for AutoGPT / BabyAGI / GPT-Engineer / Generative Agents / HuggingGPT / ChemCrow — discussed on the source + tool-use / llm-agent instead). Framing emphasis agreed: present the 2023 → 2026 lineage, not an isolated summary.
  • Created 1 source page; 1 entity (lilian-weng); 6 concepts (llm-agent the anatomy hub, chain-of-thought, task-decomposition, self-reflection, tool-use, maximum-inner-product-search).
  • Updated 8 existing pages with ancestor cross-links / new sections: agent-memory (new Lineage — the 2023 human-memory taxonomy table: the 2026 four-types frame = Weng’s human taxonomy minus sensory, re-applied to file-backed storage; vector-store default is the assumption 2026 pushed back on); react (Weng’s survey noted as earliest catalog of ReAct, filed under self-reflection; “Not chain-of-thought” now links chain-of-thought); agent-loop (Thought/Action/Observation provenance; llm-agent backlink); reasoning-models (CoT-as-prompting-trick now links chain-of-thought; cross-link added); agent-evaluation (new Early precedent — LLM-as-judge fails in expert domains (2023) section: ChemCrow + API-Bank’s three levels); agent-computer-interface (named as engineered descendant of tool-use / MRKL’s “knowing when & how”); chroma (MIPS substrate cross-link; prune_chunks framed as answering what to retrieve vs. 2023’s how fast); openai (sources 5 → 6; ChatGPT Plugins / function calling as the productized tool-use form).
  • Cross-linking density check: all 7 new pages have inbound links from ≥1 non-index wiki page (most from 4–6); no orphan risk. llm-agent is the hub, inbound from the source + all 5 sibling concepts + agent-loop + agent-memory.
  • wiki_lint.py: run after edits — see final report; fixed any findings, re-ran to clean.
  • Editorial note (not auto-fixed): the index carries (sources: N) suffixes on concept lines, which CLAUDE.md says are entity-only. Pre-existing drift across all ~38 concepts. Matched the file convention for the 6 new concepts (each sources: 1) to keep the index internally uniform; flagged the schema-vs-file mismatch for a human decision rather than silently mass-editing.
  • Pages touched: 2026-06-04-llm-powered-autonomous-agents, lilian-weng, llm-agent, chain-of-thought, task-decomposition, self-reflection, tool-use, maximum-inner-product-search, agent-memory, react, agent-loop, reasoning-models, agent-evaluation, agent-computer-interface, chroma, openai, index.md. Plus raw/2026-06-04-llm-powered-autonomous-agents.md (rename, frontmatter; images NOT rehosted — R2 403, see above).
  • New open follow-ups flagged: which of the article’s three “challenges” (finite context, long-term planning, NL-interface reliability) were solved vs. deferred by 2026? (2026-06-04-llm-powered-autonomous-agents); is the self-reflection → ralph-wiggum-loop/verifier-loop lineage direct or convergent? (self-reflection); Boiko et al.’s bioweapon red-team is an early agent-misuse eval with no dedicated wiki thread yet — candidate page if more sources land; lilian-weng OpenAI/Thinking-Machines affiliation is background, not established by this source — wants a primary ingest before stated as fact.
query

"What is Harness and why is it suddenly hot?"

  • Conversational explanation of harness in Chinese, grounded in the existing concept page. Human asked the synthesis-flavored “why now” follow-up, agreed to file the answer as a note.
  • Created harness-why-it-matters-now — wiki’s first note. Structure: convergence window table (six sources within ~10 weeks), five enabling conditions that matured at once (model floor, long-running agents, eval bottleneck, first-party data, Meta-Harness number), three displaced mental models, four caveats, signals to track.
  • One backlink added on harness (one-line “time-slice view” pointer at the bottom) so the note isn’t an orphan; otherwise no concept / entity / source pages modified — the note synthesizes existing material rather than introducing new claims. All citations link to pages already present.
  • wiki_lint.py: 1 orphan on first run (the new note); fixed by the harness backlink; second run clean.
  • Pages touched: harness-why-it-matters-now, harness, index.md.
ingest

Shunyu Yao's "The Second Half"

  • Source: Shunyu Yao (openai; ReAct 2022, CALM 2019), The Second Half (https://ysymyth.github.io/The-Second-Half/, published 2025-04-10). Based on talks at Stanford 224N and Columbia. The wiki’s first thesis-level source — not a technical post but a field-level argument: a working “recipe” (language pretraining + scale + reasoning-as-action) now generalizes broadly enough that benchmark-hillclimbing has been industrialized, so the field’s bottleneck shifts from training methods to evaluation design — what Yao names the utility problem. Second OpenAI-authored source after the Lopopolo / Codex post.
  • Pre-ingest prep: dropped file at repo root The Second Half.md, untracked. Plain mv (not git mv) into raw/2026-04-27-the-second-half-of-ai.md. Ran scripts/rehost_images.py (4 images ysymyth.github.io → R2). Curated frontmatter: replaced tags: ["clippings"] with 6 topical tags (agent-evaluation, reasoning, reinforcement-learning, react, benchmarks, utility-problem); replaced clipper-style description: "tldr: We're at AI's halftime." with a one-sentence English summary of what the source is about.
  • Image-reading: all 4 figures viewed. Three are load-bearing: image 1 (the citation-asymmetry scale — Transformer 168K vs WMT’14 1.3K, AlexNet 172K vs ImageNet 49K, GPT-3 49K vs SuperGLUE 2.5K — direct evidence for the “first-half methods >> benchmarks” claim); image 3 (Jason Wei’s saturation curves — MATH 5%→95% in 3 yrs, SWE-bench-verified 5%→80% in 1 yr, AIME 10%→95% in ~1 yr — direct evidence for “any benchmark gets solved in months”); image 4 (tau-bench setup with the agent mid-trajectory negotiating with a simulated user — direct evidence for the autonomous-eval critique). Image 2 (the canonical ReAct figure) is the right anchor for the new react page.
  • Editorial decisions before writing, surfaced to the human first per CLAUDE.md step 2: no shunyu-yao entity page (attributed inline as plain text); yes react concept page; no utility-problem concept page (folded into agent-evaluation + the source page); 8 existing pages updated; tags react and utility-problem kept on the source frontmatter even though only react has its own page (frontmatter tags don’t have to map 1:1 to wiki pages).
  • Created 1 source page; 1 concept (react).
  • Updated 8 existing pages with primary-source citations / new sections: agent-evaluation (sources 1 → 2; new section The utility problem — eval setups vs. real-world setups with the autonomous + i.i.d. assumption critique, the Chatbot Arena / tau-bench / sequential-familiarity counter-examples, and the field-level “fix the eval frame first” generalization); reasoning-models (1 → 2; new section Reasoning as a strange RL action with the algorithm + environment + priors decomposition); pretraining (1 → 2; new section Pretraining as RL priors — the most important RL ingredient came from outside RL); post-training (1 → 2; new section Post-training as RL with reasoning in the action space reframing the o-series / R1 wave); agent-loop (2 → 3; “the ~20-line ReAct loop” line now links to react; Named loop variants bullet added); long-running-agents (2 → 3; new section on Yao’s i.i.d.-vs-sequential point — Google SWE vs SWE-agent gap and the missing-benchmarks problem); agent-memory (1 → 2; parallel section on why long-term memory benchmarks barely exist under i.i.d.); openai (4 → 5; opening reframed as “first thesis-level OpenAI-authored source”, new public-posts entry, environment-first → priors-first → recipe-era arc).
  • Cross-linking density check: react connects to ≥3 existing pages (agent-loop, reasoning-models, pretraining, post-training, ralph-wiggum-loop, harness, multi-agent-orchestration, claude-subagents) and inbound from 5 wiki pages plus the source — no orphan risk.
  • wiki_lint.py clean on first run after edits — 0 mechanical issues.
  • Pages touched: 2026-04-27-the-second-half-of-ai, react, agent-evaluation, reasoning-models, pretraining, post-training, agent-loop, long-running-agents, agent-memory, openai, index.md. Plus raw/2026-04-27-the-second-half-of-ai.md (rename, frontmatter, 4 images rehosted).
  • New open follow-ups flagged on pages: utility problem is named but not operationalized — wiki should track whether later sources propose a metric beyond “judged by economics and GDP” (2026-04-27-the-second-half-of-ai); the autonomous + i.i.d. assumptions are illustrative, not exhaustive — what other eval assumptions are similarly load-bearing? (2026-04-27-the-second-half-of-ai, agent-evaluation); the reasoning-as-action argument is intuitive rather than mechanistic — Yao flags this himself, watch for a follow-up post (react); cross-link with meta-harness is structurally similar to Yao’s “augment the recipe with novel components” prescription but he doesn’t name it — worth a note when a future ingest connects them.
refactor

rehost_images.py --keep-local + workflow update

  • Triggered by friction at the start of the Yao ingest below: chained curl commands without --max-time got stuck in the sandbox during the image-reading step, then I burned more time killing them than the downloads would have taken. Operational mistake, not network — the same downloads worked in 8s with bounded timeouts.
  • Real fix: the script already has the bytes in memory (it downloads each image to upload). Saving a local copy at the same time removes the second curl pass entirely.
  • Added --keep-local <DIR> to scripts/rehost_images.py. Writes each downloaded image to <DIR>/<digest>.<ext> (same name as the R2 key, sans prefix) on both OK (newly uploaded) and SKIP (already in bucket) paths. Smoke-tested end to end against a real external URL.
  • CLAUDE.md Workflow — Ingest step 1 rewritten: now invokes scripts/rehost_images.py <file> --keep-local .tmp-imgs/, with an explicit “Do not chain bare curl calls for this” line so the next agent doesn’t re-discover the failure mode.
  • scripts/README.md updated with the new flag, including a property line noting --keep-local reuses in-memory bytes.
  • For the Yao ingest itself the markdown was already rewritten before the flag landed, so this ingest fell back to disciplined curl --max-time 15. From the next ingest onward the flag is the path.
  • Pages touched: scripts/rehost_images.py, CLAUDE.md, scripts/README.md.
ingest

Kangwook Lee's "Investigating how Codex context compaction works"

  • Source: Kangwook Lee, Investigating how Codex context compaction works (https://x.com/Kangwook_Lee/article/2028955292025962534, published 2026-03-04). Independent investigation, third-party reverse-engineering of openai‘s closed compact() API path used by codex models. Image-heavy: 7 images carry the leaked-prompt screenshots, pipeline diagrams, and script source — all the load-bearing evidence is visual.
  • Pre-ingest prep: dropped file at repo root Investigating how Codex context compaction works.md, untracked. mv into raw/2026-04-27-codex-context-compaction-investigation.md. Ran scripts/rehost_images.py (7 images pbs.twimg.com → R2). Curated frontmatter: replaced clipper tags: ["clippings"] with 6 topical tags (codex, context-engineering, prompt-injection, prompt-extraction, openai, compaction); replaced truncated description: ending in ... with one-sentence English summary of what the source is about (the reverse-engineering, not its first paragraph).
  • Image-reading discipline followed (and formalized in the refactor entry above): rehosted, curl-ed all 7 images into .tmp-imgs/, viewed each via the read tool, cleaned up. Three of the seven were the entire payoff — the leaked-prompt-output screenshot, the pipeline diagram, and the script source — and would have been lost reading prose alone.
  • Per-question editorial decisions before writing: (1) merge compaction details into existing context-engineering rather than spawn a separate context-compaction page; (2) defer a prompt-extraction page; (3) emphasize pipeline + verbatim prompts + open questions, gloss the injection method; (4) no entity page for Kangwook Lee (single-source author); (5) # Juice: 192 system-prompt trivia kept out of the notable-quotes section.
  • Created 1 source page (2026-04-27-codex-context-compaction-investigation). No new entity / concept pages — all content absorbed into existing pages per (1)–(4) above.
  • Updated 3 existing pages: context-engineering (sources 3 → 4; new section Codex’s two compaction paths (and the actual prompts) with the verbatim compaction prompt and handoff prompt, the encryption-scheme pipeline, and the cross-link back to claude-md‘s ## Compact Instructions and claude-code‘s HANDOFF.md pattern); codex (sources 1 → 2; new section Compaction internals (third-party reverse-engineering) with the two-paths-same-prompts framing and Fernet AES-128-CBC + HMAC-SHA256 detail, plus an open-question bullet); openai (sources 3 → 4; new Third-party investigations of OpenAI APIs sub-section to keep this source distinguishable from the OpenAI-authored ones above it).
  • wiki_lint.py clean on first run after edits — no broken links, index in sync.
  • Pages touched: 2026-04-27-codex-context-compaction-investigation, context-engineering, codex, openai, index.md. Plus raw/2026-04-27-codex-context-compaction-investigation.md (rename, frontmatter, 7 images rehosted).
  • New open follow-ups flagged: why two compaction paths if prompts are near-identical? what else (tool results? file refs?) is in the encrypted blob? extraction stability across model versions / account types isn’t audited; this source is one snapshot, not a spec (2026-04-27-codex-context-compaction-investigation, codex).
refactor

Image-reading rule + .gitignore .tmp-imgs/

  • Surfaced during the Codex compaction ingest below: the article’s payload (leaked compaction prompt, handoff prompt, Fernet pipeline, full-script source) lives entirely in screenshots, not prose. Reading text alone would have produced a faithful-looking summary that was quietly missing the point.
  • CLAUDE.md Workflow — Ingest step 1 rewritten: dropped the soft “selectively” framing for image viewing in favor of default-read after rehosting; decorative images (banners, avatars, logos) are the only exception. Added the practical mechanic since the image-reading tool only accepts local paths: curl rehosted URLs into .tmp-imgs/, view, delete the dir.
  • .gitignore adds .tmp-imgs/ so the scratch dir can’t be accidentally committed.
  • Pages touched: CLAUDE.md, .gitignore.
ingest

OpenAI Codex's "Harness engineering" post

  • Source: Ryan Lopopolo / openai / codex team, Harness engineering: leveraging Codex in an agent-first world (https://openai.com/index/harness-engineering/, published 2026-02-11). The wiki’s first directly-OpenAI-authored primary source. Ingested zh-CN version (the variant dropped into the repo root by the human).
  • Pre-ingest prep: dropped file was at repo root 工程技术:在智能体优先的世界中利用 Codex.md and not under git. mv (not git mv since untracked) into raw/2026-04-27-harness-engineering-codex-agent-first.md. Ran scripts/rehost_images.py (1 image, Contentful CDN → R2). Curated frontmatter (replaced tags: [clippings] with 6 topical tags; replaced clipper-generated description: "作者:Ryan Lopopolo,技术人员" with one-sentence Chinese summary).
  • This source resolves a previously-flagged follow-up: the “OpenAI Codex 1500 PRs / 3 engineers” claim was flagged on harness and 2026-04-27-agent-principles-architecture-engineering as wanting primary verification. This post is that primary source — the previously-second-hand numbers are now first-hand. Updated harness to reflect the resolution.
  • Created 1 source page; 2 entities (ryan-lopopolo, codex); 5 concepts (agent-legibility, codebase-as-system-of-record, architectural-invariants, ralph-wiggum-loop, entropy-and-garbage-collection).
  • Updated 8 existing pages with second/third-source citations / new sections: openai (sources 2 → 3, page-level reframe — the wiki’s view of OpenAI shifted from “cited at one remove via Tw93” to “directly-authored primary source on agentic coding”); claude-md (sources 2 → 3, added “Primary-source corroboration: OpenAI Codex’s AGENTS.md” section with the table-of-contents framing and four named failure modes of “one big AGENTS.md”); harness (sources 2 → 3, rewrote the Codex case section to reference the primary source and the 5 new concept pages); context-engineering (sources 2 → 3, added “Context is a scarce resource — primary citation” section with the four-reason failure-mode list); verifier-loop (sources 2 → 3, added Chrome DevTools Protocol bridge + linter-error-as-fix-instruction); long-running-agents (sources 1 → 2, 6+ hr Codex runs + worktree-per-change + ephemeral observability); agent-loop (sources 1 → 2, added Named loop variants section pointing to ralph-wiggum-loop); multi-agent-orchestration (sources 1 → 2, added “Agent-to-agent reviews as the default” section).
  • Cross-linking density check: each new concept page connects to ≥3 existing pages and ≥2 existing pages connect back to each — no orphans. The 5 new concepts form a cluster with harness / verifier-loop / claude-md as the connective tissue to the prior wiki.
  • wiki_lint.py first run: 1 broken link ([[agents-md|claude-md]] had slug/display reversed; should be [[claude-md|AGENTS.md]]). Fixed; second run clean.
  • Pages touched: 2026-04-27-harness-engineering-codex-agent-first, ryan-lopopolo, codex, agent-legibility, codebase-as-system-of-record, architectural-invariants, ralph-wiggum-loop, entropy-and-garbage-collection, openai, claude-md, harness, context-engineering, verifier-loop, long-running-agents, agent-loop, multi-agent-orchestration, index.md. Plus raw/2026-04-27-harness-engineering-codex-agent-first.md (rename, frontmatter, 1 image rehosted).
  • New open follow-ups flagged: “~10× throughput” multiplier isn’t decomposed (model speed vs. tooling investment vs. discipline-of-no-manual-code vs. baseline selection effects) (codex); architectural coherence over time in fully-agent-generated codebases is named open by the post itself (2026-04-27-harness-engineering-codex-agent-first); end-to-end autonomy claim is hedged “depends on this codebase’s specific structure and tooling” — portability to claude-code / other repos is open; the AGENTS.md ~100-line figure isn’t given as a token-count, would be useful to compare against anthropic‘s CLAUDE.md ~2.5K-token sizing; “Aardvark” is named in the post as another agent participating in the same codebase — worth ingesting OpenAI’s Aardvark intro post when it lands in raw/; cleanup-loop fleet sizing (entropy-and-garbage-collection) and cleanup-vs-feature PR ratio aren’t quantified — flagged for any future Codex publication.
refactor

scripts/wiki_lint.py + workflow integration

  • Triggered by the broken-link / index-drift checks I had to do by hand at the end of the LLM-training ingest. Catching [[reward-design]] (typo for [[eval-grader-reward]]) by ad-hoc Python one-liner is exactly the kind of thing that should be a script.
  • Added scripts/wiki_lint.py — pure stdlib (no uv / no deps), runs in <1s on the current wiki, always exits 0. Five checks: broken [[links]], missing-from-index, phantom-in-index, orphans, frontmatter completeness.
  • Orphan rule per editorial direction: entity / concept / note pages count as orphans only with zero inbound from other wiki pages. Source-page inbound counts (a page cited by a source is connected). index.md inbound is excluded — every page is in the index by design, so it’s not an informative signal.
  • Wired into both workflows in CLAUDE.md: Ingest step 6 now runs the script and requires clean before logging; Lint workflow split into Layer 1 (mechanical, scripted) and Layer 2 (editorial, LLM judgment — contradictions, stale claims, missing cross-refs).
  • Documentation updated: scripts/README.md gets a wiki_lint.py section with usage, check matrix, and trigger points.
  • First clean run: 0 mechanical issues — the LLM-training ingest is structurally tight.
  • Pages touched: scripts/wiki_lint.py (new), scripts/README.md, CLAUDE.md.
ingest

Tw93's "你不知道的大模型训练" essay

ingest

Tw93's "你不知道的 Agent" companion essay

refactor

Rehoster regex handles nested brackets

  • scripts/rehost_images.py: IMAGE_RE widened to allow one level of nested […] inside markdown alt text, e.g. ![... messages[] ...](url). Old pattern \[[^\]]*\] silently skipped these and reported success; surfaced when the Tw93 Agent essay rehoster claimed 23/24 done while one Alipay-CDN URL remained.
  • Committed separately ahead of the ingest below.
ingest

Tw93's "你不知道的 Claude Code" essay

bootstrap

Initial scaffolding

  • Set up the LLM Wiki layout: raw/, wiki/{sources,entities,concepts,notes}/, index.md, log.md, CLAUDE.md.
  • Pattern adapted from Andrej Karpathy’s LLM Wiki.
  • No sources ingested yet — drop the first one into raw/ and ask the agent to ingest it.
esc