typelevel/spire
61.4
Adequate · 27 September 2026
37.9k
lines of production code
Scala
primary language
4
measurements over time
What this system is
This release significantly expands Spire's mathematical and algebraic foundations, introducing new type classes for vector spaces, actions, and partial structures, alongside robust support for fixed-point arithmetic and interval sets. The library now features a comprehensive random number generation API with multiple algorithms and distributions, while macro-based compile-time checks for arithmetic overflow and numeric literal parsing enhance safety and performance. Additionally, the update brings full Scala 3 compatibility with native platform support, alongside a major reorganization of syntax imports and typeclass instances for a cleaner developer experience.
Features
Add FixedPoint value class for fixed-point arithmetic
The spire-extras module now includes a new FixedPoint value class that provides fixed-point arithmetic operations using an implicit denominator. This allows users to perform precise decimal-like calculations using unboxed Long values, with support for addition, subtraction, multiplication, division, and comparison operations, as well as overflow handling.
extras/src/main/scala/spire/math · high confidence
Add Scala 3 macro for compile-time arithmetic overflow checking
A new \Checked\ macro implementation for Scala 3 has been added to the \macros\ module. This introduces compile-time overflow detection for \Int\ and \Long\ operations, allowing users to safely perform arithmetic with explicit overflow handling via \checked\, \option\, and \tryOrElse\ methods.
macros/src/main/scala-3 · high confidence
Add Scala 3 macro implementations for cfor and literal parsing
New Scala 3-specific macro implementations have been added for the \cfor\ loop construct and various literal parsing utilities. The \cforMacros.scala\ file introduces a macro that generates optimized \while\ loops for integer and long ranges, including support for \to\, \to by\, and \until\ ranges, with a fallback to \foreach\ for non-optimizable cases. The \literalMacros.scala\ file adds macros for parsing byte, short, uint, ulong, rational, and SI/US-formatted integer literals, enabling compile-time validation and optimization of these literal values in Scala 3.
core/src/main/scala-3/spire/syntax/macros · high confidence
Add Scala 3 syntax support for Spire
New Scala 3-specific syntax files are introduced in the \core/src/main/scala-3/spire/syntax\ directory. This includes \CforSyntax\ providing \cfor\ and \cforRange\ macros, \Ops\ defining extension methods for algebraic types (such as \EqOps\, \OrderOps\, \SemigroupOps\), and \Syntax\ traits that wire these operations into the Spire namespace for Scala 3 users.
core/src/main/scala-3/spire/syntax · high confidence
Add Scala 3-specific macro implementation for byte packing
A new Scala 3-specific implementation of the \PackMacros\ utility was added to \util/src/main/scala-3\. This file provides the Scala 3 equivalent of the existing Scala 2 macros, using Scala 3's \inline\ methods and compile-time evaluation to handle integer and long byte extraction, ensuring consistent behavior across Scala 2 and Scala 3 versions.
util/src/main/scala-3 · high confidence
Add Scala 3-specific syntax extensions for numeric types and collections
A new Scala 3-specific file, StdSyntax.scala, is introduced to provide extension methods for Int, Long, Double, and BigInt, including operators for division, modulo, power, factorial, and combinations with SafeLong, Natural, ULong, and Number types. Additionally, array and sequence operations are exposed via ArraySyntax and SeqSyntax traits, enabling more idiomatic usage of these types in Scala 3.
core/src/main/scala-3/spire/syntax/std · high confidence
Add Unicode operator extensions for Spire algebraic types
A new Scala 3-specific file, \core/src/main/scala-3/spire/optional/unicode.scala\, introduces a suite of Unicode operators and type aliases for Spire's algebraic structures. This includes type aliases for common mathematical sets (ℝ, ℚ, ℤ, ℕ, ℂ, ℍ) and constants (π, φ, e). It also provides extension methods on generic types \A\ to support Unicode symbols for logical, arithmetic, and set operations (e.g., \⊤\, \⊥\, \¬\, \√\, \∧\, \∨\, \∈\, \∩\), enabling more idiomatic mathematical notation in Scala 3 code.
core/src/main/scala-3/spire/optional · high confidence
Add XorShift random number generators to spire-extras
Three new random number generators—XorShift1024Star, XorShift128Plus, and XorShift64Star—are added to the spire-extras package. These implementations provide additional options for generating random numbers, each with their own companion objects for seeding and serialization.
extras/src/main/scala/spire/random · high confidence
Add example datasets and supporting code for data analysis
The examples subproject now includes three new datasets—auto-mpg, iris, and yeast—along with their corresponding metadata files (.names). To support these, a new \DataSets.scala\ module was added to load and parse the CSV data into structured \DataSet\ objects, and a \BigStreamCompat\ trait was introduced to provide Scala collection compatibility for \BigStream\. Additionally, a \ZigguratGenerator\ example was added to demonstrate random variable generation for statistical analysis.
examples/src/main/scala · high confidence
Add macro support for comparison types
A new sealed trait \Cmp\ and its companion object are added to \core/src/main/scala/spire/macros/fpf/Cmp.scala\. This introduces five case objects (\Lt\, \Gt\, \LtEq\, \GtEq\, \Eq\) that represent comparison operations, likely to be used by macros for generating comparison logic.
core/src/main/scala/spire/macros · high confidence
Add polynomial root finding and special polynomial generation
The \spire.math.poly\ package now includes a type-class-based approach to finding polynomial roots, introducing \RootFinder\ and \RootIsolator\ traits with implementations for \BigDecimal\, \Real\, and \Number\ types. This includes the \BigDecimalRootRefinement\ class for refining root approximations and the \Roots\ trait for retrieving real roots. Additionally, the library now supports generating special polynomials such as Legendre, Laguerre, Chebyshev, and Hermite polynomials via the \SpecialPolynomials\ object, and provides dense (\PolyDense\) and sparse (\PolySparse\) polynomial representations.
core/src/main/scala/spire/math/poly · high confidence
Added AutoAlgebra example demonstrating automatic type class derivation
A new example file, autoalgebra.scala, was added to the Scala 2 examples directory. It demonstrates how to use Spire's Auto macros to automatically generate type class instances for Java and Scala types, including arbitrary-precision numbers and Java collections, by mapping common operator conventions to Spire's algebraic structures.
examples/src/main/scala-2 · high confidence
Added FreeMonoid, FreeGroup, and FreeAbGroup algebraic structures
Users can now construct free monoids, free groups, and free abelian groups to represent algebraic structures in a generic way. FreeMonoid provides a list-based monoid with optional semigroup reduction, FreeGroup supports group operations with term cancellation, and FreeAbGroup offers abelian group functionality with support for positive and negative terms, including methods to split and run computations over these structures.
core/src/main/scala/spire/algebra/free · high confidence
Added Fuser macro for floating-point filter optimization
A new macro implementation for floating-point filters (Fuser) has been added to the spire macros library. This introduces a mechanism to optimize and fuse floating-point filter operations, likely improving performance by reducing intermediate allocations and enabling more efficient numerical computations within the library.
core/src/main/scala-2/spire/macros/fpf · high confidence
Added IntervalSeq and IntervalTrie for interval set operations
The spire-extras module now includes new data structures for handling sets of intervals. This change introduces the \IntervalSeq\ class, which provides efficient set operations (union, intersection, difference, etc.) on sorted sequences of interval boundaries, and the \IntervalTrie\ class, which offers a tree-based implementation of interval sets with support for various numeric types (Byte, Short, Int, Long, Float, Double, Char, and unsigned types). These additions expand the library's capabilities for working with ranges and intervals.
extras/src/main/scala/spire/math/extras · high confidence
Added Opt and Pack utility classes
The \spire.util\ package now includes \Opt\, a value class providing a \get\ method that throws \NoSuchElementException\ when empty, and \Pack\, an object offering big-endian byte conversion methods for \Int\ and \Long\ primitives.
util/src/main/scala · high confidence
Added comprehensive property-based laws for algebraic structures
The \spire.laws\ package now includes a full suite of ScalaCheck-based property tests for verifying algebraic structures. New files define law suites for groups (semigroups, monoids, abelian groups), rings (semirings, rings, GCD rings), lattices, orderings, and partial actions. These laws validate properties such as associativity, commutativity, identity elements, and distributive laws, ensuring that typeclass implementations in the \spire.algebra\ package correctly adhere to their mathematical specifications.
laws/src/main/scala/spire/laws · high confidence
Added macro-based arithmetic overflow checking
The Spire library now provides compile-time overflow checking for integer operations via the new \Checked\ macro. Users can wrap expressions with \Checked.checked\ to throw an \ArithmeticOverflowException\ on overflow, use \Checked.option\ to return \None\ instead of throwing, or use \Checked.tryOrElse\/\tryOrReturn\ to provide fallback values or return statements. This adds a new safety mechanism for detecting integer overflows at compile time.
macros/src/main/scala-2/spire/macros · high confidence
Added macro-based numeric literal parsing and algebraic type class derivation
The Spire library now includes new macro implementations for automatic derivation of algebraic type classes (such as Semiring, Rig, Rng, Ring, EuclideanRing, and Field) for both Scala and Java types, as well as compile-time parsing of numeric literals in various formats (SI, US, EU, and radix). This enables more efficient numeric operations and flexible literal handling at compile time.
core/src/main/scala-2/spire/macros · high confidence
Added new benchmark suite for performance analysis
The benchmark module has been significantly expanded with new test cases to measure performance across various mathematical operations. New benchmarks have been added for Fibonacci calculations, GCD algorithms, array ordering, and polynomial arithmetic. The suite also includes comparisons of different rational number implementations (BigInt, Long, Natural) and complex number additions. Additionally, a Java-based Fibonacci benchmark was introduced to compare against the Scala implementation, and the existing Caliper-based benchmarks have been migrated to JMH.
benchmark · high confidence
Added project documentation and configuration files
Added several new files to the repository: .git-blame-ignore-revs to manage git blame history for formatting commits, .gitignore to exclude build artifacts and IDE files, .jvmopts for JVM memory settings, .scalafmt.conf for code formatting rules, and markdown files for AUTHORS, CHANGES, CONTRIBUTING, DESIGN, and README content. These changes provide essential project metadata, contributor attribution, and development guidelines for users and contributors.
(repo-wide) · high confidence
Adds Scala 3-specific type aliases and values to the spire package
A new file, package.scala, is added to the Scala 3 source directory, introducing type aliases for scala.specialized, scala.annotation.tailrec, and scala.reflect.ClassTag, along with a val binding for ClassTag. It also introduces a NotGiven type alias that maps to scala.util.NotGiven, providing convenient access to these standard library types within the spire namespace for Scala 3.
core/src/main/scala-3/spire · high confidence
Adds shadowing law implementations for algebraic structures
The \spire.laws.shadows\ package now includes a comprehensive set of law implementations for the \Shadow\ type, which pairs a primitive value with its 'shadow' counterpart. The diff introduces new traits and instances for \AdditiveCSemigroup\, \MultiplicativeCSemigroup\, \Eq\, \Involution\, \AdditiveCMonoid\, \PartialOrder\, \AdditiveAbGroup\, \Order\, \CSemiring\, \CRig\, \CRng\, \CRing\, \GCDRing\, \EuclideanRing\, \Signed\, and \TruncatedDivision\. These implementations ensure that the \Shadow\ type correctly adheres to the algebraic laws defined in \spire.algebra\, enabling property-based testing and verification for shadowed types.
laws/src/main/scala/spire/laws/shadows · high confidence
Adds standard library syntax extensions for primitive and big-number types
The Spire library now provides implicit syntax extensions for Int, Long, Double, and BigInt literals, enabling operations such as integer division (/\~), remainder (/%), power (pow/\\), factorial (!), and combination (choose) directly on these types. Additionally, syntax for Array, Seq, and IndexedSeq collections is introduced, allowing for more idiomatic functional-style operations on standard Scala collections.
core/src/main/scala-2/spire/syntax/std · high confidence
Expanded random number generator library with new algorithms
The \spire.random.rng\ package now includes a wider variety of pseudo-random number generators, adding implementations for BurtleRot, Cmwc5, DevPrng, Lcg32, Lcg64, Marsaglia32a6, MersenneTwister (32 and 64-bit), PCG-XSH-RR-64/32, SecureJava, Serial, SyncGenerator, Well1024a, and Well19937a/c. This provides users with more options for random number generation, including high-quality generators like Mersenne Twister and PCG, as well as access to system entropy sources and thread-safe wrappers.
core/src/main/scala/spire/random/rng · high confidence
Introduce FpFilter for approximate floating-point computations
Added a new \FpFilter\ abstraction that wraps exact numeric types (like \BigInt\, \Rational\, \BigDecimal\) to provide a \Double\-based approximation for faster computation of operations such as \abs\, \sqrt\, and comparisons. This allows users to perform hot-path calculations using floating-point approximations while retaining the ability to fall back to exact values when needed, improving performance for geometric and numerical algorithms.
core/src/main/scala-2/spire/syntax · high confidence
Introduce new numeric types and compatibility layer
Added new numeric types including \Algebraic\ for exact algebraic numbers, \BitString\ for bit-level operations, and \FastComplex\ for high-performance complex number arithmetic. Additionally, a new \spire.compat\ package was introduced to provide Scala version compatibility helpers, such as \ScalaOrderingWrapperCompat\ and \BuilderCompat\.
core/src/main/scala/spire/math · high confidence
Introduces partial algebraic structures
Adds new type classes for partial algebraic structures, including Semigroupoid, Groupoid, and PartialAction (Left, Right, and combined). These traits provide methods for partial operations and actions, allowing for optional or conditional algebraic behavior. The implementation includes default methods for identity checks and inverse operations, as well as implicit conversions from existing algebraic structures like Semigroup and Group to these new partial types.
core/src/main/scala/spire/algebra/partial · high confidence
Native platform support for Spire
Added a new \Platform.scala\ file for the Native target, providing a \TrieMap\ type alias and factory method that delegates to \mutable.Map\. This enables Spire to function on Native platforms by supplying the necessary collection abstractions.
platform/js-native · high confidence
New Ops trait for macro-based operator rewriting
A new \Ops\ trait has been added to the \spire.macros.machinist\ package, providing macro-based methods (\unop\, \binop\, \rbinop\, etc.) that rewrite implicit conversion trees to call methods directly on the implicit evidence, thereby avoiding the allocation of implicit instances at runtime.
macros/src/main/scala-2/spire/macros/machinist · high confidence
New a-la-carte syntax imports for standard library types
The \spire.syntax\ package now provides dedicated import objects for common Scala types, allowing users to import only the syntax they need rather than the entire \spire.syntax.\_\ namespace. Specifically, \spire.syntax.std\ exposes \int\, \long\, \double\, \bigInt\, \array\, and \seq\ as importable objects, each providing specific operations (e.g., \qsum\, \qsort\, \qsearch\) for those types. Additionally, \spire.syntax\ now includes \literals\ for numeric literal syntax and \cfor\ for loop syntax, enabling granular access to these features.
core/src/main/scala/spire/syntax · high confidence
New algebraic and ordering instances for optional types
Added new type classes and instances in the \spire.optional\ package, including a \Perm\ class representing permutations with group and action instances, a generic \Eq\ instance for all types, and several \PartialOrder\ implementations for \Interval\ (geometric, ranged, and subset-based), \Set\ (power set), and \Float\/\Double\ (total ordering). Additionally, partial groupoid and semigroupoid instances are provided for iterables, and trigonometric function instances are added for \Rational\.
core/src/main/scala/spire/optional · high confidence
New algebraic type classes for vector spaces, actions, and factorization
The \spire.algebra\ package introduces a suite of new type classes to support advanced mathematical structures. These include \VectorSpace\, \InnerProductSpace\, and \NormedVectorSpace\ for linear algebra, alongside \LeftAction\, \RightAction\, and \Action\ for group actions. The update also adds \Torsor\ for affine-like structures, \MetricSpace\ for distance measurements, and \UniqueFactorizationDomain\ for prime factorization. Additionally, \Trig\ provides trigonometric and hyperbolic functions, while \IsReal\ and \Involution\ offer utilities for real-number properties and adjoint operations.
core/src/main/scala/spire/algebra · high confidence
New prime number utilities and prime factorization tools
Added a new \spire.math.prime\ package providing tools for prime factorization, primality testing, and generating prime numbers. This includes a \Factors\ type representing prime factorizations, a \Siever\ for generating primes via a segmented Sieve of Eratosthenes, and a \FactorHeap\ for managing prime factors. The package also exposes \isPrime\ for primality testing and \factor\ for integer factorization using the Pollard-Rho algorithm.
core/src/main/scala/spire/math/prime · high confidence
New random number generation API with distribution support
The \spire.random\ package has been restructured to introduce a new, more flexible random number generation API. This includes a new \Dist\ trait for representing probability distributions, with concrete implementations for \Gaussian\ (normal), \Exponential\, and \Uniform\ distributions. The \Generator\ class has been updated to work with these distributions, and a \Random\ monad-like structure is provided for composing random operations. Additionally, the Ziggurat algorithm is implemented for efficient generation of Gaussian and Exponential random variables.
core/src/main/scala/spire/random · high confidence
Behavioural changes
Centralized Spire-to-Scala standard library typeclass instances
The Spire library now provides a unified entry point for all standard library typeclass instances and syntax. Users can import \spire.implicits.\\ to access all Spire typeclass instances (such as \Numeric\, \Ordering\, \PartialOrdering\, and \Equiv\) as well as all syntax extensions. This replaces the previous scattered or wildcard imports (e.g., \spire.algebra.\\, \spire.math.\_\) with a single, explicit import that ensures consistent priority-based resolution of implicit conversions and instances.
core/src/main/scala/spire · high confidence
Centralizes lattice algebra type aliases
The \spire.algebra.lattice\ package object now provides type aliases and companion objects for core lattice structures, including \Logic\, \Heyting\, \DeMorgan\, \Lattice\, \MeetSemilattice\, \JoinSemilattice\, \BoundedLattice\, \BoundedJoinSemilattice\, \BoundedMeetSemilattice\, and \MinMaxLattice\. This change simplifies imports and usage of these algebraic types within the Spire library.
core/src/main/scala/spire/algebra/lattice · high confidence
Deprecate spire.NoImplicit in favor of spire.NotGiven
The \spire.NoImplicit\ type alias has been deprecated in favor of \spire.NotGiven\. Users relying on the \NoImplicit\ type will see a deprecation warning, as the new \NotGiven\ class provides the same functionality for ensuring a particular implicit does not exist, while \NoImplicit\ is marked as deprecated since version 0.18.0.
core/src/main/scala-2/spire · high confidence
JVM platform introduces concurrent TrieMap abstraction
The JVM-specific platform implementation now defines a \TrieMap\ type alias and a corresponding factory method that delegates to \scala.collection.concurrent.TrieMap\. This change provides a unified interface for concurrent map operations on the JVM, abstracting away the underlying Scala collection implementation.
platform/jvm · high confidence
Reorganized standard library type class instances into dedicated files
The \spire.std\ package has been reorganized by moving type class instances for standard Scala and Java types into separate, dedicated files (e.g., \any.scala\, \array.scala\, \bigDecimal.scala\, \bigInt.scala\, \boolean.scala\, \byte.scala\, \char.scala\, \double.scala\, \float.scala\, \int.scala\, \iterable.scala\). This change groups related instances together, improving code structure and maintainability without altering the available functionality for users.
core/src/main/scala/spire/std · high confidence
Test coverage
Add FixedPoint property-based tests; Add sanity test for Spire's optional unicode module; Added FpFilterSuite tests for floating-point filtering; Added JVM-specific property-based tests for math operations; Added comprehensive test suites for algebraic and mathematical types; Added munit-based test suites for spire.util; Added new random number generator tests using MUnit; Added property-based tests for algebraic and interval types; Added property-based tests for checked arithmetic operations; Added property-based tests for prime number and factorization logic; Added test coverage for spire syntax features; Added tests for IntervalSeq and IntervalTrie; Added unit tests for Machinist macro operations.
Dependencies
Migrate build configuration to sbt-typelevel
The project's build configuration has been migrated to the sbt-typelevel plugin, which standardizes the build structure and simplifies the build.sbt file. This change updates the versions of key testing and utility libraries, including munit (1.0.0-M7), discipline-munit (2.0.0-M3), and algebra (2.9.0).
(dependencies) · high confidence
Migrated build configuration to sbt-typelevel and updated SBT to 1.9.8
The project's build configuration has been migrated to use the sbt-typelevel plugin, which standardizes the build structure and includes plugins for Scala Native, unidoc, JMH benchmarks, and Scala.js. The SBT version has been updated to 1.9.8.
project · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 37 → 61 (+24.0)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 85 (-14.7)
- Architecture 69 → 100 (+31.0)
- Maturity 34 → 50 (+16.4)
- Readiness 30 → 67 (+37.4)
- Security 34 → 65 (+31.7)
Resolved (36)
- Dimension evaluation failed
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- …and 16 more
New (184)
- Algebraic.roundPositive (cognitive 43) (core/src/main/scala/spire/math/Algebraic.scala)
- Algebraic.roundPositive (cyclomatic 23) (core/src/main/scala/spire/math/Algebraic.scala)
- BigDecimalRootRefinement.QIR (cognitive 23) (core/src/main/scala/spire/math/poly/BigDecimalRootRefinement.scala)
- BigDecimalRootRefinement.QIR (cognitive 39) (core/src/main/scala/spire/math/poly/BigDecimalRootRefinement.scala)
- BigDecimalRootRefinement.QIR (cyclomatic 18) (core/src/main/scala/spire/math/poly/BigDecimalRootRefinement.scala)
- BooleanBinaryOperator.op (cognitive 39) (extras/src/main/scala/spire/math/extras/interval/Tree.scala)
- BooleanBinaryOperator.op (cyclomatic 17) (extras/src/main/scala/spire/math/extras/interval/Tree.scala)
- Checked.checkedImpl (cognitive 78) (macros/src/main/scala-3/spire/macros/Checked.scala)
- Checked.checkedImpl (cyclomatic 42) (macros/src/main/scala-3/spire/macros/Checked.scala)
- Documentation: no installation or build instructions (README.md)
- Documentation: no project overview (README.md)
- Dormant codebase
- Duplicated block (10 lines × 2) (util/src/main/scala-2/spire/util/PackMacros.scala)
- Duplicated block (11 lines × 2) (core/src/main/scala/spire/math/Rational.scala)
- Duplicated block (11 lines × 2) (core/src/main/scala/spire/optional/partialIterable.scala)
- Duplicated block (12 lines × 2) (core/src/main/scala/spire/math/Searching.scala)
- Duplicated block (12–14 lines × 2) (core/src/main/scala/spire/random/rng/Utils.scala)
- Duplicated block (13 lines × 2) (core/src/main/scala/spire/math/Merging.scala)
- Duplicated block (17 lines × 2) (extras/src/main/scala/spire/math/extras/interval/IntervalSeq.scala)
- Duplicated block (22 lines × 2) (core/src/main/scala/spire/random/rng/Utils.scala)
- …and 164 more
Architecture
- Containers 0 added · 0 removed · contexts 1 added · 0 removed · edges 0 added · 0 removed
Added bounded contexts (1)
- repository
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
typelevel/spire was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 27 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 0fe5a6a9714181a20fc9cef4c8b2af088ff2b4c9 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-d00c643c3f66.