The cycle where Sprint 7's loaded pipeline turned into shipped product: Skills M1, the OOXML document-editor overhaul and agentic form-filling all shipped, and the agent-platform foundation landed with its milestone plans published. Capped by a full firm demo for King Law.
Sprint 8 turned Sprint 7's loaded pipeline into shipped product, capped by a full firm demo for King Law. What landed:
The demo ran skills, agentic forms, draft-from-precedent and legal research together on real family-law matters. Peter's notes → content-service migration laid the groundwork for collaborative editing and granular citations.
59 issues landed for ~102 pts, about double Sprint 7. That is mostly the in-review wave finally merging, so read it as a merge wave, not a new baseline. Net new-to-Sprint-8 work is nearer 92 pts.
🎬 The sprint's other headline: a full two-act demo for King Law ran end-to-end on Mon 7 Jul — prenup drafting and a contested-divorce discovery flow, driven by skills, agentic forms, draft-from-precedent and legal research. Detail in the highlights below.
From the Sprint 8 Goals page, cross-referenced against git and Linear. The four engineering headlines carried the sprint; the three lighter goals sit in the compact row beneath. Beyond-commitment ships are kept out (see Sprint highlights).
M1 landed in full, from the data layer through to running a skill on a matter. Skill-creator-with-Lawrence (1c) stays on hold as planned.
The OOXML overhaul, the biggest block of the sprint, landed; a second wave then made Lawrence's own edits carry formatting + tracked-changes correctly.
Agentic fill shipped (background + card, CAS safety, overflow, citations). Forms-as-precedents is in build: catalogue backend started, Precedents forms table + new fill shell in progress.
The agent-framework foundation — defineAgent, registry, providers, transports + Langfuse tracing — landed (LEX-638/639/646). Background/durable execution itself (M4) is on a feature branch with a published plan; spikes LEX-584/585 in progress.
Capacity went to Skills + the notes → content-service migration. The Tasks M2 tech plan (LEX-655) is the output, in progress; the graph-representation question stays open.
The two-act King Law demo ran end-to-end (Mon 7 Jul). Missouri / divorce demo library in prep (LEX-656-659).
Early WIP docs (integration + acquisition playbooks, a context-layer note); not yet a closed plan. Carries into Sprint 9.
120 issues sat in the cycle. A large block of demo-case / PRD / flow content tickets (Missouri, visa, estate, divorce-flow personas) are still in Todo / In Review and are excluded from the engineering read — real content-prep work, but it would distort velocity.
Landed (Deployed prod + dev) = 59 issues / 102 pts. One merge away (+ In Review) → 72 issues / 134 pts. Pointing hygiene improved on Sprint 7, but ~27 of the 59 landed issues are still unpointed, so the 102 is computed from the Deployed issue list, not Linear's completed-scope snapshot (which lags).
Scope grew 177 → 238 pts across the cycle — inflated by demo / PRD / flow content tickets (the Missouri, visa, estate and divorce-flow personas), not new engineering scope. The "landed" line is the git-validated Deployed total, not Linear's completed-scope snapshot.
Landed = Deployed + Merged at close. S8's 102 sits above the band because the cycle absorbed the front-loaded Sprint 7 in-review wave (Skills M1, the OOXML overhaul, agentic forms) — a merge wave, not a step-change in sustainable pace. Net new-to-S8 landing is ~92 pts. Sprint 0 (setup, ~28 pts) is excluded; Sprint 2's 132 was demo-pressure crunch, not a repeatable pace.
A live, two-act demo for King Law, run on real family-law matters — effectively a proof that this sprint's output works together: skills firing in the background, agentic forms with citations, draft-from-precedent, legal research and email.
Live intake → background Lawrence triggers a Client Information Gathering skill → legal research → draft prenup from precedent → amend a clause → finalise → email the client.
Lawrence auto-triggers a discovery follow-up skill → the task list drives a Classification & Valuation Position Memo skill → pre-populated form with citations → finalise → mark complete, re-triggering as each party submits documents.
The TypeScript agent-framework foundation is live: defineAgent + a sealed registry, a model-provider registry, HTTP run + chat transports, a thin VFS slice, and Langfuse tracing via AI SDK v7 telemetry (LEX-638/639/646). It's the substrate Skills migrate onto and background agents build on. Three milestone plans are published; M4 (background / durable execution) is the path we're following next, with M2 and M3 planned behind it.
Framework core + tracing shipped this cycle; the three milestone plans (published on html-previews) branch from it. M4 background execution is the followed path; M2 and M3 are planned, not yet started.
A skill data layer, the domain (CRUD, RBAC, tRPC router), four seeded starter skills, an authoring/editing modal, Refine-with-Lawrence, an access panel, and running a skill from both the chat and the table (LEX-610 → 618). In review: a static-skill parser + catalog, a load_skill tool, and migrating static skills onto the TS framework (LEX-645). Backend (Peter), UI (Pratik), authoring/QA (Sedona).
The fidelity backbone that sat in review at Sprint 7's close landed. In the ooxml package: package-owned block-id assignment, stable ids across list/table/inline nodes, a document-level list-numbering resolver, find-&-replace, and formatting descriptors on the revisions sidebar. On platform: DOCX style inheritance, Tab focus handling, formatting-marks + gridline toggles, insert-tables, sub/superscript, custom font sizes, accept/reject-all, unsupported-font/element flagging. A second wave made Lawrence's edits carry formatting + tracked-changes correctly. The single largest block of the sprint.
3a: forms fill in the background and surface via a card instead of hijacking the canvas, with mid-edit safety (all dirty fields + CAS on autosave), overflow handling, max-chars by field id, and source citations that open the document (LEX-568/588/589/622-627). 3b (in build): forms move into the precedent/template model: a catalogue with code + issuer and firm-level assignments (LEX-677), a Precedents forms data-table, and a new fill shell with top bar, pages and field cards (LEX-678/680). The "Templates" rename landed alongside.
A large foundational stack: MatterNote moved to a content-backed model, notes backfilled to content-service behind a fidelity gate, a collaborative note editor on the notes tab (Content/Yjs, not markdown), server-fulfilled gated agent note edits via the VFS, and a note DocMap seam that unblocks granular citations (B3 / C1 / C2 / C3 stacks). Groundwork for collaborative editing and citation precision landing in later sprints.
The invisible-but-important pass.
Planning was a first-class deliverable this cycle — 114 commits to the previews repo. The docs that unblock the next sprints:
| Area | What | Ref |
|---|---|---|
| Streaming | Text streamed alongside tool calls was being dropped | LEX-654 |
| Forms | Field overflow handled; max-chars enforced by field id (names collide); only the most-recent form is listed | LEX-623/627/637 |
| Chat | cleanPreview / firstRowPreview ellipsis off-by-one (returned maxLength+1 chars) | LEX-691 |
| Correspondence | "Look at client correspondence" only searched emails, ignoring notes | LEX-366 |
💸 ECS right-sizing — ~$12.6k/yr. Right-sizing ECS tasks from 30-day utilisation across v3, agents, ai-platform, sequin and lawrence-engine (v3 #12017 open; agents #696, ai-platform #684, sequin #6, lawrence-engine right-size landed). Roughly $12.6k/yr in savings plus several near-OOM headroom bumps. Infra housekeeping, largely untracked in Linear.
Notes → content-service is partly untracked (floats around LEX-336) — worth a dedicated umbrella ticket. The Precedent → Template rename (LEX-684) shipped alongside forms-as-precedents to align vocabulary.