Skip to content

Commit f0c5ef1

Browse files
feat(standards): add ARG + FRG language-maturation framework (#232)
## Summary Lands the ARG/FRG (Adoption-Readiness Grades + Foundations-Readiness Grades) language-maturation framework as a new top-level spec pair under `standards/`. Companion to the existing CRG/TRG framework family. This is a rebased version of the original `arg-frg-framework-landing` branch from a parallel session, brought current with main (which now carries the V-lang→Zig migration completion in `LANGUAGE-POLICY.adoc` and `CARTRIDGE-FORMAT.adoc` — those edits are preserved by this rebase, not reverted). ### What lands (11 new files, +3315 lines) ``` adoption-readiness-grades/ ├── ADOPTION-READINESS-GRADES.a2ml # machine-readable spec ├── ADOPTION-READINESS-GRADES.adoc # human spec ├── README.adoc # entry doc ├── SELF-ASSESSMENT.adoc # how to assess your own language ├── AUDIT-FINDINGS-2026-05-28.adoc # Phase 6 audit (X-A grades for 17 languages) └── templates/ └── ARG-PROFILE-TEMPLATE.adoc # per-language template foundations-readiness-grades/ ├── FOUNDATIONS-READINESS-GRADES.a2ml ├── FOUNDATIONS-READINESS-GRADES.adoc ├── README.adoc ├── SELF-ASSESSMENT.adoc └── templates/ └── FRG-PROFILE-TEMPLATE.adoc ``` ### Cross-axis invariants (codified in the framework) - `ARG ≤ TRG` always — a language can't be more adoptable than its toolchain is ready - `ARG-A` requires `FRG ≥ B` — top-tier adoption needs foundational rigour ### Relationship to the dashboard `nextgen-languages` PR #58 (already merged) added the Language Grades Matrix and a regex-based grade extractor in `language-status-tracker.jl` that reads per-language `spec/{ARG,FRG,TRG}-PROFILE.adoc` files following the templates landed here. ## Test plan - [ ] `adoption-readiness-grades/README.adoc` renders - [ ] `foundations-readiness-grades/README.adoc` renders - [ ] Templates copy-pasteable into a language repo's `spec/` dir - [ ] No regression on the V-lang→Zig migration text in `LANGUAGE-POLICY.adoc` (rebase preserved standards#227) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent f716368 commit f0c5ef1

11 files changed

Lines changed: 3315 additions & 0 deletions
Lines changed: 339 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,339 @@
1+
; SPDX-License-Identifier: PMPL-1.0-or-later
2+
; Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3+
4+
; Adoption Readiness Grades (ARG) — Machine-readable specification
5+
; Format: A2ML (AI-to-Machine Language)
6+
; Standard: ARG v1.0
7+
; Companion to: ADOPTION-READINESS-GRADES.adoc (the normative spec)
8+
9+
(standard
10+
(name "Adoption Readiness Grades")
11+
(abbreviation "ARG")
12+
(version "1.0")
13+
(date "2026-05-28")
14+
(author "Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>")
15+
(license "PMPL-1.0-or-later")
16+
(license-fallback "MPL-2.0")
17+
(family "RSR")
18+
(companion-of "Toolchain Readiness Grades v1.0" "Component Readiness Grades v2.2")
19+
(relationship "language-whole-sibling-tier")
20+
(tier "language-adoption")
21+
(sibling-tiers
22+
(component "CRG")
23+
(toolchain "TRG")
24+
(language-adoption "ARG")
25+
(foundations "FRG")))
26+
27+
(grades
28+
(grade
29+
(code X)
30+
(name "Untested / Not yet a language")
31+
(release-stage #f)
32+
(stability-posture #f)
33+
(ordinal 0)
34+
(description "No release artefact exists, or no Discovery surface item from §3.1 is present.")
35+
(evidence-required "none")
36+
(minimum-for #f))
37+
(grade
38+
(code F)
39+
(name "Harmful / Wasteful")
40+
(release-stage #f)
41+
(stability-posture #f)
42+
(ordinal 1)
43+
(description "Released but actively user-harmful: misleading docs, silently incorrect semantics, regressive ergonomics, or abandonment-while-promoted.")
44+
(evidence-required "documented harm or misrepresentation; explicit demotion record in READINESS.md; halt/rename/merge recommendation")
45+
(minimum-for #f))
46+
(grade
47+
(code E)
48+
(name "Bare Minimum")
49+
(release-stage "pre-alpha")
50+
(stability-posture "internal-only")
51+
(ordinal 2)
52+
(description "Undeniable internal minimum: language qualifies, runs own stdlib, no external users required. Nobody outside the maintainer would use it.")
53+
(evidence-required "TRG >= E for F1-F4 + F6 + F7 + B1 + B2 + B6 + T8; D1 (landing page) and D2 (elevator pitch) present; repo RSR-compliant for TRG-E")
54+
(minimum-for "internal experiment"))
55+
(grade
56+
(code D)
57+
(name "Toy-Project Usable")
58+
(release-stage "pre-alpha+")
59+
(stability-posture "toy-project-usable")
60+
(ordinal 3)
61+
(description "Toy-project usable. A motivated person could build a weekend project without papercut-after-papercut.")
62+
(evidence-required "all E + TRG >= D estate-wide + O1 (5-min hello-world) + O2 (tutorial) + O4 (>=3 cookbook examples >=100 LoC) + R1 (reference manual, even if incomplete) + R3 (formal grammar) + Δ1 (signed reproducible release) + >=3 external programs >=100 LoC each parse+typecheck+run + diversity-metrics: external authors >= 2 distinct individuals beyond maintainer")
63+
(minimum-for #f))
64+
(grade
65+
(code C)
66+
(name "Self-Validated (alpha gate)")
67+
(release-stage "alpha")
68+
(stability-posture "stable-in-home-context")
69+
(ordinal 4)
70+
(description "Self-validated alpha. Non-trivially usable in home context. Dogfood cohort uses it for real work in >=2 substantive domains.")
71+
(evidence-required "all D + TRG >= C estate-wide + CRG >= C for every adoption-surface §3 component + O3 (playground) + R2 (stdlib reference) + R4 (operational/denotational semantics) + R5 (stable error-code index) + C1+C2+C3 + C5 (RFC/ADR used >=3 times) + Δ2 (registry/install path) + Δ3 (versioning policy) + E1 (slide deck) + >=10 dogfood users meeting diversity-metrics + >=2 substantive domains covered by >=3 cookbook examples each + VeriSimDB instance ingesting per-commit ARG-PROFILE attestations + continuous fuzzing >=14 days per TRG FUZZING-CORPUS-FLOOR.adoc")
72+
(minimum-for "alpha"))
73+
(grade
74+
(code B)
75+
(name "Broadly Adopted (beta gate)")
76+
(release-stage "beta")
77+
(stability-posture "broadly-trial-stable")
78+
(ordinal 5)
79+
(description "Broadly adopted beta. Language has escaped its home repo. External people in unrelated organisations and contexts write real programs in it.")
80+
(evidence-required "all C + TRG >= B estate-wide + CRG >= B per §3 component + >=100 distinct external users meeting diversity-metrics + >=6 diverse external projects use the language (TRG diversity-metrics verified) + X1 >=12 third-party libraries + X2 >=3 third-party tools (not founder-written) + X3 ecosystem-plugged (language-specific per profile) + X4 >=2 maintainers beyond founder with >=6 months sustained contribution + Δ4 deprecation policy active + >=1 deprecation cycle completed + Δ5 SECURITY.md with response demonstrated + E2 training materials used externally + continuous fuzzing >=30 days incl structure-aware + external single-party audit + SBOM + Hypatia zero Critical/High + branch protection")
81+
(minimum-for "beta"))
82+
(grade
83+
(code A)
84+
(name "School-Grade Real")
85+
(release-stage "stable")
86+
(stability-posture "stable")
87+
(ordinal 6)
88+
(description "School-grade real — first-gen-Python equivalent. A school could adopt it next term. Founder no longer a single point of failure. ARG-A is the cap; past A is a cultural phenomenon, not a language property.")
89+
(evidence-required "all B + TRG = A estate-wide + FRG >= B + >=1000 distinct external users meeting diversity-metrics + >=1 educational institution taught the language as a multi-week unit with external educator (E3 + E4) + X1 >= 50 libraries + X2 >= 8 tools + X4 >= 5 independent maintainers + founder bus-factor test signed (could step away 6 months) + 5-nines on standing priority axes + continuous fuzzing 90 days incl differential against reference impl + type-theory/PL-research upstream contribution in last 12 months + full hyperpolymath standards conformance per TRG §5.7.5 + unanimous 6+6 humans+LLMs signoff per TRG A-GRADE-LLM-PANEL.adoc")
90+
(minimum-for "stable release")))
91+
92+
(release-stage-mapping
93+
(X "pre-alpha")
94+
(F "rejected")
95+
(E "pre-alpha (internal only)")
96+
(D "pre-alpha+ (toy-project usable)")
97+
(C "alpha")
98+
(B "beta")
99+
(A "stable / release"))
100+
101+
(required-adoption-surfaces
102+
(discovery
103+
(D1 "Landing page or canonical README")
104+
(D2 "One-paragraph elevator pitch for non-specialist")
105+
(D3 "Provenance: maintainers, start date, current version"))
106+
(onboarding
107+
(O1 "Hello-world runnable from clean install in <= 5 minutes")
108+
(O2 "Tutorial covering distinctive features")
109+
(O3 "Playground (browser-runnable or single-command-local)")
110+
(O4 "Cookbook of worked examples in >= 2 substantive domains"))
111+
(reference
112+
(R1 "Reference manual (operational specification)")
113+
(R2 "Standard library reference (one entry per public symbol)")
114+
(R3 "Formal grammar (EBNF or equivalent)")
115+
(R4 "Operational or denotational semantics (also TRG M5)")
116+
(R5 "Stable error-code index (also TRG diagnostics M)"))
117+
(community
118+
(C1 "Issue tracker with response-time policy")
119+
(C2 "Contribution guide (CONTRIBUTING.md)")
120+
(C3 "Code of conduct (CoC)")
121+
(C4 "Public discussion venue (forum / Discord / Zulip / list)")
122+
(C5 "RFC / ADR process documented and used"))
123+
(distribution
124+
(D1-dist "Stable release artefacts (tagged, signed, reproducible)")
125+
(D2-dist "Package registry presence or canonical install path")
126+
(D3-dist "Versioning policy (Semver or Edition)")
127+
(D4-dist "Deprecation policy and visible deprecation log")
128+
(D5-dist "Security disclosure policy"))
129+
(education
130+
(E1 "Slide deck / 1-hour external talk-script")
131+
(E2 "Training materials for 1-day workshop")
132+
(E3 "Curriculum for school-term unit (multi-week)")
133+
(E4 "External educator(s) who have used the materials"))
134+
(ecosystem
135+
(X1 "Third-party library count")
136+
(X2 "Third-party tool count")
137+
(X3 "Integration count (domain-specific, per profile)")
138+
(X4 "Independent maintainer count beyond founder")))
139+
140+
(banned-constructs
141+
; Inherited verbatim from TRG.
142+
(inherited-from "TRG")
143+
(constructs
144+
"believe_me"
145+
"assert_total"
146+
"Admitted"
147+
"sorry"
148+
"postulate"
149+
"unsafeCoerce"
150+
"Obj.magic"
151+
"Obj.repr"
152+
"unsafePerformIO"
153+
"getUnsafe"
154+
"getExn"
155+
"raw transmute"
156+
"raw reinterpret_cast"
157+
"void * casts that defeat the type system"
158+
"@unchecked"
159+
"@SuppressWarnings on safety lints"))
160+
161+
(standing-priority-order
162+
; Inherited verbatim from TRG.
163+
(inherited-from "TRG")
164+
(axes
165+
(1 "dependability")
166+
(2 "security")
167+
(3 "interop")
168+
(4 "usability")
169+
(5 "performance")
170+
(6 "versatility")
171+
(7 "functional-extension")))
172+
173+
(grade-aggregation
174+
(rule "worst-of-any-required-adoption-surface")
175+
(no-averaging #t)
176+
(no-weighting #t)
177+
(cross-axis-rule "ARG <= TRG always")
178+
(justification "A language with discovery+onboarding+reference all at B but community at D is ARG-D, not 'ARG-B-with-community-gap'. Honest grade tells maintainer where to focus."))
179+
180+
(diversity-metrics
181+
(inherited-from "TRG")
182+
(technical-diversity
183+
(language-family-count >=3)
184+
(runtime-environment-count >=4)
185+
(architecture-count >=2)
186+
(os-family-count >=3))
187+
(organizational-diversity
188+
(independent-org-count >=4)
189+
(geographic-region-count >=3)
190+
(industry-sector-count >=3))
191+
(user-diversity
192+
(role-count >=5)
193+
(expertise-level-count >=3)
194+
(use-case-count >=4))
195+
(downstream-target-diversity
196+
(language-family-count >=3)
197+
(runtime-environment-count >=4)
198+
(architecture-count >=2)
199+
(os-family-count >=3)
200+
(independent-org-count >=4)
201+
(geographic-region-count >=3)
202+
(industry-sector-count >=3)))
203+
204+
(qualifying-provers
205+
(inherited-from "TRG")
206+
(v1
207+
"Idris2"
208+
"Lean 4"
209+
"Rocq"
210+
"Agda")
211+
(re-baseline "annual"))
212+
213+
(a-grade-llm-panel
214+
(inherited-from "TRG")
215+
(composition
216+
(reasoning-models 2)
217+
(specialist-coding-models 2)
218+
(instruct-models 1)
219+
(mixture-of-experts-models 1))
220+
(vendor-distinctness #t)
221+
(unanimous-required #t)
222+
(re-baseline "quarterly"))
223+
224+
(verisim-integration
225+
(description "ARG-PROFILE.adoc content is DECLARE'd to VeriSimDB on each commit. Drift between claimed grade and underlying evidence is detected by VeriSimDB's cross-modal drift monitor and surfaces as grade-stale alert.")
226+
(required-from-grade C)
227+
(attestation-language "VCL-total")
228+
(proof-types-used
229+
"EXISTENCE"
230+
"INTEGRITY"
231+
"PROVENANCE"
232+
"FRESHNESS"))
233+
234+
(demotion
235+
(immediate #t)
236+
(no-grace-period #t)
237+
(triggers
238+
"founder bus-factor test reverts"
239+
"educator withdraws (E4 lost)"
240+
"distinct-user count drops below threshold for >30 days"
241+
"FRG regresses below B at A-grade"
242+
"TRG drops (ARG <= TRG enforced immediately)"
243+
"6+6 signoff rescinded"
244+
"host repo ceases to satisfy any §5.7.5 standard at language's current grade"
245+
"RFC/ADR process abandoned (C+ requirement)"
246+
"VeriSimDB attestation stale for >30 days (C+ requirement)"))
247+
248+
(per-language-extension
249+
(mechanism "spec/ARG-PROFILE.adoc in language repo")
250+
(template "templates/ARG-PROFILE-TEMPLATE.adoc")
251+
(rule "may tighten, may not loosen")
252+
(examples
253+
"AffineScript: Grade B requires playground with affine-borrow-check feedback"
254+
"Ephapax: Grade C requires external tutorial in dyadic-modality discipline by non-maintainer"
255+
"VCL-total: Grade C requires registered Verisim instance addressable from public example"
256+
"KRL: Grade C requires examples covering all four operation families (Construct/Transform/Resolve/Retrieve)"))
257+
258+
(definitions
259+
(distinct-external-user
260+
(description "Individual who has used the language for their own work, not maintainer-paid contract, not solicited demo, not the founder, identifiable, dated record")
261+
(inherited-from "TRG §6.4"))
262+
(substantive-domain
263+
(description "Domain in which a non-trivial program (>=500 LoC) could solve a recognisable real problem")
264+
(examples "graphics" "networking" "parsing" "simulation" "data-analysis" "web-frontend" "embedded-control")
265+
(non-example "10 different fibonacci implementations are NOT a substantive domain"))
266+
(bus-factor-test
267+
(description "Founder records signed statement: could stop working on the language for 6 calendar months without it stalling")
268+
(gate-for-grade A)
269+
(signed-by "founder")
270+
(credibility-requires "X4 evidence (>=5 independent maintainers) already in place"))
271+
(school-grade
272+
(description "Calibrated against first-generation Python (c. 1995-2002): non-specialist educator can teach it to children with available materials")
273+
(gate-for-grade A)))
274+
275+
(self-assessment
276+
(current-grade "n/a")
277+
(justification "ARG grades languages, not specifications. ARG specification is graded by standards repo's CRG and by documentation tooling's TRG.")
278+
(path "SELF-ASSESSMENT.adoc")
279+
(note "ARG document set is self-assessed against internal-consistency criteria in SELF-ASSESSMENT.adoc"))
280+
281+
(conformance
282+
(requirements
283+
"ARG grade recorded in spec/ARG-PROFILE.adoc in language repo"
284+
"Grade supported by evidence per §4 for that grade and every grade below it"
285+
"Profile reviewed >=1 per release cycle, and within 7 days of any demotion"
286+
"Aggregation rule §5 respected (worst-of, no averaging)"
287+
"Demotion recorded immediately on loss of required evidence"
288+
"Per-commit attestations emitted to VeriSimDB at grade C+"
289+
"Language is also TRG-graded; ARG <= TRG holds at all times"))
290+
291+
(open-questions
292+
(q1
293+
(question "Is the '1000 distinct users' threshold for ARG-A correctly calibrated?")
294+
(status "plucked from intuition, same caveat as TRG 5M processor-hours")
295+
(re-baseline-trigger "first ARG-A candidate")
296+
(likely-direction "may drift up for general-purpose languages, down for narrow DSLs"))
297+
(q2
298+
(question "Is '6 diverse external projects' at ARG-B the right floor?")
299+
(status "borrowed from CRG-B")
300+
(re-baseline-trigger "first ARG-B candidate that is a narrow DSL with <12 plausible adopters total")
301+
(likely-direction "lower threshold for inherently small communities"))
302+
(q3
303+
(question "Should ARG-A require FRG-A, not just FRG-B?")
304+
(status "currently FRG >= B at ARG-A")
305+
(re-baseline-trigger "first language reaching both ARG-A and FRG-A")
306+
(likely-direction "tighten to FRG-A once any language has shown both can co-exist"))
307+
(q4
308+
(question "Is the founder bus-factor test sufficiently objective?")
309+
(status "novel, subjective, signed-statement-based")
310+
(re-baseline-trigger "first ARG-A candidate")
311+
(likely-direction "may require external verification of stated independence")))
312+
313+
(versioning
314+
(document-version "1.0")
315+
(last-updated "2026-05-28")
316+
(status "active")
317+
(compatibility
318+
(backward-compatible #t)
319+
(breaking-changes "none — initial release")
320+
(deprecations "none"))
321+
(maintenance
322+
(review-cycle "quarterly")
323+
(next-review "2026-08-28")
324+
(deprecation-policy "12 months notice for major changes")
325+
(change-control
326+
(minor "Direct commit with maintainer review")
327+
(major "RFC process + unanimous maintainer approval"))))
328+
329+
(references
330+
(item "CRG v2.2: Component Readiness Grades")
331+
(item "TRG v1.0: Toolchain Readiness Grades")
332+
(item "FRG v1.0: Foundations Readiness Grades (companion sibling)")
333+
(item "RSR v1.0: Rhodium Standard Repository")
334+
(item "K9 v1.0: Self-Validating Components")
335+
(item "TypeLL: 10-level type-safety lineage origin")
336+
(item "PanLL: panel framework type safety")
337+
(item "VCL-total: VeriSim Consonance Language — attestation form")
338+
(item "VeriSimDB: 8-modal octad attestation persistence")
339+
(item "Hypatia: invariant-path doc-claims grounder"))

0 commit comments

Comments
 (0)