π Karpathy LLM Wiki v1.27.1
Highlights
PATCH that turns the Related sections into deterministic output β the model no longer transcribes lists it was handed β and closes the rewrite-loss classes the wave-B audit found. 46 merge commits / 194 files / +10487 / β3257 / 3993 tests passing. No breaking changes, no new required settings, no migration.
- Related lists are now deterministic (Issue #635, PR #636). Siblings born from the same note link each other; a related name the vault already has a page for is written under that page's own title and folder; the two Related sections are rendered from the typed lists instead of transcribed by the model. Measured on a 413-note vault rebuild: dead related entries 24% β 1%, pages without a live outgoing link 103 β 0, sibling lists complete 246/246. Unicode-safe end to end.
- A paragraph another source footnoted survives a rewrite (PR #631).
guardBodyRewritenow restores sourced paragraphs a different-source rewrite dropped β 571-pair replay: 120 paragraphs restored, 164 footnotes re-attached. - Folder-wrong links re-pointed vault-wide (Issue #624, PR #626). 314 links corrected β prose, source-page sections, plus a new end-of-run pass over every page the run wrote.
- The per-step thinking policy now reaches the stream path (Issue #627, PR #629). The Query Wiki answer the user waits for was thinking 43 of 55s while the keyword call sent
reasoning_effort: none; stream now honourstaskPolicies. - Vault dates are local calendar dates, not UTC (Issue #611, PR #612). All 17 date-write sites route through
localDateStamp()β east of UTC, days no longer start stamped with yesterday. - Two gates before a contradiction record (Issue #609, PR #610). The page sentence must exist AND the source must hold the claim β measured 7 of 9 records were previously false.
- Query no longer hides the page the user named (Issue #623, PR #625). Unicode-aware tokenizer + word-start matching + PPR-ranked merge fixed a 3,025-page German vault loading Kahneman while "Creatin" was absent.
- Three-phase repo audit cleanup (PRs #632/#633/#634). 8 no-op fixes, one SDK wrap contract, T1/T3 lossless pass (β82 net LOC, 3932β3932 tests).
- 8 fast-uri Dependabot alerts closed at the root (PR #637). fast-uri
^3.1.7, redundant override dropped, CIpnpm auditgate added,.github/dependabot.ymlweekly auto-PRs β the fix path no longer depends on a human noticing an alert.
What's in this release
Fixed
- Related sections rendered from the lists, not the model (PR #636, Issue #635). Three deterministic layers β
core/related-shaping.ts(sibling edges by kind, vault-answering names to their own title+kind, tag values dropped against the active vocabulary, unanswered names kept and counted),core/related-sections.ts(sections written from typed lists; vault path when known, planned path otherwise; rewrite-kept entries re-resolved in front, one target once across both sections; everything else byte-identical),page-factory/related-links.ts(one helper, three call sites collapse to one line each). Default behaviour change without a switch, argued and five-line opt-in available. - Sourced paragraphs restored across rewrites (PR #631).
preserveSourcedParagraphsinsrc/core/paragraph-provenance.tsmatches footnoted paragraphs into the rewrite by word overlap;guardBodyRewritecomposes sections + sourced paragraphs + H1 guards. - Folder-wrong links corrected everywhere (PR #626, Issue #624).
correctRelatedLinkPrefixesre-points in prose + source-page sections; new Stage 4.5repointLinksAfterRunreads every written page once, resolves folder-typed links against the run's own pages. - Stream path honours per-step thinking policy (PR #629, Issue #627).
createMessageStreamspreadsenableThinkingfromapplyTaskPolicyβ root cause of the "streamed answer thinks" report (notb302aab, verified). - Local-calendar dates everywhere (PR #612, Issue #611).
localDateStamp()insrc/core/format.ts; full-ISO instants deliberately untouched. - Two gates before a contradiction record (PR #610, Issue #609). Gate 1
existing_statementchecked against the page; Gate 2 stance as its own small call; demotions never silent. - Stop-word substrings + lex/PPR merge fixed (PR #625, Issue #623).
\p{L}\p{N}\p{M}word runs, word-startneedleHits, PPR-rankedmergeWithPPR. - Mention-only pruning no longer cuts edges to existing pages (PR #621, Issue #620). Candidate gate takes an
isKnownPagepredicate backed bybuildVaultResolver. - Kept-but-collapsed sections restored (PR #618, Issue #617). Below
SECTION_SHRINK_FLOORβ treated as dropped, previous block restored in place. - Mentions re-emit never shrinks the accumulated block (PR #616, Issue #614). Existing length is the floor.
- Related-page rewrites never land on source pages (PR #615, Issue #613). Lookup scoped to
entities/+concepts/. - Contradiction
source_pageresolved against the page index (PR #602, Issue #601). Never trusted from the model β 3 user notes previously hit. - Merge triage contradictions reach log + report (PR #606, Issue #605).
onContradictioncallback collects both lanes. - Ingest ownership from
source_file, notsources:(PR #596, Issue #595). - Picker shows disk state, not session memory (PR #600, Issue #598).
- Cross-folder dedup routes through the semantic call (PR #589, Issue #588). Folder never decides.
- Preamble cut no longer eats the first section (PR #580, Issue #579 via audit).
- Cancelled ingest no longer reads as completed (PR #583, Issue #582).
- Repetition-loop requires consecutive source occurrences (PR #572, Issue #542).
__proto__duplicates rejected in task policies (PR #571, Issue #543).- Audit phase-1 latent bugs (PR #632). UTC-day site β
localDateStamp(),rulocale gaps, dead code. - Dev-instrument link retarget is no longer a silent no-op (PR #591, Issue #590).
Changed
- Two-gate contradiction lane replaces the model's word (PR #610). See Fixed.
- Contradiction marker lane surfacing (PR #578, Issue #575).
contradictions:marker read back + item-level lane given one (PR #576). contentHashdrift flag (PR #577, Issue #220 Tier 0 read half). Source notes changed since ingest flagged.- Merge calls get the note's own paragraphs (PR #579).
- Heading spacing + blank-line runs normalised at the write gate (PR #581).
minAliasLengththreaded to the create path (PR #559, Issue #558).- Gate link-markup parens no longer miscount (PR #564, Issue #562).
Refactor
- Three-phase repo audit (PRs #632/#633/#634). Phase 1: 8 no-op changes (UTC-day site,
rulocale gaps, deadappendGranularityToPrompt, byte-identicalbuildKnownTargetsfolded,createMergeCtxhelper, test twin folded, graph-cache test renamed). Phase 2:openai-sdk-clientonto canonicalwrapReasoningContent(one wrap contract, missing</thinkescape + idempotence guard). Phase 3:escapeRegExpβ canonicalescapeRegex, 22 tests relocated into__tests__mirrors (zero loss), 12 dead exports privatized,controller.tsreport round-trip collapse (β85L), zero-consumerOUTPUT_MODESdeleted.
Added
- Merge triage contradiction lane surfaced (PRs #576/#578). Item-level contradictions get a lane; the marker's read half shows in lint.
contentHashdrift detection (PR #577). Read half of Issue #220 Tier 0.- Dev-instrument link cache + resolver (PR #591).
retargetLinksToPageworks under the instrument. - Co-maintainer credit (PR #619). manifest/README/NOTICE list DocTpoint.
- CI
pnpm auditgate +.github/dependabot.yml(PR #637). Dependency security is now automated, not human-remembered. - SEO metadata blocks completed across all 11 READMEs (this release). DE/PT/RU/ZH-Hant gained the block EN and the other locales already had.
Docs
- README Marp URL + LICENSE relative links fixed (PR #622, community PR by @NotAFlightRisk).
- Wave-C/B records, audit trio, v1.27.1 prep in CHANGELOG/ROADMAP/MEMORY.
Upgrading from v1.27.0
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.
One deliberate default-behaviour change: the two Related sections on generated pages are now written from the typed lists (deterministic) rather than transcribed by the model β the previous behaviour produced a dead link one time in four. Existing pages are rewritten on their next ingest with the corrected links. No settings changed, no migration.
What's accepted (and why)
This release touched zero production code in the release commit itself β v1.27.1's 46 feature commits all passed Gate 1 with eslint-plugin-obsidianmd local lint at 0 errors, and the release prep commit (version bump + docs) changed only non-code files. The Bot-scan surface is unchanged from the v1.27.0 baseline; the pre-existing accepted-structural warnings (128, all documented in the v1.27.0 notes) carry over untouched. Local mirror stands in for the GitHub-hosted Bot pipeline 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
3993 tests passing (282 files). Up from v1.27.0's 3677 / 260 β +316 across the cycle's fix + feature PRs, including 22 new tests for the deterministic related-lists modules, 13 for the sourced-paragraph guard, 4 for link re-point, and the audit trio's relocations (3932β3932, moves not losses).
Contributors
- @green-dalii (Greener-Dalii) β Maintainer and primary author. PRs #560, #561, #566, #571, #572, #573, #574, #587, #632, #633, #634, #637 (+ release commit #643). (Wave-A/B docs and memory consolidation, audit phase-1/2/3 cleanups, dependency-security root fix, release orchestration.)
- @DocTpoint β Architect-level contributor. 33 PRs: #557, #559, #564, #569, #576, #577, #578, #579, #580, #581, #583, #585, #586, #589, #591, #596, #600, #602, #606, #607, #610, #612, #615, #616, #618, #619, #621, #625, #626, #629, #630, #631, #636. Continues the ingest-reliability + query-correctness record: pnpm-workspace migration, alias-floor threading, gate link-markup fix, domain-axis write side, contradiction-marker lane surfacing, drift detection, merge-paragraph payload, markdown write-gate normalisation, cancel-safe ingest, reasoning-laundering guards, cross-folder dedup, dev-instrument link retarget, ingest ownership from
source_file, disk-state picker, contradictionsource_pageresolution, triage-contradiction reporting, three-outcome gate table, two-gate contradiction records, local-calendar dates, related-page source-scoping, Mentions floor, kept-but-collapsed restoration, candidate-gate known-page edges, co-maintainer credit, stop-word/PPR query fix, vault-wide link re-point, stream-path thinking policy, concept Description routing, sourced-paragraph rewrite guard, and deterministic related lists. Per-PR / per-issue index in CHANGELOG.md Β§1.27.1. All 28 closed issues this cycle were his own reports β fixed by his own PRs, credited once under his author bullet per the no-double-credit rule. - @NotAFlightRisk β README Marp URL + LICENSE relative-link fix across all 11 READMEs (PR #622). First community PR of the cycle.