For Florida law firms
Revision memory: every redline decision kept against its exact base, and a tracked Word file that matches the final
firm lane · Deterministic — no model call
Current availability
ShippedConfigured and enabled: firm staff of the matter's firm.
- Where it lives
- Attorney workspace → a redline result · /api/admin/workspace/revision-decisions
- What unlocks it
- firm staff of the matter's firm who can read the workspace run
Status is evaluated against this deployment's configuration by the capability-status service at build time; the catalogue's facts were last reviewed on the date shown.
Capabilities
- ShippedEach accept / reject / own-text decision is saved to the run's record against the base's SHA-256 and the change's stable key (its section, passage and replacement), and restored when the result is reopened.
- ShippedEvery save names the version the person saw; a decision made elsewhere meanwhile comes back as a conflict with the current decision shown — never overwritten.
- ShippedWhy each decision was made is kept apart: a firm playbook preference, a client's instruction, what the law requires, or attorney judgment.
- ShippedOne plan builds the clean final, the marked copy and the tracked-changes Word file: accepting every tracked revision yields the clean final exactly, rejecting every one yields the base exactly.
- ShippedNothing ambiguous is applied: a passage not in the base, a passage the base holds more than once, and accepted changes that overlap are each named for the attorney to resolve.
Limits
- The base text itself is never stored — only its fingerprint; a result reopened without its base builds the final only after the same text is supplied (matched by fingerprint).
- Decisions made against a different base, or on a change the result no longer shows, are kept and shown but never applied.
- Accepted insertions ride one tracked insertion at the end of the file; where they belong is the attorney's call in the editor of record.
What EstateDraftFL refuses
| Reason code | HTTP | What it means |
|---|---|---|
| not-a-redline | 409 | Only a finished redline carries decisions. |
| not-in-run | 409 | That change is not one the run proposed. |
| decision-changed | 409 | Decided elsewhere meanwhile — the current decision is shown. |
| invalid | 400 | A decision needs the base's fingerprint, the change, the decision and the version seen. |
| unavailable | 503 | The decisions could not be read or written just now — never shown as an empty list. |
Evidence
- src/lib/workspace/revision-plan.ts
- src/lib/workspace/revision-memory.ts
- src/app/api/admin/workspace/revision-decisions/route.ts
- src/components/workspace/ChangeDecisionPanel.tsx
- src/lib/workspace/export.ts
- supabase/migrations/20260925234000_phase8_revision_decisions.sql
- docs/security/MASTER-PLAN-PHASE8-2026-09-25.md
Last reviewed 2026-09-25