Skip to content

Commit 0c53015

Browse files
authored
Merge pull request #1 from SnowOak-Ventures/feature/foundation-progressions
Add Foundation Milestones and Movement Progressions for pre-Beginner …
2 parents 9529650 + 8a45fbd commit 0c53015

7 files changed

Lines changed: 1320 additions & 27 deletions

File tree

README.md

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,30 +20,30 @@
2020

2121
## What is OpenProgression?
2222

23-
OpenProgression (OP) is a **free, open standard** for classifying athletic ability across functional fitness. It provides a common language for coaches, athletes, and software to describe fitness levels from first-day beginner to elite competitor.
23+
OpenProgression (OP) is a **free, open standard** for classifying athletic ability across functional fitness. It provides a common language for coaches, athletes, and software to describe fitness levels -- from first-day beginner to elite competitor.
2424

2525
<table>
2626
<tr>
2727
<td>
2828

29-
**Open** Free to use, implement, and contribute to
29+
**Open** -- Free to use, implement, and contribute to
3030

3131
</td>
3232
<td>
3333

34-
**Research-backed** Every benchmark traces to peer-reviewed studies or public-domain data
34+
**Research-backed** -- Every benchmark traces to peer-reviewed studies or public-domain data
3535

3636
</td>
3737
</tr>
3838
<tr>
3939
<td>
4040

41-
**Gym-agnostic** Works for any functional fitness facility, not tied to any brand
41+
**Gym-agnostic** -- Works for any functional fitness facility, not tied to any brand
4242

4343
</td>
4444
<td>
4545

46-
**Community-driven** Standards improve through open contribution
46+
**Community-driven** -- Standards improve through open contribution
4747

4848
</td>
4949
</tr>
@@ -67,6 +67,18 @@ OpenProgression (OP) is a **free, open standard** for classifying athletic abili
6767

6868
> Levels are determined by the **weakest-link principle**: your overall level equals your lowest category level. This encourages well-rounded fitness rather than specialization.
6969
70+
### Foundation Milestones
71+
72+
For athletes below the Beginner benchmarks, **Foundation Milestones** provide early progress markers:
73+
74+
| Milestone | Name | Description |
75+
|:---------:|------|-------------|
76+
| F1 | **Foundation** | Chair sit-to-stand, wall push-up, farmer's carry, walking -- no gym needed |
77+
| F2 | **Moving** | Air squats, incline push-ups, band rows, plank holds |
78+
| F3 | **Ready** | Full push-up, dead hang or farmer's carry, running a mile |
79+
80+
Foundation Milestones are not levels -- they are optional pre-level markers for applications that serve untrained or deconditioned populations. F1 requires only a chair and household items. Full spec: [`spec/progressions.md`](spec/progressions.md)
81+
7082
## [The 8 Categories](https://openprogression.org/categories)
7183

7284
| Category | Key Movements |
@@ -97,9 +109,9 @@ An 80kg male who can:
97109
| Push-ups | 40 reps | Intermediate+ |
98110
| Fran | 4:30 | Intermediate+ |
99111

100-
**Overall level: Intermediate+** all categories at INT+ or above.
112+
**Overall level: Intermediate+** -- all categories at INT+ or above.
101113

102-
But if their pull-ups were only 4 (Intermediate), their overall level drops to **Intermediate** the weakest link determines the chain.
114+
But if their pull-ups were only 4 (Intermediate), their overall level drops to **Intermediate** -- the weakest link determines the chain.
103115

104116
## Repository Structure
105117

@@ -108,11 +120,14 @@ openprogression/
108120
├── spec/ # The standard (human-readable)
109121
│ ├── levels.md
110122
│ ├── categories.md
111-
│ └── methodology.md
123+
│ ├── methodology.md
124+
│ └── progressions.md
112125
├── data/ # Machine-readable benchmark data
113126
│ ├── levels.json
114127
│ ├── categories.json
115128
│ ├── sources.json
129+
│ ├── progressions.json
130+
│ ├── milestones.json
116131
│ └── benchmarks/
117132
│ ├── squatting.json
118133
│ ├── pulling.json
@@ -187,24 +202,25 @@ Build OP into your gym management software, workout tracking app, or coaching pl
187202
- Clear schema with TypeScript-friendly structure
188203
- Gender-differentiated standards across [25 benchmarks](https://openprogression.org/benchmarks)
189204
- Source citations for every benchmark
190-
- [MIT licensed](https://openprogression.org/license) use it however you want
205+
- [MIT licensed](https://openprogression.org/license) -- use it however you want
191206

192207
## Contributing
193208

194209
We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide.
195210

196-
- **Review benchmarks** Are the numbers accurate for your experience?
197-
- **Add movements** Help expand the movement library
198-
- **Improve methodology** Suggest better research sources
199-
- **Build integrations** Create packages for your language/framework
211+
- **Review benchmarks** -- Are the numbers accurate for your experience?
212+
- **Add movements** -- Help expand the movement library
213+
- **Improve methodology** -- Suggest better research sources
214+
- **Build integrations** -- Create packages for your language/framework
200215

201216
## Roadmap
202217

203-
- [x] **[Level Calculator](https://openprogression.org/calculator)** — Instant level assessment across all 8 categories
204-
- [x] **[Scaled Programming](https://openprogression.org/programming)** — WOD library and daily sessions with 7-level scaling
205-
- [ ] **Age-adjusted benchmarks** — Current standards target ~18-40 year-olds. Future versions may include age brackets.
206-
- [ ] **Expanded bodyweight scaling** — Enhanced BW-relative benchmarks beyond the current reference weights.
207-
- [ ] **Additional movements** — Expanding the movement library within existing categories.
218+
- [x] **[Level Calculator](https://openprogression.org/calculator)** -- Instant level assessment across all 8 categories
219+
- [x] **[Scaled Programming](https://openprogression.org/programming)** -- WOD library and daily sessions with 7-level scaling
220+
- [x] **[Movement Progressions & Foundation Milestones](spec/progressions.md)** -- Regression chains and pre-Beginner progress markers for untrained populations
221+
- [ ] **Age-adjusted benchmarks** -- Current standards target ~18-40 year-olds. Future versions may include age brackets.
222+
- [ ] **Expanded bodyweight scaling** -- Enhanced BW-relative benchmarks beyond the current reference weights.
223+
- [ ] **Additional movements** -- Expanding the movement library within existing categories.
208224

209225
## License
210226

@@ -214,7 +230,7 @@ MIT License. See [LICENSE](LICENSE).
214230

215231
"OpenProgression", the OpenProgression logo, and the 7-level progression gradient mark are trademarks of the OpenProgression project. The trademarks are **not** licensed under the MIT license.
216232

217-
- **The standard, data, and code are fully open** use them freely in any project, commercial or not
233+
- **The standard, data, and code are fully open** -- use them freely in any project, commercial or not
218234
- **The name and logo require permission** for use on merchandise, commercial products, or anything that implies official endorsement
219235

220236
This is the same approach used by most major open source projects: the *work* is open, the *brand* is protected.

data/milestones.json

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
{
2+
"version": "1.1.0",
3+
"description": "Foundation Milestones are trackable micro-achievements within the Beginner level. They provide progress feedback for athletes who are below the OP Beginner benchmarks. Milestones are NOT levels -- they are pre-level markers that apps can use to show early progress. Estimated timelines assume a healthy but sedentary adult training 3x/week. For deconditioned, frail, or post-injury individuals, timelines may be 2-3x longer (ICFSR consensus: 3-5 months for meaningful functional improvement).",
4+
"milestones": [
5+
{
6+
"id": "F1",
7+
"name": "Foundation",
8+
"shortName": "F1",
9+
"color": "#86EFAC",
10+
"description": "Can perform basic human movements safely. Ready to start a bodyweight exercise program.",
11+
"estimatedWeeks": "1-2",
12+
"requirements": [
13+
{
14+
"movement": "chair_sit_to_stand",
15+
"name": "Chair Sit-to-Stand",
16+
"category": "squatting",
17+
"criteria": { "type": "reps", "target": 10 },
18+
"description": "Stand up from a standard-height chair 10 times without using hands"
19+
},
20+
{
21+
"movement": "wall_push_up",
22+
"name": "Wall Push-up",
23+
"category": "pressing",
24+
"criteria": { "type": "reps", "target": 10 },
25+
"description": "10 push-ups against a wall with full range of motion"
26+
},
27+
{
28+
"movement": "glute_bridge",
29+
"name": "Glute Bridge",
30+
"category": "pulling",
31+
"criteria": { "type": "reps", "target": 10 },
32+
"description": "10 glute bridges with full hip extension"
33+
},
34+
{
35+
"movement": "farmers_carry_30s",
36+
"name": "Farmer's Carry",
37+
"category": "gymnastics",
38+
"criteria": { "type": "time", "target": 30, "unit": "seconds" },
39+
"description": "Carry two heavy bags or water bottles (approx. 5kg each) while walking for 30 seconds"
40+
},
41+
{
42+
"movement": "walk_1km",
43+
"name": "Walk 1km",
44+
"category": "monostructural",
45+
"criteria": { "type": "completion" },
46+
"description": "Walk 1 kilometer without stopping"
47+
}
48+
],
49+
"sources": ["rikli_jones_2013", "jones_rikli_1999", "nsca_essentials_2016", "bohannon_2019", "who_physical_activity_2020", "chodzko_zajko_2009"]
50+
},
51+
{
52+
"id": "F2",
53+
"name": "Moving",
54+
"shortName": "F2",
55+
"color": "#4ADE80",
56+
"description": "Can perform bodyweight exercises with good form. Building functional capacity for daily activities and exercise.",
57+
"estimatedWeeks": "2-4",
58+
"requirements": [
59+
{
60+
"movement": "air_squat_partial",
61+
"name": "Air Squat (Partial Depth)",
62+
"category": "squatting",
63+
"criteria": { "type": "reps", "target": 20 },
64+
"description": "20 bodyweight squats to approximately parallel"
65+
},
66+
{
67+
"movement": "incline_push_up",
68+
"name": "Incline Push-up",
69+
"category": "pressing",
70+
"criteria": { "type": "reps", "target": 10 },
71+
"description": "10 push-ups with hands on a bench-height surface"
72+
},
73+
{
74+
"movement": "hip_hinge_pvc",
75+
"name": "Hip Hinge (Broomstick)",
76+
"category": "pulling",
77+
"criteria": { "type": "reps", "target": 10 },
78+
"description": "10 hip hinges with broomstick along spine maintaining 3 points of contact"
79+
},
80+
{
81+
"movement": "plank_30s",
82+
"name": "Plank Hold",
83+
"category": "bodyweight",
84+
"criteria": { "type": "time", "target": 30, "unit": "seconds" },
85+
"description": "Hold a forearm plank for 30 seconds with neutral spine"
86+
},
87+
{
88+
"movement": "walk_run_intervals",
89+
"name": "Walk/Run 800m",
90+
"category": "monostructural",
91+
"criteria": { "type": "completion", "details": "800m of walk/run combination" },
92+
"description": "Complete 800 meters of walking and running in any combination"
93+
}
94+
],
95+
"sources": ["nsca_essentials_2016", "mcgill_2015", "strand_2014", "acsm_guidelines", "fragala_2019"]
96+
},
97+
{
98+
"id": "F3",
99+
"name": "Ready",
100+
"shortName": "F3",
101+
"color": "#22C55E",
102+
"description": "Movement quality and base fitness sufficient for structured training with equipment. Ready for gym onboarding and barbell introduction.",
103+
"estimatedWeeks": "4-8",
104+
"requirements": [
105+
{
106+
"movement": "air_squat",
107+
"name": "Air Squat (Full Depth)",
108+
"category": "squatting",
109+
"criteria": { "type": "reps", "target": 20 },
110+
"description": "20 bodyweight squats below parallel with good form"
111+
},
112+
{
113+
"movement": "push_up_single",
114+
"name": "Full Push-up",
115+
"category": "pressing",
116+
"criteria": { "type": "reps", "target": 1 },
117+
"description": "1 full push-up with chest to floor and full lockout"
118+
},
119+
{
120+
"movement": "rdl_bodyweight",
121+
"name": "Romanian Deadlift (Bodyweight)",
122+
"category": "pulling",
123+
"criteria": { "type": "reps", "target": 10 },
124+
"description": "10 bodyweight Romanian deadlifts with neutral spine"
125+
},
126+
{
127+
"movement": "dead_hang_or_carry",
128+
"name": "Dead Hang OR Farmer's Carry",
129+
"category": "gymnastics",
130+
"criteria": { "type": "either", "options": [
131+
{ "movement": "dead_hang_30s", "type": "time", "target": 30, "unit": "seconds" },
132+
{ "movement": "farmers_carry_60s", "type": "time", "target": 60, "unit": "seconds" }
133+
]},
134+
"description": "Hang from a bar for 30 seconds, OR carry two heavy bags (approx. 8kg each) for 60 seconds"
135+
},
136+
{
137+
"movement": "run_mile_any_pace",
138+
"name": "Run 1 Mile",
139+
"category": "monostructural",
140+
"criteria": { "type": "completion" },
141+
"description": "Run 1 mile (1609m) without walking breaks, at any pace"
142+
},
143+
{
144+
"movement": "plank_60s",
145+
"name": "Plank Hold (60 Seconds)",
146+
"category": "bodyweight",
147+
"criteria": { "type": "time", "target": 60, "unit": "seconds" },
148+
"description": "Hold a forearm plank for 60 seconds with neutral spine"
149+
}
150+
],
151+
"sources": ["nsca_essentials_2016", "mcgill_2015", "strand_2014", "acsm_guidelines", "bohannon_2019", "runninglevel", "fragala_2019"]
152+
}
153+
]
154+
}

0 commit comments

Comments
 (0)