Skip to main content

Module team_composition

Module team_composition 

Expand description

Team-composition analysis — contribution-span buckets with a behavioral veteran gate and onboarding-velocity metric.

§Tenure buckets

Authors are bucketed by their contribution span (date of last commit minus date of first commit):

BucketSpan
onboarded< 90 days
experienced90 – 364 days
veteran≥ 365 days

These boundaries are contiguous — common industry buckets (e.g. those discussed in the Brooks-law contributor-lifecycle literature: 0–3 months / 6–12 months / 12+ months) leave a 3–6 month gap where authors belong to no tier. Our definition closes that gap by making experienced start immediately at 90 days.

§Veteran breadth gate

A veteran author who has not touched a breadth of files comparable to other core contributors is capped at experienced. The gate checks whether the author’s distinct lineage-paths touched is ≥ the median across the current core set (smallest group reaching 80% of cumulative commits, computed once at anchor). If veteran_breadth_ok = false the bucket is silently capped; the field is always reported so callers can surface it.

§Onboarding velocity

onboarding_weeks is the number of weeks from an author’s first commit to the first week in which they enter the weekly 80%-core set. Authors whose first commit falls within the project’s first 12 weeks (the founder period, per arXiv 2601.23142) receive NULL — their “onboarding” is definitionally the project itself. Authors who never reach the core set also receive NULL.

§Summary row

A synthetic row with author = "__summary__" carries bucket-percentage columns (onboarded_pct, experienced_pct, veteran_pct packed into the bucket field as a JSON-like string) for downstream factor-tile and SPA consumption. The author field is "__summary__" so callers can filter it out; the bucket field contains the percentage string.

Structs§

TeamCompositionRow
Per-author team-composition row.

Functions§

run_team_composition
Run the team-composition analysis.