Skip to content
Code Recycle

Component · for humans & their agents

Grounded Edit Parser

verified · first-partyactively maintained$0 during beta (was $39)

The model's anchor is supposed to be copied verbatim from your document. Sometimes it is NEARLY copied — a smart quote, a collapsed line break, a word that was never there — and the edit silently does nothing or lands in the wrong place.

by datawright · Code Recycle maintainer

Get it free — beta

Every claim on this page is refundable if it is untrue — refund policy.

Verified: 35 tests · 7/8 mutations caught

The usual answer to "did the model hallucinate this quote" is to ask a second model. This one looks for the string.

Verification by indexOf, not by another model

The usual answer to "did the model hallucinate this quote" is to ask a second model. This one looks for the string.

Every claimed span is normalised — smart quotes folded, dashes folded, whitespace collapsed, case flattened — and looked for in the normalised original. Found or not found is a FACT ON THE RECORD (`notFound`, `quoteVerified`), not an exception and not a silent drop. And the applier acts on that verdict, so the guard is not a number nobody reads.

The normalisation is the load-bearing part, in both directions

Fold too little and a faithfully-copied clause fails because the model rendered an apostrophe as a curly one, or the PDF wrapped a line. That is the FALSE-ALARM direction, and it is how a verification layer gets switched off within a week.

Fold too much and two genuinely different clauses start matching — the direction that lets a hallucination through wearing a verified badge.

It folds curly quotes, en/em dashes, non-breaking spaces, whitespace runs, and case. It does not fold anything that changes which words are present. Quote comparison uses the first 40 characters by default: enough to be evidence, short enough that a trailing ellipsis does not fail a real citation. Set it to 1 and the check becomes decoration.

Messy replies

Fenced or unfenced, tagged `json` or `summary-json` or nothing, prose above and below. An ILLUSTRATIVE fence — the schema sketch a model shows before its real answer — is skipped rather than parsed as the payload, because that sketch parses cleanly and nothing downstream notices until a field turns up missing.

Included as a worked example

The contract-redline and contract-summary schemas this came from ship with it, including the coercions that survive a model using a legacy field value. They are a complete example of the pattern rather than the point — the verification core is domain-free and the schemas are yours to replace.

Verified

35 tests, 8 deliberate defects, 7 caught. Caught defects include the anchor guard stamping everything found, quotes marked verified without being looked for, whitespace folding removed (which fails every line-wrapped citation), smart-quote folding removed (which fails every faithful copy), and the applier ignoring the notFound verdict entirely.

Delivery

Source delivered as a private repository invite within 24 hours of purchase. Single-product commercial license: use and modify in any number of products; no redistribution or resale of the source.

Interface

What you call, and what comes back. Types and signatures only — the implementation ships with the source.

  export function normalizeText(s: string): string;
  export function extractJsonBlock(text: string): string | null;
  export function coerceMarketPosition(v: unknown): MarketPosition | undefined;
  export function parseRedlineOutput(text: string): RedlineOutput | null;
  export function parseContractSummary(text: string): ContractSummary | null;
  export function verifyAnchors(out: RedlineOutput, original: string): RedlineOutput;
  export function applyEdits(original: string, edits: RedlineEdit[]): string;
  export function verifyQuotes<T extends { quote?: string }>( rows: T[], original: string, opts?: { minChars?: number }, ): (T &;

01Capabilities

Does

  • + LLM output parsing
  • + Content extraction verification
  • + Document text integrity

Doesn’t

  • No exclusions declared

02Requirements & stack

Depends on

No declared dependencies

Credentials needed

None declared

Stack

typescript

03Community

No endorsements yet

No verified confirmations yet — be the first.

Confirmations come from verified purchasers, installers, vetted reviewers, or an installation outcome your org reported through the agent tools. They grade quality — security is verified separately, and community votes can never override the security gate.

Open an issue

Sign in to confirm — weight comes from verified usage, not vote count.

0 open · 0 answered · 0 fixed · 1 said it worked

04Trust Passport

Full passport →
–/100

0/0 automated components pass. An automated score is never a security guarantee.

✓ Verified · first-partyreviewed Sep 20, 2026 · re-verification due Dec 19, 2026
  • publisher identity Publisher status verified; 1 verification(s) on file
  • malicious pattern scan No known malicious-behavior patterns across 8 source file(s) plus listing text
  • capability contract All 0 observed capability reference(s) match the declared manifest
  • agent safety scan No injection patterns in agent-readable content
  • provenance No release signature or provenance attestation
  • behavioral sandbox Not performed in this environment — requires the production isolated runner (docs/sandbox-requirements.md). No untrusted code is ever executed on the application host.

Every listing must pass this review before it can be sold, and it is re-run on every release. Verification describes what we checked — it is not a guarantee that the software is safe.

VersionChannelReleasedNotes
1.0.0stableAug 10, 2026First public release.