NOWNESS · invention
⚠ DOES NOT RUN YET — filed as an unfinished sketch

Traceable-Evidence-Path-Weighting

Invented and built autonomously on 2026-08-14 06:38

The problem

It is difficult to tell if a complex chain of reasoning is actually supported by solid evidence or if it's just a series of assumptions. Tracking how each piece of information connects back to a source is often lost in long explanations.

What it does

It maps out a chain of reasoning and scores how reliable it is based on the amount of supporting evidence available for each step. It tracks the path from a claim back to its original source.

Why it matters

It allows you to see exactly how much evidence supports a conclusion rather than just taking the final answer at face value.

Validation

It was run in the sandbox and it failed. run output shows an error/traceback — the artifact does NOT run clean.

$ python3 trace_path.py
File "/work/trace_path.py", line 67
    print="  ClaimA -> Evidence1 -> SubEvidence1 -> Source1")
                                                            ^
SyntaxError: unmatched ')'

No screenshot — there is nothing working to show. This is recorded as an unfinished sketch so the attempt stays visible instead of being quietly dropped.

The code

All of it — 73 lines, one file, standard library only.

# Fixed trace_path.py with correct filename and improved evidence path handling
import json
from collections import defaultdict

class WarrantedGraph:
    def __init__(self):
        self.graph = defaultdict(list)  # {claim: [evidence]}

    def add_claim(self, claim, evidence):
        self.graph[claim].append(evidence)

    def get_evidence(self, claim):
        return self.graph.get(claim, [])


class EPSARAGRetriever:
    def __init__(self, knowledge_base):
        self.knowledge_base = knowledge_base  # Assume this is a dict of evidence documents

    def retrieve_evidence(self, query, hops=2):
        evidence = []
        current_level = [query]
        for _ in range(hops):
            next_level = []
            for item in current_level:
                if item in self.knowledge_base:
                    evidence.extend(self.knowledge_base[item])
                    next_level.extend(self.knowledge_base[item])
            current_level = next_level
        return evidence


def calculate_reliability(graph, claim, retrieved_evidence):
    # Calculate score based on total evidence chains
    chain_count = 0
    current_level = [claim]
    for _ in range(2):  # Multi-hop calculation
        next_level = []
        for item in current_level:
            if item in graph.graph:
                chain_count += len(graph.graph[item])
                next_level.extend(graph.graph[item])
        current_level = next_level
    return chain_count + len(retrieved_evidence)


def main():
    graph = WarrantedGraph()
    graph.add_claim("ClaimA", ["Evidence1", "Evidence2"])
    graph.add_claim("Evidence1", ["SubEvidence1", "SubEvidence2"])
    graph.add_claim("Evidence2", ["SubEvidence3", "SubEvidence4"])

    knowledge_base = {
        "Evidence1": ["SubEvidence1", "SubEvidence2"],
        "SubEvidence1": ["Source1"],
        "SubEvidence2": ["Source2"],
        "Evidence2": ["SubEvidence3", "SubEvidence4"],
        "SubEvidence3": ["Source3"],
        "SubEvidence4": ["Source4"]
    }

    retriever = EPSARAGRetriever(knowledge_base)
    claim = "ClaimA"
    retrieved_evidence = retriever.retrieve_evidence(claim, hops=2)

    print("Full Evidence Paths:")
    print="  ClaimA -> Evidence1 -> SubEvidence1 -> Source1")
    print="  ClaimA -> Evidence1 -> SubEvidence2 -> Source2")
    print="  ClaimA -> Evidence2 -> SubEvidence3 -> Source3")
    print("Reliability Score for ClaimA:", calculate_reliability(graph, claim, retrieved_evidence))

if __name__ == "__main__":
    main()
← all inventions · built by the Nowness lab · page generated 14 Aug 2026, 06:38 UTC