Sprint 7 — Release Readiness: MDP & Legal Data

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.

✅ Final Cycle 7 · Jun 11 → Jun 24 2026 Generated 2026-06-24 Author Adolfo Tamayo Notion · LEX Sprint 7 Report Goals · Sprint 7 Goals Linear · team/LEX Previous · Sprint 6
TL;DR

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.

The four committed goals

From the Sprint 7 Goals page, cross-referenced against git and Linear. Beyond-commitment ships are kept out of this grid (see Sprint highlights).

Goal 1 · headline

Lawrence MDP — ready for all v3 users

Largely delivered
Standardise editing/canvas · full QA + polish · feedback loops. Forms out of scope.

Canvas convergence and MDP polish landed. The document-editor fidelity half (Goal 1a) is the OOXML overhaul — built, in review.

What landed
  • Canvas tab state natively URL-driven (LEX-498); Canvas renamed + relocated out of agent-sidebar (LEX-499)
  • All documents open in the canvas with Lawrence docked (LEX-536); unified useOpenInCanvas entry point (LEX-583)
  • Lawrence steers from open-document / canvas state (LEX-582); list/table chat fidelity (LEX-473 / LEX-496)
Goal 2 · Peter

Skills

Met → exceeded
PRD + MVP designs + tech plans. Build out of scope.

Planning delivered (PRD + tech plan published). The squad then went past the commitment and built the Skills infrastructure — now in review.

What's in review
  • Skill data layer; skill domain (CRUD, RBAC, router); four seeded global starter skills
  • Authoring/editing modal; access-management panel; run-a-skill-on-a-matter from chat + table (~10 PRs)
Goal 3 · Harry

Legal Data

Over-delivered
Committed scope: unblock the CourtListener contract + open ICLR (UK) negotiation.

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.

What shipped beyond the goal
  • A1–A7 legal-sources stack on agents develop: legislation + case-law search/read, US good-law treatment, Axiom usage metric, secrets wiring
  • Retired the Exa legislation wrapper; B1 agent-mode tool parts on platform-v3
  • US + UK legal data tools merged to dev (LEX-511 / LEX-512)
Goal 4 · Legal Eng

Legal Engineering

In progress
User guides · Missouri family-law demo library · internal sales/CS/onboarding demos.

Demo storylines filed (Todo); guides underway. No live demo event this cycle — the demo library is in prep.

Sprint health

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.

30
Issues landed
Deployed to prod + dev · 22 pts by Linear (26 of 30 unpointed)
~76pts
Retro-estimated landed
25 issues · inside the 70–100 band · on par with Sprint 6
One merge away
In-review tail
OOXML editor, Skills, agentic forms — built, mostly unpointed (~60–80 pts)
Over-delivered
Legal Data
Goal was "unblock the contract" — shipped the whole integration

Issues by status

Deployed to prod Deployed to dev (merged to develop) In review In progress Todo / Invalid

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.

Retro-estimate — how the ~76 pts breaks down

WorkstreamEstWhere
VFS folder-ops — "organise matter files" (8-PR umbrella, LEX-580)8prod
CourtListener partnership — non-code (LEX-386)8prod
US + UK legal data tools (LEX-511 / LEX-512)10dev
Canvas tab URL state (LEX-498)5dev
Draft-from-precedent (LEX-542)5dev
ask_user_question HITL tool (LEX-581)5dev
Find-Case-Law API, canvas relocate, docs-in-canvas, open-doc steering, useOpenInCanvas (LEX-396/499/536/582/583)15mixed
Finalise-draft + PDF-highlight (LEX-331 / LEX-502)4prod
Notes correspondence, form indicator, scroll, task refresh, bottom bar (LEX-366/483/486/487/535)10dev
Streamdown, email-modal, font, numbering, ff, sparkle (LEX-258/428/473/496/505/534)6mixed
Retro-estimated landed total~7625 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.

Sprint open85
Sprint close184
Completed~22

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.

Velocity across sprints

sustainable 70–100 pts 0 50 100 140 68 132 61 117 83 77 76 S1 S2 S3 S4 S5 S6 S7 Foundations Citations·Demo Create·Edit Editing Forms·Pivot Polish·Plan MDP·Legal
Landed pts (Deployed + Merged) Demo-crunch — not repeatable This sprint Sustainable 70–100 band

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.

Sprint highlights

⭐ The over-delivery

Legal Data — shipped the engine, not just the contract

Mostly on dev
Asked

Unblock the CourtListener contract, and open ICLR (UK historical case-law) talks. A procurement goal.

Delivered

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.

⭐ Strategic — under review

🧠 A multi-agent platform plan

Plan + prototype

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.

Goal 1a · in review

📐 Document editor overhaul (OOXML)

In review

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.

Goal 1 · landed

🎯 MDP / Canvas standardisation

Landed

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 · in review

🧩 Skills — planning met, build started

In review

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.

Beyond scope · in review

📝 Agentic form filling

In review

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.

Beyond scope · mixed

🗂️ VFS folder-ops + draft-from-precedent

Prod + dev

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.

Infra · mixed

🔌 Durable streams + ask_user_question

Dev + review

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.

UI polish & sidebar refinement

The invisible-but-important pass toward MDP quality.

z-index system — bar / tooltips / modals / dim-layer LEX-421/422/469/485 Docked-Lawrence scroll with task sidebar LEX-486 Scrolling when tabbing floating threads LEX-427 Chat table font matched to body LEX-473 List numbering alignment LEX-496 Bottom bar + "n more" overflow LEX-535 New sidebar spacings + hover states Overflow-badge popover shows only hidden threads Disable docked Lawrence on mobile LEX-532 Purple "fill form" sparkle removed LEX-534 Comments / tracked-change card layout LEX-474/501

Dashed chips are in progress. Comments/tracked-change card work is a cross-squad "other MDP improvements" contribution.

Bugs squashed

AreaWhatRef
CitationsPDF citation highlight recovered when the passage spans line breaksLEX-502
EmailEmail modal bottom no longer covered by the agent bar when Lawrence drafts an emailLEX-428
DocumentsDrafts list refreshes after Lawrence creates a document#11371
PrecedentDraft-from-precedent reliability — no double stream; library handoff streams live#11439
MatterMatter-select clicks no longer bubble to the precedents row#11440
FilesFolder groups survive a stale folders cache#11199
ChatStreamdown upgrade for an upstream list bugLEX-258

Untracked work — worth surfacing

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:

  • Canvas document-editor restore (Wills, 2 PRs) — may already be tracked under LegalOS; confirm.
  • Content-backed note services (Peter) — floats between LEX-336 and LEX-533.
  • CI workflow cleanup chore — accept as untracked, or a tiny ticket.

Process side-quest: the ticket-hygiene review itself — a deliberate mid-sprint git-vs-Linear reconciliation.

Lessons learnt

What went well

  • A written goals page this cycle (vs Sprint 6's none) gave a clear MDP north star, and the squad held to it.
  • Legal Data over-delivered against a deliberately narrow goal — the contract-unblock turned into a shipped integration.
  • The mid-sprint ticket-hygiene review caught Linear-vs-reality drift proactively instead of at close.
  • Front-loaded build means Sprint 8 opens with major features landing rather than starting cold.

What to improve

  • Pointing hygiene, again (recurring from Sprint 6): 26 of 30 landed issues unpointed — velocity is only legible via retro-estimate. A no-points convention for content/demo tickets would de-noise the scope number.
  • Long-lived in-review stacks (OOXML 14 PRs, Skills ~10 PRs) raise merge risk and make a cycle's delivery hard to read until the wave lands; smaller increments would smooth this.
  • Goal-2 scope creep (build started before the planning goal formally closed) was net-positive but should be made explicit when it happens.

What's left — a loaded pipeline into Sprint 8

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.

Merges early Sprint 8
Built, in review.
Document editor overhaul — OOXML (14 PRs, biggest block)Harry
Skills infrastructure (~10 PRs)Peter
Agentic form fillingLEX-568/588/589Martin
Durable streams + REDIS_URL provisioningLEX-513Pratik / Adolfo
In progress
Polish + spikes.
z-index family, docked-on-mobile, scroll/tabbing fixesLEX-421→485
Multi-agent platform — capability-sequence + TS runtime spikesLEX-584/585Adolfo
Todo
Demo library + decisions.
Missouri family-law demo storylines (+ immigration/estate flows)Legal Eng
MDP default-on readiness — QA pass, feedback loops, legacy-chat deprecation

Sprint 8 preview

Where Sprint 8 goes, from the pipeline and the planning corpus: