docs(specs): record why the interactor overlay is built the way it is - #213
Merged
Merged
Conversation
The reasoning behind these choices lived only in commit messages, and nobody reads those in a year when they are wondering why a number is what it is. specs/002-interactor-overlay-decisions records eleven decisions, each with what was rejected and the measurement that settled it: the count being interactions rather than entities, the badge not being drawn below 0.6 zoom and the notice that replaces it, the download being the data rather than the view, the threshold being per-resource, a reader's own data being read in the browser, and the rest. Two things it deliberately does that the template does not ask for: - Every figure is attributed to a measurement and a date, because several of these decisions exist *because* a measurement contradicted an assumption, and a reader should be able to tell which. - Decisions still open are recorded as open -- where the control belongs, and the badge colour -- rather than omitted. An absent decision reads as an oversight; a recorded one reads as a choice nobody has made yet. D7 is the one to read first if anything in this area misbehaves: a reader's gesture and the address being replayed reach the same code, two released bugs came from not distinguishing them, and a third of the same shape is plausible. The custom upload contract is written down as measured rather than as documented, because it is not documented anywhere: the header the service wants, the third column it refuses, and the first pair it silently eats without one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ught Reviewing the record against the standard it sets found one claim without a date: "five of the thirteen PSICQUIC servers had nothing at all". On re-measuring (2026-09-16, R-HSA-1368108) there were **twelve** resources offered, not thirteen, five of them empty. The five was right; the thirteen was a day old. The list is served by third parties and changes, so the counts that describe it are now dated and said to be variable, and the requirement is written as "the reader can tell which is worth choosing" rather than around a number that will be wrong again next week. The checklist records the catch, because a document about being believed later should show its own correction rather than quietly absorb it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The reasoning behind the interactor work lived only in commit messages. This puts
it where someone will find it.
specs/002-interactor-overlay-decisions/records eleven decisions, each withwhat was rejected and the measurement that settled it:
focusable: falsePlus the custom upload contract, measured by probing rather than read from
documentation that does not exist: the header the service wants, the third column
it refuses, and the first pair it silently eats without a header.
Two things beyond the template
decisions exist because a measurement contradicted an assumption, and a reader
should be able to tell which.
badge colour — rather than omitted. An absent decision reads as an oversight; a
recorded one reads as a choice nobody has made yet.
Documentation only; no code changes.
🤖 Generated with Claude Code