Skip to content

docs: correct Kautz classification to Type 3; record Type 4 as the target - #58

Merged
hyperpolymath merged 1 commit into
mainfrom
docs/kautz-type-3-correction
Jul 21, 2026
Merged

docs: correct Kautz classification to Type 3; record Type 4 as the target#58
hyperpolymath merged 1 commit into
mainfrom
docs/kautz-type-3-correction

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

The label contradicted its own description

NEUROSYM.a2ml read:

kautz-type = 1
description = "Neural | Symbolic — strict separation with defined interface"

The | pipe notation is Kautz Type 3's — a neural and a symbolic engine cooperating as co-routines across a defined interface. Type 1 (symbolic Neuro symbolic) is a plain neural net where the neural net does the work.

Type 3 is what is actually built here:

Neural role "Natural language understanding and generation ONLY"
Symbolic role "ALL mathematical and statistical computation"
The gate src/tools/executor.jl::execute_tool()
MOLLOCK enforcement validate_numeric_provenance() in src/tools/guardrail.jl, tested in test/guardrail_test.jl

Under Type 1 the LLM would itself be computing — precisely the failure this project exists to prevent. The old label didn't just misfile the project; it described the thing the MOLLOCK rule forbids.

Corrects all six artefacts (README.adoc ×2, EXPLAINME.adoc, guix.scm, 0-AI-MANIFEST.a2ml, ECOSYSTEM.a2ml, NEUROSYM.a2ml prose + kautz-type), and writes the taxonomy reasoning into NEUROSYM.a2ml so a future reader doesn't silently revert it.

A target end-state, which had never been recorded

docs/decisions/ held only 0000-template.md and 0001-adopt-rsr-standard.md; no target appeared in RSR_OUTLINE.adoc, STATE.a2ml, or NEUROSYM.a2ml. The convention exists elsewhere in the estate — idaptik-ums has docs/adr/0001-ai-edit-kautz6-nesy.adoc (Kautz 6) — statistikles just hadn't used it.

Adds ADR 0002 and kautz-target = 4.

Type 4 (Neuro:Symbolic → Neuro) — symbolic knowledge compiled back into the neural component. The lever already exists in [verification-pipeline], where exactly one of six stages is implemented:

Stage Engine Status
compute Julia symbolic functions implemented
explain echidna GraphQL planned
prove echidna formal verification planned
demonstrate R/Julia walkthrough planned
annotate code + maths annotation planned
verify adversarial neurosymbolic SLM planned

That verify stage is the Type 4 transition.

The consequence worth stating plainly

Reaching Type 3 is not a work item. It is already built — this is a paperwork correction. The engineering programme is 3 → 4, and the five planned stages are its backlog.

Corollary recorded in the ADR: those stages must stay honestly marked planned until they actually run. Marking an unbuilt stage implemented would be the documentation equivalent of a MOLLOCK, and the same objection applies.

Verification

  • Zero Kautz Type 1 / kautz-type = 1 occurrences remain (grep clean)
  • All 8 sites now read Type 3
  • Commit signed (ED25519, %G? = G)
  • Docs-only — no change to src/, test/, or CI

Note for reviewers

This is a classification judgement, not a code change. If you read the executor/guardrail boundary as Type 2 (Symbolic[Neuro] — symbolic in charge, calling the neural as a subroutine) rather than Type 3, that's a reasonable alternative reading and worth arguing here before merge. I chose Type 3 because the LLM drives the tool-calling loop rather than being invoked by the Julia pipeline.

🤖 Generated with Claude Code

…rget

The label contradicted its own description. NEUROSYM.a2ml read:

    kautz-type = 1
    description = "Neural | Symbolic — strict separation with defined interface"

The `|` pipe notation is Kautz Type 3's — a neural and a symbolic engine
cooperating as co-routines across a defined interface. Type 1 (`symbolic
Neuro symbolic`) is a plain neural net where the NEURAL NET DOES THE WORK.

Type 3 is what is actually built: the LLM does natural language only, Julia
does all computation, they meet at one gate (executor.jl::execute_tool()),
and the MOLLOCK rule is enforced at runtime by validate_numeric_provenance()
in guardrail.jl. Under Type 1 the LLM would be computing — precisely the
failure this project exists to prevent. The old label described the thing
the MOLLOCK rule forbids.

Corrects all six artefacts (README.adoc x2, EXPLAINME.adoc, guix.scm,
0-AI-MANIFEST.a2ml, ECOSYSTEM.a2ml, NEUROSYM.a2ml prose + kautz-type) and
writes the taxonomy reasoning into NEUROSYM.a2ml so it is not silently
reverted later.

Also records a target end-state, which had never been captured anywhere:
docs/decisions/ held only the template and ADR 0001, and no target appeared
in RSR_OUTLINE.adoc, STATE.a2ml or NEUROSYM.a2ml. Adds ADR 0002 and
`kautz-target = 4`.

Type 4 (`Neuro:Symbolic -> Neuro`) — symbolic knowledge compiled back into
the neural component. The lever already exists: of the six stages in
[verification-pipeline], exactly one (compute/Julia) is `implemented`; the
`verify` stage, an adversarial neurosymbolic SLM, is the Type 4 transition.

Consequence worth stating plainly: reaching Type 3 is NOT a work item. It is
already built, and this is a paperwork correction. The programme is 3 -> 4.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@hyperpolymath
hyperpolymath marked this pull request as ready for review July 21, 2026 05:41
@hyperpolymath
hyperpolymath merged commit 60da60e into main Jul 21, 2026
13 of 23 checks passed
@hyperpolymath
hyperpolymath deleted the docs/kautz-type-3-correction branch July 21, 2026 05:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant