On the authorship of this page. This text was generated by a large language model (Claude Opus 5, September 2026). Its inputs were the author’s research notes, retrieved by keyword and vector search over a local markdown corpus, and summaries of chapters VI, X, and XI of Douglas Hofstadter’s Gödel, Escher, Bach: An Eternal Golden Braid — the summaries, not the book. The framing those chapters supply, particularly the treatment of meaning as distributed across message, decoder, and receiver, and of stance and content as separable levels of description, is carried over into the argument below. The selection, ordering, and phrasing are model output. The claims, the architecture, and the open questions are the author’s, drawn from the sources cited at the end. Editorial provenance. The document above was edited by GPT-5.6 Luna Pro through the Hermes Agent harness from Nous Research, then refined by opencode/mimo-v2-free. The models edited the prose and regenerated the derived page, but did not independently verify the underlying research. A document about the failure modes of language models, produced and edited by them, is a strange loop of the kind discussed in the book, and is flagged here rather than left for the reader to discover.

The SFL Engine starts from one claim: a language model’s failure modes are not only factual but also grammatical. When generated text fabricates, carries an unearned persona, or reproduces the certainty of a manipulative source, something has gone wrong: what a clause says, how certain it claims to be, and whom it addresses no longer align. Systemic Functional Linguistics already has names and categories for all three. This project annotates text with those categories, stores them as first-class queryable fields, and filters on them before text reaches the model. This page explains why that is the chosen approach; the project overview explains what the system does.

Status

Conceptual and mid-rebuild. The theory is settled enough to build against; the implementation is a from-scratch rewrite (sfl-engine) of an earlier working version (sfl-compiler), with Phases 0–5 of a 6-phase blueprint complete and hardening outstanding. Treat the claims on this page as a design rationale under test, not as validated results. The open questions are listed at the end.

The problem: one channel, two kinds of meaning

Standard retrieval-augmented generation operates on a single channel. Retrieval pulls documents by topical similarity; generation consumes whatever arrives. The model has no internal boundary between external text and its own instructions — both arrive as tokens carrying equal epistemic weight. A system prompt saying “do not be manipulated” is itself text in the context window, competing on the same channel with the document it is meant to defend against.

The consequence is that a document carries an attitude along with its content, and both condition what is generated next. Consider a retrieved fragment:

Every expert agrees that the migration is failing. Nobody with real experience doubts that the system is broken.

This is topically relevant and scores well on both semantic and keyword search. It also carries false consensus, manufactured certainty, and social pressure. Standard retrieval has no mechanism to treat those as separable from the claim itself.

The same collapse explains a class of hallucination. When a prompt supplies a background story and leaves the participant-process links implicit, the model invents its own logical links — it loses track of which participant performed which action, and fills the gap. The failure is a transitivity failure before it is a factual one.

Why Systemic Functional Linguistics

Halliday’s grammar is functional rather than formal: it asks what language is doing in a context of situation, not whether a sentence is well-formed. It supplies three strata and three metafunctions that map onto the problem directly.

The strata are realization relationships, each level constraining the one below:

GENRE (context of culture)   → staged, goal-oriented macro-structure
  ↓ realizes
REGISTER (context of situation) → Field | Tenor | Mode
  ↓ realizes
LEXICOGRAMMAR (language system) → Transitivity | Mood | Theme

The metafunctions are three simultaneous layers of meaning in every clause:

  • Ideational (Field) — what is happening. Process type (material, mental, relational, verbal), participants (Actor, Goal, Recipient), circumstances. This is the propositional content.
  • Interpersonal (Tenor) — the stance being taken. Mood, modality (degree of certainty or obligation), appraisal, social distance. This is the persuasion layer.
  • Textual (Mode) — how the message coheres as text. Theme/Rheme, nominalization, lexical density.

The engineering consequence is the point: Ideational and Interpersonal meaning are separable, and they should not be presented to the model in the same way. Store them in separate tables so the model can be shown

process: material | participants: migration, failure
mood: declarative | modality: 0.85 | tenor: 0.3 | attitude: social_proof

instead of “Every expert agrees the migration is failing!” The first gives the model a fact to evaluate. The second gives it a stance to adopt.

This also makes the stance dimension scalar and filterable. A retriever configured with min_tenor: 0.7 and min_modality: 0.7 excludes low-register, inflated-certainty fragments at the retrieval boundary — the manipulative content never enters the context window, so it cannot condition the output at all. The manipulation is not rebutted or argued with; it is not retrieved.

The defense rests on an asymmetry: manipulative text must be persuasive to work, and persuasion often has linguistic texture — social-proof markers, emotional intensifiers, informal register, and exaggerated certainty. Text that sheds those properties may be less manipulative, or it may simply have evaded this screen; either way, it still requires factual evaluation.

Why semiotics, specifically

Calling language a social semiotic system is not decoration. It commits the project to three positions that shape the architecture.

Meaning is distributed, not intrinsic. Hofstadter’s three-component model holds that meaning requires a message, a decoder, and a receiver, and exists in the interaction among them rather than in any one of them — DNA without the ribosome and the cell is just a chemical (GEB ch06). Model weights and token probabilities are raw meaning potential; a prompt is the decoder configuration that narrows that potential to one output. This is why the project treats prompt structure as a boundary condition on a system rather than as an incantation.

Symbols are active when their manipulation rules mirror the processes they represent (GEB ch06). An SFL annotation is an attempt to make stance an active symbol: a field the retrieval system can compute over, not a description a human reads. Passive annotation would change nothing.

The system must be described at more than one level, and the levels must be crossable. Any complex system admits multiple valid descriptions, and the choice of level determines which questions are askable (GEB ch10). Token probabilities, clause grammar, register, and genre are four such levels here. Holism and reductionism are complementary, and the ability to move between them is itself the operation being automated (GEB ch10, the Ant Fugue). The related point from GEB ch11 — that a thought is a pattern rather than an object — is why the unit of storage is an annotated clause pattern, not a document.

A second intent: saying literally what the system is

The security argument above is the near-term application. The longer-term intent of this work is narrower and more basic: to describe what a generative language system actually does, in terms that do not smuggle in a mind.

Ordinary talk about these systems runs almost entirely on mental-process verbs. A model reads a document, understands a question, knows a fact, believes something false, hallucinates. In SFL terms, each is ordinarily analyzed as a mental or behavioural process, with a Senser as its participant. Using them is not a stylistic lapse; it is an ideational commitment, made silently thousands of times a day by people who would not defend it if asked directly.

What is actually present is a construct: text generated by conditioning on a context window. That construct is closely analogous to human language production — closely enough to be useful, and closely enough that the analogy is mistaken for identity. The analogy is the interesting part, not an embarrassment to be explained away. Halliday’s grammar describes choices in a meaning potential; a model’s output distribution is a meaning potential of a different provenance, and the two produce comparable surface structures. That correspondence is worth stating precisely rather than gesturing at.

SFL annotation is the instrument for stating it, because its categories are properties of text and commit to nothing behind the text. A clause has a process type. It has a modality value. It has a tenor value. These are measurable in the output without any claim about what produced it. The framing follows Hofstadter’s argument that meaning is distributed across message, decoder, and receiver rather than resident in any one of them, and that the search for absolute, decoder-independent meaning is probably misguided (GEB ch06). The model supplies a message. Locating meaning inside it is a category error that the available vocabulary actively encourages.

The practical payoff is that “hallucination” stops being a mental-process word for a text-level property. Restated ideationally, it names a clause whose participant-process links are unsupported by any retrieved source; restated interpersonally, it names a mismatch between a high modality value and the absence of grounding for the claim it attaches to. Both of those are countable. The mental-process version is not.

This page tries to hold to that discipline in its own prose, including in the authorship note above. Where it fails, the failure is visible, which is the point.

What this buys, concretely

  1. Retrieval that filters on rhetoric, not just topic. Stance becomes a scalar metadata dimension alongside vector similarity and keyword match.
  2. Auditability. Each annotation can carry a reasoning trace — premises, inference rule, conclusion, confidence, hashed for reproducibility.
  3. A safety boundary between claiming and doing. Separating verbal and mental processes (“the agent reports the file is written”) from material processes (“the file was written”) gives the system an explicit gate: it can withhold a completion claim until a material-process check confirms it.
  4. A path to symbolic analysis. Annotated clauses are structured attributes, which makes them tractable for lattice and decision-tree methods over model output rather than embedding-distance heuristics alone.

Open questions

These determine whether the hypothesis holds, and none is settled:

  1. Modality discrimination. Can the LLM annotator reliably distinguish manipulative high modality (“everyone agrees”) from factual high modality (“the log shows”)? If not, a min_modality threshold alone will not exclude social proof.
  2. Adversarial evasion. Can content be crafted that scores high on both tenor and modality while remaining manipulative?
  3. Annotation cost. Pass 2 is LLM-based and per-clause. Whether that is affordable at corpus scale is a performance question the hardening phase must answer.
  4. Annotator agreement. SFL categories are theory-laden; two annotators, human or model, may disagree on process type. The engine needs a measured agreement baseline before its filters can be trusted.

Sources

Theory and framing drawn from working notes in the author’s notebook — Framework: Language as Social Semiotic System, SFL and AI Prompt Design, Semiotic Recursive Design for AI Agents, SFL Theory in Neuro-Symbolic AI, and Integrating SFL, Formal Concept Analysis, and ID3 Decision Trees — and from the rhetorical-firewall reference in the ruby-sfl-nlp-pipeline skill, which documents the attack vectors and mitigations summarized above. Hofstadter citations are to Gödel, Escher, Bach: An Eternal Golden Braid, chapters VI, X, and XI.