Evidaxis

Methodology · m3 · effective 2026-09-19

How Evidaxis measures momentum

Three axes. One gate: any two converge. Methodology m3 adds direct-dependents momentum to development velocity and citation momentum. The gate is unchanged in form: at least two axes must be present and rising. No threshold changed from m2.

Axis 1: Development velocity

The OLS slope of log(1 + weekly commits) over the trailing 26 weeks, from GitHub. Within each cohort, robust z (median, 1.4826 × MAD, clamp ±3) is computed first, then adjusted for log(1 + stars). A rising vote requires a positive slope, z ≥ 1, and at least 5 average weekly commits. These values are unchanged from m2.

Axis 2: Citation momentum

The OLS slope of log(1 + citations per year) from OpenAlex. Drop the partial current year and, when four or more completed years exist, the earliest birth year. At least three completed years are required. Within-cohort robust z is adjusted for log(1 + total citations). A rising vote requires slope > 0 and z ≥ 1. These values are unchanged from m2.

Axis 3: Direct-dependents momentum (deps.dev)

Unique direct dependents over the union of each system's linkage-verified packages, from deps.dev BigQuery Dependents weekly partitions. Intra-panel self-dependents are excluded. The estimator is the OLS slope of log(1 + dependents) over confirmed-clean weekly points. The slope is residualized on log(1 + latest), then converted to robust z within cohort (median, 1.4826 × MAD, clamp ±3).

A vote needs at least 14 confirmed-clean points and at least 5 latest dependents. Rising needs slope > 0 and z ≥ 1. A one-way fragility veto withholds a rising vote if leaving out a point flips the slope sign or Theil-Sen disagrees in sign. A cohort whose slope-sign versus endpoint agreement falls below 0.80, with at least three voting systems, is held.

The estimator reuses the frozen v2h.1 evaluator: points are ordered by partition and fitted at equally spaced point indices. Its robust normalization uses the upper-middle median and MAD; zero MAD gives z = 0.

The convergence gate

Rising ⟺ not incumbent ∧ cohort_n ≥ 5 ∧ |axes_present| ≥ 2 ∧ |axes_rising| ≥ 2
axis rising ⟺ slope > 0 ∧ z ≥ 1, plus the axis's floors and veto

Only a scored third axis counts toward axes present. The coverage states are scored, below_floor, held, stale, and out_of_panel. Unavailable scores carry null values; known latest counts and point counts remain visible. Incumbents anchor their cohorts and are never eligible for a Rising badge.

Momentum, percentile and confidence

momentum = clamp(50 + 12.5 × mean(z_present), 0, 100)

Momentum is rounded to one decimal place. Percentile uses ascending momentum within the cohort, retaining input order for ties. Confidence is high for Rising with at least two present axes, medium for other records with at least two present axes, and low otherwise. The existing status rules carry forward: incumbent, Rising, exactly one rising axis, at least two present axes, then remaining coverage.

Timing

Axis 3 uses the newest confirmed-clean weekly partition, which trails the snapshot by about two to three weeks. Each record states its as-of partition. An axis older than 28 days is not scored. Partition dates cannot exceed the snapshot date, observation capture times cannot exceed the snapshot's capture time, and the confirming sanity artifact must already be committed at that capture time. Provisional partitions are never scored.

Coverage and estimand

This axis measures the frozen-panel trajectory of the package set selected and linkage-verified as of 2026-07-21. Systems outside that panel are not measured on this axis. Residual survivorship beyond the frozen universe is disclosed, not denied.

History origin

The earliest weekly points of each series were read from deps.dev's BigQuery history on 2026-07-21; later points are weekly captures. Each record reports how many of its points are reconstructed history.

Known limits

  • Axis 3 standardizes after size adjustment while axes 1 and 2 adjust after standardizing. This difference is to be revisited in a future version.
  • Dependents can be inflated by packages published outside the panel.
  • Package-level counts are not published.
  • Momentum averages the axes present, so systems with two and three axes are not strictly comparable.

Independence monitor

Each m3 snapshot publishes diagnostics.axis_correlations: pooled within-cohort Pearson correlations for all three axis pairs, their pair counts, and per-cohort correlations where at least five pairs exist. Undefined correlations are null. The pre-registered bound is |r| < 0.5. The snapshot diagnostics index links to this field in each published m3 snapshot.

Derived signals

These separate reads use the existing commit series and remain unchanged from m2. A value is published only when its source history is sufficient.

  • Recency swing compares recent and prior commit slopes.
  • Signal-to-noise compares mean weekly commits with residual volatility.
  • Changepoint identifies a slope break when history is sufficient.
  • Citation lag remains reserved until paired history is sufficient.
  • Alpha remains reserved for residual momentum against cohort peers.
  • Gate ETA remains reserved for a supported time-to-convergence estimate.

Attribution

Source: deps.dev (Google), CC-BY 4.0. Modified: aggregated to system-level counts and momentum scores.

Records and reproducibility

The canonical specification is methodology/m3.json; its canonical JSON SHA256 is pinned in the version registry. Published snapshots keep their own methodology version and scores.

This is the m3 permalink. It supersedes m2 for new snapshots from 2026-09-19. Methodology prose is licensed CC-BY-4.0.