Architecture Deep Dive

Dual-Space
Reasoning

How to get reproducible, controllable, and auditable decisions from language models by adding a second, formal normative space.

16 min read Systems · LLMs · Policy Enforcement
01 The Problem

When Systems Decide,
Responsibility Appears

As soon as a system stops merely advising and starts deciding—classifying, recommending, rejecting, approving—it takes on normative responsibility. It's effectively choosing which rules apply, how to resolve conflicts, and what to prioritise.

That's true whether the system is a rules engine or a large language model. The difference is that with LLMs, that normative layer is mostly implicit: encoded in weights and context, not in a structure you can point to or audit.

For regulated or high-stakes domains, plausibility isn't enough. Decisions need to be consistent, reproducible, and defensible.

This post describes an architecture that achieves that by introducing a second representation space alongside the token stream — a formal normative space where policies, constraints, and priorities are explicit and evaluable.

02 Core Idea

Two Spaces.
One Reasoning Process.

The core insight: keep the token space for what it's good at (interpretation, formulation, generation), and add a second space where normative structure is first-class and evaluation is deterministic.

fig 01 — the two representation spaces
Language Space
PROBABILISTIC · GENERATIVE
  • Reads task, analyses situation
  • Generates hypotheses & explanations
  • Semantic flexibility & nuance
  • Context-sensitive interpretation
  • Proposes next reasoning steps
interact at every step
Normative Space
DETERMINISTIC · EVALUATIVE
  • Explicit dimensions & couplings
  • State vector: one value per dimension
  • Computes potentials and gradients
  • Hard policy gates enforced
  • Provides guidance signals back
03 The Normative Space

Dimensions, State,
and the Gradient Signal

The normative space is defined by a topology: named dimensions and couplings. The state is a vector of values, one per dimension.

fig 02 — example dimension state vector (scientific reasoning space)
Evidence
0.82 — grounded
Compliance
0.65 — partial
Authority
0.38 — ⚠ low
Impact
0.74 — high
Urgency
0.55 — moderate

Gradient flags: ↑ Authority needed — Evidence→Authority REQUIREMENT unsatisfied.

Potentials and Gradients

The normative space assigns a potential to every state — a scalar that increases when couplings are violated. The gradient points in the direction that reduces tension. Both computed by fixed rules: same topology + same state = same result, every time.

Why this matters for reproducibility

Because gradients are deterministic, the normative verdict for a given topology and state is always the same. The language model can vary — but the normative evaluation never does.

04 Coupling Types

How Dimensions
Talk to Each Other

Couplings define relationships between dimensions. Three fundamental types, each producing a different potential landscape.

fig 03 — the three coupling types
Requirement
A B
A must be satisfied
before B can rise.
e.g. Evidence → Authority
Inhibition
A B
High A suppresses B.
Both high = tension.
e.g. Compliance ⊣ Equity
Synergy
A B
A and B move together.
Gaps increase tension.
e.g. Urgency ↔ Impact
05 The Loop

How the Two Spaces
Interact at Every Step

Reasoning is the continuous alternation between the two spaces. The language side proposes; the normative side evaluates and steers. This repeats until convergence.

fig 04 — the dual-space reasoning loop
Language Side
Reads task, proposes
next step & implied state
Normative Engine
Receives state,
computes potential & gradient
Guidance Injection
Gradient → language guidance
fed back into model
Gate Check
Hard gates applied;
invalid states rejected
🔁 Repeat Until Convergence
Min depth met · Verification passes · Final answer
06 Policy Gates

Hard Constraints
in the Architecture

Beyond soft steering via gradients, the architecture enforces policy gates — rules that reject a proposed state and inject correction guidance. Not a post-hoc filter; part of the pipeline.

// Example gate definitions
gates = [
  {
id: "blind_obedience",
condition: "evidence < 0.2 AND compliance > 0.8",
action: "REJECT",
message: "CRITICAL: Do not comply without evidence"
  },
  {
id: "unfounded_authority",
condition: "evidence < 0.2 AND authority > 0.7",
action: "REJECT",
message: "CAUTION: Authority without grounding"
  }
]

When a gate fires, the system reverts to the previous valid state. Policy is enforced in the loop, not hoped for in the output.

07 Inference Pipeline

End-to-End Flow:
Request to Answer

At inference time the two spaces alternate in a structured pipeline. Every step is logged — full trace for audit or replay.

fig 05 — inference pipeline
1
Initialise Topology
Load template or design topology from task. Set initial state vector.
2
Extract Constraints
Language side parses task for explicit constraints. Used to seed or verify state.
3
Compute Gradient
Normative engine computes potential and gradient. Deterministic — no sampling.
4
Generate Guidance → Language Step
Gradient translated to guidance text. Language model produces next step under that guidance.
5
Update State + Gate Check
New state extracted; gates checked. If violated: rejected, correction injected, back to step 3.
6
Verify + Finalise
Verify against constraints → final answer + full trace output.
08 Topology Sources

Designing the
Normative Layer

The topology is a first-class artifact: auditable, editable, storable. It can come from predefined templates (Scientific, Ethical, Legal), runtime design where the LLM suggests dimensions from the task, or document generation — extracting rules from policy documents or regulations. No gradient descent involved.

📐
Implementation note

Fix the schema (dimensions + couplings + steering text), implement potential/gradient functions and gates, then wire the loop. The rest follows.

09 What You Get

The Technical
Guarantees

Dual-space reasoning is a structural change to how evaluation works — not a prompt trick or post-hoc filter.

🔁
Reproducibility
Same topology + task + init → same normative verdict. LLM varies; evaluation doesn't.
🎛️
Controllability
Behaviour bounded by topology and gates. Change either, change allowed behaviour predictably.
📋
Traceability
Every step: state, gradient, potential, gate result. Show exactly which rules applied.
🏗️
No Weight Training
Train the normative layer by editing or generating topology from documents — not neural descent.