Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,15 @@

## Project: Nextgen Languages Evangeliser

Flagship target: **AffineScript**. Legacy target: **ReScript**. More targets planned (Rust, Gleam, Zig).
Current host application language: ReScript (migration to AffineScript planned in Phase 3).
**Duolingo / Rosetta Stone for programming languages** — a language-*comprehension and transfer* engine that **classifies** cross-language correspondences (it does not translate, lint, or build IDEs) so learning transfers from a known language to a new one. Canonical design: `docs/theory/CORRESPONDENCE-MODEL.adoc`.

- **Not** an IDE (that is **PanLL + eNSAID**; this engine *feeds* PanLL), **not** a linter, **not** a universal translator (no Curry–Howard-fidelity goal), **not** a shame-the-JS pattern matcher.
- **Model:** Concept / Form / Transition; six `CorrespondenceKind`s (cognate / false-friend / antonym / alien-realization / novel / vanished) as graded Echo fibres; classification runs per stratum. Carrier = Dyadic relation + Echo loss-with-residue (`proven-tests-and-benches` + `echo-types`).
- **Division of labour:** we build the engine + interface + vocabulary; the community authors per-language **cartridges** (`standards/cartridges/`).

Host: **ReScript today** (legacy host, being migrated; banned in *new* code per estate policy → AffineScript `.affine`). **AffineScript** is the future host and a first-class target (Zig FFI + Idris2 ABI seams).

When working here: classify-don't-translate; keep the no-shame voice; lead with the correspondence model (AffineScript is one first-class target/host, not the sole pitch); author-now / verify-in-CI when the toolchain is absent; **MPL-2.0 SPDX on new files, never relicense or sweep SPDX (licence-label drift is FLAG-ONLY to the owner)**.

## Language Policy (Hyperpolymath Standard)

Expand Down
16 changes: 11 additions & 5 deletions .machine_readable/6a2/ECOSYSTEM.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,24 @@
#
# ECOSYSTEM.a2ml — Nextgen Languages Evangeliser ecosystem position
[metadata]
version = "1.0"
last-updated = "2026-04-11"
version = "1.2"
last-updated = "2026-06-18"

[project]
name = "Nextgen Languages Evangeliser"
purpose = "image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palim"
purpose = "Duolingo/Rosetta-Stone for programming languages — a comprehension+transfer engine that classifies cross-language correspondences; emits into PanLL; extended by community language cartridges."
role = "project"

[position-in-ecosystem]
category = ""
category = "application"
description = "Cross-language correspondence engine; classify-not-translate; feeds PanLL"

[related-projects]
projects = [
# No related projects recorded
"hyperpolymath/panll — downstream IDE / contact layer this engine feeds (+ eNSAID)",
"hyperpolymath/proven-tests-and-benches — Dyadic relation carrier",
"hyperpolymath/echo-types — loss-with-residue (Agda)",
"hyperpolymath/standards — cartridges, overlay-protocol, ensaid-config, accessibility",
"hyperpolymath/affinescript — first-class target + future host",
"hyperpolymath/typed-wasm — AffineScript codegen layer",
]
12 changes: 8 additions & 4 deletions .machine_readable/6a2/META.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,22 @@
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
#
# META.a2ml — Nextgen Languages Evangeliser meta-level information
# Renamed from Rescript Evangeliser on 2026-04-16
[metadata]
version = "1.0.0"
last-updated = "2026-04-11"
version = "1.1.0"
last-updated = "2026-06-18"

[project-info]
license = "MPL-2.0"
author = "Jonathan D.A. Jewell (hyperpolymath)"

[architecture-decisions]
decisions = [
# No ADRs recorded
"ADR-1 Classify, don't translate — name the CorrespondenceKind + residue; no universal translator, no Curry-Howard-fidelity goal",
"ADR-2 Carrier = Dyadic relation + Echo loss-with-residue (proven-tests-and-benches + echo-types); invariant-path is the governance front-end",
"ADR-3 Engine vs cartridge — we build the engine/interface/vocabulary; per-language facts are cartridges (standards/cartridges)",
"ADR-4 Host ReScript -> AffineScript (Zig FFI + Idris2 ABI seams); ReScript banned in new code",
"ADR-5 Emit into PanLL (octads -> VeriSimDB -> panels); not itself the IDE",
"ADR-6 Knot-theory framing is an aspirational lens, not a literal computation",
]

[development-practices]
Expand Down
32 changes: 20 additions & 12 deletions .machine_readable/6a2/STATE.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -4,35 +4,43 @@
# STATE.a2ml — Nextgen Languages Evangeliser project state
[metadata]
project = "nextgen-languages-evangeliser"
version = "1.0.0"
last-updated = "2026-01-10T13:50:33+00:00"
version = "1.2.0"
last-updated = "2026-06-18"
status = "active"
session = "converted from scheme — 2026-04-11"

[project-context]
name = "Nextgen Languages Evangeliser"
purpose = """"""
completion-percentage = 50
purpose = "Duolingo/Rosetta-Stone for programming languages — a comprehension+transfer engine that classifies cross-language correspondences so learning transfers from a known language to a new one."
completion-percentage = 58

[position]
phase = "Active Development" # design | implementation | testing | maintenance | archived
maturity = "experimental" # experimental | alpha | beta | production | lts
phase = "Re-point: correspondence engine + abstraction-model pivot" # design | implementation | testing | maintenance | archived
maturity = "alpha" # experimental | alpha | beta | production | lts

[route-to-mvp]
milestones = [
# No milestones recorded
"M0 correspondence-model spec — complete",
"M1 standards/repo hygiene — complete",
"M2 identity re-point + abstraction-model pivot — in progress",
"M3 browser multi-pane GUI + overlay view-layers — pending",
"M4 AffineScript host port (Zig FFI + Idris2 ABI) — gated",
"M5 cartridge contract + 2nd language pack — pending",
"M6 proofs/benches + PanLL octad emission — pending",
]

[blockers-and-issues]
issues = [
# No blockers recorded
"AffineScript/Idris2/Zig/Deno toolchain absent in some environments — author now, verify in CI",
"JTV grammar-v2 worked example stubbed pending julia-the-viper repo access",
"Licence-label drift to flag to owner vs MPL-2.0 SPDX — FLAG-ONLY, manual",
]

[critical-next-actions]
actions = [
# No actions recorded
"Abstraction-model pivot: Concept/Form/Transition + CorrespondenceKind in src",
"Browser multi-pane GUI surface",
]

[maintenance-status]
last-run-utc = "2026-01-10T13:50:33+00:00T00:00:00Z"
last-result = "unknown" # unknown | pass | warn | fail
last-run-utc = "2026-06-18T00:00:00Z"
last-result = "pass" # unknown | pass | warn | fail
21 changes: 14 additions & 7 deletions .machine_readable/ECOSYSTEM.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,33 @@
;; ECOSYSTEM.a2ml — nextgen-languages-evangeliser ecosystem position
;; Migrated from root ECOSYSTEM.scm on 2026-04-12
;; Renamed from rescript-evangeliser on 2026-04-16
;; Updated for the correspondence re-point on 2026-06-18

(ecosystem
(version "1.1")
(version "1.2")
(name "nextgen-languages-evangeliser")
(predecessor "rescript-evangeliser")
(type "project")
(purpose "Nextgen typed-language evangelism — educational materials, examples, and tools for adopting AffineScript (flagship), ReScript (legacy), and future targets")
(purpose "Duolingo/Rosetta-Stone for programming languages — a comprehension+transfer engine that classifies cross-language correspondences so learning transfers from a known language to a new one")

(position-in-ecosystem
(role "component")
(layer "application")
(description "Multi-target advocacy and resource hub for next-generation typed languages within the hyperpolymath estate"))
(description "Cross-language correspondence engine; classify-not-translate; emits into PanLL; extended by community language cartridges"))

(related-projects
(downstream-ide "hyperpolymath/panll (+ eNSAID contact layer this engine feeds)")
(carrier-relation "hyperpolymath/proven-tests-and-benches (Dyadic.idr)")
(carrier-residue "hyperpolymath/echo-types (loss-with-residue, Agda)")
(cartridge-home "hyperpolymath/standards (cartridges, overlay-protocol, ensaid-config, accessibility)")
(flagship-target "hyperpolymath/affinescript")
(codegen-layer "hyperpolymath/typed-wasm")
(legacy-target "rescript-lang/rescript"))

(what-this-is "Educational materials, worked examples, and advocacy tools for affine/linear-typed and other next-generation languages (flagship: AffineScript)")
(what-this-is "A language-comprehension and transfer engine: it classifies cross-language correspondences (cognate/false-friend/antonym/alien-realization/novel/vanished) and teaches the transfer without shame")
(what-this-is-not
"A compiler"
"A type-checker"
"A language-server (see affinescript repo for LSP)"))
"An IDE (that is PanLL)"
"A linter"
"A universal translator (no Curry-Howard-fidelity goal)"
"A compiler or type-checker"
"A shame-the-JavaScript pattern matcher"))
18 changes: 14 additions & 4 deletions .machine_readable/META.a2ml
Original file line number Diff line number Diff line change
@@ -1,15 +1,25 @@
;; SPDX-License-Identifier: MPL-2.0
;; META.a2ml — nextgen-languages-evangeliser meta-information
;; Migrated from root META.scm on 2026-04-12
;; Updated for the correspondence re-point on 2026-06-18

(meta
(version "1.0.0")
(version "1.1.0")
(project "nextgen-languages-evangeliser")
(architecture-decisions ())
(architecture-decisions
(adr-1 "Classify, don't translate — the engine names the kind of cross-language correspondence (CorrespondenceKind) and its residue; it is not a universal translator and claims no Curry-Howard fidelity")
(adr-2 "Formal carrier = Dyadic relation + Echo loss-with-residue (proven-tests-and-benches Dyadic.idr + hyperpolymath/echo-types); invariant-path is the governance front-end")
(adr-3 "Engine vs cartridge — we build the general engine, interface and vocabulary; per-language facts are authored as cartridges (standards/cartridges)")
(adr-4 "Host moves ReScript -> AffineScript with Zig FFI + Idris2 ABI seams; ReScript banned in new code per estate policy")
(adr-5 "The engine emits into PanLL (octads -> VeriSimDB -> panels); it is not itself the IDE")
(adr-6 "Knot-theory framing is an aspirational lens, not a literal computation — documented honestly"))
(development-practices
(code-style "standard")
(security "openssf-scorecard")
(security "openssf-scorecard + panic-attack static-analysis-gate")
(versioning "semver")
(documentation "asciidoc")
(branching "trunk-based"))
(design-rationale ()))
(design-rationale
(no-shame "celebrate / minimise / better / safety / example — transfer-first pedagogy")
(levels-of-objects "classification runs per stratum: surface -> structure -> intention -> trope -> invariant")
(accessibility "Hyperpolymath Accessibility Standard, Level A -> AA")))
49 changes: 30 additions & 19 deletions .machine_readable/STATE.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,52 @@
;; STATE.a2ml — nextgen-languages-evangeliser project state
;; Migrated from root STATE.scm on 2026-04-12
;; Renamed from rescript-evangeliser on 2026-04-16
;; Re-pointed to the correspondence (classify-not-translate) model on 2026-06-18

(state
(metadata
(version "1.1.0")
(version "1.2.0")
(project "nextgen-languages-evangeliser")
(predecessor "rescript-evangeliser")
(last-updated "2026-04-16"))
(last-updated "2026-06-18"))

(identity
(is "Duolingo/Rosetta-Stone for programming languages — a comprehension+transfer engine that classifies cross-language correspondences so learning transfers from a known language to a new one")
(is-not "an IDE (that is PanLL), a linter, a universal translator, or a shame-the-JS pattern matcher")
(model "Concept/Form/Transition + six CorrespondenceKinds (cognate/false-friend/antonym/alien-realization/novel/vanished) as graded Echo fibres")
(division "we build the engine + interface + vocabulary; the community authors per-language cartridges"))

(current-position
(phase "Migration: Phase 1 — rebrand + engine generalisation")
(overall-completion 55)
(phase "Re-point: cross-language correspondence engine + abstraction-model pivot")
(overall-completion 58)
(working-features
"ReScript target catalogue (52 patterns, 21 categories)"
"Scanner + Analyser detection engine"
"Narrative generation with 'You were close!' voice"
"Makaton-inspired glyph system"
"Correspondence-model design spec (docs/theory/CORRESPONDENCE-MODEL.adoc) — merged"
"Standards/machine-readable hygiene (6a2 manifests, panic-attack gate, eNSAID config) — merged"
"Scanner + Analyser detection engine (ReScript host)"
"Narrative generation (no-shame voice)"
"Makaton-inspired glyph view-layer"
"CLI: scan / patterns / legend / stats"
"RAW/FOLDED/GLYPHED view layers; plain/markdown/html outputs"))

(route-to-mvp
(milestones
(phase-0 (status "complete") (items "Decide pivot strategy" "Verify AffineScript toolchain"))
(phase-1 (status "in-progress") (items "Rebrand docs+metadata" "Generalise Types.res for multi-target"))
(phase-2 (status "pending") (items "Author AffineScript pattern catalogue (affine/linear safety)"))
(phase-3 (status "gated") (items "Host port ReScript -> AffineScript" "Gate: AffineScript->typed-wasm->WASM proof-of-life"))
(phase-4 (status "pending") (items "Policy perimeter flip" "ts-blocker + .res exception for legacy"))
(phase-5 (status "pending") (items "Additional targets: Rust, Gleam, Zig"))))
(m0 (status "complete") (items "Correspondence-model spec: Concept/Form/Transition + six kinds + Dyadic/Echo carrier"))
(m1 (status "complete") (items "Standards/repo hygiene: 6a2 manifests, panic-attack gate, eNSAID config"))
(m2 (status "in-progress") (items "Identity re-point" "Abstraction-model pivot: Concept/Form/Transition + CorrespondenceKind in src"))
(m3 (status "pending") (items "Browser multi-pane GUI + overlay view-layers + HAS accessibility"))
(m4 (status "gated") (items "AffineScript host port (.res -> .affine) + Zig FFI + Idris2 ABI seams"))
(m5 (status "pending") (items "Cartridge contract + 2nd language pack"))
(m6 (status "pending") (items "Idris2/Echo witnesses + benches + PanLL octad emission"))))

(blockers-and-issues
"AffineScript WASM codegen backend parity incomplete (Phase 3 gate)"
"GitHub repo rename still needs manual action by maintainer")
"AffineScript/Idris2/Zig/Deno toolchain absent in some environments — author now, verify in CI"
"JTV grammar-v2 worked example stubbed pending julia-the-viper repo access"
"Licence-label drift to flag to owner (PMPL badge / 'Palimpsest License (MPL-2.0)' / ROADMAP 'MPL-2.0-or-later') vs MPL-2.0 SPDX — FLAG-ONLY, manual")

(critical-next-actions
"Complete Phase 1a rebrand commit"
"Complete Phase 1b engine generalisation (Types.res -> multi-target)")
"Abstraction-model pivot: recast Types/Patterns/Narrative/Analyser to Concept/Form/Transition + CorrespondenceKind"
"Browser multi-pane GUI surface")

(session-history
(2026-04-16 "Phase 0 decisions locked; Phase 1 started; branch claude/migrate-to-affinescript-zig-U0iYX")))
(2026-04-16 "Phase 0 decisions locked; Phase 1 started")
(2026-06-18 "Re-point: correspondence-model spec merged (#19); standards hygiene merged (#20); identity re-point")))
Loading
Loading