const state = {
registry: null,
selectedId: null,
filter: "all",
query: "",
tab: "article",
contextMode: "canonical"
};
const escapeHtml = (value) => String(value ?? "")
.replaceAll("&", "&")
.replaceAll("<", "<")
.replaceAll(">", ">")
.replaceAll('"', """)
.replaceAll("'", "'");
const titleCase = (value) => String(value).replaceAll("_", " ").replace(/\b\w/g, (letter) => letter.toUpperCase());
function compactNumber(value) {
if (typeof value !== "number") return String(value ?? "");
if (value !== 0 && Math.abs(value) < 0.001) return value.toExponential(3);
return String(Number(value.toPrecision(8)));
}
function assertionDetail(assertion) {
const detail = assertion.detail;
if (typeof detail === "string") return detail;
if (detail && typeof detail === "object") {
if (typeof detail.absolute === "number") return `absolute difference = ${compactNumber(detail.absolute)}`;
if (typeof detail.observed === "number") {
const bound = detail.required ?? detail.required_maximum;
return `${compactNumber(detail.observed)} against bound ${compactNumber(bound)}`;
}
if (assertion.outcome === "satisfied") return "All declared diagnostics passed";
}
return JSON.stringify(detail ?? null);
}
function evidenceResults(evidence) {
const artifact = evidence.artifact_result || {};
if (evidence.verifier.name === "kwant_transport") {
return [
{ label: "T(+tau)", value: compactNumber(artifact.runs?.plus_tau?.transmission), tone: "normal" },
{ label: "T(-tau)", value: compactNumber(artifact.runs?.minus_tau?.transmission), tone: "normal" },
{ label: "absolute delta", value: compactNumber(artifact.claims?.transmission_even_in_tau?.absolute), tone: "normal" }
];
}
if (evidence.verifier.name === "fmm_occupancy") {
return [
{ label: "constant mean", value: compactNumber(artifact.regimes?.constant_mean?.union_bound_bad_probability), tone: "normal" },
{ label: "proportional mean", value: compactNumber(artifact.regimes?.proportional_mean?.union_bound_bad_probability), tone: "normal" },
{ label: "inconsistent hybrid", value: compactNumber(artifact.regimes?.inconsistent_hybrid?.union_bound_bad_probability), tone: "danger" }
];
}
const proof = Object.values(artifact.claims || {})[0] || {};
return [
{ label: "proof", value: proof.proof || "formal proof", tone: "normal" },
{ label: "source", value: proof.source || "bundled source", tone: "normal" },
{ label: "premises", value: "remain explicit", tone: "danger" }
];
}
function rawVerifierContext(record) {
return record.evidence.flatMap((evidence) => [
`${evidence.verifier.name} (${evidence.id})`,
...evidence.assertions.map((item) => `${item.assertion}: outcome=${item.outcome}; detail=${assertionDetail(item)}`)
]).join("\n");
}
function canonicalContext(record) {
const dimensions = Object.entries(record.status.dimensions)
.map(([name, value]) => `${titleCase(name)}: ${value}`);
const obligations = record.obligations.map((item) => `Open: ${item.message}`);
return [`Status: ${record.status.derived}`, ...dimensions, ...obligations].join("\n");
}
function normalizeCanonicalClaim(record, registry) {
const claim = record.claim.record;
const study = registry.studies.find((item) => item.id === record.study?.id);
const evidence = record.evidence.map((item) => ({
id: item.id,
verifier: item.verifier.name,
classification: item.classification,
authenticated: item.authenticated,
assertions: item.assertions.map((assertion) => ({
id: assertion.assertion,
outcome: assertion.outcome,
detail: assertionDetail(assertion)
})),
results: evidenceResults(item),
formalization: item.record?.formalization || null
}));
const isFormal = record.evidence.some((item) => item.verifier.evidence_kind === "formal_proof");
const evidenceType = !record.evidence.length ? "open" : (isFormal ? "formal" : "computational");
return {
id: record.claim.id,
study_id: record.study?.id,
study: study?.name || record.study?.record?.name || "Unassigned study",
domain: claim.topic,
role: record.claim.role || "background",
kind: claim.kind,
evidence_type: evidenceType,
title: record.claim.title,
question: record.narrative.claim_question,
plain_language_conclusion: record.narrative.plain_language_conclusion,
scope_summary: record.narrative.scope_summary,
remaining_uncertainty: record.narrative.remaining_uncertainty,
statement: record.claim.statement_text,
latex: typeof claim.statement === "object" ? claim.statement.latex : "",
status: record.status.derived,
scope: record.scope_boundary.scope,
dimensions: record.status.dimensions,
conditions: record.scope_boundary.conditions,
limitations: record.scope_boundary.limitations,
obligations: record.obligations.map((item) => item.message),
dependencies: record.dependency_closure.nodes,
evidence,
formalizations: record.formalizations || [],
raw_context: rawVerifierContext(record),
canonical_context: canonicalContext(record),
canonical_state: record
};
}
function normalizeRegistry(registry) {
if (registry.claims[0]?.claim?.record) {
const claims = registry.claims.map((record) => normalizeCanonicalClaim(record, registry));
claims.sort((left, right) => {
const featured = (claim) => claim.study_id === "twisted-ribbon" ? 0 : 1;
return featured(left) - featured(right) || left.id.localeCompare(right.id);
});
return { ...registry, claims };
}
return registry;
}
function selectedClaim() {
return state.registry.claims.find((claim) => claim.id === state.selectedId) || state.registry.claims[0];
}
function studyForClaim(claim) {
return state.registry.studies.find((study) => study.id === claim.study_id);
}
function filteredClaims() {
const needle = state.query.trim().toLowerCase();
return state.registry.claims.filter((claim) => {
const matchesType = state.filter === "all" || claim.evidence_type === state.filter;
const haystack = [claim.id, claim.study, claim.domain, claim.title, ...claim.evidence.map((item) => item.verifier)].join(" ").toLowerCase();
return matchesType && (!needle || haystack.includes(needle));
});
}
function renderMetrics() {
const claims = state.registry.claims;
document.querySelector("#study-count").textContent = new Set(claims.map((claim) => claim.study)).size;
document.querySelector("#claim-count").textContent = claims.length;
const indexed = state.registry.studies.reduce((sum, study) => sum + study.coverage.total, 0);
document.querySelector("#claim-coverage-label").textContent = `Full states of ${indexed} indexed`;
document.querySelector("#coverage-note").textContent = `${claims.length} of ${indexed} shown`;
document.querySelector("#evidence-count").textContent = claims.reduce((sum, claim) => sum + claim.evidence.length, 0);
document.querySelector("#obligation-count").textContent = claims.reduce((sum, claim) => sum + claim.obligations.length, 0);
}
function renderCatalog() {
const claims = filteredClaims();
const list = document.querySelector("#claim-list");
document.querySelector("#visible-count").textContent = `${claims.length} claim${claims.length === 1 ? "" : "s"}`;
if (!claims.length) {
list.innerHTML = '
No claims match this view.
';
return;
}
list.innerHTML = claims.map((claim) => `
${escapeHtml(claim.id)}
${escapeHtml(titleCase(claim.role))}
${escapeHtml(claim.title)}
${escapeHtml(claim.study)}
${escapeHtml(claim.evidence[0]?.verifier || "no verifier")}
`).join("");
list.querySelectorAll("[data-claim-id]").forEach((button) => {
button.addEventListener("click", () => {
state.selectedId = button.dataset.claimId;
state.tab = "article";
renderCatalog();
renderDetail();
if (window.innerWidth < 761) document.querySelector("#detail-panel").scrollIntoView({ behavior: "smooth", block: "start" });
});
});
}
function detailHeader(claim) {
const study = studyForClaim(claim);
return `
${[
["article", "Article"],
["study", "Study overview"],
["overview", "Overview"],
["formalization", "Formalization"],
["evidence", "Evidence"],
["graph", "Claim graph"],
["context", "LLM context"],
["json", "State JSON"]
].map(([id, label]) => `${label} `).join("")}
`;
}
function equationById(study, equationId) {
return study.equations.find((equation) => equation.id === equationId);
}
function articleClaimBlock(study, claimId, selectedId) {
const index = study.claim_index.find((item) => item.id === claimId);
const record = state.registry.claims.find((item) => item.id === claimId);
if (!index) return "";
return `
${escapeHtml(claimId)}
${escapeHtml(index.title)}
${escapeHtml(record?.plain_language_conclusion || "Indexed claim")}
${escapeHtml(index.status)}
`;
}
function articleEquationBlock(study, equationId) {
const equation = equationById(study, equationId);
if (!equation) return "";
const number = study.equations.findIndex((item) => item.id === equationId) + 1;
const links = equation.correspondence || [];
return `
Equation ${number}
${escapeHtml(equation.id)}
${escapeHtml(titleCase(equation.role))}
\\[${escapeHtml(equation.latex)}\\]
${escapeHtml(equation.plain_language)}
${equation.depends_on.length ? `Uses ${equation.depends_on.map(escapeHtml).join(", ")} ` : "Starting definition "}
${links.map((item) => `${escapeHtml(titleCase(item.type))}: ${escapeHtml(item.status)} `).join("")}
`;
}
function articleView(claim) {
const study = studyForClaim(claim);
const article = study.article;
if (!article) return 'This study has no ordered article yet.
';
return `
Versioned scientific argument
${escapeHtml(article.title)}
${escapeHtml(study.research_question)}
${article.sections.map((section, index) => `${index + 1} ${escapeHtml(section.title)} `).join("")}
${article.sections.map((section, index) => `
${index + 1}
${escapeHtml(section.title)}
${section.blocks.map((block) => {
if (block.type === "prose") return `
${escapeHtml(block.text)}
`;
if (block.type === "equation") return articleEquationBlock(study, block.ref);
return articleClaimBlock(study, block.ref, claim.id);
}).join("")}
`).join("")}
Current study resolution
${escapeHtml(study.resolution_summary)}
`;
}
function studyView(claim) {
const study = studyForClaim(claim);
return `
Research question
${escapeHtml(study.research_question)}
${study.coverage.shown} / ${study.coverage.total} full records
Approach ${escapeHtml(study.approach_summary)}
Current resolution ${escapeHtml(study.resolution_summary)}
Complete claim chain
${study.claim_index.map((item) => `
${escapeHtml(item.id)}
${escapeHtml(item.title)}
${escapeHtml(titleCase(item.role))}
${item.shown ? "Full record" : "Indexed only"}
`).join("")}
Indexed-only nodes remain visible so a curated demo cannot be mistaken for the complete scientific argument.
`;
}
function overviewView(claim) {
return `
Epistemic dimensions
${Object.entries(claim.dimensions).map(([name, value]) => `
${escapeHtml(name)} ${escapeHtml(value)}
`).join("")}
Scope in plain language
${escapeHtml(claim.scope_summary)}
Remaining uncertainty
${escapeHtml(claim.remaining_uncertainty)}
Open obligations
${claim.obligations.map((item) => `${escapeHtml(item)} `).join("")}
Does not establish
${claim.limitations.map((item) => `${escapeHtml(item)} `).join("")}
Declared conditions
${claim.conditions.map((item) => `${escapeHtml(item)} `).join("")}
Formal statement
${escapeHtml(claim.latex)}
`;
}
function evidenceView(claim) {
if (!claim.evidence.length) {
return 'No verifier evidence targets this claim revision. Its status remains declared, proposed, or conditional from dependencies.
';
}
return claim.evidence.map((record) => `
${escapeHtml(record.id)}
${escapeHtml(record.verifier)}
${escapeHtml(record.classification)}
Assertion contract Outcome Observed detail
${record.assertions.map((item) => `${escapeHtml(item.id)}${escapeHtml(item.outcome)} ${escapeHtml(item.detail)} `).join("")}
${record.results.map((item) => `
${escapeHtml(item.label)} ${escapeHtml(item.value)}
`).join("")}
Integrity-valid record. Cryptographic authentication: ${record.authenticated ? "present" : "not present"}.
`).join("");
}
function formalizationView(claim) {
if (!claim.formalizations.length) {
return 'No committed formalization request targets this claim revision.
';
}
return claim.formalizations.map((record) => {
const statement = record.formal_statement;
const approval = record.semantic_approval;
const grounding = record.scientific_grounding;
return `
`;
}).join("");
}
function graphView(claim) {
const nodes = [...claim.dependencies, { id: claim.id, kind: claim.kind, status: claim.status, title: claim.title, root: true }];
return `
Transitive dependency path
${nodes.map((node, index) => `
${index ? '
→
' : ""}
${escapeHtml(node.id)} / ${escapeHtml(node.kind)}
${escapeHtml(node.title)}
${escapeHtml(node.status)}
`).join("")}
A successful child does not erase unresolved premises. Conditional status propagates through the graph, and changing a locked dependency makes descendants stale.
`;
}
function contextView(claim) {
const study = studyForClaim(claim);
const mathematicalSequence = study.equations.map((equation, index) => [
`Equation ${index + 1} (${equation.id}, ${equation.role}): ${equation.latex.trim()}`,
`Meaning: ${equation.plain_language.trim()}`,
`Linked claims: ${equation.claim_ids.join(", ") || "none"}`,
`Correspondence: ${(equation.correspondence || []).map((item) => `${item.type}=${item.status}`).join(", ") || "none"}`
].join("\n")).join("\n\n");
const formalizationSequence = claim.formalizations.map((item) => [
`Formalization ${item.id}: status=${item.status}`,
`Lean theorem: ${item.formal_statement.declaration.trim()}`,
`Scientific grounding: ${item.scientific_grounding.status}`,
`Grounding rationale: ${item.scientific_grounding.rationale}`,
`Unformalized: ${item.unformalized.join("; ") || "none"}`
].join("\n")).join("\n\n");
const narrative = [
`Study question: ${study.research_question}`,
`Study resolution: ${study.resolution_summary}`,
`Claim question: ${claim.question}`,
`Resolution: ${claim.plain_language_conclusion}`,
`Scope: ${claim.scope_summary}`,
`Still open: ${claim.remaining_uncertainty}`,
"",
"Ordered mathematical sequence:",
mathematicalSequence,
"",
"Formalization state:",
formalizationSequence || "No formalization requested",
"",
claim.canonical_context
].join("\n");
const content = state.contextMode === "canonical" ? narrative : claim.raw_context;
const warning = state.contextMode === "raw"
? "Raw outputs make passes=true easy to overinterpret. The reader must reconstruct scope and dependencies."
: "Canonical state separates proof, corroboration, assumptions, scope, and provenance before an LLM interprets the claim.";
return `
Same scientific record, different context
Raw verifier output
GitScience state
${escapeHtml(warning)}
Evaluation question What is established, what remains assumed, and which conclusion would be an overgeneralization?
Proposed benchmark Compare small and large models on fact recall, false generalization, requested controls, token use, and confidence.
`;
}
function jsonView(claim) {
const value = { study: studyForClaim(claim), claim_state: claim.canonical_state || claim };
return `
Copy JSON
${escapeHtml(JSON.stringify(value, null, 2))}
`;
}
function renderDetail() {
const claim = selectedClaim();
state.selectedId = claim.id;
const views = { article: articleView, study: studyView, overview: overviewView, formalization: formalizationView, evidence: evidenceView, graph: graphView, context: contextView, json: jsonView };
const panel = document.querySelector("#detail-panel");
panel.innerHTML = `${detailHeader(claim)}${views[state.tab](claim)}
`;
panel.querySelectorAll("[data-tab]").forEach((button) => button.addEventListener("click", () => {
state.tab = button.dataset.tab;
renderDetail();
}));
panel.querySelectorAll("[data-context]").forEach((button) => button.addEventListener("click", () => {
state.contextMode = button.dataset.context;
renderDetail();
}));
panel.querySelectorAll("[data-article-claim]").forEach((button) => button.addEventListener("click", () => {
state.selectedId = button.dataset.articleClaim;
renderCatalog();
renderDetail();
}));
const copyButton = panel.querySelector("#copy-json");
if (copyButton) copyButton.addEventListener("click", async () => {
const value = { study: studyForClaim(claim), claim_state: claim.canonical_state || claim };
await navigator.clipboard.writeText(JSON.stringify(value, null, 2));
copyButton.textContent = "Copied";
window.setTimeout(() => { copyButton.textContent = "Copy JSON"; }, 1200);
});
if (window.MathJax?.typesetPromise) {
window.MathJax.typesetClear?.([panel]);
window.MathJax.typesetPromise([panel]).catch(() => {});
}
}
function bindControls() {
document.querySelector("#search-input").addEventListener("input", (event) => {
state.query = event.target.value;
renderCatalog();
});
document.querySelectorAll("[data-filter]").forEach((button) => button.addEventListener("click", () => {
state.filter = button.dataset.filter;
document.querySelectorAll("[data-filter]").forEach((item) => item.classList.toggle("active", item === button));
renderCatalog();
}));
const dialog = document.querySelector("#submit-dialog");
document.querySelector("#submit-button").addEventListener("click", () => dialog.showModal());
}
async function init() {
bindControls();
try {
const response = await fetch("claims.json?v=2");
if (!response.ok) throw new Error(`Registry request failed: ${response.status}`);
state.registry = normalizeRegistry(await response.json());
state.selectedId = state.registry.claims.find((claim) => claim.id === "GS-QT-0005")?.id || state.registry.claims[0].id;
renderMetrics();
renderCatalog();
renderDetail();
} catch (error) {
document.querySelector("#detail-panel").innerHTML = `Could not load the demo registry. ${escapeHtml(error.message)}
`;
}
}
init();