# Men’s Division II and ACHA teams and rosters

Added September 22, 2026. The Teams, Players, Standings, Leagues and Stats leaders views now recognize separate men’s NCAA D2 and ACHA M1/M2/M3 identities. Select the competition level in the page filters. Club teams can also be filtered by ACHA division, league and school. Open a team to see its roster, player details and published seasons. Favorites retain distinct squad IDs.

## Imported coverage

| Competition | Season | Teams | Published rosters | Player entries |
|---|---|---:|---:|---:|
| NCAA D2 men | 2026–27 | 7 | 4 | 119 |
| NCAA D2 men | 2025–26 | 6 | 6 | 179 |
| ACHA men M1/M2/M3 | 2026–27 | 436 | 219 | 5,699 |
| ACHA men M1/M2/M3 | 2025–26 | 424 | 421 | 11,359 |

These are player-team-season entries, not deduplicated people across years. The catalog has 454 distinct team IDs across both seasons. The current club directory has 81 M1, 195 M2 and 160 M3 squads. A school’s NCAA team and each club squad remain separate. AAU and ACDC are outside this ACHA scope.

Current D2 rosters: Assumption (33), Post (32), Saint Anselm (27), Southern New Hampshire (27). American International, Franklin Pierce and Saint Michael’s do not yet have a verified 2026–27 roster in the retrieved official pages. Their current pages honestly show unavailable; no past roster is copied into the current season. American International is included for 2026–27 only in this D2 collection. Earlier NCAA history remains in the preexisting archive.

## Sources and validation

- NE10 membership and 2025–26 overall records: https://northeast10.org/standings.aspx?path=mhockey
- Official school athletics roster pages: aicyellowjackets.com, assumptiongreyhounds.com, posteagles.com, snhupenmen.com, saintanselmhawks.com, smcathletics.com, fpuravens.com. Each player retains its precise school/season source URL.
- AIC return: https://easternhockeyleague.org/2026/01/johnny-blase-commits-to-american-international-college/ and the 2026–27 Saint Michael’s schedule. A commitment announcement is not treated as a published roster.
- ACHA public directories: https://www.achahockey.org/m1-rosters, /m2-rosters, /m3-rosters and https://www.achahockey.org/stats/standings. Their public HockeyTech Statview viewer provides the season/team/roster/stat reports used here. The viewer key is public website configuration, not a private login token.

School roster title, gender and season are validated. ACHA roster team name and season must match the requested provider team ID. Repeated provider player IDs are deduplicated within a roster; blank names are excluded, while blank jersey numbers or positions do not exclude named players. Stats join only by provider team ID plus player ID within a season. Published zeros are retained, missing fields remain blank, and goalie rate placeholders with zero appearances are omitted. G+A must equal published points. Team records preserve provider overtime/shootout categories and are not presented as a national ranking. D2 roster files do not contain player statistics; they are not invented.

## Files and maintenance

- scripts/import-lower-hockey.mjs fetches and compiles source reports.
- scripts/lower-hockey-parser.mjs validates and normalizes records.
- lower-hockey-data.js and lower-hockey/catalog.json carry team identities and coverage.
- lower-hockey/{group}-{endingYear}.json are lazy-loaded roster/stat bundles.
- lower-hockey.js and lower-hockey.css implement the views.
- tests/lower-hockey.mjs checks data, validation, missing fields, duplicate handling and UI filters.

Refresh from the project root with `pnpm run data:lower-hockey -- --refresh`, then run the project checks, build and deploy. Plain `node scripts/import-lower-hockey.mjs` reuses local cached responses. Caches live in work/lower-hockey/cache and are optional; they are not included in the research ZIP. The portable source includes all compiled data and the importer. A cached rebuild retains the oldest source retrieval timestamp rather than claiming a fresh download. The importer is deliberately pinned to ending years 2027/2026 and requires review at season rollover; the NE10 archive assertion prevents silently relabeling a newer table.

These are dated snapshots, not an automated roster refresh or a new live scoreboard. No production database schema or scheduler changed. Lower-level scores/schedules, draft histories, complete historical championships/awards/uniforms and women’s club rosters remain outside this addition. External source URLs remain data/documentation credits; new app navigation links stay internal under the owner’s UI policy.
