Skip to content

A question with an obvious answer is not asked - #24

Merged
thousandflowers merged 2 commits into
mainfrom
feat/confidence-gate
Sep 5, 2026
Merged

thousandflowers merged 2 commits into
mainfrom
feat/confidence-gate

Conversation

@thousandflowers

Copy link
Copy Markdown
Owner

The screen already refuses to show a control that would be ignored. This is the same rule pointed at questions.

Every planned conversion is read as five facts — is something being thrown away, did the user ask for that themselves, is anything undefined, does this make a different kind of thing or more files than it was given, does it touch the originals — and those five decide between running it, asking once, and the existing replace-or-move dialog.

  • Drop a folder onto a preset chosen a minute ago: nothing is asked.
  • holiday_10MB.jpg counts as the user's own answer, so it runs.
  • The same ceiling arriving from a preset gets one sober popup, which runs the real chain on one representative file per kind into a scratch folder — before and after measured, not guessed, and never written into history.
  • A film is the exception: encoding one to show what encoding looks like is the conversion itself, done twice, so it gets a frame and a sentence.

Also fixed here: a drop during a running batch used to route straight to "nothing to ask, run it" — a second batch over the same list, racing for the same output names. Guarded on the screen and in the batch itself.

Test plan

  • swift test — 279 tests green
  • 18 unit tests over the confirmation matrix: explicit magic → silent, inferred → confirm, undefined → confirm, cross-domain → confirm, plain 1:1 → silent, overwrite → block
  • App builds and launches; Convert screen renders

🤖 Generated with Claude Code

https://claude.ai/code/session_018H9CZxWumc3ryumgEHd578

thousandflowers and others added 2 commits September 5, 2026 22:06
The screen already refuses to show a control that would be ignored.
This is the same rule pointed at questions. Every planned conversion is
read as five facts - is something being thrown away, did the user ask
for that themselves, is anything undefined, does this make a different
kind of thing or more files than it was given, does it touch the
originals - and those five decide between running it, asking once, and
the existing replace-or-move dialog.

The case it is built for: drop a folder onto a preset chosen a minute
ago and nothing is asked at all. A size the user typed into a filename
counts as their answer, so `holiday_10MB.jpg` runs; the same ceiling
arriving from a preset does not, and gets one sober popup with what it
actually costs.

That popup runs the real chain on one representative file per kind into
a scratch folder, so the before and after are measured rather than
guessed, and it is not written into anybody's history. A film is the
exception: encoding one to show what encoding it looks like is the
conversion itself, done twice, so it gets a frame and a sentence.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018H9CZxWumc3ryumgEHd578
…econd one

Routing every drop through the gate meant that files dropped while a
batch was running went straight to "nothing to ask, run it" - a second
batch over the same list, two conversions racing for the same output
names, the second reporting files the first had not finished writing.

Guarded in both places it can happen: the screen does not route a drop
while it is busy, and the batch itself refuses to start twice.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018H9CZxWumc3ryumgEHd578
@thousandflowers
thousandflowers merged commit 25a137c into main Sep 5, 2026
1 check passed
@thousandflowers
thousandflowers deleted the feat/confidence-gate branch September 5, 2026 21:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant