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):
| Bucket | Span |
|---|---|
onboarded | < 90 days |
experienced | 90 – 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§
- Team
Composition Row - Per-author team-composition row.
Functions§
- run_
team_ composition - Run the team-composition analysis.