robbond 2e20d30890 correction: delegate hasNodeLevelUserSupport to rawAnswerSupportsUnclassifiedMeaning
v0.15 duplicated the overlap helper logic in hasNodeLevelUserSupport with
reversed argument orientation (unknownText as source, userSupportedMeaning
as candidate) compared to rawAnswerSupportsUnclassifiedMeaning (USM as
source, unknownText as candidate). This produced different accept/reject
outcomes when the two texts have very different token counts.

The fix replaces the independent reconstruction with a single call to the
canonical helper, ensuring node-level and answer-meaning alignment use
identical semantics. Four boundary regression tests verify:

- Boundary A: overlap ratio < 0.4 but >= 3 shared tokens → accept (token rule)
- Boundary B: short candidate / long source accepted via structural linkage
- Boundary B control: unrelated unknown rejected with no structural edge
- Boundary C: ratio exactly at 0.4 threshold accepts via ratio rule
2026-08-10 20:09:39 +01:00

Confidence Engine

An experimental prototype that tests whether an LLM can build and maintain an evidence-based reconstruction of a situation over multiple turns.

Purpose

This is Milestone 1 — a technical vertical slice only. It demonstrates:

  • Sending a scenario to a local Ollama model via a Next.js server route
  • Receiving structured JSON output
  • Validating the result with Zod schemas
  • Displaying the reconstruction and diagnostic information in a plain UI

Prerequisites

  • Node.js 18+ (LTS recommended)
  • npm (or equivalent package manager)
  • Ollama installed and running on your local network, with a model pulled (e.g., ollama pull llama3)

Installation

cd confidence-engine
npm install
cp .env.example .env.local

Edit .env.local and set:

  • OLLAMA_BASE_URL — your Ollama server address (e.g., http://192.168.1.100:11434)
  • OLLAMA_MODEL — the model name (e.g., llama3)

Development Commands

npm run dev        # Start development server on localhost:3000
npm run build      # Production build
npm run start      # Run production server
npm run lint       # ESLint check

Testing Commands

npm test           # Run all tests (one-shot)
npm run test:watch # Run tests in watch mode

Tests mock the Ollama network request. No real Ollama server is needed to run them.

Verifying Ollama Connectivity

  1. Start the dev server: npm run dev
  2. Open http://localhost:3000/api/health
  3. You should see JSON with "reachable": true and your model name

Current Limitations

  • Single-turn only — no conversation memory or multi-turn dialogue
  • No persistence — results are not saved between requests
  • Ollama only — the provider abstraction exists but only Ollama is implemented
  • JSON mode reliance — output quality depends on the model's ability to produce valid structured JSON
  • No question generation — no follow-up questions or uncertainty resolution yet
  • No real-time streaming — waits for full response before displaying results
  • Plain UI — no animations, theming, or responsive polish beyond basic layout

Deliberately Not Implemented

  • Authentication / user accounts
  • Billing / rate limiting
  • Database or file storage
  • Vector databases or embeddings
  • Deployment configuration (Docker, Vercel, etc.)
  • External cloud LLM providers (OpenAI, Anthropic, etc.)
  • Agent frameworks or tool use
  • Complex state management (Zustand, Redux, etc.)
  • Multi-turn conversation history
  • Question generation or ranking

Architecture Notes

The application uses a provider abstraction in lib/llm/provider.js. The server routes call the provider, which hides the Ollama-specific implementation. To add a new provider, implement the same interface:

{
  generateReconstruction(scenario, modelName): Promise<Reconstruction>
}
```READMEEOF
S
Description
No description provided
Readme
5.4 MiB
Languages
JavaScript 99.8%
CSS 0.1%