|
| 1 | +// SPDX-License-Identifier: CC-BY-SA-4.0 |
| 2 | +// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> |
| 3 | += AFFIRMATION — krl, as of 2026-06-19 |
| 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?_ — KRL's purpose and steering | future / aspirational |
| 20 | +| `EXPLAINME.adoc` | _How is it built, and what's the evidence?_ | 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 | +Every repo in the estate carries one (`AFFIRMATION.adoc`), per the 2026-06-19 |
| 25 | +estate rule. It is deliberately small, dated, and signed, so a reader can hold |
| 26 | +us to exactly what we affirmed, when we affirmed it. |
| 27 | +==== |
| 28 | + |
| 29 | +toc::[] |
| 30 | + |
| 31 | +== What this is, and how it is designed to work |
| 32 | + |
| 33 | +*What it is.* A short, dated, jointly-signed snapshot of what we can _honestly |
| 34 | +and verifiably_ claim about the krl repo at one exact commit. Nothing here is |
| 35 | +marketing (that is the README). This file is the receipt. |
| 36 | + |
| 37 | +*How it is designed to work.* |
| 38 | + |
| 39 | +. *Ground truth, not memory.* Every gate result below was produced by _running |
| 40 | + the gate this session_. *Material caveat (read it):* `just` is *not installed* |
| 41 | + in this session, so the gate **recipe bodies were executed directly as bash** |
| 42 | + rather than via `just`. The logic run is the recipe logic; the orchestration |
| 43 | + was not. A full `just`-driven run in the maintainer's environment is the |
| 44 | + authoritative form. |
| 45 | +. *A frozen anchor.* The file names the exact commit SHA, branch, and toolchain |
| 46 | + (see <<Verifiable anchor>>). Move the SHA and this file becomes a draft until |
| 47 | + re-run. |
| 48 | +. *A real signature.* Authoritatively, this is landed by the maintainer's |
| 49 | + *signed git commit*. The AI engineering party *cannot* GPG-sign and does not |
| 50 | + claim to; the signature line is the owner's to complete. |
| 51 | + |
| 52 | +*We are fallible.* This file is our best honest belief, not a proof of its own |
| 53 | +correctness. Treat it as a falsifiable claim. |
| 54 | + |
| 55 | +== The epistemic contract (read this before you trust _or_ attack) |
| 56 | + |
| 57 | +This document records our *best joint belief* at the timestamp below. It is |
| 58 | +*not a guarantee of correctness.* |
| 59 | + |
| 60 | +*No intentional overclaim.* That is the only guarantee. Where a gate passed we |
| 61 | +say "PASS"; where it failed we say "FAIL" and why; where the repo is |
| 62 | +unconfigured RSR-template residue we say so plainly; where a check was *not run* |
| 63 | +this session (absent toolchain) we say "not run", not "passed". |
| 64 | + |
| 65 | +*Standing invitation to refute.* Read this at the stamped commit, reproduce the |
| 66 | +checks in <<reproduce,Reproduce it yourself>>, then tell us where the |
| 67 | +discrepancy is against the artefact as it stood at this moment. An attack that |
| 68 | +skips reproduction is attacking a strawman of a different date. |
| 69 | + |
| 70 | +== Verifiable anchor |
| 71 | + |
| 72 | +[cols="1,3"] |
| 73 | +|=== |
| 74 | +| *Repo* | `hyperpolymath/krl` — KRL (Knot Resolution Language), the resolution-DSL surface of the KRL stack |
| 75 | +| *Branch* | `claude/practical-newton-9eFe2` (feature branch; this affirmation is *not* anchored to `main`) |
| 76 | +| *Commit (HEAD)* | `d8b9768d294d4339bc4fca3d2e7b787e3ad610bd` |
| 77 | +| *Permalink* | https://github.com/hyperpolymath/krl/tree/d8b9768d294d4339bc4fca3d2e7b787e3ad610bd |
| 78 | +| *Verified* | 2026-06-19 (checks run this session; precise UTC second not captured — date, not claimed instant) |
| 79 | +| *Working-tree delta* | Clean (`git status --porcelain` empty) at verification, except this untracked `AFFIRMATION.adoc`. |
| 80 | +| *Toolchain (what was present)* | `git 2.43.0`, `Agda 2.6.3`. *Absent this session:* `just`, `deno`, `julia`, `lean`, `idris2`. |
| 81 | +| *Run method* | Gate *recipe bodies executed directly as bash* (no `just`). See the caveat above. |
| 82 | +| *HEAD commit signature* | *Not signed by the AI party.* Authoritative signature is the maintainer's signed commit that lands this file. |
| 83 | +|=== |
| 84 | + |
| 85 | +[IMPORTANT] |
| 86 | +If you are reading this at a _later_ commit, the claims may have drifted. Re-run |
| 87 | +<<reproduce>> and write a fresh affirmation; do not trust a stale one. |
| 88 | + |
| 89 | +== Companion documents and repo metadata (cross-check) |
| 90 | + |
| 91 | +* *`README.adoc`* — *present and customised*: title `= KRL — Knot Resolution |
| 92 | + Language`. Consistent with the tree (real grammar + `src/` content below). |
| 93 | +* *`EXPLAINME.adoc`* — *present but carries template residue*: its first heading |
| 94 | + is `= {project-name} — Show Me The Receipts` — the `{project-name}` token is |
| 95 | + *unreplaced*. Honest drift: EXPLAINME is not yet instantiated. |
| 96 | +* *`0-AI-MANIFEST.a2ml`* — present. |
| 97 | +* *GitHub repo description / topics* — *not fetched this session* (no `gh` |
| 98 | + available). Not cross-checked; do not read this file as validating the public |
| 99 | + description. |
| 100 | + |
| 101 | +== The honest state (one breath) |
| 102 | + |
| 103 | +krl is a *language-in-design on RSR-template scaffolding*. There is *real* KRL |
| 104 | +content — a 114-line `spec/grammar.ebnf`, a grammar overview, and a populated |
| 105 | +`src/` (`core`, `definitions`, `errors`, `bridges`, `contracts`, `aspects`, |
| 106 | +`interface`) — but the repo is *half-instantiated from `rsr-template-repo`*: the |
| 107 | +`Justfile` still carries the template's name and `# TODO` stub recipes, several |
| 108 | +files still hold `{{PLACEHOLDER}}` tokens, and there are no discharged proofs. |
| 109 | +The `MUST` and licence/secrets `TRUST` gates pass; `verify-template` and |
| 110 | +`validate-rsr` fail loudly. Exactly the honest state, fenced below. |
| 111 | + |
| 112 | +== What is solid (and how we checked) |
| 113 | + |
| 114 | +* *`MUST` gate — PASS (all four).* Run as bash from `contractile.just`: |
| 115 | + `must-license-present` (LICENSE present), `must-readme-present` (`README.adoc` |
| 116 | + present), `must-no-banned-files` (no Dockerfile/Makefile), |
| 117 | + `must-spdx-headers` (0 unheadered source files scanned). |
| 118 | +* *`TRUST` — licence + secrets PASS.* `trust-license-content` (LICENSE carries |
| 119 | + an SPDX/MPL identifier) and `trust-no-secrets-committed` (no `.env` / |
| 120 | + `credentials.json` / `.env.local`). |
| 121 | +* *Real language artefacts exist.* `spec/grammar.ebnf` (114 lines) + |
| 122 | + `spec/grammar-overview.md`; `src/` holds `core / definitions / errors / |
| 123 | + bridges / contracts / aspects / interface`. This is genuine KRL design, not |
| 124 | + template filler — KRL is the Construct/Transform/Resolve/Retrieve resolution |
| 125 | + DSL of the stack. |
| 126 | + |
| 127 | +== Known-incomplete but honestly fenced (loud failures, never silent) |
| 128 | + |
| 129 | +* *`verify-template` — FAIL.* The `Justfile` still references |
| 130 | + `rsr-template-repo`; ~8 files still contain `{{PLACEHOLDER}}` tokens; the |
| 131 | + Groove manifest still has `(port 0)`; and `EXPLAINME.adoc` still has the |
| 132 | + `{project-name}` token. krl is a partly-uninstantiated RSR template — visible |
| 133 | + debt. |
| 134 | +* *`trust-container-images-pinned` — FAIL.* `Containerfile` base images are not |
| 135 | + digest-pinned (`@sha256:`). Supply-chain hygiene gap. |
| 136 | +* *`validate-rsr` — FAIL.* Required paths missing at this commit: |
| 137 | + `.machine_readable/anchors/ANCHOR.a2ml` and `src/interface/abi`. |
| 138 | + |
| 139 | +== Outstanding / weak / refuted (no spin) |
| 140 | + |
| 141 | +* *No discharged proofs.* `PROOF-STATUS.md` (updated 2026-06-01) reports *0 done* |
| 142 | + across all categories: Typing 0/2, Invariant 0/3 (1 partial), Algorithm 0/1 |
| 143 | + (1 partial), ABI 0/1 (decision pending). krl makes *no* proof-soundness claim. |
| 144 | +* *Build/test/lint are stubs.* The `Justfile` `build` / `test` / `lint` / `e2e` |
| 145 | + recipes are `# TODO`-marked `echo` placeholders — they do not exercise krl. |
| 146 | +* *Not run this session (absent toolchain):* `validate-state`, the full OpenSSF |
| 147 | + `verify`, and anything needing `just` / `deno` / a prover. Stated, not faked. |
| 148 | +* *Two `.machine_readable` layouts coexist* (root `*.a2ml` *and* `6a2/`) — worth |
| 149 | + reconciling, not a correctness fault. |
| 150 | + |
| 151 | +== Reproduce it yourself [[reproduce]] |
| 152 | + |
| 153 | +From the repo root, at the commit above (no `just` needed — run the recipe |
| 154 | +bodies as bash): |
| 155 | + |
| 156 | +[source,bash] |
| 157 | +---- |
| 158 | +git rev-parse HEAD # expect d8b9768d294d4339bc4fca3d2e7b787e3ad610bd |
| 159 | +git status --porcelain # expect empty before adding this file |
| 160 | +
|
| 161 | +# MUST (expect PASS): |
| 162 | +test -f LICENSE; test -f README.adoc; test ! -f Dockerfile -a ! -f Makefile |
| 163 | +
|
| 164 | +# TRUST (licence+secrets PASS; container pinning FAIL): |
| 165 | +grep -q 'SPDX\|MPL' LICENSE |
| 166 | +grep -q '@sha256:' Containerfile # expect NO match -> FAIL |
| 167 | +
|
| 168 | +# verify-template (expect FAIL): |
| 169 | +grep -q 'rsr-template-repo' Justfile # expect match -> FAIL |
| 170 | +grep -rl '{{'{{'}}[A-Z_]*{{'}}'}}' --include='*.adoc' --include='*.a2ml' . | grep -v PLACEHOLDERS |
| 171 | +
|
| 172 | +# validate-rsr (expect FAIL): these should be MISSING |
| 173 | +ls .machine_readable/anchors/ANCHOR.a2ml src/interface/abi |
| 174 | +---- |
| 175 | + |
| 176 | +== One-line characterisation (quote this) |
| 177 | + |
| 178 | +"KRL is the Knot Resolution Language surface of the KRL stack — a genuine |
| 179 | +grammar-and-`src` design (`spec/grammar.ebnf`, `src/{core,definitions,errors, |
| 180 | +bridges}`) inside a half-instantiated RSR template: the `MUST` and |
| 181 | +licence/secrets `TRUST` gates pass, but `verify-template` and `validate-rsr` |
| 182 | +fail loudly (Justfile still `rsr-template-repo`, ~8 placeholder files, EXPLAINME |
| 183 | +`{project-name}`, missing `ANCHOR.a2ml` + `src/interface/abi`, Containerfile |
| 184 | +unpinned), and `PROOF-STATUS` reports 0/7 obligations discharged. A |
| 185 | +language-in-design on template scaffolding, not a finished artefact — and the |
| 186 | +gates were run as raw bash because `just` is absent in this session. No |
| 187 | +intentional overclaim." |
| 188 | + |
| 189 | +== Key concern + cross-repo wiring |
| 190 | + |
| 191 | +krl's *key concern* is the *resolution DSL surface* (Construct / Transform / |
| 192 | +Resolve / Retrieve), lowering to TangleIR. Per the 2026-06-19 estate rule, each |
| 193 | +repo carries its own AFFIRMATION + scoped Must/Intend/Wish table, cross- |
| 194 | +referencing the others and kept in sync as crossover resolves. krl's scoped |
| 195 | +table lives at `docs/identity-fabric/musts-intends-wishes.adoc`. Sibling |
| 196 | +concerns: *tangle* (TangleIR + type-safety semantics), *quandledb* (equivalence |
| 197 | +/ identity face), *Skein.jl* (computational engine), *echo-types* (structured- |
| 198 | +loss theory). Resolve crossover items, then wire the update into those repos. |
| 199 | + |
| 200 | +== Joint attestation |
| 201 | + |
| 202 | +To the best of our joint belief at the timestamp above, every claim in this file |
| 203 | +is true and was checked as described — with no intentional overclaim, and with |
| 204 | +the open gaps stated rather than hidden. |
| 205 | + |
| 206 | +* *Engineering party (AI):* ran the gate bodies recorded here as bash on |
| 207 | + 2026-06-19 and stands behind this wording as a faithful report of those runs, |
| 208 | + including the explicit `just`-absent caveat. |
| 209 | +* *Owner / maintainer:* Jonathan D.A. Jewell — signs by committing this file |
| 210 | + with `-S`; the signed git commit over this content, at the SHA above, is the |
| 211 | + authoritative form of this affirmation. |
| 212 | +* *Signed-off-date:* (fill on signing) |
0 commit comments