Internal readerledger

ledger

Updated Sep 28, 2026, 3:23 PM

/
Quality signals

Quality signals

Records

259 records

Release v0.9.5

Ledger v0.9.5

A redesigned reader for the history behind your code. This release introduces Overview, Records, and Timeline views, a more focused browsing experience, blue light and dark themes, and a new visual identity. The rewritten README includes a recorded walkthrough and a live example built from this repository.

Session S0008

Claude Code session 2026-09-28

Rebuild the reader's presentation and navigation, rewrite the README, and prepare the repository's live example. The work resumed in Codex after the Claude Code session stopped at the verification gates.

Change 0203

Prepare v0.9.5

Prepares v0.9.5 with the redesigned reader, new visual identity, revised README, and recorded tour. Updates installation pins and assigns the merged redesign receipts to the release. The live reader and public changelog deploy from master.

Change 0202

Rebuild the README around a recorded tour and refine both themes

Rebuilds the README around Ledger's identity, a real scrolling reader tour, a shorter setup path, and direct links into the live example. Refines the reader to near-white light surfaces and charcoal/slate dark surfaces with blue accents, and gives record highlights rounded corners with tighter padding.

Change 0201

Refine reader navigation and adopt a warm copper palette

Makes Records and Timeline easier to browse with pill controls, custom dropdown menus, and a compact left navigation. Area, Release, and Tag filters live in the desktop rail and move into the toolbar on smaller screens. Near-white light surfaces and warm charcoal dark surfaces with copper and apricot accents replace...

Change 0200

Replace the Ledger icon and wordmark

Replaces the gradient L and text strokes with a punched-receipt silhouette: a square opening in a solid sheet with a clipped corner. Light and dark logo lockups pair it with an outlined lowercase wordmark. The reader, favicon, and README use the new identity without external fonts or new dependencies.

Change 0199

Distill the reader into a compact working archive

Recomposes the reader around recent changes and compact browsing controls. The overview uses linked counts, a primary history list, and unboxed repository context. Records and the public changelog are denser; detail panels read as documents, with a collapsed relationship map after the named references.

Change 0198

Elevate the reader design and simplify theme preferences

Elevates the reader and public changelog using Dossier's redesigned reader as a visual reference. Neutral grayscale surfaces, stronger typography, labeled kind icons, a latest-change shortcut, and more generous controls improve scanning and navigation across desktop and mobile. The theme switch offers Light and Dark...

Change 0197

Rewrite the README and publish the live example

Rewrites the README around the rebuilt reader and publishes a live example. The README leads with the reader's overview of this repository, links the live reader and public changelog on GitHub Pages, pins 0.9.4, and gains a section on the reader's three views, the record panel, the palette, the keyboard, and the lig...

Change 0196

Rebuild the reader's web presentation

Rebuilds the reader's web presentation from the ground up. The reader now owns its visual system (D009): its own color, type, and spacing tokens with light-dark() themes, a validated categorical palette for record kinds, and no dependency on the retired Dossier tokens. The internal reader gains three views. Overvi...

Release v0.9.4

Ledger v0.9.4

Freshness, corrected. ledger stale stopped reading a record as drift when the record simply pointed at its files by pattern, by directory, or by path. The fixes came out of triaging the first outside adopter's stale report, where 156 of 169 signals named symbols that are in the tree.

Change 0195

Prepare v0.9.4

Bumps the package to 0.9.4 and writes the v0.9.4 release record over receipts 0192 through 0194 and this one, with Public Notes for the GitHub Release. The release carries the two stale fixes found while triaging Kore's report: coverage patterns are searched rather than dropped, and directory headings and path ancho...

Change 0194

Resolve directory blocks and path anchors before calling them stale

Two more ways a record could be read as drift when it was not. A Changed Files heading that names a directory path, such as ### internal/composer, CHANGELOG.md, now matches the record's files under that directory, so the block's anchors are checked against them; the candidate has to carry a separator, so a prose h...

Change 0193

Search coverage patterns for stale symbols and anchors

ledger stale now searches the files a record's coverage patterns cover. Patterns such as src/** became Git :(glob) pathspecs and are searched with git grep for the symbols and anchors the record's exact files did not account for. When the search cannot run, because Git is missing, the workspace is outside a...

Release v0.9.3

Ledger v0.9.3

Codex hooks can now keep their approval across Ledger versions. ledger hooks install --host codex --launcher makes the hooks run a generated script that holds the pinned command. A version bump rewrites only that script, so .codex/hooks.json stays the same, and Codex keeps running the hooks without asking again....

Release v0.9.2

Ledger v0.9.2

Records can be written whole from any surface, and the reader now follows records to the files, symbols, and records they name. This release adds: section bodies for every authoring command, and ledger update ledger context, a review packet for a change set ledger doctor --fix, and a health check for installed...

Release v0.9.1

Ledger v0.9.1

Agents can write records over MCP, with your confirmation. Ledger's MCP server moves to version 2 of the MCP TypeScript SDK and speaks protocol revision 2026-07-28 alongside the 2025 revisions. Over MCP, agents can now: create change entries, product notes, backlog items, and decision records promote records start,...

Release v0.9.0

Ledger v0.9.0

The reader looks like Dossier. The static reader and the public changelog take Dossier's plum-tinted neutrals, its teal, violet, and coral status colors, its system font stacks, radii, and motion, and keep Ledger's emerald accent. The masthead is compact, wide screens put the facet rail on the left, and the theme to...

Release v0.8.2

Ledger v0.8.2

Drafts fit the change. Hook drafts and ledger new --from-diff take symbols and anchors only from the lines a diff changed. A ledger ci run before the turn ends lists the failing files and names the session whose hook will draft their receipt. ledger release --update adds a late receipt to an existing release r...

Release v0.8.1

Ledger v0.8.1

Fixes from an audit of 0.8.0. Hooks for parallel tool calls keep every edited path, a .ledger/ inside a repository subdirectory drafts receipts and checks coverage for its own files, and every new draft is announced. The reader ranks search exactly like ledger search and its palette works from disk....

Release v0.8.0

Ledger v0.8.0

Adoption. Fixes from Ledger's first outside adoption, in Kore: agents are told about the receipt the hooks drafted for them, one configured command runs Ledger in every hook and instruction, adopt infers its configuration from the tracked tree, docs reconcile never overwrites curated routing files, and linked se...

Session S0006

Ledger 0.9.3: Codex hooks that keep their approval

This session continued after a context compaction. Kyle trusted Kore's changed Codex hooks by hand and asked whether that step could be streamlined. He then chose to build the fix as 0.9.3 and move Kore to it: 0189: hooks install --host codex --launcher and the generated .ledger/bin/ledger.mjs, so a version bump...

Session S0004

MCP v2 migration and confirmed write tools

Continued the 2026-09-17 session after S0003 closed. Kyle deleted Dossier's merged next branch and found that the Codex app treats /hooks as a message, so 0172 (kylebegeman/ledger#28) names the app's Hooks page in the Codex installer hint. Kyle then delegated the MCP dependency choice: D008 moves MCP to the v2 SDK,...

Session S0003

Claude Code session 2026-09-17

Resumed S0002 after its usage limit. Finished inline code in the reader (0146), including double-backtick spans and shortened summaries, and recaptured the three README screenshots that showed literal backticks. Fixed ledger stale and ledger doctor failing on a receipt that lists a PNG (0147), and folded 0142 to...

Change 0192

Record the v0.9.3 publish and Kore's move to it

This records the 0.9.3 release and Kore's move to it: Published. 0.9.3 went out from kylebegeman/ledger#33 (tag v0.9.3, npm latest). Its GitHub Release notes are identical to ledger release notes v0.9.3. Smoke test. The published package installed the Codex launcher in a scratch repository. The script printed...

Change 0191

Prepare v0.9.3

Bumps the package to 0.9.3 and writes the v0.9.3 release record over the receipts landed since v0.9.2, 0188 to 0191. Pins. The README quick start, the installed-hook note, the CI example, the adopt card, the schema example, and the publishing workflow pin 0.9.3. The quick start for other repositories installs the...

Change 0190

Name coverage patterns and outlined languages in the doctor symbols check

The doctor symbols check now gives advice only for code under coverage: When no tracked file matches git.requireEntryFor, it passes, names the patterns, and suggests pointing them at the code receipts should cover. It no longer reports the TypeScript parser. When TypeScript or JavaScript sits beside an outlined la...

Change 0189

Keep Codex hook approval across Ledger versions

ledger hooks install --host codex --launcher writes Codex hooks that run node .ledger/bin/ledger.mjs hook <event> --host codex. It also writes that script, which runs agents.command with the hook's arguments. A later install with a new --command rewrites only the script, so .codex/hooks.json stays byte for...

Change 0188

Record the v0.9.2 publish, Kore's move to it, and the pause

This records that 0.9.2 was published from kylebegeman/ledger#31 (tag v0.9.2, npm latest), with GitHub Release notes identical to ledger release notes v0.9.2, and that Kore moved to it in kylebegeman/forge#32 (Kore receipt 0010). It also covers: Smoke test. A run of the published package in a throwaway Go repo...

Change 0186

Prepare v0.9.2

Bumps the package to 0.9.2 and writes the v0.9.2 release record over the receipts landed since v0.9.1, 0175 to 0186. Pins. The README quick start, the installed-hook note, the CI example, the adopt card, and the schema example pin 0.9.2. Screenshots. The four README screenshots are recaptured with...

Change 0185

Script the README screenshots and the Dossier token check

Two maintenance scripts, and a palette fix they surfaced. scripts/readme-screenshots.mjs captures the README's four reader screenshots. It uses Playwright, installed with npm install --no-save, and frames each image the way CONTRIBUTING describes. It serves this repository's readers itself, and...

Change 0184

Generate the command reference from the registry

docs/COMMANDS.md is a command reference generated from the operation registry, the same source as ledger help, the MCP tools, and the JSON API. For every command it gives: the usage and help exactly as ledger help prints them a table of flags with their values and descriptions whether it prints JSON, whether i...

Change 0183

Publish the public changelog with a feed, permalinks, and metadata

The public changelog can be published as a site people follow. Atom feed. ledger render --profile public writes feed.xml with the newest 50 releases and their notes as HTML content. Entry ids are name-based UUIDs of the project and release, so they survive a moved site. The feed's updated time comes from the new...

Change 0182

Show summary excerpts as plain prose

Summary excerpts in the reader read as plain prose. A summary's list markers and paired **strong** markers are dropped, even when the strong text wraps a code span. As a result, a receipt that opens with bullets no longer shows - **Go:** in its row or panel. Code spans keep their backticks and their content,...

Change 0181

Mark what changed since a reader's last visit

Both reader profiles now mark what is new or changed since the viewer's last visit. Markers. A changed record gets a New or Updated chip. A note under the result count shows how many records changed, filters the list to them (the changed URL parameter), and offers Mark all as seen. What counts as a visit. A load m...

Change 0180

Navigate the reader by file, symbol, and link, and copy from records

The internal reader can now follow a record to the things it names, and back. Entity views. In a record's panel, selecting a file, pattern, or symbol lists every record that names it. A bar above the list names the entity and counts the records. A path also counts the records whose coverage pattern covers it, and a...

Change 0179

Extract Go, Rust, Python, and Swift symbols

Drafts, hook drafts, and ledger stale now read Go, Rust, Python, and Swift declarations. Before, only TypeScript, JavaScript, and Markdown yielded symbols, so a Go receipt had to be written without them. Go: functions, methods as Type.Method, and types, constants, and variables, grouped or not. Rust: items, and...

Change 0178

Check hooks in doctor and repair derived state with doctor --fix

ledger doctor gains a hooks check and a --fix flag. The hooks check. It finds Ledger's entries in the Claude Code, Codex, and Cursor hook files and warns when: an entry runs a command other than agents.command <agents.command> version fails or times out the command prints no Ledger version, as when another...

Change 0177

Review a change set with ledger context

ledger context prints one review packet for a change set: the working tree by default, --staged, or --base with --head. Per changed file. The Git change, coverage, docs impact, and the receipts in the change that list it. Also the newest records that mention it, with their invariants and conflict rules. Reco...

Change 0176

Write record bodies from every surface and add ledger update

Records can be written whole from the CLI, the JSON API, and MCP. Section bodies. new, feedback, backlog new, decision new, promote, and the new update accept sections, keyed by heading. On the CLI, they come from --section Heading=text and --sections-file, which reads every ## Heading block of a...

Change 0175

Record the v0.9.1 publish and Kore's move to it

Records that 0.9.1 published from kylebegeman/ledger#29 and that Kore moved to it in kylebegeman/forge#31 (Kore receipt 0009). That Kore change also names the Codex app's Hooks page in Kore's docs/PLAN.md, so the handoff drops that follow-up. The next slice is new features, when Kyle chooses them.

Change 0174

Prepare v0.9.1

Bumps the package to 0.9.1 and writes the v0.9.1 release record over the receipts landed since v0.9.0: 0171: the publish record, resolved product notes, and the render budget 0172: the Codex app's hook review in the installer hint 0173: MCP on the v2 SDK with confirmed write tools this receipt The README quick start...

Change 0173

Move MCP to the v2 SDK and confirm the tools that write records

Ledger's MCP server now runs on version 2 of the TypeScript SDK (@modelcontextprotocol/server and @modelcontextprotocol/node in place of @modelcontextprotocol/sdk 1.30). It speaks protocol revision 2026-07-28 and the 2025 revisions from one set of definitions. ledger mcp serves through serveStdio, where th...

Change 0172

Name the Codex app's hook review and retire the Dossier branch thread

ledger hooks install --host codex now says to trust the hooks with /hooks in the Codex CLI or on the Hooks page of the Codex app's settings. Its second step says to trust them again whenever the hook file changes, because Codex skips a changed hook until then. The README says the same. The handoff says Kyle trus...

Change 0171

Record the v0.9.0 publish, resolve product notes, and raise the render budget

Records that 0.9.0 published from kylebegeman/ledger#26 and that Kore moved to it in kylebegeman/forge#30 (Kore receipt 0008). The handoff's next slices are now MCP protocol 2026-07-28, which waits for Kyle's approval of new production dependencies, and new features. It also notes that Kore's changed Codex hooks nee...

Change 0170

Record the v0.8.2 publish and prepare v0.9.0

Records that 0.8.2 published from kylebegeman/ledger#25 and that Kore moved to it in kylebegeman/forge#29 (Kore receipt 0007). Then it bumps the package to 0.9.0 and writes the v0.9.0 release record over the Dossier visual system (0168), the compact sidecars (0169), and this receipt. The README quick start, the inst...

Change 0169

Write reader sidecars compact and fill search shards to the budget

The search index, its shards, graph.json, and graph/contracts.json are now written as compact JSON. shardSearchIndex also counts each document's exact serialized bytes and separators, so a shard never exceeds maxSearchIndexBytes unless one document alone does. This repository's internal reader went from 3,61...

Change 0168

Adopt Dossier's visual system in the reader

The static reader and the public changelog now use Dossier's visual system. The values were copied from Dossier b48ea15 (core/internal/render/assets/tokens.css), never imported: plum-tinted neutrals, teal, violet, and coral status tones, and borders in place of shadows Dossier's system font stacks, with no font...

Change 0167

Prepare v0.8.2

Bumps the package to 0.8.2 and writes the v0.8.2 release record over the receipts that landed after v0.8.1: the publish record (0158), the Windows test timeout (0159), B010's closure (0162), the draft fixes (0163), the records cleanup (0164), release --update (0165), the TypeScript loader and dependency updates (0...

Change 0166

Read TypeScript 5.0 to 5.4 and skip TypeScript 7, and update dependencies and actions

The symbol extractor now finds the TypeScript compiler API wherever it is, and treats a module without one as unavailable. resolveTypeScriptModule reads TypeScript 5.0 to 5.4 through their default export. It rejects TypeScript 7.0, which ships no JavaScript API, and then tries @typescript/typescript6, the packag...

Change 0165

Extend an existing release record with release --update

ledger release <version> --update adds the selected entries that an existing release record does not list. Their ids join entries, their lines join ## Changes, and updated moves to today. The summary, public notes, verification, and known issues stay as written. With --include-unreleased and --assign, on...

Change 0164

Curate historical stale references and close resolved product notes

ledger stale reported 66 signals in historical records, and now reports none. Receipts from 0003 to 0072, plus 0103 and 0116, name commands, exports, and helpers that later refactors renamed or moved. The 0.4 operation registry replaced every *Command function in src/cli.ts, for example. Each record now lists...

Change 0163

Draft symbols from changed lines and name the hooked session in mid-turn checks

Drafts now list only the symbols a diff touched. Every extractor reports where each symbol sits, getChangedLineRanges reads the changed lines from git diff --unified=0, and a draft keeps a file's symbol only when a changed line falls inside it. A line inside a subsection counts only for the innermost heading, an...

Change 0162

Close B010 with the second live Kore session

Backlog item B010 is landed. Its last acceptance check, a second live Claude Code session in Kore, passed on 2026-09-17 with Ledger 0.8.1. The session was given an ordinary rename across four files and edited them in one message. Session S0002 recorded all four paths, and the Stop hook drafted Kore receipt On the ne...

Change 0159

Give Windows test runs a 30 second default timeout

A new vitest.config.ts sets the test timeout to 30 seconds on Windows and keeps the 5 second default elsewhere. Git-heavy and transaction-heavy tests no longer fail on a slow Windows runner, and a slow test still shows up on macOS and Linux.

Change 0158

Record the v0.8.1 publish and Kore's move to it

Records that @kylebegeman/ledger 0.8.1 was published on 2026-09-17 from kylebegeman/ledger#22, with GitHub Release notes produced by ledger release notes for the first time and identical to the release record's Public Notes, and that Kore moved to 0.8.1 in kylebegeman/forge#26 with Kore receipt 0004. The handoff...

Change 0157

Pin the README demo clock and check the cards in CI

The README demo now runs its Ledger processes on a pinned day. The asset script loads scripts/readme-clock.mjs with node --import, which shifts Date so time starts at LEDGER_README_NOW (default 2026-09-17T12:00:00Z) and keeps advancing, so the session names and dates the cards show no longer depend on the...

Change 0156

Count earlier receipts under coverage any only for files they name

Under git.coverage: any, an earlier change entry now covers a changed file only when it names that file. A pattern such as src/**, a prefix: or glob: reference, or a directory ending in / still covers files from a receipt that is part of the change set, but no longer from an older one, for coverage and for...

Change 0155

Prepare v0.8.1

Bumps the package to 0.8.1 and writes the v0.8.1 release record over the fixes from the audit of 0.8.0, receipts 0149 through 0154, this one, and the two decisions Kyle delegated afterward, 0156 and 0157. The release workflow now takes the GitHub Release notes from ledger release notes, which prints the same text...

Change 0154

Tighten adoption, docs impact, and verification trust

verify --run matches the whole backticked command against verification.allow, environment assignments included, so a receipt can no longer set NODE_OPTIONS or PATH on an allowlisted command; this repository's allowlist names LEDGER_UPDATE_CONTRACT=1 npx vitest ** for the contract bullets. Docs impact treat...

Change 0153

Preserve line endings in frontmatter edits

The four record editors that hooks and authoring commands use, setFrontmatterScalars, setFrontmatterArray, ensureFrontmatterArrays, and replaceSectionBody, now write the line ending the record already uses. Each reads the ending from the first line break and joins with it, so a CRLF session record stays CRLF...

Change 0152

Merge hooks per entry, announce every new draft, and cap drafts

hooks install now removes Ledger's own entries from a host hook group and keeps whatever else the group holds, so a command a user added to Ledger's group survives a reinstall without a second Ledger group. agents --write replaces the first managed block and removes any later copies instead of leaving a stale se...

Change 0151

Keep hook writes from racing and rebase Git paths onto the Ledger root

Hooks for parallel tool calls no longer lose edited paths. The workspace write lock now waits with jittered backoff, up to five seconds, while another live process holds it, instead of failing at once, and the hook dispatcher re-reads the catalog and retries a touch or draft whose plan went stale while it waited. Gi...

Change 0150

Scan code spans linearly and share the record row markup

The renderer finds Markdown code spans with a one-pass scanner over backtick runs instead of a lookaround regex, which was quadratic on unpaired runs of increasing length. A shortened summary that is entirely one code span keeps its text instead of becoming "...", and why, which only feeds search, is shortened wit...

Change 0149

Rank reader search like the CLI and keep the palette working offline

The reader now scores search the way ledger search does: the sidecar omits each record's terms text, and the runtime passed an empty string in its place instead of leaving it undefined, so the shared scorer never derived it and the terms weight was always zero. The command palette falls back to the rendered ro...

Change 0148

Handle skipped view transitions in the reader

The reader runtime now handles the ready promise of every view transition it starts. When the browser skips the animation, as it does in a hidden tab or when a newer transition starts, ready rejects while the update still runs, and the reader no longer logs an unhandled InvalidStateError on each load and filte...

Change 0147

Skip binary files in stale checks

ledger stale and ledger doctor no longer stop when a record lists a screenshot or another file that is not UTF-8 text. The stale run's file cache treats such a file like a missing one: it adds nothing to the text that symbols and anchors are checked against, and a block that names only binary files is skipped. T...

Change 0146

Render inline code in the reader

The static reader now renders Markdown code spans in record prose as inline code: library and record panel summaries, Invariants and Verification bullets, and the public changelog's release notes. The text is escaped first, then a backtick run pairs with the next run of the same length on the line, as in Markdown, a...

Change 0145

Keep one pull request comment from the CI action

With comment: "true", the composite action now keeps the Ledger summary in one pull request comment. It appends a hidden <!-- ledger-ci-summary --> marker, looks for a github-actions[bot] comment that carries it, and updates that comment in place, posting a new one only on the first run. A pull request from a...

Change 0144

Judge docs impact under the coverage mode

Docs impact now follows git.coverage. Under current, the default, nothing changes: only change entries in the change set give a source file its docs impact evidence. Under any, a file those entries do not satisfy may take its evidence from an earlier receipt that lists it and carries a reviewed docsImpact de...

Change 0143

Match agents.command in the verification allowlist

ledger verify --run now understands agents.command. When it is not plain ledger, a Verification command written with it, such as npx ledger validate or a pinned npx --yes @kylebegeman/ledger@0.8.0 ready, matches the same ledger pattern in verification.allow, and a bare ledger command runs through the...

Change 0142

Keep hook drafts from duplicating receipts written by hand

The Stop and SessionEnd hooks no longer draft a receipt for work another receipt already records. A change entry counts as linked when either the session or the entry names the other in related. With Git, only touched paths that still differ from HEAD are pending, and a change entry that is new or modified in the...

Change 0141

Prepare v0.8.0

Bumps the package to 0.8.0 and writes the v0.8.0 release record over receipts 0128 through 0137, this one, and the follow-up fixes 0142 through 0148, with Public Notes for the GitHub Release. Reinstalls this repository's own Claude Code hooks, agents block, and skill with 0.8.0, which saves agents.command and adds...

Change 0137

Rebuild the README around real output and refresh the mark

The README is rewritten to show what Ledger looks like and how it is used: a reader screenshot up front, a capture loop diagram, the context an agent receives at session start, the drafted receipt notice, ledger ready, ledger packet, ledger adopt in a Go repository, and ledger ci --github, all as images of r...

Change 0135

Infer adopt configuration from the tracked tree

ledger adopt reads git ls-files and writes a configuration that fits the repository: coverage roots for every tracked top-level directory (hidden ones only for .github) plus the root Makefile and primary manifest, ignores for generated code and untracked build output (templ, sqlc output from every tracked sq...

Release v0.7.0

Ledger v0.7.0

Trust. Records now carry proof: a pull request needs its own receipt, docs impact is judged per file, verification commands run and leave evidence, stale anchors are detected against the code, and CI annotates pull requests. The reader runtime is typed, bundled, and browser-tested, the engine has a typed client, and...

Release v0.6.0

Ledger v0.6.0

Capture. Records now get written by the workflow: host hooks for Claude Code, Codex, and Cursor start a session record, track touched paths, inject a memory packet, and draft a receipt; a shipped skill and a managed AGENTS.md block tell agents how to use Ledger; authoring commands create every record kind;...

Release v0.5.0

Ledger v0.5.0

The engine server from decision D005. ledger serve --api turns Ledger into a local memory engine: one loopback process with a JSON API, an event stream, live reload, and MCP over HTTP, and CLI commands delegate to its warm cache.

Release v0.4.0

Ledger v0.4.0

The 0.4 foundation from decision D005. Every command is now generated from one operation registry, source records are served from an incremental catalog cache, and every file-oriented surface shares one retrieval contract. This is the base the 0.5 engine server builds on.

Session S0002

Claude Code session 2026-09-16

Built Ledger 0.8.0 on adoption-0.8: the five B010 milestones (0131 to 0135), the README overhaul and emerald mark (0137), and release prep (0141) in pull request #20. Then fixed what checking the README against the code found (0142 to 0145), and hit the usage limit while finishing inline code in the reader (0136),...

Change 0134

Keep linked session records when pruning

ledger session prune never deletes a session record another record links: an expired session is kept when any non-session record lists its id in related, or when its own related names an existing record. --write deletes only unlinked expired sessions and, in the same transaction, closes kept sessions that ar...

Change 0133

Tell agents about drafted receipts and keep one draft per change

A new user-prompt-submit hook for Claude Code and Codex tells the agent, once per drafted receipt, which draft the Stop hook wrote for its session and to finish it rather than create another; announcements are tracked in the derived .ledger/cache/hook-notices.json. SessionStart context and the pre-compact handof...

Change 0132

Configure one Ledger command for hooks, instructions, and context

agents.command in .ledger/config.yaml is the one command prefix that runs Ledger in a repository, default ledger. ledger hooks install --command saves it there, rewriting the YAML through the document API so comments, quoting, and key order survive, in the same transaction as the hook file. Every agent-facin...

Change 0131

Guard docs reconcile and detect curated routing files on adopt

ledger docs reconcile now refuses to replace a routing file Ledger did not generate unless --force is passed. On refusal it writes neither routing file, prints each refused file with its reason, what it would have written, and the two remedies, and exits 1 with a machine-readable written: false and refused l...

Change 0130

Record the live Kore capture session

B007's live acceptance check ran in Kore on 2026-09-16. A fresh Claude Code session given an ordinary task received Ledger context on start, recorded its edit on session S0001, and left draft receipt 0002 on stop, which the agent finished to pass ledger ready when asked. Product note 0129 records what did not work...

Change 0128

Record the Kore adoption

Kore, the first outside adopter named by D007, installed Ledger 0.7.0 through npx with Claude Code and Codex hooks, the skill, and the agents block (kylebegeman/forge#23, Kore receipt 0001). This entry records that state on Ledger's side. Product notes 0125, 0126, and 0127 capture the install friction: TypeScript-sh...

Change 0124

Audit the 0.7 trust slice

A release audit of receipts 0112 through 0123 with fixes applied inline. The composite action's optional pull request comment read GITHUB_STEP_SUMMARY from its own step, which GitHub gives every step as a different file, so the comment step never found a summary; the Ledger step now copies its summary to...

Change 0123

Prepare v0.7.0

Bumps the package to 0.7.0, marks Phase 11 trust as shipped in the roadmap, lands backlog B008 with promotion notes naming every receipt, captures the dogfood finding about hook drafts colliding with hand-written receipts as product note 0122, and rewrites the handoff for the next session. The v0.7.0 release record...

Change 0121

Tighten stale anchor precision

The anchor freshness check from 0116 now separates literal anchors from descriptions. extractAnchors returns structured anchors: each backticked span in an - Anchor: bullet is a literal, and a bullet without backticks is split on commas into descriptive anchors. isCheckableAnchor skips descriptions that contai...

Change 0120

Shard search, chunk reader artifacts, and add full-text search

Reader artifacts now stay under their per-file budgets as a catalog grows. The serialized search index drops each record's terms text, which Node and the browser derive from the weighted fields with searchTermsFor, and when it still exceeds maxSearchIndexBytes it is written as shards under search/ behind a m...

Change 0119

Type, bundle, and browser-test the reader runtime

The reader's browser code is now a typed module, src/reader/runtime.ts, compiled against the DOM library with strict null checks, and its stylesheet is a plain src/reader/styles.css. esbuild bundles both into dist/reader/ (npm run build:reader, part of build and run before test), and...

Change 0118

Derive a typed API client from the operation registry

The registry is now ledgerOperationTable, an object keyed by machine name whose value types are the concrete operation definitions; ledgerOperations is derived from it in help order. Three types follow from the table: LedgerOperationName, LedgerOperationInput<K>, and LedgerOperationOutput<K>....

Change 0117

Ship a GitHub Action with annotations and a job summary

ledger ci --github prints one GitHub Actions workflow command per failing signal, with the file path for coverage, docs impact, and validation issues and with data escaped per the workflow command rules, and appends a Markdown summary table with a "What to fix" list to the file named by GITHUB_STEP_SUMMARY. The...

Change 0116

Check anchors and invariants against the code tree

ledger stale now reads the - Anchor: bullets of every Changed Files block, resolves the block to the record's file references, and reports stale-anchor when an anchor no longer appears in any of those files, naming the file. When an invariant cites a stale anchor or a stale symbol in backticks, it reports...

Change 0115

Run verification commands and record evidence

ledger verify reads the Verification section of change entries and parses each bullet that starts with a backticked command into an environment prefix and argv. --run executes the commands that match the verification.allow patterns from the project root, under a timeout and output cap, and writes...

Change 0114

Report which symbol extractor ran and make typescript an optional peer

Symbol extraction now says what it did. extractCodeSymbolsDetailed and extractFileSymbolsDetailed return the symbols together with the extractor that produced them (typescript, regex, markdown, or none) and a fallback reason when the parser was unavailable; asking for the TypeScript parser explicitly now...

Change 0113

Judge docs impact per source file

buildDocsImpact now produces one evidence record per changed source file. A file is satisfied only through a change entry in the same change set that lists it and either carries a reviewed docsImpact declaration or references docs; the file's evidence names the entry, the declaration status and reason, and the d...

Change 0112

Bind coverage to the current change set

Coverage now distinguishes a change entry that belongs to the change under inspection from any record that happens to mention a path. Under the new default git.coverage: current, a required changed path is covered only when a change entry listing it is itself added or modified in the working tree, staged diff, or...

Change 0111

Prepare v0.6.0

Bumps the package to 0.6.0, marks Phase 11 capture as shipped in the roadmap, rewrites the handoff for the next session, and records in backlog B007 which receipts promoted each part of the slice. The v0.6.0 release record groups receipts 0106 through 0111 and carries Public Notes for the GitHub Release.

Change 0110

Ship the Ledger skill and a managed AGENTS.md block

ledger skills install writes .agents/skills/ledger/SKILL.md, an Agent Skills entry that tells a skills-aware agent when to call packet, explain, search-packet, conflict, session note, new, promote, backlog new, decision new, scratch, and ready, and what --json and MCP offer. Codex and Cur...

Change 0109

Install host hooks that capture sessions, touched paths, and draft receipts

ledger hooks install --host claude-code|codex|cursor merges Ledger's lifecycle hooks into the host's project hook file (.claude/settings.json, .codex/hooks.json, .cursor/hooks.json), keeping every entry that is not Ledger's and replacing earlier Ledger entries, with --dry-run to print the merged file and...

Change 0108

Add the ready gate for records that are ready to land

ledger ready distinguishes a structurally valid draft from a record that is ready to land. It checks draft change entries by default, or any records named by id or path, or a --kind and --status selection. A record is ready when validation is clean for it (errors and warnings, including missing files and...

Change 0107

Add expiring session records with start, touch, note, close, prune, and promotion

session is a seventh record kind stored under .ledger/sessions/ with an expires date, optional host and hostSession fields, and Summary, Learned, and Next sections. ledger session start (alias ledger scratch) creates one or returns the active record for the same host session; session touch appends to...

Change 0106

Add authoring commands for backlog items, decisions, promotion, and release notes

Four operations join the registry: backlog new, decision new, promote <id>, and release notes <version>. The first two render the project's backlog and decision templates with the next sequential id, area tags, and optional decision, related, and docs links. promote drafts a change entry linked to a backlo...

Change 0105

Record the September 2026 handoff

Added docs/HANDOFF.md, a durable resume point describing the published state, the releases and receipts from this cycle, every decision taken in conversation, the next slices in order, the conventions in force, and open threads. Added a repository AGENTS.md that routes a new session to the handoff, the generated...

Change 0104

Prepare v0.5.0

Bumped the package to 0.5.0 and marked the roadmap's Phase 11 engine server as shipped. The release record for v0.5.0 groups the engine server (0099), CLI delegation (0100), live reload (0101), MCP resources and prompts (0102), and shared search scoring (0103).

Change 0103

Share search scoring between Node and the reader

src/searchCore.ts now holds the search weights, normalizeSearchText, fuzzyScore, and scoreSearchFields once. ledger search scores through it, and the static reader runtime embeds the same functions by serializing them with Function.prototype.toString() at build time, replacing the hand-copied browser imp...

Change 0102

Expose records, packets, and prompts over MCP

The MCP server registers three resources and two prompts alongside its tools. ledger://records/{id} lists every record in the catalog and reads its raw Markdown; ledger://packet/{path} returns a token-bounded handoff packet for a URL-encoded project path; ledger://contract returns the operations contract as JS...

Change 0101

Reload the reader from the engine event stream

The reader runtime now opens an EventSource on /events whenever the page is served over HTTP, announces rebuilt events in the live status region, and reloads the page 150 ms later so filters, pagination, and the open record in the URL survive. A rebuild-failed event leaves the last good render in place with...

Change 0100

Delegate CLI commands to a running engine

When ledger serve --api is running for a project, CLI commands that work inside that workspace now run inside the engine instead of parsing the catalog themselves. src/operations/delegate.ts reads .ledger/daemon.json for the project containing the current directory, probes the engine's health with a 400 ms tim...

Change 0099

Add the engine server with API, events, and MCP over HTTP

ledger serve --api starts the engine in src/engine.ts: one hardened loopback HTTP server hosting the static reader, a JSON API generated from the operation registry, a server-sent event stream, MCP over Streamable HTTP, and a server card. POST /api/v1/operations/{name} runs any operation that works inside a wo...

Change 0098

Prepare v0.4.0 and fail doctor on render budget overruns

Bumped the package to 0.4.0, turned the render-budget doctor check from a warning into a failure when a generated reader artifact exceeds its budget, and marked the roadmap's Phase 11 foundation as shipped.

Change 0097

Unify file retrieval behind one contract

Added src/retrieval.ts with retrieveByPath, the one place that decides which records a file path is related to. It matches the target against every record's file references with a single matcher (exact path, then coverage patterns, then a directory suffix), returns each match with its metadata, matched reference...

Change 0096

Add an incremental catalog cache

Every read of the source records now goes through readLedgerCatalog in src/catalogCache.ts. It stats each Markdown file and serves unchanged files from a derived cache under .ledger/cache/, parsing only files whose size or mtime changed and whose SHA-256 content hash differs. Files modified within two seconds...

Change 0095

Generate the CLI and MCP surface from an operation registry

Replaced the 1,830-line command switch in src/cli.ts with an operation registry. Each of the 31 operations is defined once under src/operations/definitions/ with its machine name, CLI path and flags, zod input schema, loose zod output schema, workspace requirement, mutation flag, handler, human formatter, and op...

Release v0.3.2

Ledger v0.3.2

First release since v0.3.1 to reach npm. Carries the Windows test portability fixes and newest-first reader ordering that landed in July, records the accepted next-version direction and retired proposals, and fixes the release pipeline so tags publish and produce GitHub Releases.

Change 0094

Publish-ready hygiene for v0.3.2

Bumped the package to 0.3.2, made the release workflow publish through npm trusted publishing with an NPM_TOKEN fallback and create a GitHub Release from the release record's public notes, removed the Homebrew install instructions, replaced the master and next branch model with pull requests into master, req...

Change 0093

Record next-version direction and retired proposals

Added a from-scratch brainstorm of Ledger's next version to the docs scratchpad as Markdown plus a styled HTML view, recorded the accepted direction and Kyle's four supporting decisions as D005, recorded the retired and reshaped proposals as D006, replaced the roadmap's Phase 10 next slices with a pointer to that re...

Release v0.3.1

Ledger v0.3.1

1 change(s) selected for v0.3.1.

Change 0092

Sort the reader model newest-first

Moved document ordering into the reader model. buildStaticReaderModel now sorts rendered documents by date descending with a numeric-aware identifier tiebreak, also descending, before the search index is derived, so both profiles share one newest-first order. The public-only presentational copy sort in renderStaticR...

Change 0091

Fix Windows CI test portability failures

Repaired the two tests that broke the windows-latest CI matrix on Node 22 and 24 since the v0.2.0 push. The projectPaths test compared the absolute output of resolveProjectPath against a hard-coded POSIX string, which can never match on Windows because path.resolve prepends the current drive letter; it now compares...

Change 0090

Group public changelog by year and refine reader chrome

Layered year grouping onto the public changelog through the path entry 0083 reserved: release entries sort newest-first, the first entry of each year carries a year-start mark, and a large muted year heading renders as a pseudo-element inside that entry's own grid, so the filter runtime can re-append rows without di...

Release v0.3.0

Ledger v0.3.0

2 change(s) selected for v0.3.0.

Release v0.2.0

Ledger v0.2.0

14 change(s) selected for v0.2.0.

Change 0089

Simplify theme toggle to light and dark

Removed the system stop from the theme toggle. The reader follows the operating system preference silently until a reader makes a choice; the toggle then flips between light and dark from whatever theme is currently resolved, and the explicit choice persists. While no choice is stored, the toggle icon tracks the res...

Change 0088

Replace row expansion with record detail panel

Removed the inline details expansion and rebuilt records as thin list rows that open a slide-out detail panel. Each row is a single line of kind, id, title, status, and date, with a clamped summary and tag chips in comfortable density. The full record content ships in an inert template per row and is cloned into a f...

Change 0087

Match accent to mark orange

Aligned the interface accent with the sunset mark. Interactive elements now use a saturated burnt orange in light mode and the mark's luminous orange in dark mode, with matching soft fills and a warm canvas glow. Decision chips returned to their steel blue tones because copper decisions would have blended into the o...

Change 0086

Brighten accent to azure with sunset mark

Moved the reader accent from copper to a brighter azure blue in both themes and gave the brand mark its own warm identity: a yellow to orange to red sunset gradient tile with a warm yellow pip. The interactive accent now reads vivid blue while the mark deliberately contrasts warm against the cool interface. Decision...

Change 0085

Swap reader accent from indigo to copper

Replaced the indigo and purple accent family with a warm copper and terracotta ramp across both themes, following project direction to drop the purple color. The brand mark, canvas glow, interactive states, focus rings, pressed facets, active filter pills, pagination, and palette highlights all follow the new accent...

Change 0084

Add filter pills, right rail, pagination, and density modes

Restructured the reader around a search-first layout. The search field now spans the full content width above dropdown filter pills, the browse rail moved to the right side of the results, and generous spacing separates the search region from the library. Results paginate with a configurable page size and windowed p...

Change 0083

De-card static reader into flat editorial layout

Replaced the reader's filled-card visual language with a flat editorial layout directed by project review feedback. Records now read as a hairline-divided list with visible dates, expanded context renders as plain content groups, and only a handful of surfaces remain: outlined containers with a thin stroke and no fi...

Change 0082

Redesign static reader experience

Rebuilt the generated Ledger website from first principles. The old bordered dashboard and dense always-expanded cards were replaced with a borderless, responsive reader built around strong typography, filled surfaces, restrained depth, compact record summaries, and a dedicated public release feed. The new visual sy...

Change 0081

Complete production hardening audit

Completed an active production audit of the Ledger 2.0 hardening work. File boundaries, recoverable writes, validation, public rendering, serving, CLI and MCP inputs, migrations, releases, and publishing automation now fail safely and consistently under malformed, oversized, concurrent, and adversarial inputs. Gener...

Change 0080

Close final stale diagnostics and refresh toolchain patches

Stale-knowledge checks now honor explicit symbols:name acknowledgements for historical symbol anchors. The compatible @types/node and Vitest patch versions in the lockfile were also refreshed after the final dependency audit.

Change 0079

Harden CI release automation and project truth

CI now covers maintained Node LTS releases across Linux, macOS, and Windows, audits production dependencies, and installs the packed package. Release automation validates tag and package versions, supports npm OIDC trusted publishing with a token fallback, and no longer silently succeeds without publishing credentials.

Change 0078

Verify integrity and add safe render profiles

Integrity artifacts can now be used as read-only baselines through CLI, MCP, and library APIs. The static reader also has a separate fail-closed public profile that exports only released release records and explicit public notes.

Change 0077

Version machine results and type operational errors

CLI --json output and MCP JSON text payloads now share a versioned success and failure envelope. Operational error codes come from typed boundary errors or a safe system-error normalizer rather than matching human message wording.

Change 0076

Harden static reader serving and network exposure

The reader server now defaults to a host-validated loopback mode and requires explicit, token-authenticated network exposure for non-loopback binding. It also adds symlink-safe file resolution, method and URI limits, bounded HTTP server settings, restrictive response headers, static CSP metadata, and graceful connec...

Change 0075

Make source mutations recoverable and concurrency safe

Ledger source mutations now use a shared journaled file transaction with a workspace lock, optimistic source hashes, staged replacements, rollback copies, and interrupted-operation recovery. Release assignment and release creation now commit together, while entry creation, migrations, docs routing, and validation ba...

Change 0074

Confine project paths and bound source resources

Ledger now confines configured paths and record references to the discovered project root, including checks for existing symlink chains that escape the workspace. Config and record YAML parsing plus source discovery now have explicit size, count, alias, aggregate-byte, and nesting limits.

Release v0.1.13

Ledger v0.1.13

23 change(s) selected for v0.1.13.

Change 0073

Prepare v0.1.13 release

Bumps Ledger to 0.1.13, assigns the completed improvement and audit work to the release, and generates the v0.1.13 release record.

Change 0071

Final improvement sweep verification

Recorded the final verification pass after completing the remaining improvement and feature slices.

Change 0070

API and release prep docs

Added durable documentation for the TypeScript API boundary and release-prep checklist.

Change 0069

Static reader graph and search polish

Surfaced graph summary data in the static reader sidebar and added ranked search score badges for active browser searches.

Change 0068

Search result agent packets

Added a topic-first agent packet workflow that builds token-budgeted packets from weighted search results.

Change 0067

Render HTML component split

Moved static reader HTML composition into src/renderHtml.ts while preserving the existing public exports from src/render.ts.

Change 0066

Public API boundary

Defined a curated stable package root and moved broad internal exports behind an explicit unstable entrypoint.

Change 0065

Query and packet command models

Extracted ledger query and ledger packet behavior into reusable command result modules.

Change 0064

Graph invariant and verification nodes

Extended the generated relationship graph with invariant and verification nodes attached to each source record.

Change 0063

Render asset split

Moved the static reader's embedded CSS and browser runtime out of src/render.ts and into src/renderAssets.ts.

Change 0062

MCP compact summaries

Added top-level summary objects to all MCP tool JSON payloads while preserving existing detailed fields.

Change 0061

Validation policy profiles

Added validation.profile with standard and strict profiles. Standard keeps existing behavior; strict escalates validation warnings to errors.

Change 0060

Config version migrations

Added explicit config schema version support and an in-memory migration path for legacy version: 0 config objects.

Change 0059

Generated artifact contract tests

Added golden-style tests for deterministic generated search-index and graph artifact projections.

Change 0058

Parser-backed symbol extraction

Moved symbol extraction into a reusable module and added a TypeScript parser path for top-level TypeScript and JavaScript symbols, with regex fallback for portable installs.

Change 0057

Command result model extraction

Extracted ledger search and ledger metrics behavior into reusable command modules with result models and formatters.

Change 0055

JSON operational errors

Added structured JSON error output for operational CLI failures when commands are invoked with --json.

Change 0054

Explicit docs impact declarations

Added explicit docsImpact frontmatter declarations so source changes can mark docs as updated, not needed, or unaffected with a reviewed reason. The docs impact report now lists declarations and ignores TODO placeholder reasons.

Change 0053

Weighted static search ranking

Changed the static reader search index from one flat term string into weighted search fields and updated the browser runtime to rank and reorder visible cards by score.

Change 0052

Render artifact budget metrics

Added configurable static-reader artifact budgets and render metrics. ledger render now reports generated bytes and write time, while ledger doctor checks the generated HTML, search index, graph, total bytes, and write duration against render.budgets.

Change 0051

Static search and token-budgeted agent context

Accepted the architecture hardening and static search feature backlog, then landed the first implementation slice: token-budgeted agent packets, lazy static search and graph artifacts, local static reader serving, doctor diagnostics, stale-knowledge detection, and role-specific agent instructions.

Release v0.1.12

Ledger v0.1.12

1 change(s) selected for v0.1.12.

Change 0050

Dogfood-driven Ledger adoption improvements

Added the dogfood-driven adoption path Ledger needed after the Lumen migration: scoped package metadata, legacy changelog migration, historical validation noise controls, glob/prefix coverage, partial docs adoption, schema extensions, richer reader filters, agent instructions, and first-class product-note records.

Release v0.1.10

Ledger v0.1.10

3 change(s) selected for v0.1.10.

Release v0.1.9

Ledger v0.1.9

2 change(s) selected for v0.1.9.

Release v0.1.8

Ledger v0.1.8

2 change(s) selected for v0.1.8.

Release v0.1.7

Ledger v0.1.7

2 change(s) selected for v0.1.7.

Release v0.1.6

Ledger v0.1.6

2 change(s) selected for v0.1.6.

Release v0.1.5

Ledger v0.1.5

2 change(s) selected for v0.1.5.

Release v0.1.4

Ledger v0.1.4

2 change(s) selected for v0.1.4.

Release v0.1.3

Ledger v0.1.3

5 change(s) selected for v0.1.3.

Release v0.1.2

Ledger v0.1.2

9 change(s) selected for v0.1.2.

Release v0.1.1

Ledger v0.1.1

20 change(s) selected for v0.1.1.

Change 0049

Prepare v0.1.10 release

Bumps Ledger to 0.1.10, assigns the final audit and release-preflight hardening work to the patch release, and generates the release record.

Change 0048

Final release preflight hardening

Hardens the release write preflight so release --assign --write verifies the release output directory before mutating entries. This closes the remaining safe edge case from the audit pass where an absent or unwritable releases directory could still fail after assignment had started.

Change 0047

Bug sweep release and agent integration fixes

Fixes safe issues found during a full bug sweep: release assignment now preflights release-file writes before mutating entries, MCP exposes integrity verification, CI reuses changed-file discovery, and this repo's Ledger config ignores generated docs/llm/START_HERE.md.

Change 0046

Prepare v0.1.9 release

Bumps Ledger to 0.1.9, assigns the smarter drafting work to the release, and generates the release record.

Change 0045

Improve git-aware drafting

Improves ledger new --from-diff so drafts infer areas from changed paths and include status-aware per-file prompts plus docs-impact guidance.

Change 0044

Prepare v0.1.8 release

Bumps Ledger to 0.1.8, assigns the release assignment workflow to the release, and generates the release record.

Change 0043

Add release assignment workflow

Adds ledger release <version> --assign, which writes the selected release version back to the selected change entries before optionally writing the release record. Also updates the README positioning to make Ledger's agent-first focus explicit while preserving full CLI support for humans.

Change 0042

Prepare v0.1.7 release

Bumps Ledger to 0.1.7, assigns the static reader polish work to the release, and generates the release record.

Change 0041

Polish static reader facets

Adds faceted reader metadata and improves the generated static reader with quick browse controls for kinds, releases, and areas plus relationship sections on record cards.

Change 0040

Prepare v0.1.6 release

Bumps Ledger to 0.1.6, assigns the integrity provenance work to the release, and generates the release record.

Change 0039

Add integrity provenance report

Adds ledger verify-integrity, which computes SHA-256 hashes for every Ledger source record, combines them into a catalog hash, and writes JSON plus Markdown integrity artifacts.

Change 0038

Prepare v0.1.5 release

Bumps Ledger to 0.1.5, assigns the docs-plane reconciliation work to the release, and generates the release record.

Change 0037

Expand docs plane reconcile and migration reports

Extends the managed docs plane so ledger docs reconcile writes both the docs routing manifest and docs/llm/START_HERE.md, and adds ledger docs migrate to generate cleanup guidance for docs folders.

Change 0036

Prepare v0.1.4 release

Bumps the package to 0.1.4, assigns the MCP integration work to v0.1.4, and generates the release record.

Change 0035

Add MCP agent integration

Adds ledger mcp, a stdio Model Context Protocol server exposing read-oriented Ledger tools for validation, query, explain, conflict guidance, agent packets, and docs impact.

Change 0034

Prepare v0.1.3 release

Bumps the package to 0.1.3, assigns the latest landed work to v0.1.3, and generates the release record.

Change 0033

Harden open source packaging

Adds a release-grade npm script, simplifies CI to use that script, adds a tag-driven release workflow, and improves issue and pull request templates for public collaboration.

Change 0032

Add agent packet report output

Adds ledger packet <path> --write-report, which writes the compact agent handoff packet to .ledger/reports/packet.md.

Change 0031

Add query text filter

Adds --text to ledger query. Text filtering searches normalized metadata such as id, title, status, release, path, areas, files, symbols, docs, relationships, and section names.

Change 0030

Harden validation warnings

Adds validator warnings for missing updated, empty changed-file references when policy requires them, empty invariants when policy requires them, unknown frontmatter fields, and missing files or docs references.

Change 0029

Prepare v0.1.2 patch release

Prepares the v0.1.2 patch release by bumping package metadata, assigning the latest landed changes to release: "v0.1.2", and generating the Ledger release record.

Change 0028

Ignore generated docs manifest

Adds docs/llm/manifest.json to Git and Ledger coverage ignore paths. The generated docs routing manifest no longer appears as untracked work or missing Ledger coverage after ledger docs reconcile.

Change 0027

Add agent packet command

Adds ledger packet <path>, a compact agent handoff command that combines matching entry metadata, symbols, docs references, conflict rules, invariants, and verification checks for a target file.

Change 0026

Generate docs routing manifest

Adds ledger docs reconcile, which builds and writes the configured docs routing manifest from the current docs audit. The generated manifest lists non-generated docs files with their Ledger docs classifications.

Change 0025

Add decision and backlog indexes

Adds generated by-decision.json and by-backlog.json indexes. These group normalized Ledger documents by relationship ids declared in decisions: and backlog: frontmatter.

Change 0024

Refresh notebook icon asset

Replaces the bundled Ledger icon with the provided notebook SVG and updates the README image alt text to describe the notebook icon.

Change 0023

Add conflict report output

Adds Markdown report output for conflict guidance. ledger conflict <path...> --write-report now writes .ledger/reports/conflict.md while preserving the existing console and JSON workflows.

Change 0022

Extract symbols for diff drafts

Adds lightweight symbol extraction to ledger new --from-diff. Draft entries now populate symbols: from changed TypeScript/JavaScript declarations and Markdown headings, and changed-file anchors include detected symbols.

Change 0021

Expand query filters

Adds richer ledger query filtering for releases, decision ids, backlog ids, symbols, files, docs paths, and exact record ids. CLI output now surfaces matched release, area, file, symbol, and docs context.

Change 0020

Overhaul README and prepare patch release

Reworks the README into a fuller public project landing page with a branded header, badges, quick starts, command map, example entry, agent workflow, release workflow, docs relationship, library usage, and development guidance. The package metadata is bumped to 0.1.1, existing change entries are assigned to the...

Change 0019

Complete bug sweep and integration fixes

Completes an active bug sweep and integration pass across the Ledger package. The pass fixes safe issues in CLI testability, config and frontmatter diagnostics, git coverage, generated entry escaping, rendered search payloads, and npm package contents.

Change 0018

Polish release workflow

Improves release generation with semver-like version validation, explicit release status/date support, and separate public notes plus internal Ledger entry details in rendered release records.

Change 0017

Polish static reader context

Enhances the static reader model and HTML output with extracted summaries, invariants, verification checks, and the Ledger icon asset. The reader cards now show the highest-value maintenance context without requiring users to open raw Markdown first.

Change 0016

Polish git-aware entry drafting

Improves ledger new --from-diff by using Git status details, preserving quoted YAML frontmatter strings, adding docs references for changed docs files, and rendering status-aware changed-file starter sections.

Change 0015

Add CLI fixture workflow tests

Adds an end-to-end CLI test that runs a complete Ledger workflow in a temporary workspace: init, new, validate, index, render, query, docs classify, and CI.

Change 0014

Harden config validation

Adds runtime validation for .ledger/config.yaml so malformed nested config values fail with explicit errors instead of being silently merged into defaults.

Change 0013

Polish CLI help output

Adds command-specific help, nested docs help, and ledger version. Updates the README with first-run examples for ledger help and ledger version.

Change 0012

Add repo hygiene and CI workflow

Adds GitHub CI, issue templates, a pull request template, contributing guidance, security reporting guidance, and npm package metadata.

Change 0011

Add CI summary command

Adds ledger ci [--staged] [--json] for running the core Ledger guard set in one command. The command composes validation, docs reference audit, Git coverage, and docs impact into a compact pass/fail summary for humans or a nested JSON result for automation.

Change 0010

Add static reader render command

Adds ledger render for generating .ledger/dist/index.html, a single-file offline reader for Ledger source records. The reader includes catalog stats, filters, rendered entry summaries, embedded JSON data, and Markdown source access for every record.

Change 0009

Add docs classify command

Adds ledger docs classify [path...] [--json] for exposing Ledger's docs lifecycle classifier directly through the CLI. With paths, it classifies only those targets. Without paths, it discovers and classifies the configured docs root.

Change 0008

Add docs impact command

Adds ledger docs impact for checking whether changed source files have an explicit docs impact. The command reports changed source files, docs files, Ledger files, changed Ledger entries, docs referenced by those entries, and source files that still lack any docs impact.

Change 0007

Add release and unreleased commands

Adds ledger unreleased for listing landed or shipped change entries that have not been assigned to a release. Adds ledger release <version> for rendering a valid Ledger release document from version-assigned entries or from the current unreleased set.

Change 0006

Add conflict assistant command

Adds ledger conflict <path...> for retrieving merge-conflict guidance tied to the files a user or agent is resolving. The command can print human-readable guidance or emit JSON for merge tooling and agent workflows.

Change 0005

Add query and agent explain output

Adds ledger query for filtering records by kind, status, and area. Expands ledger explain with --json for tool output and --agent for compact invariants plus verification context.

Change 0004

Add git coverage command

Adds ledger coverage to compare Git changed files against Ledger entries. The command uses git.requireEntryFor and git.ignore config to decide which changed paths require coverage, supports --staged, and can emit JSON for CI or agent tools. ledger new --from-diff now also supports --staged.

Change 0003

Complete init template scaffold

Expands ledger init so new projects get the same core source templates Ledger uses itself: change, backlog, decision, release, and coverage policy files. Adds test coverage for initWorkspace(..., { withDocs: true }) to ensure the Ledger root, templates, policy file, and optional docs routing starter files are cr...

Change 0002

Use .ledger root and add docs lifecycle audit

Renames Ledger's default project directory from .changes/ to .ledger/ so the on-disk structure matches the product and SDK name. Adds the first managed-docs lifecycle slice: ledger init --with-docs, ledger docs audit, and ledger docs check. The docs feature starts as scaffold, audit, report, and strict bro...

Change 0001

Bootstrap Ledger project

Creates the standalone Ledger package concept and initial project records. Ledger is defined as a repo-native change memory system for humans and coding agents. The bootstrap includes product docs, architecture docs, schema docs, roadmap docs, implementation planning, and Ledger's own .ledger/ directory.

Start typing or choose a recent record

Keyboard shortcuts

/
Focus search
⌘K
Search everything
j
Next record
k
Previous record
o
Open the selected record
]
Next record in the panel
[
Previous record in the panel
go
Overview
gr
Records
gt
Timeline
?
This list
esc
Close