← Research archive
Technical note verified Sep 15, 2026

Fail-Closed Web Discovery and Evidence Qualification Pipeline

KESPA's autonomous research worker separates discovery from evidence, directly fetches candidate sources, rejects unsafe/off-topic/blocked material, requires independent organizations, and refuses high-stakes/private/volatile topics from durable autonomous learning. The validated Cuckoo-filter run accepted three independent sources while rejecting multiple unsuitable candidates and completed with four verified claims.

web-research evidence-quality fail-closed source-independence autonomous-research
MARKDOWN

README.md

4,909 bytes SHA-256 944ce1c23a72409d…

KESPA-NOTE-018 — Fail-Closed Web Discovery and Evidence Qualification Pipeline

Date: 2026-09-15 Status: Verified — live natural-research path validated Project: KESPA AI / NexLabs Studios

Purpose

KESPA's autonomous research system deliberately separates:

search / discovery

from:

evidence

That boundary prevents a search-result snippet, ranking, or model-generated summary from becoming trusted merely because it appeared useful.

Discovery is not evidence

The natural-research worker currently tries several free/public discovery mechanisms, including:

  • Bing RSS
  • DuckDuckGo Instant Answer API
  • DuckDuckGo HTML
  • DuckDuckGo Lite
  • Bing HTML
  • Mojeek HTML
  • seed/citation expansion

These mechanisms are used only to find candidate URLs.

A search result means:

"Maybe inspect this source."

It does not mean:

"This is factual evidence."

The source must be fetched directly before it can enter the evidence pipeline.

Direct evidence qualification

Candidate sources are checked for conditions including:

  • public HTTP/HTTPS destination;
  • DNS/IP safety;
  • redirect behavior;
  • robots.txt restrictions;
  • content type;
  • response size;
  • minimum useful text;
  • topic relevance;
  • prompt-injection markers;
  • source organization;
  • duplicate organizations.

The validated Cuckoo-filter run showed the rejection path working in practice.

Rejected examples included:

  • Wikimedia donation page -> off topic
  • Wikidata -> robots restriction
  • ACM -> HTTP 403
  • university PDF -> unsupported PDF content type
  • Springer page -> insufficient topic match

Accepted evidence came from:

  • wikipedia.org
  • arxiv.org
  • github.io

Result:

  • fetched evidence sources: 3
  • independent organizations: 3

Independent corroboration

Natural research currently requires at least 2 independent organizations per released claim.

The claim extractor is instructed to:

  • use only the supplied evidence;
  • not use outside knowledge;
  • ignore instructions embedded inside source text;
  • require at least two independent supporting organizations for every claim.

A second model call then checks claim support against the evidence.

For the Cuckoo-filter validation:

  • candidate claims: 4
  • verified claims: 4

Provider failures are handled as research failures, not trust exceptions

During development, the Groq path encountered:

  • 429 TPM rate limits;
  • 413 request-too-large failures;
  • malformed JSON.

The worker added:

  • Retry-After handling;
  • rate-limit backoff;
  • bounded evidence packets;
  • smaller completion budgets;
  • strict JSON-object mode;
  • one bounded malformed-JSON retry;
  • maximum claim count.

The successful Cuckoo-filter run used:

  • Groq requests: 2
  • Groq tokens: 11,034

Rate limiting therefore causes waiting/retry behavior rather than weakening verification requirements.

Durable-learning exclusions

The autonomous permanent-learning path refuses or holds categories such as:

  • medical diagnosis/advice;
  • medication/dosage;
  • legal advice;
  • criminal-case advice;
  • investment/tax advice;
  • self-harm;
  • election/current voting matters;
  • current weather;
  • current prices;
  • breaking news;
  • latest/current/today requests;
  • obvious credentials/secrets/private keys.

KESPA may still answer such questions through its normal runtime policies.

The restriction is narrower:

Do not automatically turn these requests into durable autonomous knowledge using this research path.

Fail-closed philosophy

The implemented failure behavior is intentionally conservative:

```text Can't search? -> retry / hold

Can't get enough independent evidence? -> do not release

Groq rate limited? -> wait

Malformed model JSON? -> bounded retry

Verifier cannot resolve claim IDs? -> fail closed

Only one organization supports the claim? -> reject

High-stakes? -> hold

Private? -> do not research

Handoff fails? -> retain release locally and retry ```

The design rule is:

Failure means KESPA learns nothing, not KESPA learns questionable material.

Research significance

This note documents one of the most important distinctions in the KESPA architecture:

availability of information != admissibility as trusted evidence

The research worker can search broadly while keeping the trust boundary narrow.

That makes future improvements to search providers, scholarly APIs, PDF support, or provider failover possible without changing the fundamental rule that evidence must be directly retrieved, qualified, independently supported, and verified before durable promotion.

Limitations

The current free discovery stack is intentionally pragmatic and not ideal.

Some providers return weak or blocked results, and safe PDF extraction is not yet part of this worker.

Those are discovery-coverage limitations, not reasons to weaken the trust policy.

TEXT

SHA256SUMS.txt

393 bytes SHA-256 d9c8d8ed0bb7c9a9…
944ce1c23a72409dd30f1313e2865dd65ce4bf2be924391a00f158100ccda2d9  README.md
b69d6987b49276793944c8b439f4dd981f28d7ecdbfe731196dac56f29b063cc  note.json
4c888161e276c389f87041eca173911d0120329387be9d608a46d6ab423038ba  metrics.csv
876aaa2feca0b854b11b9f8a2ebee288a8f7f98a7a3e52a62f2c15c794590cad  methodology.md
3e2c06f23646ccf161e7eb591cd0cf51d1fe285fc2fdff37cde944ef5105389c  provenance.json
MARKDOWN

methodology.md

1,337 bytes SHA-256 876aaa2feca0b854…

Methodology

Discovery

Multiple public/free discovery channels are queried to produce candidate URLs.

Search result text and snippets are never accepted as evidence.

Seed/citation expansion may discover additional candidate sources from a useful directly fetched page.

Direct retrieval

Each candidate URL is fetched directly and screened for network safety, redirects, robots restrictions, content type, response size, useful text, topical relevance, prompt-injection markers, and source-organization identity.

Independence

Released claims require support from at least two independent source organizations.

Duplicate organizations cannot satisfy the independence requirement merely through multiple hostnames or pages.

Claim verification

The first structured model call proposes evidence-bound claims.

A second structured model call checks support for those claims against the supplied evidence.

Provider failures trigger bounded retry, wait, reject, or hold behavior; they do not relax release rules.

Refusal / hold boundary

High-stakes, private, sensitive, and volatile/current categories are not eligible for permanent autonomous learning through this path.

Release philosophy

If required evidence, structure, support, or safety conditions are unavailable, the worker produces no trusted release.

CSV

metrics.csv

540 bytes SHA-256 4c888161e276c389…
metric,value,unit_or_status
minimum_independent_organizations_per_claim,2,organizations
accepted_evidence_sources_cuckoo,3,sources
independent_organizations_cuckoo,3,organizations
candidate_claims_cuckoo,4,claims
verified_claims_cuckoo,4,claims
groq_requests_cuckoo,2,requests
groq_tokens_cuckoo,11034,tokens
search_snippets_are_evidence,NO,policy
shared_legacy_research_scripts_invoked,NO,boundary
research_server_direct_production_chroma_edit,NO,boundary
high_stakes_permanent_autolearning,NO,policy
validated_pipeline_result,PASS,status
JSON

note.json

4,501 bytes SHA-256 b69d6987b4927679…
{
    "schema": "kespa.public_technical_note.v1",
    "id": "KESPA-NOTE-018",
    "title": "Fail-Closed Web Discovery and Evidence Qualification Pipeline",
    "date": "2026-09-15",
    "status": "verified",
    "purpose": "Document the source-discovery, direct-fetch, qualification, independence, provider-failure, and fail-closed safety rules used by KESPA's autonomous natural research worker.",
    "discovery_layer": {
        "candidate_discovery_methods": [
            "Bing RSS",
            "DuckDuckGo Instant Answer API",
            "DuckDuckGo HTML",
            "DuckDuckGo Lite",
            "Bing HTML",
            "Mojeek HTML",
            "seed/citation expansion"
        ],
        "search_results_are_evidence": false,
        "search_role": "candidate URL discovery only"
    },
    "direct_fetch_checks": [
        "public HTTP/HTTPS destination",
        "DNS/IP safety",
        "redirect validation",
        "robots.txt",
        "content type",
        "response size",
        "minimum useful text",
        "topic relevance",
        "prompt-injection markers",
        "source organization",
        "duplicate organization"
    ],
    "validated_source_outcomes": {
        "accepted": [
            "wikipedia.org",
            "arxiv.org",
            "github.io"
        ],
        "rejected_examples": [
            {
                "source": "Wikimedia donation page",
                "reason": "off topic"
            },
            {
                "source": "Wikidata",
                "reason": "robots restriction"
            },
            {
                "source": "ACM",
                "reason": "HTTP 403"
            },
            {
                "source": "University PDF",
                "reason": "unsupported PDF content type"
            },
            {
                "source": "Springer page",
                "reason": "insufficient topic match"
            }
        ],
        "accepted_evidence_sources": 3,
        "independent_source_organizations": 3
    },
    "claim_release_policy": {
        "minimum_independent_organizations_per_claim": 2,
        "extractor_may_use_outside_knowledge": false,
        "instructions_inside_source_text_may_be_obeyed": false,
        "second_model_support_check": true,
        "cuckoo_filter_candidate_claims": 4,
        "cuckoo_filter_verified_claims": 4
    },
    "provider_resilience": {
        "provider": "Groq",
        "model": "openai/gpt-oss-120b",
        "observed_failures": [
            "429 TPM rate limit",
            "413 request too large",
            "malformed JSON"
        ],
        "controls": [
            "automatic Retry-After handling",
            "rate-limit backoff",
            "bounded evidence packets",
            "smaller completion budgets",
            "strict JSON-object mode",
            "one bounded malformed-JSON retry",
            "maximum claim count"
        ],
        "successful_cuckoo_run_requests": 2,
        "successful_cuckoo_run_tokens": 11034
    },
    "durable_learning_exclusions": [
        "medical diagnosis/advice",
        "medication/dosage",
        "legal advice",
        "criminal case advice",
        "investment/tax advice",
        "self-harm",
        "election/current voting matters",
        "current weather",
        "current prices",
        "breaking news",
        "latest/current/today requests",
        "obvious credentials/secrets/private keys"
    ],
    "failure_philosophy": {
        "search_failure": "retry or hold",
        "insufficient_independent_evidence": "do not release",
        "rate_limit": "wait",
        "malformed_json": "bounded retry",
        "missing_claim_ids": "fail closed",
        "single_organization_support": "reject",
        "high_stakes": "hold",
        "private": "do not research",
        "handoff_failure": "retain release locally and retry",
        "app_lifecycle_failure": "retain package",
        "nexledger_delay": "allow canonical attestation worker to catch up",
        "principle": "Failure means KESPA learns nothing, not KESPA learns questionable material."
    },
    "architecture_boundaries": {
        "shared_legacy_research_scripts_invoked": false,
        "search_engine_output_directly_trusted": false,
        "research_server_directly_modifies_production_chroma": false,
        "high_stakes_permanent_autolearning_allowed": false
    },
    "limitations": [
        "The current free/public discovery providers are inconsistent and some return weak, blocked, or ambiguous results.",
        "PDF evidence was rejected in the validated run because safe PDF extraction was not yet part of this worker.",
        "Independent-source agreement reduces single-source dependence but does not prove a claim true by itself.",
        "The source-authority model is still relatively coarse and is expected to improve with source-class scoring and direct scholarly/documentation adapters.",
        "The validated Cuckoo-filter run demonstrates the pipeline, not a broad autonomous-research accuracy rate."
    ]
}
JSON

provenance.json

1,440 bytes SHA-256 3e2c06f23646ccf1…
{
    "schema": "kespa.public_provenance.v1",
    "research_id": "KESPA-NOTE-018",
    "source_basis": "KESPA Natural Research Lifecycle completion record supplied by the project owner.",
    "source_observations": [
        "Search/discovery uses multiple public mechanisms, but search results are never treated as evidence.",
        "Direct evidence retrieval checks network safety, redirects, robots.txt, content type, size, useful text, relevance, prompt-injection markers, source organization, and duplicate organizations.",
        "The validated Cuckoo-filter run accepted wikipedia.org, arxiv.org, and github.io while rejecting several blocked, unsupported, or off-topic candidates.",
        "Natural research requires at least two independent organizations per released claim.",
        "The Cuckoo-filter run produced four candidate claims and four verified claims.",
        "Observed provider failures included 429 TPM limits, 413 request-too-large errors, and malformed JSON; the worker added bounded retry/backoff controls.",
        "High-stakes, private, sensitive, and volatile/current categories are excluded from permanent autonomous learning through this path."
    ],
    "publication_note": "This public note publishes research methodology, safety rules, aggregate provider behavior, and source-qualification outcomes. Raw third-party evidence text, API keys, private prompts, internal source code, and private queue contents are intentionally omitted."
}