diff --git a/web/src/lib/attachments/actions.ts b/web/src/lib/attachments/actions.ts
index 3b7d7601..3ea8e4ca 100644
--- a/web/src/lib/attachments/actions.ts
+++ b/web/src/lib/attachments/actions.ts
@@ -1,11 +1,19 @@
/**
- * Attachment actions — defined once, rendered twice (PLAN-2392 DR-5).
+ * Attachment actions — defined once, rendered by whoever needs them
+ * (PLAN-2392 DR-5).
*
* "The panel and the viewer share one action list" is a promise with no source
* of truth unless the list IS the source of truth. So the actions live here as
- * descriptors: the options panel draws them as a menu/sheet, the image viewer
- * draws them as an inline toolbar, and neither owns the set. Adding an action
- * means adding one descriptor here.
+ * descriptors: a surface renders them, none of them owns the set, and adding an
+ * action means adding one descriptor here.
+ *
+ * TODAY THERE IS ONE CONSUMER: the options panel, which draws them as a
+ * menu/sheet. The unified image viewer — the second renderer, an inline
+ * toolbar over the same list — arrives in phase 3a, which is also what will
+ * consume the `address` option now threaded onto the image NodeView. Stated
+ * plainly because "rendered twice" read as a description of the present and
+ * was not one; a list with a single consumer is a shape held open on purpose,
+ * and worth re-justifying if 3a ever stops coming.
*
* TWO DESCRIPTOR SHAPES, not one, because the ELEMENT is part of the contract
* (DR-5, round 35/36):
diff --git a/web/src/lib/components/attachments/AttachmentDeleteConfirm.svelte b/web/src/lib/components/attachments/AttachmentDeleteConfirm.svelte
index 9dcae214..21034090 100644
--- a/web/src/lib/components/attachments/AttachmentDeleteConfirm.svelte
+++ b/web/src/lib/components/attachments/AttachmentDeleteConfirm.svelte
@@ -28,13 +28,18 @@
the app's existing behaviours on both surfaces rather than a second
implementation.
- The PROMPT TEXT is `attachmentDeletePrompt` below, shared for the same
- reason the markup is: the hedged arm's honesty is the substance of DR-5, and
- two copies of it drift.
+ The PROMPT TEXT lives in this module too, but note there are TWO builders,
+ not one: `attachmentDeletePrompt` for an item surface, which can check the
+ body it has and must hedge about the ones it cannot, and
+ `workspaceAttachmentDeletePrompt` for the workspace-wide storage list, where
+ a reference check would be meaningless and the honest thing to say is what
+ happens to the blob. Different questions, so different copy — deliberately.
+ What must not drift is that BOTH are written here, next to each other, where
+ a change to one is read alongside the other.
-->