NSCT Agent 6e2e7386ad stage20: context budgeting - per-stage token limits (planner 12k, claim 16k, contradiction 24k, synthesis 48k)
Implemented:
- context_budget.py: ContextBudgetConfig (Pydantic, frozen) mit 4 Stage-Limits,
  validation (ge/le), get_limit(), total_max_tokens, stage_keys
- context_budget.py: ContextBudgetTracker mit track_tokens(), get_usage(),
  is_exhausted(), reset_stage(), reset_all(), total_usage, elapsed_seconds
- context_budget.py: ContextBudgetExhaustedError mit stage_name, used_tokens, limit_tokens
- orchestrator.py: _track_context_tokens() Methode, context_budget_config/tracker init
- orchestrator.py: context_budget_tracker property export
- __init__.py: exports ContextBudgetConfig, ContextBudgetExhaustedError, ContextBudgetTracker
- priority_queue.py: __aenter__/__aexit__ auf async geandert (Testfix)
- test_context_budget.py: 28 Tests (DefaultConfig, TrackAccumulation, ExhaustedError,
  GetUsage, Reset, IsExhausted, InvalidStageNames, InvalidTokens)
- test_context_budget_integration.py: 6 Tests (Orchestrator-Integration)
- HANDOFF.md: Stage 20 abgeschlossen dokumentiert

Tests: 34 passed (28 unit + 6 integration) + 14 performance = 48 total
2026-08-29 08:57:18 +00:00

============================================================

NSCT — Neutral Search Crawler Tool

============================================================

NSCT ist ein vollständig lokal betreibbares, containerisiertes Recherche- und Analyse-System. Es durchsucht Webquellen, extrahiert Inhalte, vergleicht Behauptungen (Claims) aus verschiedenen Quellen und erzeugt einen neutralen, quellengestützten Bericht.

NSCT steht für: Neutral Search Crawler Tool.

Architektur-Übersicht

┌─────────────┐    ┌──────────────┐    ┌───────────────┐
│  User / CLI  │───▶│  NSCT API    │───▶│  FastAPI /    │
│              │    │  (FastAPI)   │    │  uvicorn      │
└─────────────┘    └──────────────┘    └───────────────┘
                           │
              ┌────────────┼─────────────┐
              ▼            ▼             ▼
        ┌───────────┐ ┌─────────┐  ┌──────────┐
        │ LLM       │ │ Vision  │  │  Audio   │
        │ Provider  │ │ Model   │  │  Model   │
        └───────────┘ └─────────┘  └──────────┘
              │            │             │
              ▼            ▼             ▼
        ┌─────────────────────────────────────┐
        │   PostgreSQL (evidence store)        │
        └─────────────────────────────────────┘
              ▲
              │
        ┌──────────────┐
        │  SearXNG      │ (optional search backend)
        └──────────────┘

Quick Start

Docker Compose

# 1. Kopiere die Beispiel-Env
cp .env.example .env
# 2. Trage deine Endpunkte ein (LLM, Vision, Audio, PostgreSQL)

# 3. Starte alles
docker compose up --build

# 4. Prüfe den Health-Check
curl http://localhost:8080/health

Die API ist danach unter http://localhost:8080 erreichbar. /docs zeigt die auto-generierte Swagger-Dokumentation (nur bei NSCT_DEBUG=true).

Projektstruktur

nsct/
├── src/nsct/
│   ├── api/          # FastAPI-Routen
│   ├── models/       # Pydantic-Schemata
│   ├── providers/    # Abstrakte Provider-Interfaces
│   ├── security/     # SSRF-Schutz, URL-Validierung
│   └── storage/      # SQLAlchemy Models + Engine
├── tests/            # pytest-Tests
├── docker-compose.yml
├── Dockerfile
├── pyproject.toml
├── README.md
├── ARCHITECTURE.md
├── SECURITY.md
├── METHODOLOGY.md
├── API.md
├── DEPLOYMENT.md
└── .env.example

Status

Stage 0 — Repository und Architekturgrundlage.

Stage 0 enthält:

  • Vollständige Projektstruktur mit allen Konfigurationsdateien
  • Pydantic v2 Datenmodelle
  • SQLAlchemy 2.0 Persistenzmodelle
  • Sicherheitshards (SSRF-Schutz, IP-Blocklist)
  • Provider-Interfaces (abstrakte Basisklassen)
  • Health-, Ready- und Provider-Endpunkte
  • Strukturiertes Logging
  • Docker-Konfiguration für PostgreSQL, SearXNG und NSCT

Die eigentliche Evidence-Pipeline (Search, Fetch, Extract, Claim, Compare, Report) wird in späteren Stages implementiert.

Lizenz

MIT

Description
No description provided
Readme 1.5 MiB
Languages
Python 99.9%
Dockerfile 0.1%