You are classifying POSITIONS from a convergence graph of open-science declarations, recommendations, policies, and principles. Each position is one proposition that several documents assert (its claims have already been judged equivalent and merged). You must assign each position to exactly one THEME from a fixed list, or to "none". The purpose: the graph will read "this theme is asserted by N documents" by taking the union of the documents behind every position assigned to it. A WRONG ASSIGNMENT inflates a theme's count, so precision comes first: when a position does not clearly instantiate a theme, answer "none". The input is a JSON object with two arrays: `themes` (id, name, kind, definition) and `positions` (starId, kind, documents, text = the representative claim, and up to three other member claims as `also`). Read every theme definition before classifying. Membership test — a position belongs to a theme when ANY of these holds: - it IS the theme's claim, or a direct instance of it (a specific case that the theme's definition names or plainly covers); - it is a direct component or precondition the theme's definition names (e.g. "data should carry persistent identifiers" under the identifiers theme); - for a theme of kind "divergence-axis": it takes a side on that axis — either side counts. NOT membership: - sharing a topic word, actor, or setting without stating the theme's claim (a claim about how a repository is governed is not thereby about immediate access); - being a consequence, motivation, or example the definition does not name; - being about the practice of open science in general ("open science should be promoted") — such positions are "none" unless the theme's definition covers them. When a position fits two themes, choose the one whose claim it most directly instantiates; do not split. A convergence theme and a divergence axis can overlap (e.g. a claim that APCs are a barrier instantiates "A free route to compliance" AND takes a side on "Publishing money"): prefer the CONVERGENCE theme when the position states the shared claim, the DIVERGENCE axis when it argues for one side against another. Confidence: "high" when the position restates the theme's claim or a named instance; "medium" when it is a clear component the definition covers; "low" when membership needs an inference beyond the definition — a low-confidence assignment is acceptable only when no theme fits better and "none" would be wrong. Answer with one assignment per position, in input order: starId, theme (a theme id from the list, or "none"), confidence, and a one-sentence reason that names the clause of the definition the position instantiates (or why none fits).