Skip to content

docs(specs): record why the interactor overlay is built the way it is - #213

Merged
adamjohnwright merged 7 commits into
mainfrom
docs/interactor-overlay-decisions
Sep 16, 2026
Merged

adamjohnwright merged 7 commits into
mainfrom
docs/interactor-overlay-decisions

Conversation

@adamjohnwright

Copy link
Copy Markdown
Contributor

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 with
what was rejected and the measurement that settled it:

Decision Settled by
D1 Counts are interactions, not entities Reactome-FIs read 15 beside a badge reading 17
D2 A diagram tally counts each protein once 15 badges over 13 accessions
D3 No badge below 0.6 zoom 6 screen pixels at the 0.283 a pathway opens at
D4 Say so when they cannot be seen 9 badges, none visible, nothing said
D5 The download is the data, not the view a 12-row file beside a badge reading 73
D6 Threshold remembered per resource the old browser's own map
D7 A gesture and a replay are different things two released bugs from one cause
D8 A reader's data is read in the browser 323 stored uploads, oldest 2019, no expiry
D9 Nothing asked until the panel opens 14 third-party requests per pathway → 1
D10 The control is called "Interactors" two readers missed a working feature
D11 Header controls stay divs, made operable focusable: false

Plus 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

  • Every figure is attributed to a measurement and a date. Several of these
    decisions exist because a measurement contradicted an assumption, and a reader
    should be able to tell which.
  • Open decisions 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.

Documentation only; no code changes.

🤖 Generated with Claude Code

adamjohnwright and others added 7 commits September 16, 2026 16:47
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>
@adamjohnwright
adamjohnwright merged commit 2aa6b6f into main Sep 16, 2026
6 checks passed
@adamjohnwright
adamjohnwright deleted the docs/interactor-overlay-decisions branch September 16, 2026 18:53
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