Every session makes it slightly worse.
Tiny local choices accumulate into a second, accidental visual system.
Ledgermachine
Visual drift after coding-agent work
Ledgermachine scans frontend source for visual drift, explains every finding with file-and-line evidence, and exports the rules that keep future agent work on system.
Supported files are read locally as text. Imported code is never executed.
CSS · TSX · VueValues, candidates, source locations, exceptions, and history remain inspectable.
local ledgerYour reconciled system becomes guidance for the next coding session.
AGENTS.md · MCP · gateOne prompt at a time
An agent needed a border color and wrote one that looked close enough. Then it happened again. Nobody can see a two-percent difference in review—until near-duplicates become the interface.
Tiny local choices accumulate into a second, accidental visual system.
The source changes after the rules were written, so yesterday's guidance becomes today's mismatch.
Near-identical values pass code review while the interface slowly loses its vocabulary.
The working loop
Ledgermachine stays read-only. Your editor or coding agent makes the repair; a later scan verifies that drift did not return.
Open a folder, ZIP, or sample project. Ledgermachine reconstructs the visual vocabulary already present in supported frontend files.
CSS · TSX · Vue · SvelteUse the token, create one, accept the exception, or leave it open. Every decision keeps its source evidence and can be undone.
Use · Create · AcceptExport agent guidance and repair briefs. After the next agent pass, rescan or use the CLI gate to verify the result.
Rules → Next Session → VerifyWhy this is different
A finding is evidence for a product decision, not an automatic verdict that every difference is wrong.
Observed and candidate values stay visible beside the reasoning. Findings can be accepted, planned, ignored, reopened, or undone without erasing project history.
Imported code is parsed as text in this tab. A strict Content Security Policy blocks external connections, and the production privacy gate fails when a runtime network API appears.
The agent loop
Fix the decision once. Ledgermachine carries accepted tokens, exceptions, and component conventions into the tools that edit the source next.
# Ledgermachine system rules
## Tokens
- Use var(--ink) for primary text.
- Use var(--surface-2) for secondary fields.
- Keep spacing on the declared --space-* scale.
- Keep controls on --radius-control.
## Components
- Reuse the shared Button implementation.
- Preserve the accepted compact-card exception.
- Do not introduce new near-black values.
## Verification
- New drift: 0
- Minimum coverage: 92%
- Rescan after every agent pass.Works with the source you have
Detection stays transparent: the project view lists the conventions it recognized, the files it skipped, and why.
Questions before source access
The short version: local, deterministic, read-only, and designed to hand decisions back to the tools already editing your code.
No. Folder and ZIP imports are read inside this browser. Analysis runs locally without project uploads.
No. Supported source files are parsed as text in a Web Worker. Imported JavaScript, build scripts, components, and configuration are never evaluated.
Ledgermachine is free to use locally. There is no account, trial, cloud workspace, or telemetry SDK.
Yes. Ledgermachine reconstructs the visual vocabulary already present in the source and can propose a token set for review.
Stylelint enforces declarations. Ledgermachine compares decisions across the project, keeps history, and exports durable agent guidance.
Visual regression tools compare rendered pixels. Ledgermachine identifies source-level causes without rendering or executing the project.
AGENTS.md, CLAUDE.md, Cursor rules, repair briefs, the CLI gate, and local MCP cover common agent workflows.
The ledger lives in IndexedDB. Export a portable project archive for backup or transfer.
After the next agent pass
Enable JavaScript to scan a project or open the sample. Analysis is local and read-only; imported source is never uploaded or executed.