PR: #626: feat(import): privileged refusal speaks lawyer + Switch-to-Strategy [Story-2415] by @ankitmaheshwari-com
View PR →

Story-2415 · pramaan-app · 15 Jul 2026

The refusal names an action counsel can take today.

Story-2402 gave Privileged a voice in the instruction slot. But the words spoke engineer, not lawyer: “work product… the Work-Product Workspace will hold them” pointed counsel at a feature that does not exist yet. Founder UAT (EPIC-2384) rewrote it. The refusal now uses the exact legal frame — the evidentiary Record — and redirects to Strategy, the home that is built, with a one-click button that arms it.

The one idea

A refusal that only says “no” is a dead end; a refusal that offers the right next door is guidance. Privileged papers still never upload — that fail-safe is untouched. What changed is that counsel now reads why in their own vocabulary, and gets one tap to the place those papers actually belong.

What shipped

Piece What it does
Refusal headline & body speak lawyer privilegedTitle / privilegedBody now say “evidentiary Record” (not bare “Record”) and drop the unbuilt “Work-Product Workspace”. The body points at Strategy as the home for advice and internal working papers — an action available today.
Instruction slot rewrites privilegedInstruction becomes “Privileged papers are never uploaded here. For internal working papers, switch to Strategy.” Same fixed slot as every other state — the drawer does not jump.
Switch to Strategy button A SecondaryButton inside the refusal zone. One click calls setArmed("strategy") — the SAME state setter the Strategy chip uses. The zone recolors slate, the Strategy instruction line appears in the fixed slot. Pure state change, zero upload side effects.
Hindi twins All three strings translated (faithful, not literal) in messages/hi.json: “साक्ष्य रिकॉर्ड” for evidentiary Record, “रणनीति पर जाएँ” for Switch to Strategy.

Locked copy (founder-approved verbatim)

Headline: Privileged papers stay out of the evidentiary Record
Body: The evidentiary Record is discoverable — nothing armed as Privileged is ever uploaded. Keep advice and internal working papers under Strategy instead; Strategy material never enters the evidentiary Record.
Instruction slot: Privileged papers are never uploaded here. For internal working papers, switch to Strategy.
Button: Switch to Strategy

The fail-safe is unchanged

droppable = canUpload && armed != null && armed !== "privileged". While Privileged is armed, droppable is false, so takeFiles returns early, no door opens a picker that queues, and no drop is accepted. Story-2415 touches copy and adds one state-only button. It does not touch that guard.

The re-arm path

Privileged armed ──[ Switch to Strategy ]──▶ setArmed("strategy") │ refusal panel unmounts ◀─────────────────── ┘ slate dropzone renders · Strategy line fills the fixed slot · droppable = true

Verify

Files changed

4 file(s), +24 / -9 lines

Path Role + -
messages/en.jsonConfig+4-3
messages/hi.jsonConfig+4-3
src/components/matters/import-into-matter-sheet-v2.stories.tsxComponent+5-3
src/components/matters/import-into-matter-sheet-v2.tsxComponent+11-0