previews · audits · Lawrence 2 production traces

What lawyers actually do with Lawrence 2, trace by trace.

A living review of production chat-response traces since the Lawrence 2 sidebar went to 100% on 12 August. Each observation window gets a dated section below; the issue register at the top carries every finding until it is fixed. Client, lawyer, and counterparty names are deliberately absent; traces are referenced by ID so anyone with Langfuse access can verify.

Status · Living report Last updated · 2026-08-14 Coverage · 2026-08-12 → 2026-08-13 Author · Adolfo Source · Langfuse · prd chat-response, eval-user excluded
TL;DR · as of window 1
One real lawyer has used Lawrence 2 since release: a two-hour litigation drafting session on 13 August. The agent researched well and the lawyer kept delegating more work. But the session's main deliverable, a corrected letter and complaint, never arrived: search can't find documents the agent itself created, so redrafting re-read every raw file into context and blew Anthropic's request-size limit. One retry returned an empty answer marked completed.
14
traces since release
2
users (1 real, 1 demo)
113s
median latency
0
feedback scores captured

Traces: Langfuse chat project, name=chat-response, environment=prd, userId != eval-user, from 2026-08-12. Costs on this page are Langfuse-displayed and over-count real spend.

Issue register

Every finding lives here until it is fixed, whichever window found it. New windows append rows; fixes flip the status and link the PR. Severity is about user harm, not code size.

IDFindingEvidenceSeverityProposed fixStatus
R1 search can't find documents the agent just created in documents:// (vector_search can). This is what forces full re-reads on every redraft. 008a3fc9 high Index fresh documents into search at create time, or route the tool through the same store vector_search uses. open
R2 File reads return raw base64 bytes into model context. Eight reads on a photo-heavy matter exceeded Anthropic's request-size cap and the turn hard-failed. 8d5879ae high Server-side text extraction and page-ranged reads; a per-turn context budget as the backstop. open
R3 A turn can return an empty response with status=completed. The user sees nothing; dashboards see success. f7fdcc10 high Treat zero-length final content as a failure: retry once, then surface an error the UI can show. open
R4 /vfs/edit on filled forms can return 200 while applying zero edits, and returns a 500 with a raw Zod dump for what is really a bad-request payload. The agent works around it field by field, quadrupling cost. 3f74a05e pre-release high Return per-edit outcomes; fail loudly when 0 of N applied; make payload validation a 4xx with an actionable message. open
R5 read_legislation rejects human citations (A.R.S. § 12-1103, 16 CFR 433.2) with OpenLaws 400s, and routed a federal citation to the state endpoint. Seven failures in one session, each costing a search-and-retry loop. 673f53f2 · 008a3fc9 medium Resolve human citations internally; pick jurisdiction from the citation, not the matter; scope reads to sections rather than whole Acts. open
R6 After a turn fails silently, the client re-executes the same message. The duplicate run cost ~$27 (Langfuse-displayed) and produced the empty response in R3. b7e4d78f · f7fdcc10 medium Surface the failure to the user and dedupe identical resubmissions of a failed turn. open
R7 search_legislation has coverage and ranking gaps: five empty results for the Arizona Consumer Fraud Act before web_search found it on the first try. 008a3fc9 medium Fill the state-statute coverage gap; fall back to web search after two empty statute lookups. open
R8 Median latency in the window is 113s and the worst turn ran 7.4 minutes. Most of the wait is file reads (see R2) and citation retries (R5). window-wide medium R2 and R5 are the levers; measure again after they land. open
R9 No trace carries a Langfuse score. Satisfaction is only visible by reading transcripts, and the failing turns look healthy on every dashboard field (completed status, falling cost). all traces medium Pipe the in-product thumbs (or a lightweight rating) into Langfuse scores on the trace. open
R10 create 500s on ProseMirror "empty text nodes are not allowed"; the agent retried and succeeded. 673f53f2 low Strip empty text nodes server-side or reject with a message naming the offending node. open
R11 The precedents namespace is empty for this firm, so every letter is drafted from scratch with no house style to lean on. The agent looks there before drafting, every time. 673f53f2 · f7fdcc10 low Product gap rather than bug: seed precedent libraries during firm onboarding. open
R12 Pre-tool narration is glued to the final answer with no separator ("Executing now.Done. Three folders created…"). Seen on two models, so likely message assembly rather than the model. 14dd88e6 demo acct low Join narration and final content with a newline in the stream assembler. open
R13 Tasks are created without dueAt or an assignee, then the agent offers dates as an afterthought. Key dates get dueAt every time, so the field exists. e1965cee demo acct low Prompt the agent to set both at creation; check whether tasks model an owner at all. open

Evidence column shows Langfuse trace IDs (first 8 chars). R4 carries over from pre-release traffic on the same code path; details in the pre-release section.

Window 1 · 12–13 August · first two days at 100%

Fourteen traces from two users. One user toured a demo matter on 12 August (the files include memes and an unrelated ad, and the agent itself flagged them as likely test data): capability questions, task creation, folder organisation, five traces, all completed. The signal is the other user.

One lawyer, two hours, one live matter

On 13 August a US attorney (pers_6dea18ewlaqk87h0) worked a live quiet-title and lien-removal matter for two hours straight, nine traces from 17:32 to 19:23 UTC, all on claude-sonnet-5 via the agent/lawrence-2 prompt. The arc: draft an attorney letter, check the exact language of a contract paragraph, hand the agent a four-point critique of its own drafts, ask for corrected drafts, then work out what to request from the client and draft that message too.

17:32224.6s
673f53f2 · drafts attorney letter, creates it as a document · 1 citation 400, 1 create 500 (both recovered)
17:4850.8s
8ce44ccf · "exact language of paragraph 14" · clean answer
18:04444.6s
008a3fc9 · verifies user's 4-point critique against statutes and case law · ~35 tool calls, 11 iterations · 6 citation 400s, 5 empty statute searches, can't find its own document ×3
18:16168.5s
8d5879ae · "yes to all, redraft" · failed: request_too_large after 8 base64 file reads
18:19144.1s
b7e4d78f · user re-sends · chain-of-title analysis (good work, but not the drafts)
18:23228.2s
f7fdcc10 · duplicate re-send · empty response marked completed · ~$27 Langfuse-displayed
18:27126.8s
3dbcea6f · what to request from the client, and how to phrase it
19:10113.1s
389c8138 · drafts the client note, creates an email draft
19:2336.9s
58bd93e5 · "which file says the trustee is X?" · answers with the exact file and quoted language

Bar length is latency, scaled to the 444.6s worst case. Green ran clean, amber recovered from tool errors, red failed or returned nothing.

What worked

The critique-verification turn is the best agent behaviour in the dataset. The lawyer submitted four defects he'd found in the drafts; the agent pulled the actual statute text and both cited cases, confirmed three of the four, and flagged the fourth honestly: "a judgment call rather than something the research resolves cleanly."

The chain-of-title analysis traced the property through three successive trusts, and the lawyer acted on it immediately in the next two turns.

The provenance check got a precise answer: the exact image file, with the granting language quoted. The lawyer is spot-checking citations, and the agent passed the check.

What broke

The redraft never happened. "Yes to all, prepare new drafts" hard-failed on request size because the agent re-read every raw file (this matter has ~16 photographed deeds as JPEGs) instead of editing the document it had created 45 minutes earlier. It couldn't edit that document because search couldn't find it (R1).

The lawyer re-sent twice. One retry produced analysis instead of drafts; the other burned 228s and returned an empty answer marked completed (R3, R6).

Seven legislation lookups failed on citation format before the agent found another route (R5, R7).

The lawyer also confirmed three of his four critique points were real defects in the agent's earlier drafts, which is worth sitting with: the agent's own quality control is currently the user. He stayed engaged for two hours anyway, which reads as a user who finds the tool valuable and is compensating for it.

Measurement gap

Nothing on this page came from a metric. Every trace in the window reports completed except one; latency and cost fall when the agent stops retrieving; and no trace carries a score of any kind. The two worst turns of the window (the hard failure and the empty response) are invisible to any dashboard we currently have. Until product feedback lands in Langfuse scores (R9), this review only exists because someone read the transcripts.

Pre-release signal on the same code paths · 3–11 August

Before the 12 August release, 42 more prd traces ran: six users on the legacy gpt-4.1 path (out of scope here) and early sonnet traffic on the same VFS stack Lawrence 2 now uses. Two things from that traffic stay relevant because the code paths are live:

Appendix · every trace analysed

Each ID opens the trace in Langfuse (requires Langfuse access). Window 1 is the report's scope; the pre-release traces fed the same analysis and are kept here for provenance.

Window 1 · 12–13 August · 14 traces

TraceTimestamp (UTC)User
5215558f2026-08-12 13:47pers_rp4fc2ihpqk2lisi
20e9744d2026-08-12 13:49pers_rp4fc2ihpqk2lisi
e1965cee2026-08-12 13:50pers_rp4fc2ihpqk2lisi
886517d02026-08-12 13:54pers_rp4fc2ihpqk2lisi
14dd88e62026-08-12 13:54pers_rp4fc2ihpqk2lisi
673f53f22026-08-13 17:32pers_6dea18ewlaqk87h0
8ce44ccf2026-08-13 17:48pers_6dea18ewlaqk87h0
008a3fc92026-08-13 18:04pers_6dea18ewlaqk87h0
8d5879ae2026-08-13 18:16pers_6dea18ewlaqk87h0
b7e4d78f2026-08-13 18:19pers_6dea18ewlaqk87h0
f7fdcc102026-08-13 18:23pers_6dea18ewlaqk87h0
3dbcea6f2026-08-13 18:27pers_6dea18ewlaqk87h0
389c81382026-08-13 19:10pers_6dea18ewlaqk87h0
58bd93e52026-08-13 19:23pers_6dea18ewlaqk87h0
35e213482026-08-14 05:22pers_bx5wvb03e3nq8yokarrived after window 1; joins the next window
Pre-release traces · 3–10 August · 42 traces (legacy gpt-4.1 path and early sonnet traffic)
TraceTimestamp (UTC)User
5caf4ceb2026-08-03 08:31pers_jvic5l1xqln99z3g
3fe80ead2026-08-04 18:33pers_bfxgcid81j39i0pt
be1a99842026-08-04 18:35pers_bfxgcid81j39i0pt
69c7a7772026-08-04 18:44pers_bfxgcid81j39i0pt
82d963832026-08-04 18:48pers_bfxgcid81j39i0pt
2ce24b3f2026-08-04 18:50pers_bfxgcid81j39i0pt
869545cd2026-08-04 18:51pers_bfxgcid81j39i0pt
edd8770a2026-08-05 05:46pers_urn61axcqcjk72ex
9eb498c82026-08-05 08:22pers_oeyldlxswj69hz5f
0aa8efe22026-08-05 08:23pers_oeyldlxswj69hz5f
3f74a05e2026-08-05 12:03pers_jvic5l1xqln99z3g
b24bad1c2026-08-05 13:49pers_urn61axcqcjk72ex
917ee7222026-08-05 13:52pers_urn61axcqcjk72ex
8913fc9e2026-08-05 21:10pers_6dea18ewlaqk87h0
215c7bf82026-08-05 21:14pers_6dea18ewlaqk87h0
aea9dcc62026-08-05 21:15pers_6dea18ewlaqk87h0
3353e1d62026-08-05 23:33pers_m5qm66gmv2zxvu7a
2d09595e2026-08-05 23:34pers_m5qm66gmv2zxvu7a
49f698292026-08-05 23:39pers_m5qm66gmv2zxvu7a
41dcd6aa2026-08-05 23:42pers_m5qm66gmv2zxvu7a
5e5e55672026-08-06 08:04pers_jvic5l1xqln99z3g
d9ec4b272026-08-06 08:04pers_jvic5l1xqln99z3g
d2c91cf32026-08-06 08:04pers_jvic5l1xqln99z3g
b220c7662026-08-06 15:31pers_6dea18ewlaqk87h0
bb2927e32026-08-06 15:32pers_6dea18ewlaqk87h0
7bc313132026-08-06 15:34pers_6dea18ewlaqk87h0
9f492f392026-08-06 15:36pers_6dea18ewlaqk87h0
4cf4ed112026-08-06 15:42pers_6dea18ewlaqk87h0
8f5d4d1d2026-08-06 15:44pers_6dea18ewlaqk87h0
a64e2c462026-08-06 21:29pers_6dea18ewlaqk87h0
8772a3be2026-08-06 21:31pers_6dea18ewlaqk87h0
86dbdab12026-08-06 21:45pers_6dea18ewlaqk87h0
6cbea4932026-08-06 22:07pers_6dea18ewlaqk87h0
1371482a2026-08-06 22:13pers_6dea18ewlaqk87h0
83317a102026-08-06 22:25pers_6dea18ewlaqk87h0
bd42c3f42026-08-06 22:36pers_6dea18ewlaqk87h0
6b08d4852026-08-09 21:41pers_6dea18ewlaqk87h0
b2b8e4e92026-08-09 21:44pers_6dea18ewlaqk87h0
9c611af92026-08-09 21:45pers_6dea18ewlaqk87h0
2a3644d22026-08-10 14:34pers_bx5wvb03e3nq8yok
f0b2f7b72026-08-10 15:50pers_bfxgcid81j39i0pt
41abf75e2026-08-10 20:54pers_bx5wvb03e3nq8yok

Updating this report

This page is designed to be appended to. When new traces land, add a window section and update the register; don't rewrite history in old windows.