Skip to content

Commit 1d4c606

Browse files
committed
docs(affirmation): AFFIRMATION + what-it-is (owner-granted SPDX exception 2026-06-16)
1 parent e9897da commit 1d4c606

1 file changed

Lines changed: 305 additions & 0 deletions

File tree

AFFIRMATION.adoc

Lines changed: 305 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,305 @@
1+
// SPDX-License-Identifier: MPL-2.0
2+
// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3+
= AFFIRMATION — nextgen-typing, as of 2026-06-16
4+
:toc: macro
5+
:toclevels: 2
6+
7+
_the No-Bullshit file: what we affirm was true and checkable at this moment_
8+
9+
[NOTE]
10+
====
11+
*Genre.* An *affirmation* is a solemn declaration of the truth of a statement,
12+
made by someone who _declines to swear an oath_. That is exactly what this is:
13+
our truth-as-best-believed at a stamped instant — binding on our honesty, not a
14+
claim of infallibility. It is not the README and not the EXPLAINME:
15+
16+
[cols="1,3,2",options="header"]
17+
|===
18+
| File | Answers | Tense
19+
| `README.adoc` | _Where is this going, and why?_ — the pipeline overview and steering | future / aspirational
20+
| `EXPLAINME.adoc` | _How is it built, and what's the evidence?_ — the coordination mechanism | descriptive / mechanism
21+
| *`AFFIRMATION.adoc`* (this file) | _What can we honestly affirm was *true and checkable* at a stamped moment?_ | a frozen instant, falsifiable
22+
|===
23+
24+
`nextgen-typing` is a *coordination monorepo*, not a compiler or a proof
25+
project. The affirmation that matters here is about the coordination layer
26+
itself: that its registry and cross-file invariants build and are internally
27+
consistent, and that it holds *no* proofs of its own — by design.
28+
====
29+
30+
toc::[]
31+
32+
== What this is, and how it is designed to work
33+
34+
*What it is.* A short, dated, jointly-signed snapshot of what we can _honestly
35+
and verifiably_ claim about this repo at one exact commit. Nothing here is
36+
marketing (that is the README) and nothing is engineering evidence for a
37+
constituent repo's compiler or proofs (those claims belong in those repos).
38+
This file is the receipt for the coordination layer.
39+
40+
*How it is designed to work.* Three moving parts make it trustworthy:
41+
42+
. *Ground truth, not memory.* Every claim below was produced by _running the
43+
tool in the session that wrote this file_ (the pipeline-drift guard, the
44+
must/trust gates, the template-residue check, and the proof-checker harness
45+
this repo ships). Where a status doc said otherwise, the live run wins and we
46+
flag the contradiction.
47+
. *A frozen anchor.* The file names the exact commit SHA, branch, UTC
48+
timestamp, and toolchain (see <<Verifiable anchor>>), so "true" always means
49+
"true _at this point_". Move the SHA and this file becomes a draft until
50+
re-run.
51+
. *A real signature.* It is landed by a *signed git commit*; that signature
52+
over this content at the anchored SHA is what makes the affirmation
53+
tamper-evident and attributable — not the prose alone.
54+
55+
*We are fallible.* We can be wrong, stale, or simply mistaken about our own
56+
work. This file is our best honest belief, not a proof of its own correctness.
57+
Treat it as a falsifiable claim, not gospel.
58+
59+
== The epistemic contract (read this before you trust _or_ attack)
60+
61+
This document records our *best joint belief* at the timestamp below. It is
62+
*not a guarantee of correctness.* We may be wrong. We may have missed
63+
something — a drifted doc, a stale registry line, a public description that
64+
overruns the tree.
65+
66+
*No intentional overclaim.* That is the only guarantee here: we have not
67+
_knowingly_ inflated anything. This repo makes *no* compiler-correctness,
68+
proof-soundness, or benchmark claim, and this file does not invent one. Where a
69+
checker passed, we say "passed". Where one failed, we say "failed" and why.
70+
Where the in-tree proof files are unconfigured RSR template residue, we say so
71+
plainly. If you find an honest claim here that turns out false, that is an
72+
error to be fixed — not a lie.
73+
74+
*Standing invitation to refute.* You are _invited_ to bulldoze any claim in
75+
this file. We want that. But the fair form of the attack is:
76+
77+
. Read this file at the stamped commit.
78+
. Reproduce (or fail to reproduce) the checks in <<reproduce,Reproduce it yourself>>.
79+
. _Then_ tell us where the discrepancy is, against the artefact as it stood at
80+
this moment — so we can either justify it or concede it on the record.
81+
82+
An attack that skips steps 1–2 is attacking a strawman of a different date.
83+
84+
*No fights before the facts are cleared up.* We are not interested in a dispute
85+
over a claim until the discrepancy has actually been checked against the
86+
artefact at this commit and we have had the chance to either justify it or
87+
concede it on the record. Good faith both ways: bring a reproducible
88+
discrepancy and we will fix the claim, the doc, or the registry — promptly and
89+
without defensiveness. The goal is a corrected record, not a won argument.
90+
91+
== Verifiable anchor
92+
93+
[cols="1,3"]
94+
|===
95+
| *Repo* | `hyperpolymath/nextgen-typing` (the type-theory pipeline *coordination monorepo* — contains no compiler code)
96+
| *Branch* | `main`
97+
| *Commit (HEAD)* | `e9897daf4ba1d2104f78abd5f660a870279eda5b`
98+
| *Permalink* | https://github.com/hyperpolymath/nextgen-typing/tree/e9897daf4ba1d2104f78abd5f660a870279eda5b
99+
| *Verified (UTC)* | 2026-06-16T12:28:36Z
100+
| *Working-tree delta at verification* | Clean (`git status --porcelain` empty) at the moment the checks below were run. This AFFIRMATION file is then added as a new untracked file; it does not change any check result above it. The results recorded here are HEAD as-is.
101+
| *Toolchain* | just 1.50.0 · bash 5.2.21 · git 2.43.0 · Idris2 0.8.0 · Lean 4.13.0 · Agda 2.8.0 · Coq 8.18.0 · TLA+ `tlc` not installed
102+
| *HEAD commit signature* | GPG-signed (RSA `9639451754496E51D6B537CAD119017EBF695AB1`, "hyperpolymath", `j.d.a.jewell@open.ac.uk`) — "Good signature" reported by `git log --show-signature`.
103+
|===
104+
105+
[IMPORTANT]
106+
If you are reading this at a _later_ commit, the claims may have drifted.
107+
Re-run <<reproduce>> and write a fresh affirmation; do not trust a stale one.
108+
109+
== Companion documents and repo metadata (cross-check)
110+
111+
This affirmation should be read against the repo's own public claims. Where they
112+
drift from what we verified, we say so here rather than quietly leave the reader
113+
to find out.
114+
115+
* *`README.adoc`* — _present_. link:README.adoc[_"nextgen-typing — The
116+
Hyperpolymath Type Theory Pipeline"_]. States plainly: "It does not contain
117+
compiler code." Verified consistent with the tree.
118+
* *`EXPLAINME.adoc`* — _present_. link:EXPLAINME.adoc[]. Explicitly: "This repo
119+
makes *no claims* about compiler correctness, proof soundness, or benchmark
120+
results." Verified consistent with what we ran.
121+
* *`0-AI-MANIFEST.a2ml`* — _present_. The repo's read-first invariant file;
122+
invariant #3 is "No compiler claims here". This AFFIRMATION upholds that
123+
invariant rather than breaching it.
124+
* *GitHub repo description* (fetched in-session via `gh repo view`) —
125+
_"Coordination monorepo for the Hyperpolymath type-theory pipeline —
126+
Kategoria/Katagoria, TypeLL, typed-Wasm, PanLL, and minimal calibration
127+
calculi such as TypeFix Zero."_ *Drift:* the strings "Kategoria", "TypeFix
128+
Zero", and "calibration calculi" do *not* appear anywhere in the tree at this
129+
commit (the README's main chain spells it "katagoria", which it also flags as
130+
*not yet created*). The description is ahead of the artefact; treat it as
131+
steering, not a tree claim.
132+
* *GitHub topics* — `dependent-types`, `formal-methods`, `linear-types`,
133+
`partiality`, `turing-completeness`, `type-theory`, `typed-wasm`,
134+
`universe-hierarchy`. *Caveat:* these describe the _pipeline this repo
135+
coordinates_, not artefacts in this repo. None of `partiality`,
136+
`turing-completeness`, or `universe-hierarchy` corresponds to any
137+
proved-here content — they are properties of the constituent repos
138+
(typell / typed-wasm / tropical-resource-typing), not of this coordination
139+
layer.
140+
141+
== The honest state (one breath)
142+
143+
*nextgen-typing is a documentation-and-registry coordination layer for the
144+
`katagoria → typell → typed-wasm → PanLL` pipeline. Its job is to keep the
145+
cross-repo story consistent, and at this commit that job is being done: the
146+
pipeline-drift guard and the must/trust correctness gates pass green. It holds
147+
no proofs of its own — the proof directory is unconfigured RSR-template residue
148+
that does not compile as shipped, and every real proof obligation lives in the
149+
constituent repos, exactly as the manifest says it should.*
150+
151+
=== What is solid (and how we checked)
152+
153+
* *The pipeline-drift registry guard passes — verified green this moment.*
154+
`just validate-pipeline-drift` → `scripts/check-pipeline-drift.sh` exits *0*,
155+
with *every* check PASS: all six canonical files present
156+
(`README.adoc`, `docs/ARCHITECTURE.adoc`, `docs/PIPELINE.adoc`, and the three
157+
`.machine_readable/6a2/` A2ML files); the canonical chain
158+
`katagoria → typell → typed-wasm → PanLL` matches exactly across README,
159+
ARCHITECTURE, PIPELINE, STATE and ECOSYSTEM; the "open-ended TypeLL" framing
160+
is consistent across README/ARCHITECTURE/PIPELINE/META; katagoria marked
161+
Active consistently; dates synchronized (all read `2026-04-12`); and no stale
162+
status phrases. _This is the core "is the coordination internally consistent?"
163+
check, and it is green._
164+
* *The "must" correctness gate passes.* `just must-check` exits *0*: LICENSE
165+
present, README present, no banned `Dockerfile`/`Makefile`, and SPDX-header
166+
presence on source files.
167+
* *Licence is MPL-2.0, internally consistent.* `just trust-license-content`
168+
passes; the in-tree `LICENSE` is the Mozilla Public License Version 2.0 and
169+
in-tree source/doc files carry `SPDX-License-Identifier: MPL-2.0`. (Note: the
170+
`trust-verify` _aggregate_ recipe fails — see loud-failures — but that is a
171+
Containerfile-pinning rule, not a licence problem.)
172+
* *No secrets committed.* `just trust-no-secrets-committed` passes (no `.env`,
173+
`credentials.json`, or `.env.local`).
174+
* *The Coq template proof, taken alone, compiles.* `just proof-check-coq` exits
175+
*0* (`coqc verification/proofs/coq/TypeSafety.v` → exit 0). *But read the
176+
nuance below before reading anything into this:* it proves a toy
177+
expression-language `type_soundness` theorem labelled "Template — replace with
178+
your project's type system", _not_ any nextgen-typing claim.
179+
180+
=== The honest nuance you must not lose (proved-CORE vs unproved-IMPLEMENTATION)
181+
182+
*This repo proves nothing about the typing pipeline, and that is correct by
183+
design.* The distinction here is sharper than the usual "proved core vs tested
184+
implementation":
185+
186+
* The `verification/proofs/` tree (`idris2/`, `lean4/`, `agda/`, `coq/`,
187+
`tlaplus/`) is *unconfigured RSR template residue*. The files say so in their
188+
own headers — e.g. `verification/proofs/idris2/Types.idr` line 5: "Template —
189+
replace with your project's core types." They prove generic example lemmas
190+
(a bounded-`Nat`, a toy expression language), not pipeline properties.
191+
* `PROOF-STATUS.md` reports *0% proven* (0 of 7 obligations) — and the live run
192+
*confirms* this rather than contradicting it: there is no nextgen-typing proof
193+
to run.
194+
* The genuine proof obligations for this pipeline live *in the constituent
195+
repos* (`typell`, `typed-wasm`, `tropical-resource-typing`, `katagoria`), and
196+
this coordination layer makes no claim to have discharged them. Anyone reading
197+
the presence of `.idr`/`.lean`/`.agda`/`.v` files here as "nextgen-typing has
198+
formal proofs" is overclaiming on the repo's behalf.
199+
200+
=== Known-incomplete but honestly fenced (loud failures, never silent)
201+
202+
These three checks *fail loudly* at this commit. They are real findings, fenced
203+
here so no reader mistakes them for green:
204+
205+
* *`just proof-check-idris2` FAILS (exit 1).* The Idris2 template proofs do not
206+
even compile as shipped: `Module name Types does not match file name
207+
"verification/proofs/idris2/Types.idr"` (and the same module-vs-path mismatch
208+
for every `ABI/*.idr`). So the Idris2 "proofs" prove *nothing* right now — a
209+
loud, visible failure, not a silent pass. (`proof-check-all` therefore also
210+
surfaces these failures.)
211+
* *`just proof-scan-dangerous` FAILS (exit 1) — but on false positives.* It
212+
flags 8 files for "dangerous patterns", yet every hit is the _warning comment_
213+
itself (e.g. the line "All proofs MUST be constructive (no believe_me, no
214+
assert_total)" trips the `believe_me`/`assert_total` matcher). There is no
215+
actual `believe_me`, `sorry`, `Admitted`, or `postulate` in proof position —
216+
the scanner is matching its own documentation. A scanner bug, recorded as
217+
such; not evidence of unsound proofs (there are no load-bearing proofs to be
218+
unsound).
219+
* *`just verify-template` FAILS (exit 1).* Unreplaced `{{PLACEHOLDER}}` template
220+
tokens remain in `QUICKSTART-MAINTAINER.adoc`, `QUICKSTART-DEV.adoc`,
221+
`READINESS.md`, `TEST-NEEDS.md`, `TEMPLATE-STANDARDS-AUDIT.adoc`, and
222+
`container/compose.toml`; the Justfile still references `rsr-template-repo`;
223+
and the Groove manifest still has port `0`. This repo is a partly-uninstantiated
224+
RSR template — honest, visible debt.
225+
* *`just trust-verify` FAILS (exit 1)* at `trust-container-images-pinned`: the
226+
`Containerfile` base images are not digest-pinned (`@sha256:`). A supply-chain
227+
hygiene gap, not a coordination-correctness problem.
228+
229+
=== Outstanding / weak / refuted (no spin)
230+
231+
* *Public GitHub description over-runs the tree (drift).* It advertises
232+
"Kategoria/Katagoria … TypeFix Zero … minimal calibration calculi", none of
233+
which exist in the repo at this commit. Not refuted-as-false-claim (it is
234+
steering text), but flagged so the reader is not misled.
235+
* *`katagoria` is declared "✅ Active" in the README table* yet the manifest
236+
(invariant #4) and EXPLAINME both say it "does not exist yet / not yet
237+
created". Internal tension between the status glyph and the prose; the
238+
honest reading is "planned, not created".
239+
* *No nextgen-typing-specific proof exists* — by design, but stated plainly so
240+
no one infers otherwise from the populated `verification/proofs/` tree.
241+
* *TLA+ cannot be checked in this environment* (`tlc` not installed), so
242+
`verification/proofs/tlaplus/StateMachine.tla` was not exercised at all.
243+
244+
[#reproduce]
245+
== Reproduce it yourself
246+
247+
From the repo root, at the commit above:
248+
249+
[source,sh]
250+
----
251+
git rev-parse HEAD # expect e9897daf4ba1d2104f78abd5f660a870279eda5b
252+
git status --porcelain # expect empty (clean) before adding this file
253+
254+
just validate-pipeline-drift # expect exit 0 — "PASS: no pipeline drift detected."
255+
just must-check # expect exit 0 — "All must checks passed"
256+
just proof-check-coq # expect exit 0 — toy TEMPLATE proof compiles (not a pipeline claim)
257+
258+
# The loud failures (expected to FAIL — that is the honest state, not a regression):
259+
just proof-check-idris2 # expect exit 1 — module-name vs file-path mismatch in template .idr files
260+
just proof-scan-dangerous # expect exit 1 — false positives on the warning COMMENTS, no real dangerous tactics
261+
just verify-template # expect exit 1 — unreplaced {{PLACEHOLDER}} tokens + rsr-template-repo refs
262+
just trust-verify # expect exit 1 — Containerfile base images not @sha256-pinned
263+
----
264+
265+
To confirm the no-proofs-here invariant directly: the files under
266+
`verification/proofs/` self-identify as templates (`grep -n Template
267+
verification/proofs/idris2/Types.idr`), and `PROOF-STATUS.md` reports
268+
*0% proven (0 of 7)*.
269+
270+
== One-line characterisation (quote this)
271+
272+
[quote]
273+
____
274+
"A type-theory pipeline *coordination monorepo* whose registry/docs consistency
275+
guard (`validate-pipeline-drift`) and `must`/licence gates pass green this
276+
moment, that holds *no* proofs of its own — the in-tree proof tree is
277+
unconfigured RSR template residue that does not compile, and all real proof
278+
obligations live in the constituent repos — with honest, loudly-failing
279+
template-instantiation debt (`verify-template`, Idris2 module paths,
280+
Containerfile pinning) still on the queue. A coordination layer, not a verified
281+
artefact. No intentional overclaim."
282+
____
283+
284+
== Joint attestation
285+
286+
We, the undersigned, assert that *to the best of our joint belief at the
287+
timestamp above, every claim in this file is true and was checked as described*
288+
— with no intentional overclaim, and with the open gaps stated rather than
289+
hidden.
290+
291+
* *Engineering party (AI):* Claude Opus 4.8 (`claude-opus-4-8[1m]`) — ran the
292+
build/test/proof checks recorded here on 2026-06-16T12:28:36Z and stands
293+
behind this wording as a faithful report of those runs.
294+
* *Owner / maintainer:* Jonathan D.A. Jewell — _signs by committing this file
295+
with `-S` (`id_ed25519_signing`); the git commit signature over this content,
296+
at the commit SHA recorded above, is the cryptographic form of this
297+
affirmation._
298+
+
299+
Signed-off-date: ____________________ (fill on signing)
300+
301+
[TIP]
302+
The authoritative, tamper-evident signature is the *signed git commit* that
303+
lands this file. If the SHA in <<Verifiable anchor>> matches the parent of that
304+
commit and the commit verifies, this affirmation is anchored. If they don't
305+
match, treat the file as a draft.

0 commit comments

Comments
 (0)