Sprint 8 — Skills M1, the Editor Overhaul & Agentic Forms

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.

✅ Final Cycle 8 · Jun 25 → Jul 8 2026 Generated 2026-07-08 Author Adolfo Tamayo Notion · LEX Sprint 8 Report Goals · Sprint 8 Goals Linear · team/LEX Previous · Sprint 7
TL;DR

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.

The committed goals

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).

Goal 1 · Skills

🧩 Skills — complete M1

Delivered
Get M1 shipped; land 3–5 skills; (stretch) create skills with Lawrence.

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.

What landed
  • Skill data layer; domain (CRUD, RBAC, tRPC router); four seeded global starter skills (LEX-610/611/612)
  • Authoring/editing modal; Refine-with-Lawrence; access-management panel (LEX-614/615/616)
  • Trigger from the matter chat + run on a matter from the table (LEX-617/618)
Goal 2 · Harry

📐 Document Editor

Delivered
Triage + fix the formatting bugs & polish in the tracker.

The OOXML overhaul, the biggest block of the sprint, landed; a second wave then made Lawrence's own edits carry formatting + tracked-changes correctly.

What landed
  • Tables, nested-list focus, sub/superscript, custom font size, accept/reject-all, unsupported font/element flagging, style inheritance (LEX-560/563/565/571/592/593/594/595/605)
  • Block anchors on apply, advisory version token + epoch CAS, formatting-on-authored-text (LEX-650/651/673/674)
Goal 3 · Martin

📝 Forms

3a shipped · 3b in build
3a: continue agentic form-filling. 3b: forms into the precedent library.

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.

Where it is
  • 3a shipped: LEX-568/588/589/622/623/624/627
  • 3b in build: catalogue + firm assignments (LEX-677), forms data-table + new shell (LEX-678/680)
Goal 4 · Adolfo

🧠 Background Agents

Foundation landed
Get background agents running; QA.

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.

Also committed

Goal 5 · Peter

🕸️ Planning Agent (spike)

Deprioritized

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.

Goal 6 · Sedona

🎬 Team Admin

King Law demo delivered

The two-act King Law demo ran end-to-end (Mon 7 Jul). Missouri / divorce demo library in prep (LEX-656-659).

Goal 7 · Sedona

🧭 Playbooks / Context Layer

Planning underway

Early WIP docs (integration + acquisition playbooks, a context-layer note); not yet a closed plan. Carries into Sprint 9.

Sprint health

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.

59
Issues landed
Deployed to prod + dev · ~102 pts (≈27 unpointed)
~92pts
Net Sprint-8 landing
Excludes ~10 pts of legal-data tools that merged at the S7 tail
Pipeline landed
The merge wave
Skills M1, the OOXML overhaul and agentic forms all merged this cycle
King Law
Firm demo · Mon 7 Jul
Prenup + contested-divorce flows, end-to-end on the product

Issues by status

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

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).

Sprint open177
Sprint close238
Landed102

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.

Velocity across sprints

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

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.

Sprint highlights

🎬 The demo

King Law — a full firm demo, Mon 7 Jul

Ran end-to-end

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.

Act A · Prenup drafting

Live intake → background Lawrence triggers a Client Information Gathering skill → legal research → draft prenup from precedent → amend a clause → finalise → email the client.

Act B · Contested divorce (mid-discovery)

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 platform

Agent Platform — foundation landed, M-paths planned

Core shipped

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 ✅ Landed · LEX-638 / 639 M2 · Generalise beyond matters Planned M4 · Background & durable execution ▶ Next — in build NEXT M3 · Full Lawrence 2 on TS Planned

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.

Goal 1

🧩 Skills M1 — shipped

Shipped

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).

Goal 2

📐 Document editor — OOXML overhaul

Shipped

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.

Goal 3

📝 Agentic forms + forms-as-precedents

Shipped + in build

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.

Beyond scope · foundation

🗒️ Notes → content-service + collab editing

Foundation

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.

UI polish & sidebar refinement

The invisible-but-important pass.

Consistent in-progress indicator on forms LEX-483 Bottom bar + "n more" overflow LEX-535 Persistent grouped Activity block for tool status LEX-543 Docked-Lawrence scroll with task sidebar LEX-486 Chat table font matched to body LEX-473 List numbering alignment LEX-496 Running-skill pill + hidden instructions LEX-690 Hover tooltips for truncated skill names LEX-652 Skills header/shimmer cleanup Purple "fill form" sparkle / icon removed LEX-534/626 Per-field undo/redo for Improve-with-Lawrence

Planning & design docs

Planning was a first-class deliverable this cycle — 114 commits to the previews repo. The docs that unblock the next sprints:

Agent platform milestones M2 · generalise beyond matters M3 · full Lawrence 2 on TS M4 · background / durable execution Agent proposal-queue backend Streaming edits Tasks / key-dates M2 Q3 roadmap technical audit Lawrence identity Voice intake Content / document services Workflow DevKit + world-postgres PoC Filled-forms tech plan

Bugs squashed

AreaWhatRef
StreamingText streamed alongside tool calls was being droppedLEX-654
FormsField overflow handled; max-chars enforced by field id (names collide); only the most-recent form is listedLEX-623/627/637
ChatcleanPreview / firstRowPreview ellipsis off-by-one (returned maxLength+1 chars)LEX-691
Correspondence"Look at client correspondence" only searched emails, ignoring notesLEX-366

Untracked work — worth surfacing

💸 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.

Lessons learnt

What went well

  • The front-loaded Sprint 7 pipeline landed cleanly: Skills M1, the OOXML overhaul and agentic forms all shipped, so the cycle delivered rather than started cold.
  • Skills M1 shipped as a complete stack: authoring, access control, and running a skill on a matter, not just scaffolding.
  • The King Law demo proved the stack end-to-end with a real firm, not a synthetic persona.
  • Pointing hygiene improved on Sprint 7.

What to improve

  • Still ~27 of 59 landed issues unpointed, and content/demo tickets inflate scope (177 → 238). A no-points convention for content/demo/flow tickets would de-noise the read.
  • The Planning Agent spike slipped because its owner's capacity went to Skills + notes — surface capacity conflicts against spike goals earlier.
  • Two goals are mid-build at close (forms-as-precedents 3b, background execution) — clean handover into Sprint 9.

What's left — carried into Sprint 9

Near-done
Near-done, lands early.
Static skills → TS agent frameworkLEX-645Peter
Editor robustness / formatting tailLEX-660/661/668/672/679/694Harry
Notes → content-service: gated edits + citation seamsPeter
In build
Mid-flight this close.
Forms-as-precedents — catalogue → Precedents/Templates UI + fill shellLEX-677/678/680Martin / Pratik
Agent Platform M4 — background / durable executionLEX-584/585Adolfo
Todo
Content + decisions.
Demo library — Missouri / divorce / prenup / estate flowsLEX-656-659Sedona
Skill-creator-with-Lawrence (Goal 1c)LEX-647
Playbooks / context-layer plan — close it out

Sprint 9 preview