Kompl epistemic report
Type: agentic-system-analyses/types/agentic-system-epistemic-report.md
Source-and-claim boundary
This report asks what Kompl acquires, transforms, checks and licenses for later reliance. It adopts the whole-system scope and exclusions in the boundary, and cites its Source register rather than reproducing it. All additional reads below are SRC-1 implementation or doctrine/design at the registered commit; checkout HEAD was checked against that commit. No target execution was performed.
The operative distinction is between installing a page and accepting its claims against evidence. The inspected routes implement the former. Prompts request faithful extraction, attribution and grounding; those requests are not results of evidence-consuming acceptance. Public knowledge/compounding claims are EPI-CLM-compiled-knowledge, EPI-CLM-source-attribution, and EPI-CLM-wiki-grounding. The operational completion claim remains RT-CLM-durable-completion.
| Entry point or operation | Source path and inspection basis | Covering records or remaining limit |
|---|---|---|
| Staging, finalization, n8n, compile driver; extraction and resolution | Supplied runtime findings at app/src/app/api/compile/run/route.ts, app/src/app/api/compile/extract/route.ts, app/src/app/api/compile/resolve/route.ts; direct extraction prompt/recovery reads at nlp-service/services/llm_client.py |
RT-RTE-session-compile, RT-RTE-plan-draft, EPI-RTE-extraction-recovery. Conversion branches and resolution internals not independently audited here; no complete source-fidelity or identity-correctness verdict. |
| Match and plan | Search of app/src/app/api/compile/match/route.ts; direct planning rules and triage implementation at app/src/app/api/compile/plan/route.ts, nlp-service/services/llm_client.py |
EPI-RTE-triage-disposition. |
| Draft and schema | Supplied app/src/app/api/compile/draft/route.ts, app/src/app/api/compile/schema/route.ts; direct drafting prompts at nlp-service/services/llm_client.py |
RT-RTE-plan-draft, RT-RTE-schema-bootstrap. No generated instance or semantic comparison supplied. |
| Compile crossref; exposed legacy model crossref | Direct complete app handler and injector at app/src/app/api/compile/crossref/route.ts, app/src/lib/wikilink-injector.ts; direct Python dispatch/generation at nlp-service/routers/pipeline.py, nlp-service/services/llm_client.py |
EPI-RTE-crossref-transform. Legacy result has no inspected app admission consumer. |
| Compile commit, explicit approval/rejection | Direct commit gates and complete app/src/lib/approve-plan.ts; other handlers supplied by runtime |
RT-RTE-draft-approval. |
| Chat answer and automatic/manual draft creation | Direct synthesis/feedback and app/src/app/api/chat/save-draft/route.ts; direct insertChatDraft in app/src/lib/db.ts |
RT-RTE-chat-feedback, EPI-RTE-chat-save. |
| Metadata answers, wiki/MCP delivery | Direct getWikiStats in app/src/lib/db.ts, complete registered tool handlers in mcp-server/index.ts; other readers supplied by runtime |
RT-RTE-mcp-read, RT-RTE-chat-feedback. External agent dependence remains outside boundary. |
| Lint and startup hook | Direct complete app/src/app/api/wiki/lint-pass/route.ts, cli/src/startup-tasks.ts, CLI dispatch in cli/src/index.ts; contradiction display in app/src/components/WikiLintResults.tsx |
EPI-RTE-wiki-lint. CLI dispatch contains lifecycle, backup and update commands, not another claim-admission workflow. |
| Contradiction sidebar | Direct app/src/app/api/wiki/[page_id]/contradictions/route.ts and plan activity producer |
EPI-RTE-triage-disposition. Advisory challenge, not automatic withdrawal of challenged prose. |
| Source deletion, redraft, source recompile and import | Supplied maintenance/import implementation; direct source recompile handler at app/src/app/api/sources/[source_id]/recompile/route.ts |
RT-RTE-source-maintenance, RT-RTE-archive-import. Recompile queues ordinary session processing, not a new semantic evaluator. |
| Zombie cleanup and pending-draft dependency cleanup | Direct app/src/app/api/admin/cleanup/zombie-pages/route.ts, findZombiePages and cleanupChatDraftsForDeletedPage in app/src/lib/db.ts |
EPI-RTE-zombie-cleanup. |
| Saved Links regeneration/dismissal | Direct complete app/src/lib/saved-links.ts, app/src/app/api/saved-links/[failure_id]/route.ts; query searched in app/src/lib/db.ts |
EPI-RTE-saved-links. |
| Python registered operations | Direct nlp-service/main.py, pipeline dispatch and nlp-service/routers/llm.py; extraction/resolution/vector/storage routes supplied by runtime |
No hidden provider internals assessed; direct storage writes are not evidence of checked claims. Exhaustive metadata/conversion branches unassessed, preventing system-complete negatives. |
| Product evaluators and provider reports | Direct May 5 runner/report; selected assertions searched in scripts/integration-test.sh; May 22 pending report supplied by boundary |
EPI-RTE-corpus-evaluation. Other manual harnesses and unit assertions not read comprehensively; no claim that all shipped tests lack semantic oracles. |
Missing evidence is local to its prevented conclusion: absent current-revision traces prevent observed grounding, evaluator activation and acceptance claims; missing exact historical corpus prevents inspecting the historical claims against their original texts; unavailable provider internals prevent inference about hidden reasoning or parameter learning; no controlled intervention/outcome comparison establishes causal improvement from compounding, citations, schema or any individual model. Available uninspected harnesses and conversion branches are inspection limits, not access gaps. No system-complete absence of semantic checking is asserted.
Epistemic-object inventory
| Object ID | Candidate truth-apt content or none | Claimed role | Evidence source ID and local anchor | Gap/limit |
|---|---|---|---|---|
| EPI-OBJ-extraction-output | Source assertions, identity assignments, relationships and summary | see record | SRC-1 nlp-service/services/llm_client.py |
Structured shape and confidence words do not verify source truth or entailment. |
| EPI-OBJ-draft-content | Proposed wiki statements and source reproduction | see record | SRC-1 nlp-service/services/llm_client.py |
Individual content is unobserved; retained raw original-source content is imported, not model-produced knowledge. |
| RT-OBJ-page-plans | None in the control portion | see record | SRC-1 app/src/app/api/compile/commit/route.ts |
A status transition is not a factual acceptance decision. |
| RT-OBJ-schema | Primarily instructions, not an established truth-apt theory instance | see record | SRC-1 nlp-service/services/llm_client.py |
Exact generated rules, premises and assumptions uninspected. |
| RT-RTE-chat-feedback | Answer prose; selected page text and previous answers | see record | SRC-1 app/src/app/api/chat/route.ts |
Counts describe delivered candidates, not actual citation use. |
| EPI-RTE-triage-disposition | Candidate novelty/contradiction judgment and reason | see record | SRC-1 app/src/app/api/compile/plan/route.ts |
Comparison is against summary, not a source-truth oracle. |
| EPI-RTE-wiki-lint | Database anomaly predicates; model contradiction reports | see record | SRC-1 app/src/app/api/wiki/lint-pass/route.ts |
Summary sample is limited; empty result also follows failed scan. |
| EPI-RTE-saved-links | Import-failure descriptions and count; cleared-state assertion | see record | SRC-1 app/src/lib/saved-links.ts |
Dismissal can produce a false imported-all assertion. |
| EPI-RTE-corpus-evaluation | HTTP/shape/count outcomes about extraction | see record | SRC-1 validation/2026-05-05-multi-provider-corpus/runner.py |
No semantic reference answers in that runner; reported operation is historical. |
| RT-CMP-gemini, RT-CMP-deepseek, RT-CMP-spacy, RT-CMP-key-bert, RT-CMP-mini-lm | Not determinable as individuated propositions in accessible parameter state | see records | SRC-1 nlp-service/services/llm_client.py |
Inference/derived-vector writes do not show training; exact weights and hidden provider state unavailable. |
Authority-route ledger
The IDs below denote canonical routes or their cited material parts, not new declarations made by table rows. Architectural status refers to inspected wiring; all current-revision operation remains unobserved. Each row separates checking, disposition and retention. “No factual license” means the route supplies no demonstrated factual warrant beyond its named check, not that its content must be false.
| Route ID | Route function | Architectural status | Object/candidate ID | Content/update relation | Transition or check target | Evaluator/condition and domain | Activation and timing | Possible or observed result | Implemented force | Epistemic authority and scope | Operational authority | Behavioral-authority path | Evidence source ID and local anchor | Claim IDs or none | Mismatch marker or none | Gap/limit |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| RT-RTE-session-compile | content transformation | implemented | see record | truth-apt transformation: acquisition/import | External sources to raw markdown | Conversion dependencies; source domain open | see record | see record | Imports selected material | Source warrant unknown; retained identity is not verification | see record | see record | SRC-1 app/src/app/api/compile/run/route.ts |
EPI-CLM-compiled-knowledge | none | Conversion fidelity not independently established. |
| RT-RTE-plan-draft | content transformation | implemented | EPI-OBJ-extraction-output, EPI-OBJ-draft-content | truth-apt transformation: indeterminate | Sources/dossiers to extraction and prose | Models interpret source and prior prose; open subjects | see record | see record | Candidate generation | Requested faithfulness, not checked entailment | see record | see record | SRC-1 nlp-service/services/llm_client.py |
EPI-CLM-source-attribution | none | Reshaping versus ampliative content requires actual paired inputs/outputs. Non-entailment not established by synthesis alone. |
| EPI-RTE-extraction-recovery | check/evidence production | implemented | EPI-OBJ-extraction-output | no content change | Provider output shape | Parsed response/Pydantic schema | After model return | Parsed model or parse error | Gate to return | Shape only | Reject malformed output unless recovery succeeds | Extraction caller; parsed-model channel; enforcing; current call | SRC-1 nlp-service/services/llm_client.py |
none | none | Does not test assertions against source. |
| EPI-RTE-extraction-recovery | content transformation | implemented | EPI-OBJ-extraction-output | truth-apt transformation: indeterminate | Failed response or shortened input | JSON repair; Gemini-specific halved-input fallback | Parse failure | Salvaged extraction or regenerated candidate | Return recovered candidate | No added source-truth license | May continue without complete initial input/output | Extraction caller; return value; permissive; current extraction and later drafts | SRC-1 nlp-service/services/llm_client.py |
none | none | Recovery can remove coverage; semantic preservation not established. |
| EPI-RTE-triage-disposition | check/evidence production | implemented | see record | truth-apt transformation: indeterminate | Novelty/conflict of selected source claims against page summary | Generation model, not expected-answer oracle | Ranked candidates then model call | update/contradiction/skip with reason | Result delivered to planner | Candidate comparison only | see record | see record | SRC-1 nlp-service/services/llm_client.py |
EPI-CLM-source-attribution | none | Similarity is candidate selection, not warrant. |
| EPI-RTE-triage-disposition | disposition/acceptance | implemented | see record | no content change | Result to update/provenance/challenge | Fixed planner branches | After triage | Update plan; provenance-only plan; contradiction activity | Enforcing branches, advisory challenge | No recorded acceptance of source truth | see record | see record | SRC-1 app/src/app/api/compile/plan/route.ts |
EPI-CLM-source-attribution | Contradiction does not imply automatic withdrawal | Other rules may still draft related pages. |
| EPI-RTE-crossref-transform | content transformation | implemented | EPI-OBJ-draft-content | truth-apt transformation: indeterminate | Plain titles/aliases to linked prose | Regex and supplied title map; identity assumptions external to transform | Drafted before commit | Linked prose | Stored crossreffed draft | Prose reshaping conditional on correct title/alias mapping; link association not independently warranted | see record | see record | SRC-1 app/src/lib/wikilink-injector.ts |
EPI-CLM-source-attribution | No contradiction scan in app crossref | Legacy exposed model endpoint is a separate alternative within record. |
| RT-RTE-draft-approval | check/evidence production | implemented | EPI-OBJ-draft-content | no content change | Nonempty prose; compile body length; explicit pending state | Software predicates, not factual oracle | Before write | Pass/thin/failed/not-pending | Enforcing scoped guards | Length/status/nonemptiness only | see record | see record | SRC-1 app/src/app/api/compile/commit/route.ts |
none | none | Explicit approval omits compile length gate; original-source exempt. |
| RT-RTE-draft-approval | disposition/acceptance | implemented | EPI-OBJ-draft-content | no content change | Install, queue or reject proposal | Auto-approve default; otherwise caller approval/rejection | Before installation | see record | Enforcing operational admission | Human evidence review not established; no named factual acceptance criterion recorded | see record | see record | SRC-1 app/src/lib/approve-plan.ts |
EPI-CLM-compiled-knowledge | Installation is not epistemic acceptance | Caller identity unresolved. |
| RT-RTE-draft-approval | retention | implemented | EPI-OBJ-draft-content | no content change | Installed prose/provenance/indexes | SQLite outbox and file flush | Following admission | see record | Persistent availability | Retention of a candidate, not lifecycle integration after factual acceptance | see record | see record | SRC-1 app/src/lib/approve-plan.ts |
RT-CLM-durable-completion | none | File-first reads can expose old content after failed flush. |
| RT-RTE-chat-feedback | operational admission/selection/consumption | implemented | see record | no content change | Wiki evidence delivered for answering | Model selection or hybrid scoring, clipping/fallback | Each question | see record | Ranking and context selection | Selected snippets have no new warrant | see record | see record | SRC-1 app/src/app/api/chat/route.ts |
EPI-CLM-wiki-grounding | none | Selected pages may be popular fallback, not sufficient evidence. |
| RT-RTE-chat-feedback | content transformation | implemented | see record | truth-apt transformation: entailed derivation | Database row counts/timestamps to metadata answer | Fixed query/template; database-defined population | Recognized metadata question before retrieval/synthesis | Counts and latest stored timestamps | Direct answer/history insertion | Counts entailed by database predicates, not evidence that every counted source contributed or every page is true | Bypasses model answering | Chat user; answer text; advisory; current turn and retained history | SRC-1 app/src/lib/db.ts |
none | Scope of counts narrower than compiled-knowledge quality | Semantic fidelity of each metadata wording not exhaustively assessed. |
| RT-RTE-chat-feedback | content transformation | implemented | see record | truth-apt transformation: indeterminate | Selected prose/history to answer | Model; wiki-only request | After retrieval | see record | Returned and retained answer | Requested grounding, no verified entailment or citation correspondence | see record | see record | SRC-1 nlp-service/services/llm_client.py |
EPI-CLM-wiki-grounding | none | No actual answer pair supplied. |
| RT-RTE-chat-feedback, EPI-RTE-chat-save | retention | implemented | see records | truth-apt transformation: non-ampliative reshaping | Answer to pending wiki draft | Retrieved count or explicit content-supplying caller | After answer or save request | see records | Pending candidate, not accepted claim | No new factual license from FAQ wrapper | see records | see records | SRC-1 app/src/app/api/chat/save-draft/route.ts |
EPI-CLM-compiled-knowledge | Retrieved count is not verified use | Approval writes page IDs into source-provenance slot. |
| RT-RTE-schema-bootstrap | behavior/policy adaptation | implemented | RT-OBJ-schema | non-truth-apt policy/content update: generated drafting conventions | Page metadata to standing instructions | Model generator, nonempty write/existence checks | Initial bootstrap; later draft delivery | see record | Requested model guidance | None established for any factual premises of generated conventions | see record | RT-BAP-schema-drafting | SRC-1 nlp-service/services/llm_client.py |
none | none | Compliance, criticism and improvement unobserved. |
| EPI-RTE-wiki-lint | check/evidence production | implemented | see record | truth-apt transformation: indeterminate | Database anomalies and summary conflicts | SQL predicates; model for at most ten same-category pairs | Manual or overdue startup | Findings or empty contradiction list | Return/log/display, advisory | SQL facts within database; model conflicts remain candidate judgments | see record | see record | SRC-1 app/src/app/api/wiki/lint-pass/route.ts |
EPI-CLM-compiled-knowledge | Clean scan not certification | Failed model scan collapses to empty list. |
| EPI-RTE-zombie-cleanup | check/evidence production | implemented | see record | truth-apt transformation: entailed derivation | Existence of joined provenance/source rows | SQL NOT EXISTS, database domain | Dry-run or cleanup | Zombie candidates | List supplied to deletion loop | Exact database dependency predicate, not subject-matter falsity | see record | see record | SRC-1 app/src/lib/db.ts |
none | none | Depends on lineage identifiers being correctly typed. |
| EPI-RTE-zombie-cleanup | disposition/acceptance | implemented | see record | no content change | Dependency failure to deletion | Code loop; caller chooses POST | Following query | Database removal and best-effort file/vector removal | Enforcing withdrawal from normal database readers | Withdraws operational availability, not a refutation | see record | see record | SRC-1 app/src/app/api/admin/cleanup/zombie-pages/route.ts |
none | none | Pending chat dependency pruning can leave surviving draft prose unchanged. |
| RT-RTE-source-maintenance | content transformation | implemented | see record | truth-apt transformation: indeterminate | Surviving sources to replacement prose or provenance note | Cascade rules and drafting model | Source deletion | see record | Direct update/deletion | No checked removal of source's semantic contribution | see record | see record | SRC-1 app/src/lib/recompile.ts |
EPI-CLM-compiled-knowledge | Bypasses approval/thin gate | Note fallback retains old prose. |
| RT-RTE-archive-import | disposition/acceptance | implemented | see record | truth-apt transformation: acquisition/import | Archive to restored state | Manifest/safe-ID/empty-wiki guards | Import request | see record | Direct restore | Imported warrant unknown; structural admission only | see record | see record | SRC-1 app/src/app/api/import/route.ts |
none | none | Bypasses per-page approval and semantic checks. |
| EPI-RTE-saved-links | content transformation | implemented | see record | truth-apt transformation: ampliative conjecture | Empty unresolved set to imported-all statement | Fixed template | Failure resolution/dismissal/lint | Cleared-state wiki page | Direct retained assertion | Not entailed: dismissal is counterexample | see record | see record | SRC-1 app/src/lib/saved-links.ts |
none | Unsupported cleared-state assertion | Nonempty rows mostly reshape recorded failures; this row assesses the distinct empty branch. |
| EPI-RTE-corpus-evaluation | check/evidence production | implemented | see record | no content change | Response key presence/counts and request outcomes | Runner; bounded historical corpus mode | Offline operator invocation | see record | Result file/report; no inspected production gate | Protocol/shape observations only, no source-truth oracle | see record | see record | SRC-1 validation/2026-05-05-multi-provider-corpus/runner.py |
none | Provider success not semantic superiority | Quota/timeouts and missing corpus bound comparison. |
| RT-RTE-mcp-read | operational admission/selection/consumption | implemented | see record | truth-apt transformation: non-ampliative reshaping | Stored page/metadata to tool text | Explicit client requests and formatting | Tool invocation | see record | Advisory/context delivery | Preserves delivered prose, not proof of truth or lineage completeness | see record | see record | SRC-1 mcp-server/index.ts |
EPI-CLM-compiled-knowledge | none | External scheduling/action uninspected. |
The metadata derivation is scoped to the stored database population. Its implementation premise is explicit:
const sourceCount = (db.prepare('SELECT COUNT() AS n FROM sources WHERE status = ?').get('active') as { n: number }).n; const pageCount = (db.prepare('SELECT COUNT() AS n FROM pages').get() as { n: number }).n; ---
app/src/lib/db.ts
There is no established lifecycle integration after factual acceptance in these rows. Linking, indexing and later use are real operations, but the inspected admission paths do not supply the required preceding evidence-consuming factual acceptance decision. This is scoped to the named production paths, not to every possible operator practice or uninspected test.
System-claim versus route comparison
| Claim ID | Claimed operation or warrant | Claim source ID/anchor and evidence layer | Doctrine/design support | Implemented route IDs | Observed-run support | Causal support and design limits | Supported conclusion | Mismatch/unknown |
|---|---|---|---|---|---|---|---|---|
| EPI-CLM-compiled-knowledge | see record | SRC-1 README.md; doctrine/design |
Pipeline/planner/update prompts | RT-RTE-plan-draft, RT-RTE-chat-feedback, RT-RTE-schema-bootstrap, EPI-RTE-wiki-lint | No current-revision trace | No intervention/outcome comparison; input caps and manual pending gates restrict coverage | Cross-session accumulation, promotion and update capacity are wired | Seeing patterns across all sources and maintenance-free knowledge improvement not demonstrated; bootstrap is not ongoing criticism. |
| EPI-CLM-source-attribution | see record | SRC-1 README.md; doctrine/design |
Prompts request attribution and conflicts | RT-RTE-plan-draft, EPI-RTE-triage-disposition, EPI-RTE-crossref-transform | No actual claim/citation pair supplied | Three-source relationship threshold is not independent corroboration; extracted mentions may share origin/errors | Provenance retention, comparison planning and advisory challenges implemented | Skip attaches provenance without prose change; conflict can become sidebar activity instead of comparison-page correction. Citation fidelity unverified. |
| EPI-CLM-wiki-grounding | see record | SRC-1 nlp-service/services/llm_client.py; doctrine/design |
Wiki-only and insufficient-information instructions | RT-RTE-chat-feedback | No answer trace | No entailment/citation evaluator inspected in synthesis consumer; clipping can omit needed qualification | Grounding requested over delivered snippets | Provider response schema checks shape, not grounding; returned citations are taken from model output. |
| RT-CLM-durable-completion | see record | SRC-1 app/src/app/api/compile/run/route.ts; implementation |
see record | RT-RTE-draft-approval | see record | see record | File-flush policy, not truth acceptance | Explicit approval and import differ; durable prose can still be an unchecked candidate. |
Bounded conclusion
Kompl acquires source texts with identities and retains generated interpretations alongside them. Source warrant remains unknown: source inclusion, extracted confidence labels, mention frequency and provenance counts do not adjudicate subject-matter truth. Generation requests faithful extraction, reproduction, synthesis and citation. Without paired generated artifacts and their actual inputs, these edges remain semantically indeterminate rather than automatically classified as entailed or ampliative. The extraction recovery route can accept repaired structure or a result generated from shorter input; successful parsing does not restore lost source coverage. See EPI-RTE-extraction-recovery and RT-RTE-plan-draft.
The inspected checks license narrower conclusions. SQL can derive database counts and dependency predicates; deterministic title injection can preserve an ordinary proposition's words while adding navigation dependent on a supplied identity map. These have no independent subject-matter warrant beyond their premises. A concrete deterministic counterexample exists in Saved Links: after dismissing the final failure, the empty-set template says all links were imported. The implementation generates a proposition not entailed by its state and demonstrably false for that reachable input history. See EPI-RTE-crossref-transform, EPI-RTE-zombie-cleanup, and EPI-RTE-saved-links.
Operational admission is implemented, but the named routes do not record factual acceptance against evidence for a named intended use. Compile nonemptiness/body-length checks, default auto-approval, explicit caller approval, import structure guards and deletion-redraft rules all permit later wiki/model use without such an acceptance record. A caller may perform meaningful review outside the API; the source does not establish who did so or against which evidence. Candidate retention and use therefore remain distinct from acceptance and subsequent lifecycle integration. Rejection can withhold pending drafts; source/zombie deletion changes availability; neither proves surviving prose has had every removed contribution retracted. See RT-RTE-draft-approval, RT-RTE-archive-import, and RT-RTE-source-maintenance.
Contradiction checks have heterogeneous force. Match triage can change planning, while its contradiction branch creates an advisory sidebar event without automatically withdrawing the page. Lint checks a small summary sample and displays/logs candidate conflicts; a failure can also yield an empty conflict list. Dependency cleanup enforces a database criterion, not semantic refutation. Approval of query-generated drafts also has a lineage caveat: cited/retrieved page IDs occupy a source-ID slot and are then passed to source provenance. Thus stored citation/provenance presence is not a uniform end-to-end warrant path. See EPI-RTE-triage-disposition, EPI-RTE-wiki-lint, EPI-RTE-chat-save, and EPI-RTE-zombie-cleanup.
Retained prose can affect later model context through drafting, answering and pending FAQ feedback, while schema prose directly requests later drafting conventions. These implemented pathways coexist with independently unestablished benefit, learning, content-directed theory criticism and exercised self-improvement. For schema, localized formulation is afforded and delivery is wired; actual decisions depending on its content, criticism and criticism-shaped iteration remain unobserved/uninspected as separated in RT-RTE-schema-bootstrap. There is no basis to infer hidden parameter learning or its absence across opaque providers. The corpus runner supports historical shape/protocol comparisons only; it cannot close a factual-acceptance or causal-improvement gap. No single epistemic verdict follows.
Shared records
Operative objects
EPI-OBJ-extraction-output
Label: Structured source extraction Part of: RT-RTE-plan-draft
This is the material output of the extraction segment of the supplied route, not its encompassing process. It mixes natural-language claims, descriptions and summaries with symbolic JSON fields; app extraction persists it in SQLite and mention tables for later planning/dossiers. Closest supplied object RT-OBJ-page-plans is later control state, not this payload. SRC-1 implementation/doctrine: nlp-service/services/llm_client.py; persistence scope supplied by the parent route. Confidence is a model label about source expression, not a calibrated truth probability.
- claims — specific factual claims
- claim: the claim text itself (a string — full sentence)
- confidence: "stated" (explicit) | "implied" (strongly suggested) | "speculative" ---
nlp-service/services/llm_client.py
EPI-OBJ-draft-content
Label: Wiki draft prose Part of: RT-RTE-plan-draft
Natural-language markdown in SQLite page_plans.draft_content, later page files/outbox. This payload is explicitly excluded from the control-state referent of RT-OBJ-page-plans. It is a material output part of the parent process, not a duplicate process. Requested source reproduction and synthesized claims differ from evidence of their production or fidelity. SRC-1 doctrine/design: nlp-service/services/llm_client.py; implementation/persistence supplied by parent and RT-RTE-draft-approval.
Synthesize across sources. Attribute specific claims to their source. ---
nlp-service/services/llm_client.py
Routes
EPI-RTE-extraction-recovery
Label: Extraction parse and recovery Part of: RT-RTE-plan-draft
Distinct material parsing/recovery segment of the supplied generation route. The Python function returns parsed extraction, attempts JSON repair, then conditionally repeats Gemini extraction with halved text. SRC-1 implementation: nlp-service/services/llm_client.py. Shape acceptance is not source-truth acceptance.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Parsed/repaired extraction or LLMCompileError.
- Later read-back: Returned output can be persisted by the app and consumed as later dossiers/mentions; no separate recovery memory is claimed.
- Delegated visibility: Initial capped markdown plus NLP hints; fallback sees half the already capped source, with paragraph-boundary trimming.
- Selection predicate: Parsed response first; salvage on parse failure; halved fallback only after unsuccessful salvage with MAX_TOKENS and Gemini model prefix.
- Invalidation or expiry: Errors prevent that return; retry inputs replace the initial candidate for this call, without a semantic completeness test.
- Activation or effect: Return/admission of recovered structure is wired; actual semantic preservation unobserved.
- Evidence limits: Schema and repair validate form, not entailment, and narrowed fallback may lose relevant text.
Proposer: model then repair/fallback code. Decider/veto: parsed-model checks and exception branches. Oracle: response schema for shape, no expected factual answer. Mode: open source extraction; trigger is parse/truncation failure. Guidance remains extraction prompt; repaired/generated output, rather than a proof, persists through the caller. Recovery can fail and surface both errors; no semantic rollback is established.
if result.parsed is not None: return result.parsed # type: ignore[return-value]---
nlp-service/services/llm_client.py:752-753half_markdown = markdown[: len(markdown) // 2]---
nlp-service/services/llm_client.py
EPI-RTE-triage-disposition
Label: Triage comparison and plan disposition Part of: RT-RTE-plan-draft
This material comparison/disposition segment has separate check and disposition ledger rows. SRC-1 implementation/doctrine: nlp-service/services/llm_client.py, app/src/app/api/compile/plan/route.ts, app/src/app/api/wiki/[page_id]/contradictions/route.ts. Models compare selected claims against a page summary; app rules map the result to a plan or activity event. Comparison-page creation independently requires a supported relationship type, historical count at least three and both entity plans; contradiction triage alone does not guarantee one.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Model decision/reason, then plans and contradiction activity.
- Later read-back: Provenance-only/update plans can affect later pages; persisted challenge events feed contradiction sidebar API.
- Delegated visibility: Selected source claims, existing summary and title; not all underlying sources or page text.
- Selection predicate: Parent route's ranked candidate filter, then update/contradiction/skip; unknown returned decision normalized to skip.
- Invalidation or expiry: A branch can omit a redraft; no automatic challenge resolution or expiry established by inspected plan/reader.
- Activation or effect: Update schedules drafting; skip may attach provenance; contradiction logs a challenge without a plan from this branch.
- Evidence limits: Other planner rules may independently target the page; model conflict does not prove either proposition false.
Proposer/evaluator: triage model; decider: fixed planner; user can cancel/exclude sources but does not necessarily review each result. No reference-answer oracle. Mode: open maintenance. Guidance defines novelty, contradiction and redundancy; reason/activity and plans persist. Operational challenge force is advisory via sidebar API; planner force is enforcing within this branch. No factual acceptance or semantic rollback established.
} else if (match.decision === 'contradiction') { // Log a detailed activity row. The getPageContradictions(pageId) helper // in db.ts json_extracts from here — keep the field names stable. const srcMeta = sessionSourceMetaById.get(match.source_id); logActivity('page_contradiction_detected', {---
app/src/app/api/compile/plan/route.ts
EPI-RTE-crossref-transform
Label: Crossref text transformation Part of: RT-RTE-plan-draft
The parent route's crossref segment is deterministic in the app. SRC-1 implementation: app/src/app/api/compile/crossref/route.ts, app/src/lib/wikilink-injector.ts. Code-derived witness, without execution: input MiniLM encodes text. MiniLM repeats. with target title MiniLM model and alias MiniLM becomes [[MiniLM model|MiniLM]] encodes text. MiniLM repeats. Registration admits the six-character alias, matching finds its first word-boundary occurrence, canonical-used tracking blocks the second, and the alias branch preserves displayed surface text. A plain proposition is reshaped, but the added identity/navigation association relies on the supplied alias mapping. Conflicting aliases are first-writer-wins, so no independent identity proof follows.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: App stores linked drafts and returns counts with contradictions_found zero; exposed Python alternative returns model-edited pages/conflict candidates.
- Later read-back: App crossreffed text enters commit and later wiki consumers; no inspected app read-back of the exposed legacy model result.
- Delegated visibility: App receives draft text and targets/aliases; legacy Python generation sees provided pages, prefix-capped prompt and titles.
- Selection predicate: App nonnull drafted content; excludes own title; four-character surfaces, word boundaries and one link per canonical title; skips frontmatter/headings/code/existing links.
- Invalidation or expiry: Session draft state controls ordinary processing; identity map replacement can change future associations; no retroactive link-identity verification here.
- Activation or effect: App deterministic draft update wired; legacy endpoint model transformation wired but not current compile driver admission.
- Evidence limits: Regex cannot adjudicate the subject of a homonymous mention; legacy model request does not establish faithful reshaping or contradiction accuracy.
Proposer: input drafts and title/alias map; decider: fixed app scanner, or model for exposed Python alternative; caller supplies alternative input. No factual oracle. Mode: open compilation/direct API. Guidance in the legacy prompt requests linking/conflict notes; generated results remain returned candidates absent a demonstrated consumer. Normal rollback is through later plan/content handling, not a semantic check in this transformer.
if (match.toLowerCase() === canonical.toLowerCase()) { return `[[${canonical}]]`; } return `[[${canonical}|${match}]]`;---
app/src/lib/wikilink-injector.tspages_updated: pagesUpdated, wikilinks_added: wikilinksAdded, contradictions_found: 0,---
app/src/app/api/compile/crossref/route.ts
EPI-RTE-chat-save
Label: Manual chat draft and lineage
No counterpart for the explicit content-supplying endpoint after comparison with RT-RTE-chat-feedback, which describes automatic retrieved-count FAQ creation. Both converge on RT-RTE-draft-approval. SRC-1 implementation: app/src/app/api/chat/save-draft/route.ts, app/src/lib/db.ts, app/src/lib/approve-plan.ts. The endpoint accepts supplied content/citations, adds frontmatter/source display, and inserts a pending plan. It does not retrieve or authenticate a stored answer.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: saved true after draft insertion, or missing-session/content error.
- Later read-back: Pending draft is available for review and potential approval into later wiki context.
- Delegated visibility: API receives content, session and supplied citations; no model is called here.
- Selection predicate: Nonempty session/content; cited page IDs become pages_used then page_plans.source_ids.
- Invalidation or expiry: Pending rejection can block installation; page-deletion cleanup strips cited IDs or deletes empty chat drafts under its chat-session filter.
- Activation or effect: Candidate retention wired; shared approval loops over these same IDs as source provenance, without page-to-original-source expansion in the inspected helper.
- Evidence limits: Human content selection is afforded by UI intent, but arbitrary API caller identity and actual review remain unresolved; source-provenance slot is not typed as page lineage.
Proposer: content-supplying caller; decider: required-fields guard for pending insertion, separate approval caller for installation; veto: rejection. Mode: open manual save. No answer oracle or factual acceptance criterion. Guidance is only wrapper formatting in this endpoint; supplied prose/citation list persists. Recovery/installation follow the shared outbox path, not a new semantic evaluator.
.run(data.plan_id, data.session_id, data.title, JSON.stringify(data.pages_used ?? []), data.draft_content);---
app/src/lib/db.tsfor (const sid of sourceIds) { insertProvenance({ source_id: sid, page_id, content_hash: contentHash, contribution_type: contribType }); }---
app/src/lib/approve-plan.ts
EPI-RTE-wiki-lint
Label: Wiki lint findings
No declared counterpart after comparison with runtime's maintenance account; RT-RTE-source-maintenance changes source/page content, not this evaluator. SRC-1 implementation: app/src/app/api/wiki/lint-pass/route.ts, cli/src/startup-tasks.ts, app/src/components/WikiLintResults.tsx. SQL checks database graph/provenance/time predicates; model checks summary conflict candidates. Results return, persist in activity and display as issue/hint lists. Lint invokes Saved Links regeneration separately; it does not apply conflict-driven prose revisions in this handler.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Findings with duration, or skipped when scheduled lint disabled.
- Later read-back: Activity/results can be displayed later; last-lint timestamp changes next startup scheduling, not factual endorsement.
- Delegated visibility: Model receives flattened summaries from at most ten same-category page pairs, not complete page corpus or source texts.
- Selection predicate: Manual bypass or enabled schedule; overdue startup threshold 36 hours; SQL sample requires nonnull summaries and shared category.
- Invalidation or expiry: New lint replaces displayed latest results; no inspected result-driven automatic withdrawal of challenged prose.
- Activation or effect: Advisory issue lists and scheduling updates wired; model/provider failures can leave contradictions empty.
- Evidence limits: Empty contradictions does not mean a successful complete scan; SQL predicates support database facts, not the factual validity of wiki claims.
Proposer/evaluator: SQL and model; decider: caller/handler for running, result display rather than factual acceptance. No semantic reference oracle. Mode: open maintenance, trigger manual/startup. Guidance requests contradictions, but no truth-directed revision/recovery loop is established here. Consumer: operator; channel issue list; force advisory; horizon until later review/run.
WHERE a.summary IS NOT NULL AND b.summary IS NOT NULL LIMIT 10`,---
app/src/app/api/wiki/lint-pass/route.ts} catch { // Contradiction scan is best-effort; never fail the lint for it } ---
app/src/app/api/wiki/lint-pass/route.ts{result.contradictions.map((c, i) => (---
app/src/components/WikiLintResults.tsx
EPI-RTE-zombie-cleanup
Label: Provenance dependency withdrawal
No declared counterpart for admin cleanup after comparison with RT-RTE-source-maintenance. Cleanup reuses deletion helpers but independently selects pages from database lineage. SRC-1 implementation: app/src/lib/db.ts, app/src/app/api/admin/cleanup/zombie-pages/route.ts. This is a warranted deduction of a database predicate, not falsification of prose. A page with no provenance joined to an existing source is selected except Saved Links. Chat page IDs in source provenance can therefore satisfy the zombie predicate even when cited pages remain: the query joins sources, not pages.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: GET dry-run list; POST deleted count/list.
- Later read-back: Deleted database pages disappear from ordinary selection; pending chat drafts may have IDs pruned or be deleted when empty.
- Delegated visibility: Vector deletion receives page ID; filesystem helper sees matching page filenames; no model evaluator.
- Selection predicate: NOT EXISTS joined provenance/source row, except page_id saved-links; pending chat cleanup applies only to pending_approval sessions matching chat-%.
- Invalidation or expiry: Database deletion is enforcing; filesystem/vector deletion is fire-and-forget best effort. Surviving pending draft prose is not rewritten by the inspected SQL pruning.
- Activation or effect: Dependency-based withdrawal wired, not observed; cleanup removes lookup state independently of semantic truth.
- Evidence limits: Correct typed lineage is an auxiliary premise; dropping a dependency ID does not remove its semantic contribution from a surviving draft.
Trigger: caller POST; proposer/evaluator: dependency query; decider/executor: fixed loop; veto: caller can choose dry-run/not POST. No subject-matter oracle; bounded database predicate is the criterion for cleanup, intended use removing dangling pages. Mode: open maintenance. No automatic full rollback; backups/archives are distinct recovery possibilities, not truth acceptance.
AND NOT EXISTS ( SELECT 1 FROM provenance pr JOIN sources s ON s.source_id = pr.source_id WHERE pr.page_id = p.page_id )`---
app/src/lib/db.ts`UPDATE page_plans SET source_ids = (SELECT COALESCE(json_group_array(value), '[]') FROM json_each(source_ids) WHERE value != ?) WHERE draft_status = 'pending_approval' AND session_id LIKE 'chat-%'---
app/src/lib/db.ts
EPI-RTE-saved-links
Label: Saved Links status compilation
No counterpart declared after comparison with runtime's lint mention and RT-RTE-source-maintenance. SRC-1 implementation: app/src/lib/saved-links.ts, app/src/app/api/saved-links/[failure_id]/route.ts, app/src/lib/db.ts. Natural-language status markdown is compiled from unresolved failure rows and written directly to page outbox/file/FTS. The empty branch makes a consequential claim available in wiki context, so this deterministic status path is material.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Regeneration promise; dismissal returns deleted true after failure-row deletion.
- Later read-back: Saved Links page/index content enters wiki/search and potentially answering context.
- Delegated visibility: Storage receives generated markdown; metadata descriptions/errors contribute to visible prose.
- Selection predicate: Unresolved-link query; empty list versus nonempty rendering; dismissal or lint can request regeneration.
- Invalidation or expiry: Resolution/dismissal changes queried rows; new generation replaces status content; failed flush retains outbox for startup reconciliation.
- Activation or effect: Direct write without draft approval; empty-list assertion is installed just like nonempty failure listing.
- Evidence limits: Empty unresolved set proves no remaining unresolved rows, not that every saved link was imported.
Concrete implementation deduction: start with one unresolved failed link. DELETE removes its row without ingesting it, then requests regeneration. With no unresolved rows, the template emits “All saved links have been imported into your wiki.” The conclusion is not entailed and is false for this reachable history. This requires no target execution. Proposer/decider: deterministic code, caller can dismiss; no factual oracle. Mode: operational status maintenance. Persistence/outbox recovery does not correct the assertion's semantics.
'All saved links have been imported into your wiki.',---
app/src/lib/saved-links.tsconst deleted = deleteIngestFailure(failure_id); ---
app/src/app/api/saved-links/[failure_id]/route.tsvoid regenerateSavedLinksPage().catch(() => {}); ---
app/src/app/api/saved-links/[failure_id]/route.ts
EPI-RTE-corpus-evaluation
Label: Provider corpus shape evaluation
No counterpart after comparison with runtime's production routes and components. SRC-1 implementation/reported operation: validation/2026-05-05-multi-provider-corpus/runner.py, validation/2026-05-05-multi-provider-corpus/REPORT.md. The evaluator's target is provider extraction response shape/counts over a selected file corpus, not factual truth. Historical report success is attributed, not current-revision execution. Selected integration assertions in scripts/integration-test.sh similarly test endpoint fields/counts/progression; exhaustive test semantics remain uninspected.
- implementation conclusion status: wired
- operation conclusion status: claimed
- Immediate return: Per-source summaries/results.json; report attributes DeepSeek seven-of-seven shape success and partial Gemini success.
- Later read-back: Durable report/results are available to developers; no inspected production decision consumer reads them.
- Delegated visibility: Providers receive source markdown with empty NER and no keyphrase/TF-IDF hints via extraction endpoint.
- Selection predicate: Sorted corpus markdown files, both named providers; reported timeouts have a separate rerun.
- Invalidation or expiry: Report is historical; reruns overwrite runner results; exact original corpus unavailable in tracked source.
- Activation or effect: Evaluator wiring supports recording outcomes, not an implemented factual acceptance gate.
- Evidence limits: Key presence/counts are not source fidelity; quota, filtering and timeout differences confound attribution of semantic capability or component effect.
Proposer: provider extractions; evaluator/decider: runner shape summary, developer interprets report; no expected factual answer oracle. Mode: bounded corpus experiment, not production admission. No semantic rollback/rejection downstream consumer inspected. Criteria measure protocol/shape outcomes; inference of knowledge accuracy exceeds their domain.
if "entities" in resp and "concepts" in resp: return { "ok": True,---
validation/2026-05-05-multi-provider-corpus/runner.py
Claims
EPI-CLM-compiled-knowledge
Label: Compounding compiled knowledge
No counterpart after comparison with runtime's scoped durability/deployment claims. SRC-1 doctrine/design: README.md. The public claim combines automatic organization/update, cross-source pattern recognition and compiled knowledge; it does not itself establish observed or accepted ampliative knowledge.
Kompl is a compounding LLM-wiki, best fit for a personal second brain that organizes and updates itself as it grows, without maintenance or upkeep on your end. ---
README.mdpattern across all ten without you having to ask. ---
README.md
EPI-CLM-source-attribution
Label: Conflicts and source attribution
Distinct from RT-CLM-durable-completion: this concerns claim-level attribution and disagreement, not file persistence. SRC-1 doctrine/design: README.md.
promoted into their own pages. When sources disagree, the disagreement surfaces on a comparison page with provenance. Claims cite where they came from. By the time you have a question, the answer is already a page. ---
README.md
EPI-CLM-wiki-grounding
Label: Wiki-only answer contract
No counterpart claim after comparison with RT-RTE-chat-feedback, which describes the implementation container. SRC-1 doctrine/design: nlp-service/services/llm_client.py. This is a requested warrant constraint, not an observed grounded answer.
You are a wiki-grounded knowledge assistant. Answer the user's question using ONLY the wiki pages provided. Do not use general knowledge — your answer must be grounded in the provided pages. ---
nlp-service/services/llm_client.py