|
| 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