diff --git a/docs/architecture/catalog-core.md b/docs/architecture/catalog-core.md
index f2a279b3..7b041c19 100644
--- a/docs/architecture/catalog-core.md
+++ b/docs/architecture/catalog-core.md
@@ -267,4 +267,4 @@ A card image fits its slot with `object-fit: contain`, centred, at the largest s
| 2026-11-11 | Spec 073 (the card page's "Free to use" and "In decks", #50: the card page's order gains the stats and the "In decks" section for a collector, the visitor rule names "In decks" and `deck_proxies`, the open-issues line says they are built; the stats and the section are collection and lots') | [#333](https://github.com/plainprogrammer/Collector/pull/333) |
| 2026-11-13 | Spec 084 (Collector's licence line ends every page's footer, for everyone, worded from the build facts; the footer is always present and every shell footed, superseding spec 018 AC-2.3 and FR-2's "absent"; the shared partial `layouts/notice_lines` a focused page's sheet foot renders too; #374). Written during the build (T4.2) and checked here | [#378](https://github.com/plainprogrammer/Collector/pull/378) |
| 2026-11-13 | Spec 087 (the licence line's third sentence and link, and the third-party licences page: who sees it, the sections and a row, "Licence text not found", where the list comes from (the running bundle, the manifest and its texts), the memo, the guard, the page's ceiling; superseding the wording of spec 084's licence-line ACs; #376). Written during the build (T6.1) and checked here | [#412](https://github.com/plainprogrammer/Collector/pull/412) |
-| 2026-11-13 | Spec 082's notice on the scanner (decision 16, patch 1.0.3): a one-screen focused page has no footer and carries the small print, the licence line last, in its sheets' foot and its noscript notice, the focused-page exception to spec 084 decisions 1 and 11, AC-1.1 and AC-4.3; supersedes spec 018 FR-2 for the scanner page | spec 082's pull request |
+| 2026-11-13 | Spec 082's notice on the scanner (decision 16, patch 1.0.3): a one-screen focused page has no footer and carries the small print, the licence line last, in its sheets' foot and its noscript notice, the focused-page exception to spec 084 decisions 1 and 11, AC-1.1 and AC-4.3; supersedes spec 018 FR-2 for the scanner page | [#409](https://github.com/plainprogrammer/Collector/pull/409) |
diff --git a/docs/architecture/scanner.md b/docs/architecture/scanner.md
index f8dec697..b3a04ac6 100644
--- a/docs/architecture/scanner.md
+++ b/docs/architecture/scanner.md
@@ -310,4 +310,4 @@ The findings tasks take `FRAMING=` (`full` or `shipped`): unset scores `
/fu
| 2026-11-06 | Specs 005, 008 and 010 (spikes); specs 007, 009 and 011 but for the name index, query cleaning and the build's run; the scanner parts of specs 040 and 042; spec 047; ADRs 0001, 0002, 0004–0007 and 0012; and CLAUDE.md's card scanner paragraph | [#222](https://github.com/plainprogrammer/Collector/pull/222) |
| 2026-11-09 | Spec 053's scanner side (an index built with other settings is served and refused by the browser; one for an older catalog is used) and issue #176 | [#241](https://github.com/plainprogrammer/Collector/pull/241) |
| 2026-11-10 | Spec 065 as it touches the sitting (Story 5, decisions 2, 3, 8, 9): the Location select lists places and zones, the 422 covers a deck's own row, the messages name the label; supersedes spec 040 decision 3 and AC-3.1 for zones | [#304](https://github.com/plainprogrammer/Collector/pull/304) |
-| 2026-11-13 | Spec 082 (the one-screen scanner, #344): the focused page and its shell, the two sheets with a live region each, decision 10's table of regions, the frozen frame, "Scan again", the after-add line, the stage notices, the live guide's rule (`LIVE_GUIDE`) and the photo path's shipped framing, measurement mode on the shell with the framing in the session and the paired findings; supersedes the parts of specs 007, 009, 011, 018, 040, 042 and 047 its Supersedes names; Story 7's re-measure withdrawn after one pass (spec 082 1.1.0, research.md, #419) | spec 082's pull request |
+| 2026-11-13 | Spec 082 (the one-screen scanner, #344): the focused page and its shell, the two sheets with a live region each, decision 10's table of regions, the frozen frame, "Scan again", the after-add line, the stage notices, the live guide's rule (`LIVE_GUIDE`) and the photo path's shipped framing, measurement mode on the shell with the framing in the session and the paired findings; supersedes the parts of specs 007, 009, 011, 018, 040, 042 and 047 its Supersedes names; Story 7's re-measure withdrawn after one pass (spec 082 1.1.0, research.md, #419) | [#409](https://github.com/plainprogrammer/Collector/pull/409) |
diff --git a/docs/specs/082-scanner-capture-always-in-view/plan.md b/docs/specs/082-scanner-capture-always-in-view/plan.md
deleted file mode 100644
index 5b131e31..00000000
--- a/docs/specs/082-scanner-capture-always-in-view/plan.md
+++ /dev/null
@@ -1,1703 +0,0 @@
-# Implementation Plan: Scanner: Capture Always in View (spec 082, issue #344)
-
-**Spec:** `docs/specs/082-scanner-capture-always-in-view/spec.md` (Approved, 1.0.0) · **Issue:** #344 · **Branch:** `082-scanner-capture-always-in-view` · **Created:** 2026-11-13
-**Status:** Approved at Gate B on 2026-11-13 (the coordinator, under the maintainer's delegation), with spec patch 1.0.2. Plan review (Opus, read-only) 2026-11-13: round 1 REVISE (2 blocking, 8 major, 16 minor), all applied; round 2 APPROVE WITH CHANGES (2 major, 2 partly resolved, minors), all applied; spec patch 1.0.1 (the notice partial shared with spec 084, maintainer's ruling) is already in `spec.md`.
-
-## Summary for the maintainer
-
-Ten phases. Phases 1 to 8 need nothing from you; Phase 9, the paired re-measure on your cards, is last and nothing waits on it. Implementers (Sonnet 5.5) take 2 to 4 consecutive tasks each, test first, one commit per task; I check every batch's diff.
-
-| Phase | What lands | Criteria | Your calls in it |
-|---|---|---|---|
-| 0 | Spec patch 1.0.2, plan, index; #345's line | — | 1 (Scan again, the #345 line) |
-| 1 | The live guide's geometry; the synthetic card drawn where the stage's guide falls | AC-3.1 to 3.5 | 2 (the guide in the aiming area) |
-| 2 | The notice's lines in one partial, shared with spec 084 | decision 16 | |
-| 3 | The focused layout; the shell: top bar, stage, bottom bar, the pane, the sheets (markup, CSS, the shell's state) | FR-1; AC-1.1 to 1.9, 2.1, 2.2, 2.4, 6.1 | 3 (Use a photo in the sheet), 5 (the 480px column) |
-| 4 | Capture, the frozen frame, a result in the pane, "Scan again" | AC-4.1 to 4.10 | 1 (Scan again), 4 (the pane, the canvas) |
-| 5 | The sitting's answers: Set, add, Undo, the after-add line, focus, the flash | AC-2.3, 2.5, 5.1 to 5.6, 6.2 to 6.5 | 4 (a live region per sheet) |
-| 6 | The other states, the old CSS, the touch floor, the footer and request specs | AC-1.9; Error Scenarios; decision 16 | |
-| 7 | Measurement mode on the shell, the framing, the paired findings task | AC-7.1, 7.2, 7.4's tooling | |
-| 8 | Documents, screenshots and GIFs, verification, `bin/ci`, Mode B, push, draft PR | Documentation; Verification | |
-| 9 | **The re-measure (you):** corpus, manifest checks, the paired run, findings, bar A | AC-7.3 to 7.5 | |
-
-**One thing planning found that changes the spec (patch 1.0.2, for approval with this plan):** decision 5 sends measurement mode's stored notice and a store failure to the status line, but a capture is stored while its result shows, when the status line is hidden (decision 10's table) and its text is emptied. So the stored notice shows as the top-bar button's new row and count (the button is redrawn with every stored capture), and a store failure goes to the pane's `#status`, which is in view while the result shows. AC-7.1's last clause changes to match.
-
-**Not run:** by the project's rule nobody runs a plan's code before execution. The blocks are strong drafts; each implementer sees red, then green, and records a deviation as a `Ruling:` line in the commit body. "Risks" lists what only a run can confirm.
-
-## Context
-
-Spec 080 drew the shell (`c-scan`), the sheet (`c-sheet`), the lines over the camera and `c-shell--focused` in `additions.css` and the design system's documents; no view uses them. This spec builds the scanner page on them, keeps today's result partial inside the pane, moves the sitting's control and list into two sheets, and makes the live guide one geometry shared by the page and the crop. Every server route stays; the Turbo Stream answers gain targets.
-
-## Global Constraints
-
-- **Repo rules:** `CLAUDE.md`, `.claude/rules/*.md`. Before touching a view, CSS or copy, use the `collector-design-system` skill and read `docs/design-system/README.md`, `components/Scanner.md` and `components/Sheet.md`. Tokens and `c-*` classes only; no colour literal, no font family outside the tokens; every new rule that sets a size sets `box-sizing:border-box` (spec 080 decision 15).
-- **Where CSS goes.** One new block, headed `/* ---------- Scanner page (spec 082): … ---------- */`, inserted directly above the heading `/* ---------- Reduced motion, app-wide (spec 080 decision 14) ---------- */`, which stays last. No new comment contains "spec 019", "spec 021" or "spec 023" (`spec/design_system_files_spec.rb`). The frozen spec 080 rules are not edited; where this block overrides one it does so by a selector of equal specificity later in the file, or a higher one.
-- **Core files name no collectible.** The sitting's partials and `ScannersHelper` (`spec/scanner_sitting_core_spec.rb`), the layout and the notice partials (`spec/footer_core_spec.rb`): no `mtg`, `scryfall`, `magic`, `wizards`, "fan content" anywhere, comments included.
-- **No raw strings into a stream.** `turbo_stream.update(target, "…")` marks its string `html_safe`; every text that can hold a card or place name goes through `ERB::Util.html_escape` or a partial.
-- **Specs:** `type: :system` explicit; `RSpec/ExampleLength` is 15 lines, so measures live in helper methods; multi-expectation examples carry `:aggregate_failures`; no `sleep`; no constants in a `describe`. A phone viewport is a frame opened from the collection page (`open_in_narrow_frame`; the scanner's own policy frames nothing). The scanner doesn't scroll, so its frame has no scrollbar and the frame's width is the viewport's. The window (1400 × 1400) is taller than every frame.
-- **Comments:** YARD summaries on every public method added or changed in `app/helpers`, `app/models`, `app/controllers/concerns`, `lib`, `spec/support` (the comment ratchet); the why, with spec 082's decision or criterion as its source; no `{…}` in a comment.
-- **Commits:** one per task, Conventional Commits ending `(#344)`, with the trailer of the model that wrote it (an implementer's: `Co-Authored-By: Claude Sonnet 5.5 `). `git add` and `git commit` in separate calls; one git operation per call. Never read `.kamal/secrets`, `config/master.key`, `.env*`, `storage/` or a `*.sqlite3`; every `git grep` ends with `':!.kamal/secrets'`. No `bin/rails console`, `sqlite3`, `bundle add`, `importmap pin`.
-- **Shared test database:** one test run at a time in this worktree; never `bin/jobs`.
-- **Selector map** for every existing scanner example the new markup touches (Phases 3 to 7):
-
- | Today | After |
- |---|---|
- | `.c-scanner` (the controllers' element) | `.c-scan` |
- | `.c-scanner__stage:not([hidden])` | `.c-scan__feed:not([hidden])` |
- | `.c-scanner__stage video`, `.c-scanner__video` | `.c-scan__feed video`, `.c-scan__video` |
- | `.c-scanner__shutter` | `.c-scan__main` |
- | `button[aria-pressed=true]` with text "Torch" | `button[aria-label=Torch][aria-pressed=true]` |
- | `#status` after an add | `#scanner_added_text`, with the new sentence ("Added Lightning Bolt MOM · 123, foil") |
- | `#status` after "Set" | `#scanner_destination_status` (open the destination sheet first) |
- | `#status` after an Undo | `#scanner_list_status` (list sheet open) or `#scanner_added_text` |
- | `#status` after a refused or failed add, Other printings | `#status` (now in the pane; unchanged) |
- | `#scanner_sitting h2` | `#scanner-sitting-heading` (open the list sheet first) |
- | `.c-scanner__status` | `#status` (the pane's) for a result's sentence; `#scanner_status_text` for the status line |
- | `.c-scanner__art` | the same, inside the destination sheet: open it, or match with `visible: :all` |
-
-## Goal
-
-The scanner is the one-screen shell: the destination and Done in the top bar, the live camera with a guide the crop really uses, the main button, count and torch in the bottom bar, a result over the stage, the sitting's control and list in sheets that keep the camera, the after-add line with Undo; measurement mode on the same shell with a framing switch; and, last, a paired re-measure that decides the guide's size.
-
-## Pre-implementation gates
-
-- **Simplicity: pass.** The page's parts are the views, three small Stimulus controllers (one new for the shell's state, one new for the sheets, one changed for focus), the existing camera and card-reader controllers, and stream targets on the existing routes. Measurement adds one development-only form and a findings report.
-- **Anti-abstraction: pass.** Native `