🌟 Karpathy LLM Wiki v1.27.0
Highlights
MINOR that adds one new auth path on Bedrock, one new conversion backend (MinerU), and closes the frontmatter-parity chain. 36 merge commits / 181 files / +11197 / −3158 / 3677 tests passing. No breaking changes, no new required settings, no migration.
- AWS Bedrock — three auth modes (Issue #425, PR #540). API key (existing), SSO via hand-rolled IAM Identity Center OIDC, IAM-key. Zero AWS SDK, ≈+10–15 KB. Stage 1
bedrockRegionforwarding bug (every call fell onus-east-1regardless of the user's region setting) rides along as commit 0. PR #540 awaits an account-holding E2E of three isolated constants before full activation. - MinerU multi-format ingest (Issue #404, PR #404). PDF / images / Office docs via online Precise parser; new
markdownConversionBackendsetting. Local native path unchanged. - Source-page verbatim quotes (Issue #496, PR #546). Captured quotes route into
sources/<slug>.md.[MENTIONS-CAPTURE]injection +maxChars: 2000per page (mutation-verified). - Fix Dead Links
leave_itoutcome (Issue #485, PR #545). Default ON; opt-out viafixDeadLinksCreateStub. Unresolvable refs no longer spawn empty stubs. - Per-step
taskPoliciesUI (Issue #525, PR #525).task=mode[:thinking]parsing; text-mode extract baseline wired. CodexoutputModeOverridehonoured (PR #539). - Composite-key probe caches (Issue #551, PRs #552/#553).
TokenKeyProber/ReasoningStripProberkey on(baseURL, model)— fixes the cache-suppression bug across distinct models under the same provider. npm auditHIGH → 0 (Issue #501). Top-leveloverridespinsbrace-expansion5.0.9 andfast-uri3.1.5; lockfiles regenerated per pre-release-gate §2f.2.
What's in this release
Added
src/llm-sdk/bedrock-sso/— hand-rolled AWS SSO + SigV4 for Bedrock (PR #540, Issue #425).bedrockAuthMethodsetting:'api-key' | 'sso' | 'iam', default'api-key'. SSO flow:registerClient→startDeviceAuthorization→completeDeviceAuthorization(polling withslow_down+5s, deadline,AbortSignal).BedrockAuthManagercaches credentials withexpiry − 2minskew, single-flight on expiry, no silent retry storm. Sign-out overwrites SecretStorage + clears in-memory cache (mirrors Codex discipline). Three auth secrets:karpathywiki-bedrock-sso,karpathywiki-bedrock-iam,karpathywiki-bedrock-apikey.- Mineru PDF / image / Office backend (PR #404, Issue #404). New
markdownConversionBackend(native | mineru); MinerU path accepts PDF / PNG / JPG / DOCX / PPTX / XLSX. 11 locale READMEs synced. - Source-page verbatim quotes (PR #546, Issue #496).
buildSourceAnalysispopulates top-levelmentionsCaptured;[MENTIONS-CAPTURE]token injected into per-task prompt;maxChars: 2000per page. leave_itoutcome for Fix Dead Links (PR #545, Issue #485).FixDeadLinksOutcomeenum nowcreate_stub | leave_it; defaultleave_it.- Opt-in
skipMentionOnlyCandidatesingest gate (PR #521, Issue #514). Skips mention-only candidates from dedup prompt; default OFF. - One ranked candidate window for dedup + dead-link (PR #520, Issue #519). Replaces full-list fallback (recall nominal 0/18, cost real — ~40K tokens × 61% candidates). Gate-4-accepted: ~2KB text/page (~5.6MB peak @ 2.8K pages).
- Per-step
taskPoliciesUI (PR #525, Issue #525).task=mode[:thinking]parsing;resolveTaskPolicy(map, task)returns{outputMode, thinking}. minAliasLengthsetting (PR #532). Settings → Advanced, default 2, range 2..6.- Composite-key probe caches (PRs #552/#553, Issue #551). Per
(baseURL, model)instead ofbaseURLalone. - CLI →
tools/dev-instrument/migration (PR #511, Issue #507). Replacestools/llm-wiki-cli/with UPSTREAM DEV-ONLY INSTRUMENT; eliminates 49 of ~52 Obsidian Bot errors. Legacy snapshot attools/legacy/cli-v1.26.4-snapshot. Dev-instrument exit codes 0/1/2 (PR #526). - Schema three-layer delivery (PR #546, Issue #491). Five default-schema sections reach their owning tasks; per-task whitelist fixed;
summarytask writes tosources/<slug>.md.
Changed
extractdefaults to text-mode output on LM Studio / Codex (PR #525, Issue #524).json_schemasilently degrades on those providers; text-mode baseline now wired. Opt-back viataskPolicies *=json.mergeFrontmatterunions incomingtags:(PR #510, Issue #509). Stored tag set no longer depends on source order;incomingTypeTagguards custom vocabulary.- Alias comparison keys NFC-normalised and Turkish-folded (PRs #530/#531/#537, Issues #366 p2/#484/#536). File-naming untouched; create path drops self-named aliases; typed-list folder map keyed on comparison slug (
preserveCaseparam removed). stripUnknownSectionsapplied to generation paths (PR #529). Reviewed pages bypass.- OpenRouter
:variants visible (PR #538, Issue #534). ~79 models including all:freenow show in the catalog. - OpenRouter model-404 no longer a URL fault (PR #535, Issue #533).
isUrlErrordifferentiates transport failure (retry) vs 404 on model id (report and stop). - Test Connection blank-model guard (PR #518, Issue #517).
errorNoModelper-task; probe early-returns. Localised in +11 locales. - OpenRouter Anthropic baseURL fixture fix (PR #516, Issue #515).
- Stream path carries explicit
tasklabel (PR #547, Issue #469). Query Wiki now files underquery-wiki, not'untagged'. cache_controlcontract asserted at wire, not at mock (PR #497, Issue #493 partial).- Type repair at intake (PR #528, Issue #527).
repairTypesAgainstVocabularyfold + short repair call. NoOutputGeneratedErrorreturns in-scope composite (PR #544, Issue #506). Single bad batch no longer loses the whole run; welcome-translate thinking pinned off.- Five-Gate order fix in CI (carry-over, PR #487).
pnpm buildbeforepnpm test(test readsmain.jsfor bundle shape). Bundle smoke test now in Gate 1.
Fixed
- Duplicate-merge passthrough carries unknown frontmatter fields (PR #513, Issue #512). Closes the last #356 parity gap.
- Constraints pass carries block-form unknown fields (PR #523, Issue #522). Parity chain complete.
- Five default-schema sections reach their owning tasks (PR #546, Issue #491). Previously orphaned
summarytask now writes tosources/<slug>.md. - Vault-root picker's exclusion rule applied everywhere (PR #504, Issues #502/#505).
- Codex client honours pinned text mode + spares retry on source-borne loops (PR #539).
- Designator is
(letters, type), not the opposite folder (PR #499, Issue #472). - CHANGELOG records the #504 upgrade note for
/entries (PR #508). docs(notice)brings DocTpoint attribution up to v1.26.4 (PR #498).- Docs orthogonalise CLAUDE/ROADMAP/CHANGELOG per one-fact-one-place (PR #500).
Internal
tools/dev-instrument/run-instrument.mjs:97closes PR #511's leftoverno-unsanitized/methodlint gap (PR #550 follow-up).OUT_PATHis a hardcoded local constant; documentedeslint-disableper Botno-restricted-disableallowance..mjsis out of Bot scan scope by design.pnpmandnpmlockfiles aligned onbrace-expansion5.0.9 +fast-uri3.1.5 (Issue #501). Both pin keys live at top level (overrides) and underpnpm.overrides; lockfiles regenerated from localnode_modules.
Upgrading from v1.26.4
If you installed via Obsidian's Community plugins flow (the normal case), this release appears as a one-click update in Obsidian Settings → Community plugins. Click Update and you're done — your wiki, settings, and history carry over automatically.
New settings (markdownConversionBackend, bedrockAuthMethod, skipMentionOnlyCandidates, minAliasLength, taskPolicies, fixDeadLinksCreateStub) all carry defaults that preserve v1.26.4 behaviour byte-identical. MINOR bump reflects user-visible surface growth (5 new bullets in 11 README Features sections), not breaking changes.
What's accepted (and why)
Local Obsidian Bot pre-review (eslint-plugin-obsidianmd@0.4.2, aligned with latest per CLAUDE.md "Bot alignment (pre-release)" rule) returned 0 errors against the v1.27.0 baseline. 128 warnings are all pre-existing accepted-structural from the v1.26.2 / v1.26.4 baselines: obsidianmd/prefer-create-el × 32, hardcoded-config-path × 25, no-nodejs-modules × 22 (all on tools/ static node:* imports — accepted per eslint.tools-bot.config.mjs), no-global-this × 17 (window / activeWindow shim, partially fixed in PR #550), prefer-window-timers × 5, no-tfile-tfolder-cast × 1. 0 new findings on touched code. The GitHub-hosted Bot pipeline (separate from CI, not a status check) was bypassed this cycle — the local mirror is mature enough to substitute per the v1.26.2 hardening record.
Installation
Install or update via the standard Obsidian plugin flow — your existing wiki is preserved on upgrade.
- From Obsidian — Settings → Community plugins → Browse → search "Karpathy LLM Wiki" → Install (or Update, if you already have it). Then toggle Enable.
- From the marketplace — community.obsidian.md/plugins/karpathywiki → Add to Obsidian.
- Manual — only needed if you want a specific version or are running Obsidian without the in-app marketplace. Download
main.js,manifest.json, andstyles.cssfrom the release assets below into.obsidian/plugins/karpathywiki/, then enable the plugin in Obsidian Settings → Community plugins.
Tests
3677 tests passing (260 files). Up from v1.26.4's 3434 / 235 — +243 across the 17 feature PRs (#404, #425 × 6 test files, #485, #491+#496, #506, #509+#510+#512+#513+#522+#523, #517, #519, #520, #521, #524, #525, #527, #530+#531+#532+#536+#537, #533+#534, #539, #551).
Contributors
- @green-dalii (Greener-Dalii) — Maintainer and primary author. PRs #500, #511, #540, #541, #544, #545, #546, #547, #549, #550, #554. (Bedrock Stage 2 design + implementation, schema three-layer delivery, CLI → dev-instrument migration, release commit.)
- @DocTpoint — Architect-level contributor. 18 PRs: #498, #499, #504, #508, #510, #513, #521, #523, #525, #526, #528, #529, #530, #531, #532, #537, #539, #552. Continues the v1.25.x → v1.27.0 ingest-reliability record: folder-boundary analysis, source-slug merging, vault-wide link retarget,
created:provenance, headless-CLI slow-model path, H1 re-assertion, parse-failure result type, ambiguous-designator resolution, runtime tag-vocabulary deferral, run-scoped extraction catalog, staged extraction payload, per-step output-mode + thinking policy, reasoning-only guard restoration, section-shaped contradiction clamp, frontmatter parity chain, ranked candidate window, opt-in candidate gate, text-mode extract baseline + repetition-loop guard + taskPolicies UI, type repair at intake, dev-instrument exit codes,stripUnknownSections, NFC + Turkish-fold alias comparison,folderBySlug,minAliasLength, drop self-named aliases, OpenRouter 404 fix, OpenRouter:variants, and the #425 Bedrock Stage 2 design record. Per-PR / per-issue index in CHANGELOG.md §1.25.0 → §1.27.0. - @XEurekaX — MinerU online PDF conversion backend (PR #404).
- @anavalo (Tasos Tsournos) — OpenRouter Anthropic baseURL fixture fix (PR #516, Issue #515) and Test Connection blank-model guard (PR #518, Issue #517).
- @evgenyponomarev — OpenRouter model-404 URL-fault fix (PR #535, Issue #533).
- @pttydou — OpenRouter
:variants visible (PR #538, Issue #534). - @rexplx — Issue reporter on source-page verbatim quotes (Issue #496, fixed in PR #546).