The MDP push: getting Lawrence 2 to "ready for all v3 users" quality. The canvas/editing polish landed, Legal Data over-delivered against a deliberately narrow goal, and the sprint front-loaded its build — so Skills, agentic form filling and the OOXML document-editor overhaul sit in review and merge early Sprint 8.
Cycle 7 opened with something Sprint 6 lacked — a written goals page — and one clear headline: get Lawrence to MDP quality, ready to switch on for every v3 user. The canvas and editing polish landed. Legal Data, scoped only to unblock the CourtListener contract, over-delivered into a shipped integration. And the build ran ahead of the tickets: Skills, agentic form filling and the OOXML editor overhaul are all built and in review, landing in Sprint 8's first days.
Thirty issues landed; retro-estimated ≈ 76 pts across 25, inside the sustainable 70–100 band and on par with Sprint 6. Points-as-recorded say only 22 — 26 of the 30 landed issues are unpointed — so this cycle, read the volume, not the number.
🧠 The sprint's other headline: a multi-agent platform plan — a TypeScript agent runtime already running a second live agent in prototype — is under review. Detail in the highlights below.
From the Sprint 7 Goals page, cross-referenced against git and Linear. Beyond-commitment ships are kept out of this grid (see Sprint highlights).
Canvas convergence and MDP polish landed. The document-editor fidelity half (Goal 1a) is the OOXML overhaul — built, in review.
Planning delivered (PRD + tech plan published). The squad then went past the commitment and built the Skills infrastructure — now in review.
Partnership + Find-Case-Law API to prod; contract sign in review. On top of the goal, the squad shipped the full OpenLaws + CourtListener tool integration to dev.
Demo storylines filed (Todo); guides underway. No live demo event this cycle — the demo library is in prep.
Around 15 demo / content / PRD / hiring tickets (~39 pts) — the Missouri/visa/estate demo personas, the LCO and Legal-Data-UI PRDs, the Structured Vision doc, Legal-Eng onboarding — are excluded from engineering velocity: real work, but content output that would distort the read. That leaves ~66 issues / ~98 pointed engineering pts in scope.
Sized by issue count, not points — points are unreliable this cycle, with 26 of the 30 landed issues unpointed. Linear's completed-scope line reads ~22, lagging reality because most landed work carries no estimate and many tickets were filed after the code merged.
| Workstream | Est | Where |
|---|---|---|
| VFS folder-ops — "organise matter files" (8-PR umbrella, LEX-580) | 8 | prod |
| CourtListener partnership — non-code (LEX-386) | 8 | prod |
| US + UK legal data tools (LEX-511 / LEX-512) | 10 | dev |
| Canvas tab URL state (LEX-498) | 5 | dev |
| Draft-from-precedent (LEX-542) | 5 | dev |
| ask_user_question HITL tool (LEX-581) | 5 | dev |
| Find-Case-Law API, canvas relocate, docs-in-canvas, open-doc steering, useOpenInCanvas (LEX-396/499/536/582/583) | 15 | mixed |
| Finalise-draft + PDF-highlight (LEX-331 / LEX-502) | 4 | prod |
| Notes correspondence, form indicator, scroll, task refresh, bottom bar (LEX-366/483/486/487/535) | 10 | dev |
| Streamdown, email-modal, font, numbering, ff, sparkle (LEX-258/428/473/496/505/534) | 6 | mixed |
| Retro-estimated landed total | ~76 | 25 issues |
Approximate, for a comparable git-validated read — not a re-pointing of Linear. Gareth's G-28 form-fill accuracy fixes (LEX-466/471/472/482/497) are excluded here: they flipped to Deployed to Prod during Cycle 7 but are Sprint 6 carryover. 8 of the 76 is the non-code CourtListener partnership.
Scope grew 85 → 184 pts (45 → 80 issues) across the cycle. The late jump (≈ day 12, 146 → 184) is the retroactive-ticketing wave from the mid-sprint ticket-hygiene review — umbrella tickets for already-shipped work, the OOXML cluster filed, demo content — not new product scope. The completed line is a points artifact, not a delivery signal.
Landed = Deployed + Merged at close. S1–S5 from Linear status; S6 git-validated (~77; Linear read 69); S7 retro-estimated (points unreliable this cycle — 26 of 30 landed issues unpointed). S3 was preliminary at write-time (one working day left; the report projected 80–100). Sprint 0 (setup, ~28 pts) is excluded. Sprint 2's 132 was a demo-pressure crunch, not a repeatable pace — the last three sprints (S5–S7) cluster tightly at 76–83 pts, the team's settled cadence inside the band.
Unblock the CourtListener contract, and open ICLR (UK historical case-law) talks. A procurement goal.
The full legal-sources stack on agents develop — A1 foundations, legislation + case-law search/read, US good-law treatment, an Axiom usage metric, OpenLaws + CourtListener secrets — with the Exa legislation wrapper retired and B1 agent-mode tool parts on platform-v3. US + UK tools merged to dev; partnership + Find Case Law API in prod; contract sign in review.
Reframe the agents backend around a capability-sequence model and migrate the runtime to TypeScript — "the loop, in TypeScript" (LEX-584 / LEX-585). It isn't only a document: a working prototype already runs — defineAgent + registry, a model-provider registry, Langfuse prompt resolution, a context-build hook, run + streaming transports, a thin VFS slice, and a second live agent (lawrence-mini) — alongside the written plan. The deliverable this cycle is the plan plus that prototype; a build decision is next.
The document-editing-fidelity backbone, in a dedicated ooxml repo: a 14-PR stack — textboxes (lossless round-trip), line spacing (w:lineRule), table round-trip (grid widths, tblPrEx, nil-border suppression), content controls / w:sdt as editable fields, Word checkboxes, EMF images via raster conversion, custom tab stops, and a "show formatting marks" toggle. The largest single in-review block (~32+ pts). None merged yet — staged for early Sprint 8.
The convergence onto a single canvas: tab state made natively URL-driven (LEX-498), Canvas relocated out of agent-sidebar (LEX-499), all documents open in the canvas with Lawrence docked (LEX-536), a unified useOpenInCanvas entry point (LEX-583), Lawrence steering from open-document state (LEX-582), the bottom bar + "n more" control (LEX-535), and chat list/table fidelity. Wills restored Finalise / modes / version-history in the Canvas editor.
Goal 2 asked only for a PRD, designs, and tech plans — all delivered. The squad then started the build: a skill data layer, the skill domain (CRUD, RBAC, router), four seeded global starter skills, an authoring/editing modal, an access-management panel, and running a skill on a matter from the chat and the table (~10 PRs). All in review — merges early Sprint 8.
Net-new (forms were out of Goal-1 scope): a filledforms:// VFS scheme with skeleton create + CAS, filling in the background and surfacing via a card instead of auto-opening the canvas, and mid-edit safety (all dirty fields + CAS on lawyer autosave). Backed by lawrence-engine annotation backfill.
Lawrence can organise matter files & folders (LEX-580, prod): matter-level files:// read returns folder state, a batched folder-operations edit surface, a file-organisation skill, documents tab refreshing live after agent folder ops. Draft-from-precedent (LEX-542, dev): drafting from a precedent via Lawrence and the global library, with double-stream + library-handoff reliability fixes.
Durable streams (LEX-513): a Redis-backed durable stream session wired into the chat route with resume + cancel-channel hardening, and REDIS_URL provisioned from the Upstash module. ask_user_question (LEX-581): a render panel plus agent-resume-after-answer — the human-in-the-loop primitive for mid-run questions.
The invisible-but-important pass toward MDP quality.
Dashed chips are in progress. Comments/tracked-change card work is a cross-squad "other MDP improvements" contribution.
| Area | What | Ref |
|---|---|---|
| Citations | PDF citation highlight recovered when the passage spans line breaks | LEX-502 |
| Email modal bottom no longer covered by the agent bar when Lawrence drafts an email | LEX-428 | |
| Documents | Drafts list refreshes after Lawrence creates a document | #11371 |
| Precedent | Draft-from-precedent reliability — no double stream; library handoff streams live | #11439 |
| Matter | Matter-select clicks no longer bubble to the precedents row | #11440 |
| Files | Folder groups survive a stale folders cache | #11199 |
| Chat | Streamdown upgrade for an upstream list bug | LEX-258 |
The mid-sprint ticket-hygiene review retroactively ticketed most previously-untracked work (LEX-580 / 581 / 582 / 583 and the two platform spikes), so the gap is far smaller than prior sprints. Genuinely still untracked:
Process side-quest: the ticket-hygiene review itself — a deliberate mid-sprint git-vs-Linear reconciliation.
Not a backlog — a stack of near-done work that lands in Sprint 8's first days. Because these merge early, the cycle's real new-build capacity effectively starts a few days in.
Where Sprint 8 goes, from the pipeline and the planning corpus: